초보 개발자
페이건 인스펙션과 최신 코드리뷰 기법 본문
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **
페이건 인스펙션 (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)
'컴퓨터공학 전공 > 소프트웨어공학' 카테고리의 다른 글
소프트웨어 개발방법론: 무엇을 선택할까? 어떤 기준으로 결정할까? (2) | 2022.12.08 |
---|---|
소프트웨어개발 프로세스 성숙 모델 CMMI (1) | 2022.10.13 |
인스펙션을 효과적으로 할 수 있는 방법들 (0) | 2022.10.13 |
소프트웨어 인스펙션 기법이란? (0) | 2022.10.13 |
요구사항을 분석할 때 생길 수 있는 어려움들 (0) | 2022.10.13 |