코드 검토 프로세스의 효과를 확인하는 방법은 무엇입니까?


14

조직 내에서 코드 검토 프로세스를 도입했으며 제대로 작동하는 것 같습니다. 그러나 시간이 지남에 따라 프로세스의 효과를 측정 할 수 있기를 원합니다. 즉, 코드가 깨끗하거나 사람들이 버그를 찾지 않기 때문에 버그를 찾지 못하고 있습니까?

현재 효과적인 완전 자동화 테스트 프로세스가 없습니다. 우리는 주로 수동 테스트를 사용하므로이 단계에서 발견 된 결함에 의존하여 코드 검토 프로세스가 작동하는지 확인할 수 없습니다.

코드 검토를 측정하는 데 무엇이 효과적입니까?


7
버그를 찾는 것이 코드 검토의 유일한 목적은 아닙니다. 또한 코딩 표준 강화, 교차 훈련, 아이디어 및 기술의 교차 수분 등에도 유용합니다.
Jason

감사합니다 Jason & 그러나이 경우 프로세스가 가능한 빨리 개발 프로세스 초기에 결함 예방의 핵심 목표를 달성하도록하는 방법을 알아 내려고 노력하고 있습니다.

@ Johnv2020 이것이 핵심 목표는 아니지만 ... 코드 검토의 요점을 완전히 놓친 것입니다. 이는 제트 항공기에 새로운 안전 기능을 추가 한 다음 충돌 횟수에 따라 그 효과를 판단하는 것과 같습니다. 안전 기능이 충돌 발생 가능성을 개선했다는 주장을 정확하게하기 위해 고려해야 할 변수 및 기타 요소가 너무 많습니다.
maple_shaft

@maple_shaft : 비유가 약합니다. 버그 비율을 측정하는 것은 죽은 사람이 충돌에서 사용하는 관의 수를 측정하는 것과 같습니다.
S.Lott

1
내가 참석 한 모든 코드 검토에서 많은 버그가 이미 단위 및 높은 수준의 테스트에서 수정되었습니다. 즉, 코드는 컴파일되기 때문에 검토 할 준비가되지 않았습니다.
피트 윌슨

답변:


7

코드 검토에서 수집 할 수있는 여러 가지 메트릭이 있으며 일부는 프로젝트 수명주기 내내 확장 될 수도 있습니다.

수집을 권장하는 첫 번째 메트릭은 결함 제거 효과 (DRE) 입니다. 모든 결함에 대해 결함이 도입 된 단계와 제거 된 단계를 식별합니다. 사용하는 다양한 결함 감지 기술은 모두 동시에 평가되므로 요구 사항 검토, 설계 검토, 코드 검토, 단위 테스트에 동일하게 적용됩니다. , 등등. 코드 단계에서 발견 된 결함 수에 특히 관심이있을 것입니다. 이는 코드 검토뿐 아니라 단위 테스트를 포함하기 때문입니다. 코드 단계의 많은 결함이 통합 테스트 단계 또는 현장까지이를 해결하는 경우 코딩 후 사례를 평가해야합니다.

다양한 회의 측정 항목도 관련이 있습니다. 여기에는 준비 시간, 회의 시간, 코드 라인 읽기, 검토에서 발견 된 결함 등이 포함됩니다. 이 데이터에서 일부 관찰이 가능합니다. 예를 들어, 검토자가 검토를 위해 코드를 읽는 데 많은 시간을 소비하지만 문제가 거의없는 경우가 있습니다. DRE 데이터와 함께 통합 테스트 또는 현장에서 결함을 테스트하는 경우 팀은 문제를 찾기 위해 검토 기술에 집중해야한다는 결론을 내릴 수 있습니다. 또 다른 흥미로운 메모는 회의 시간과 비교하여 회의에서 읽은 코드 라인 (또는 다른 크기 측정)입니다. 연구에 따르면 일반적인 코드 검토 속도는 시간당 150 줄입니다.

이러한 메트릭 중 하나를 사용하면 프로세스에 미치는 영향을 이해하는 것이 중요합니다. why-because , Five Whys 또는 Ishikawa 다이어그램 과 같은 기술을 사용한 근본 원인 분석을 사용하여 코드 검토 (또는 기타 품질 개선 기술)가 효과적인 이유를 식별 할 수 있습니다.

또한 Ganssle Group의 검사결함 가능성 및 DRE에 대한 Crosstalk의 Capers Jones 기사에 대한이 기사에 관심 있을 수 있습니다 .


2

크게 있지만 사실입니다 코드 검토가 오히려 시험 또는 캐치하지 않을 수도 있음을 잠재하고 있습니다 문제를 데리러 것입니다. 그러나 내 의견으로는 당신은 정말로 안정적인 (실제로 버그가없는) 코드를 가지고 있지만 여전히 읽을 수 없거나 유지 보수가 불가능한 방식으로 작성되었습니다. 이 코드 리뷰는 수 할 수 있도록 NOT 코드에서 실제로 진짜 문제가없는 경우 버그를 찾을 수 있습니다.

그런 말을 한 후에 왜 코드 검토를 원할까요? 중요한 이유는 코드를보다 읽기 쉽고 유지 보수 가능하며 발전시킬 수 있도록 개선해야하기 때문입니다. 많은 사람들이 더 깨끗한 코드를 읽고 이해할 수 있어야합니다. 그런 의미에서 코드 검토 프로세스의 가장 간단한 목표는 깨끗한 코드를 생성하는 것입니다. 따라서 효과의 척도는 현재 코드가 얼마나 깨끗한 지입니다.

