Peer Review

Peer Review는 소프트웨어 개발 과정에서 중요한 품질 보증 활동으로, 동료 개발자들이 서로의 코드나 문서를 검토하여 오류를 찾고 개선점을 제시하는 과정이다.

코드 리뷰가 중요한 이유는 여러 가지가 있다.

  1. 버그나 보안 취약점을 조기에 발견할 수 있다.
  2. 코드의 일관성과 유지보수성을 높일 수 있다.
  3. 팀 전체의 기술력 향상에 도움이 된다. 한 명의 실수나 실수를 하기 쉬운 부분을 여러 사람이 검토함으로써, 더 높은 품질의 코드를 만들 수 있다.

Peer Review의 목적

  1. 오류 가능성 발견 및 해결
  2. 소프트웨어 품질 향상
  3. 개발자 스킬 향상
  4. 팀 내 지식 및 경험 공유

Peer Review의 장점

  1. 개발 초기 단계에서 실수 발견 및 수정 가능
  2. 전체적인 코드 품질 향상
  3. 팀 내 상호 신뢰 및 동기 부여 증진
  4. 가독성 높은 코드 작성 촉진
  5. 개선된 설계 발견 기회

Peer Review 프로세스

Peer Review는 일반적으로 다음과 같은 단계로 진행된다:

  1. 계획 (Planning)
  2. 사전 설명회 (Overview)
  3. 개별 검토 (Preparation)
  4. Review 미팅 (Meeting)
  5. 재작업 (Rework)
  6. 후속 처리 (Follow-up)

Peer Review 참여자 역할

  1. 관리자: 전체 프로세스 관리
  2. 중재자: 리뷰 미팅 진행
  3. 작성자: 검토 대상 코드/문서 작성자
  4. 검토자: 실제 리뷰 수행
  5. 기록자: 리뷰 결과 기록
  6. 발표자: 리뷰 대상 설명

Peer Review 성공을 위한 요소

  1. 회사 차원의 정책적 지원
  2. 개발 일정에 Peer Review 시간 포함
  3. 동료 간 수평적 관계 유지
  4. 자주 짧게 진행하는 리뷰 문화 형성
  5. 리뷰어의 시간을 존중하는 태도
  6. 건설적인 피드백 제공 및 수용

Peer Review 시 주의사항

  1. 리뷰 대상은 200 LOC 미만으로 유지, 최대 400 LOC를 넘지 않도록 함
  2. 리뷰 시간은 60분 미만으로 유지
  3. 개인 비난이나 공격적인 질문 피하기
  4. 칭찬과 긍정적 피드백 포함하기
  5. 코드 품질 향상에 집중하기

Peer Review의 한계

  1. 시간과 리소스 소요
  2. 리뷰를 거쳐도 일부 결함을 놓칠 수 있음
  3. 팀 문화와 개인의 태도에 따라 효과성이 달라질 수 있음

Formal Review and Informal Review

소프트웨어 개발 과정에서 품질 보증을 위해 사용되는 두 가지 주요 검토 방식이다.
이 두 방식은 소프트웨어 제품의 품질을 향상시키고 결함을 조기에 발견하기 위한 목적으로 사용되지만, 그 접근 방식과 특징에 차이가 있다.

Formal Review

Formal Review는 구조화된 프로세스를 따르며, 훈련된 중재자가 이끄는 공식적인 검토 방식이다.
아래와 같은 특징을 가진다:

Informal Review

Informal Review는 덜 구조화되고 유연한 검토 방식이다.
아래와 같은 특징을 가진다:

Formal Review and Informal Review 방법

분류검토 유형주요 특징참여자목적형식성 수준
Formal ReviewInspection(검사)가장 공식적이고 체계적인 검토 방식
상세한 체크리스트 사용
철저한 문서화
검사자(Inspector)
작성자
사회자
서기
결함 발견
품질 보증
프로세스 개선
매우 높음
Formal ReviewAudit(감사)독립적인 전문가에 의한 검토
규정 준수 여부 확인
객관적 평가
감사자
피감사자
이해관계자
규정 준수 확인
품질 보증
리스크 관리
높음
Formal ReviewTechnical Review(기술 검토)기술적 내용에 중점
동료 전문가에 의한 검토
기술적 대안 제시
기술 전문가
개발자
설계자
기술적 완성도 검증
대안 평가
품질 향상
중상
Formal ReviewManagement Review(관리 검토)진행 상황과 계획 검토
의사결정 중심
프로젝트 관리 관점
관리자
팀 리더
이해관계자
진행상황 확인
의사결정
리스크 관리
중상
Informal ReviewCode Review(코드 리뷰)개발자 간 코드 검토
자유로운 의견 교환
즉각적 피드백
개발자
리뷰어
코드 품질 향상
지식 공유
버그 발견
Informal ReviewPair Programming(페어 프로그래밍)두 명이 함께 코딩
실시간 리뷰
즉각적 피드백
드라이버
네비게이터
품질 향상
지식 공유
실시간 오류 수정
중하
Informal ReviewWalkthrough(워크스루)작성자가 코드 설명
비형식적 미팅
교육적 성격
발표자
참가자들
이해도 향상
피드백 수집
지식 공유
중하
Informal ReviewPass Around(패스어라운드)순차적 검토
유연한 일정
문서 기반 검토
여러 리뷰어
작성자
다양한 관점 수집
편의성
시간 효율성
낮음
Informal ReviewDesk Check(데스크 체크)개발자 자체 검토
즉각적 수행
기본적 검증
개발자 본인기본 오류 검출
품질 향상
시간 절약
매우 낮음

이러한 다양한 검토 방식들은 각각의 장단점과 적합한 상황이 있으며, 프로젝트의 특성과 상황에 따라 적절히 선택하여 적용하는 것이 중요하다.
특히 형식적 검토와 비형식적 검토를 적절히 조합하여 사용함으로써, 효과적인 품질 관리와 개발 프로세스 개선을 달성할 수 있다.

또한 각 검토 방식의 특성을 이해하고, 프로젝트의 규모, 중요도, 시간 제약, 팀의 문화 등을 고려하여 가장 적합한 검토 방식을 선택하는 것이 중요하다.
이를 통해 효율적인 품질 관리와 지속적인 개선이 가능해진다.


참고 및 출처