초보 개발자

페이건 인스펙션과 최신 코드리뷰 기법 본문

컴퓨터공학 전공/소프트웨어공학

페이건 인스펙션과 최신 코드리뷰 기법

mandudu 2022. 10. 13. 18:58

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **

페이건 인스펙션 (Formal Technical Review)
긍정적 효과가 반복적으로 검증된 방법이지만 귀찮고, 시간이 많이 걸린다는 단점이 있다.
Johnson의 논문에서 80% 이상이 전혀 사용하지 않거나 가끔 사용한다.
-
Modern Code Review (light-weight code review)
waterfall의 대안으로 agile이 제안된 것처럼 FTR의 대안으로 제안되었다
meeting-based examination 단계를 생략한다. - 같roq은 시간, 장소에 모이는 것 쉽지 않음

페이건 인스펙션, FTR의 향후 목표 - Johnson

  • Provide tighter integration between FTR and the development method
    개발 방법의 특성을 반영해야 한다. - Offshore development처럼 전세계 곳곳의 개발자들이 협력하는 경우
  • Minimize meetings and maximize synchronicity in FTR
    시간과 공간의 제약을 극복하는 방법이 필요하다. - 각 리뷰어가 적절한 시간과 방법으로 결과를 전달하자는 논리
  • shift focus from detect removal to improved developer quality (생산성<품질)
    기존의 목적에서 벗어나 수정 방법에 대해 토의하고, 전체적인 프로그램의 품질 향상에 목표를 둔다.
    또한 고품질의 코드나 문서를 같이 검토하며 개발자들의 역량을 향상시키는 것이 필요하다. 
  • Build organizational knowledge bases on review
    FTR이 경험을 저장하고 공유할 수 있는 수단으로 쓰여야 한다. - 유사한 오류의 재발을 막기 위한 guideline
    리뷰과정에서 발견된 오류에 대해 해시태그로 기술하고 코드를 쉽게 비교할 수 있는 환경 갖추는 것도 하나의 방법
  • Outsource review and insource review knowledge
    테스팅처럼 소프트웨어 인스펙션 또한 전문적으로 수행하는 외부 전문업체에 의뢰할 수 있을 것이다.
    그러나 도메인 지식이 필요한 경우, 기업과 제품에 대한 비밀보호에 관련한 문제로 어려울 수 있다.
  • Break the boundaries on review group size
    6~9명이 아니라 유동적인 그룹 사이즈가 필요하다.
    중요한 모듈, 디자인은 많은 사람들이 참여할 필요가 있다. - NASA electronic design review: 2~30명이 참여

    그러나 가능하면 최소의 인원으로 리뷰하는 것이 바람직하다. - 프로젝트 팀 구성 (Surgical Team approach)
    - 효율을 위해 Chief가 전체적인 구조를 정하고, 이에 따라 각 컴포넌트가 정해지면 각 개발자는 개발을 진행

Modern code review의 경향

  • 개발 도중에 수시로 의견을 주고 받음
    Android, Chrome: 리뷰 의뢰 평균 1시간 이내 / Bing, Office, SQL 서버: 몇 시간 이내 리뷰 완료
  • 변경되는 코드가 많지 않고, 적극적으로 리뷰하는 동료가 적다
    코드리뷰가 수시로 일어나기 때문에 25~80줄 내외가 수정되고 적극적으로 참여하는 동료는 평균 2명이다.
    - 구글에서는 매일 약 30,000여건의 코드리뷰가 일어난다고 한다. (대면 인스펙션 아닐 가능성 높음)
  • 소프트웨어 결함을 빨리 발견하는 것이 목표가 아니라, 개발자들이 함께 문제를 풀어가는 집단지성 과정의 일환
    각종 온라인 도구를 적절히 활용하여 경험을 공유하고 저장하는 것이다. (대화, 학습, 창고)
    - MS사에서 코드 리뷰를 하는 이유: 결함 발견, 품질 개선, 더 좋은 해결 방법의 제안, 지식의 전달

 


추가 자료 리스트

  • Article "Reengineering inspection" - Phillip Johnson, ACM (1998)
  • Article "Convergent Contemporary Software Peer Review Practices" - Rigby&Bird, ESEC/FSE (2013)