측정 가능한 효과를 원했던 것처럼 여기에 내가 제안하는 것이 있습니다.

  1. 재 작업량 관련 메트릭-동일한 모듈 / 개체 / 작업 항목에 동일한 재 작업이 적용되는 시간은 해당 코드가 유지 관리 성 측면에서 얼마나 열악한 지를 측정 한 것입니다 . 효과적인 코드 검토가 적용되면 동일한 모듈에서 재 작업 요청을 얼마나 자주 줄일 수 있습니까?

  2. 모든 변경 요청이 발생하는 변경 양과 관련된 메트릭입니다. 변경 요청이 발생할 때마다 팩토링 잘못된 코드는 항상 더 많은 수의 모듈에 영향을 미칩니다. 법안은 코드 검토 후 과거에 유사한 변경 요청에 대한 그러한 변경 확산 이 감소했음을 나타냅니다 .

  3. 변경 요청에 응답 할 수있는 평균 속도와 관련된 메트릭입니다. 코드가 더 깨끗하고 빠를 때는 필요한 변경에 응답하는 것이 좋습니다. 검토 과정에서 코드를 정리 한 후 비슷한 크기의 요청에 응답하면 속도가 빨라집니다.

정확한 측정 단위를 사용하지는 않습니다.이 방법을 사용하면 이에 대한보다 정확한 측정을 수행 할 수 있습니다. 이에 대한 위의 접근법에는 더 많은 확장 형식이있을 수 있습니다.

기본적으로 필자의 요점은 코드 검토 프로세스가 식별하는 버그의 수를 보는 대신입니다. 우리는 코드 검토가 코드를보다 깨끗하고 간결하며 유지하기 쉬운 상태로 만들 수 있는지 여부에 대한 효과를 측정해야합니다. 따라서 향후 유사한 변경 요청이보다 효율적으로 대응할 수 있다면 효율성을 측정 할 수 있습니다.


1
"버그"가 아니지만, 가독성, 유지성 또는 진화 성의 부족은 코드의 결함이므로 처리해야합니다. 기능상의 실제 버그와 함께 결함 추적기에서 추적 할 수없는 이유는 없습니다. 이렇게하면 코딩 단계에서 여러 가지 다른 결함 관련 메트릭을 추적하는 기능도 열 수 있습니다.
Thomas Owens

1
개발자는 깨끗한 코드를보고 싶습니다. 그러나 코드 검토는 매우 비용이 많이 듭니다. 따라서 프로젝트에 자금을 지원하는 관리자로서 깨끗한 코드는 실제로 개발 예산에 5-10 %의 비용과 시간을 추가해야하는 강력한 이유가 아닙니다. 특히 (매니저로서) 나의 보너스 / 리뷰는 현재 프로젝트를 정시 / 예산 내에서 완료하는 것과 관련이 있습니다. 따라서 코드 검토의 주된 이유는 깨끗한 코드를 얻는 것이 좋은 관리자가 ROI가 가치가 없다고 말하는 것입니다. 장기적인 반품에 대해 논쟁 할 수는 있지만 정시에 예산에 맞춰 예산을 제공하는 관리자는 그 가능성에서 멀어 질 것입니다.
Dunk

...문제. 코드 검토를 홍보 한 관리자는 유지 관리 프로젝트를 성공적으로 수행하지만 그렇지 않은 관리자와 같이 정시에 / 예산을 완료하지 않은 것으로 인해 계속 유지 될 것입니다. OTOH는 코드 검토가 검토 부족으로 버그를 발견하는 데 도움이되었고 코드 검토 관리자가 자신의 프로젝트를 정시에 / 예산을 완료 할 수있게한다면 다른 이야기입니다. 그것이 판매해야 할 이야기입니다. 또한 깨끗한 코드는 코드 검토의 이유가 될 수 없습니다.
Dunk

@Dunk 코드 검토 비용은 코드 검토 유형에 따라 다릅니다. 독자 3-5 명, 중재자, 저자의 존재 여부 (방에 5-7 명)가있는 정식 검사는 비용이 많이 듭니다. 10-15 분 동안 코드를 살펴 보는 다른 개발자로 구성된 데스크 체크도 코드 검토이지만 공식적이지 않고 훨씬 저렴합니다. 페어 프로그래밍조차도 일종의 "코드 검토"기술로 간주 될 수 있습니다. 적절한 기술은 코드의 중요도, 원하는 결함 비율 및 투자 할 시간 / 돈의 양을 포함하는 요소에 의해 결정됩니다.
Thomas Owens

@ 덩크 (Dunk)-프로젝트 관리자가 "코드 검토해야한다"결정을 내리고 소프트웨어 플랫폼의 장기적인 책임을 맡고있는 관리자에게 결정을 내렸다고 주장했다. 일반적으로 IMO는 적절한 코드 검토를 위해 개발에 5-10 %를 추가로 지출하는 것은 개발중인 시스템의 수명 측면에서 가치있는 투자입니다. 그러나 현재 프로젝트의 예산과 타임 라인과 관련해서는 아닐 것입니다.
Dawood는 모니카 복원
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.