언제 어떤 코드 리뷰 기법을 사용해야 하는가?
코드 인스펙션의 전제는 전문성을 가지고 있는 인스펙션 팀이 일정한
프로세스와 패턴에 따라서 개선안을 찾는 작업이다.
즉, 고도로 훈련됨
팀과 기간이 필요하고, 어느정도 개발이 완료되어 있는 인스펙션 대상(시스템)이 있는 것을 전제로 한다.
인스펙션의 시기는 시스템이 개발되어 있는 시점인 Release이 유용하다.
필자는 두번의
Inspection을 권장하는데, 개발 초기에 비기능적인 구현을 끝낸 경우 1차 Inspection을 그리고,
개발이 끝난 후 시스템 테스트 (성능,확장성,안정성등)가 그것이다.
팀 리뷰는 각 개발 유닛에서 활용하기 좋은 기법이다. PL (Project Leader)의 역량아래 수행할 수 있으며, 팀원이
리뷰어가 되기 때문에 팀 단위에서 활용하기가 매우 좋다.
일주일에 한번정도, 한시간
정도 리뷰를 정기적으로 수행하도록 하며, 시니어 개발자나 PL이
리뷰 대상 모듈을 선정하고 개발자에게 리뷰를 준비하도록 한다.
리뷰는 발표자가 리드를 하도록 하고, 리뷰에서 나온 의견을 Action Item으로 잡아서 PL이 발표자의 스케쥴로 조정을 해주는 작업이 필수적으로 따라야 한다.
팀 리뷰에서 권장하고 싶은 사항은 위에서도 잠깐 언급했지만 위키와
같은 문서 공유 시스템을 이용하여 반드시 리뷰의 결과를 남기도록 하고, 리뷰의 결과는 Task Management의 Task로 연결이 되어야 한다.
리뷰되고 반영된 내용은 그냥 넘어가지 않도록 하고, 재 테스트를 통해서 반영 내용을 반드시 검증하도록 한다.
일종의 아이디어 회의 정도로 보면 되며, 비정기적으로 언제나 개최할 수 있다.
팀리뷰처럼 PL이나
시니어 개발자가 중재를 하지 않기 때문에 구성원들의 의욕이 낮을 경우 효과가 매우 낮다. 개발팀보다는 QA나 운영팀에서 장애 사례나 버그 수정 사례 등의 정보 교환 목적으로 사용하는 것이 좋다.
신입 개발자 교육이나, 해당
제품이나 기술에 전문적인 지식이 없는 경우에 Knowledge Transfer(지식공유)와 품질 유지를 위해서 유용하다.. 대신 리뷰어의 Task 부담이 가중되기 때문에 (예상하는 것 보다 많이. 심하게는 50%에 육박할 경우도 있음) 리뷰어에 대한 스케쥴 배려가 필요하다.
|
시기 |
효과 |
변경에 대한 비용 |
수행 비용 |
주체 |
인스펙션 |
1차
Release, |
매우높음 |
매우 높음 |
높음 |
PMO,QA,AA |
팀리뷰 ★ |
매주 |
높음 |
보통 |
보통 |
PL |
웍쓰루 |
비정기적 |
낮음 |
보통 |
낮음 |
원하는 개발자 |
Peer Review |
필요한 경우 |
경우에 따라 높음 |
낮음 |
보통 |
시니어 개발자 |
효과적인 코드 리뷰를 막는 요인들
코드 리뷰에서 가장 힘든 점은 한마디로 “내가 만든 코드를 남이 잘못되었다고 이야기 한다.” 입니다.
리뷰의 주요 목적은 결함의 발견과 개선 방안입니다. 흔히 농담 삼아서 “창던지기”라고
이야기 하는데, 발표자는 리뷰어로부터 많은 질문과 공격을 당하게 됩니다. 그래서 실제로 인스펙션을 해보게 되면 개발자는 인터뷰를 당하는 것에 대해 취조 당하는 느낌을 가지게 될 수
도 있고 방어적으로 행동할 수 도 있게 됩니다.
팀리뷰의 경우 감정싸움까지 가는 경우가 허다하지요.
팀리뷰나 인스펙션의 경우 리뷰를 중재하는 사람이 있기 때문에, 리뷰어가 아이디어나 결함에 대한 의견을 자유롭게 개진할 수 있도록 해야 하며,
반대로 발표자가 인신 공격을 받지 않도록 중재하는 기능도 필요합니다. 이건 어떤 프로세스나
시스템으로 될 수 있는 일이 아니라 “사람 사이의 관계”에서
발생되는 일이기 때문에 “문화”의 변화가 필수적입니다.
또한 위에 언급한 대부분의 리뷰 기법들은 리뷰와 그에 대한 후속
처리가 시간과 사람이 필요한 일이기 때문에 프로젝트 운영 관점에서 시간과 리소스에 대한 배려가 이루어져야 합니다.
'ALM > Task Management' 카테고리의 다른 글
JIRA 4가 Releae되었습니다. (0) | 2009.10.07 |
---|---|
Trac을 이용한 이슈기반의 팀 관리의 문제점 (5) | 2009.05.19 |
코드 리뷰 - 1. 코드 리뷰 기법들에 대한 소개 (2) | 2009.03.11 |
Code Review Article Bookmark (0) | 2009.03.10 |
Short Release와 회귀 테스트, Itertive and iteration 방법론의 사례 (8) | 2009.03.04 |