코드 리뷰란?
코드 리뷰는 코드를 검사하여 문제를 식별하고 소프트웨어 품질을 개선하는 데 사용되는 동료 평가 과정입니다. 코드 리뷰는 임베디드 시스템, 그중에서도 특히 인증을 요하는 임베디드 시스템의 소프트웨어 개발에서 중요한 작업입니다.
코드 리뷰 팀은 일반적으로 중재자, 품질 엔지니어 또는 관리자, 동료 소프트웨어 개발자로 구성됩니다. 이 팀은 흔히 코드 리뷰 체크리스트를 사용하여 소프트웨어의 모든 관련 요소를 체계적으로 검토합니다. 예를 들어 코드 리뷰 팀은 코드의 복잡도를 평가하고, 흔히 발생하는 논리적 또는 프로그래밍 오류를 찾고, MISRA-C/C++ 또는 CERT C/C++ 같은 코딩 표준의 준수 여부를 검사할 수 있습니다. 정적 코드 분석 툴은 코드 리뷰를 보조하는 데 종종 사용됩니다.
코드 리뷰를 수행하는 이유
소프트웨어 팀이 코드 리뷰 관행을 도입하는 목적은 다음과 같습니다.
- 코딩 오류 검출: 개발 주기 후반 또는 고객에 의해 오류가 발견될 위험 감소
- 코딩 표준 위반 사항 검사: MISRA C, CWE, CERT C/C++ 또는 AUTOSAR C++14 등의 코딩 표준 준수 여부 검증
- 코드 복잡도 감소: 가독성 및 유지보수성 개선, 결함 및 고장 가능성 감소
- 논리 및 아키텍처 문제 식별: 해당 문제를 조기에 포착하여 소프트웨어 테스트에 필요한 시간 및 수고 절감
- 팀의 주인 의식 제고: 책임 분배를 통해 품질 및 지식 공유 개선
- 신입 엔지니어 지도: 신입 엔지니어에게 코딩 관행, 설계 및 아키텍처 코칭
코드 리뷰의 모범 사례
다양한 코드 리뷰 기법이 있지만 대부분은 다음의 몇몇 모범 사례를 밀접히 따릅니다.
- 코드 리뷰 목표와 과정의 정의 및 소통: 코드 리뷰를 팀의 소프트웨어 개발 공정에 통합하고, 팀이 해당 절차의 이점과 팀 구성원의 역할을 확실히 이해하도록 지원
- 코드 리뷰 체크리스트 작성: 코드가 품질 기준을 충족하는지 검증할 수 있도록 코드 리뷰 담당자에게 체계적 지침 제공
- 품질 게이트 정의: 코드 변경 승인을 위한 기준을 명확히 식별
- 협업 분위기 조성: 코더가 아닌 코드에 초점을 맞추어 코드 리뷰의 목표 달성, 리뷰 담당자가 객관적이고 주의 깊으며 건설적인 자세로 의견을 제시하도록 안내
- 소요 시간 설정: 리뷰 담당자가 집중력을 발휘할 수 있도록 코드 리뷰 소요 시간을 1회에 60분 미만이나 코드 400줄 정도로 제한
- 적절한 교육 제공: 팀 구성원의 코드 리뷰 역량 개발에 집중
코드 리뷰의 효율성 증진 방법
코드 리뷰 과정이 비효율적이면 생산성이 줄고 불만이 발생할 수 있습니다. 정적 분석은 빠르고 효율적으로 프로그래밍 오류를 찾아내고 코딩 규칙 및 규약 준수를 보장하는 방법입니다. 코드 리뷰 담당자는 논리 및 설계 문제 검출처럼 코드 리뷰에서 더 흥미롭고 연관된 측면에 집중할 수 있습니다.
Polyspace 제품으로 리뷰 과정을 촉진하는 방법
Polyspace 정적 코드 분석 제품은 정형 기법을 사용하여 소스 코드의 코딩 표준 위반 사항, 코드 결함, 보안 취약성을 검사합니다. 이들 제품을 사용하면 가능한 모든 제어 흐름과 데이터 흐름에서 치명적인 런타임 오류의 부재를 증명할 수도 있습니다.
Polyspace는 다른 소프트웨어 개발 툴과 손쉽게 통합할 수 있어 코드를 제출할 때마다 정적 코드 분석을 보장함으로써 효율성 증진에 도움이 됩니다.
- 코드 리뷰 전의 코드 분석: Visual Studio, Visual Studio Code, Eclipse 등의 IDE(통합 개발 환경) 내에서 Polyspace as You Code를 사용하면 코드를 작성하는 즉시 문제를 찾아낼 수 있습니다. 이를 통해 개발자는 코드 리뷰를 위해 제출하기 전에 파일에서 문제를 찾거나 모든 파일에 대해 분석을 실행할 수 있습니다.
- 코드 리뷰 툴과 정적 분석의 통합: Polyspace를 Review Board, Gerrit 등의 코드 리뷰 툴에 통합하면 Polyspace가 코드 변경에 대한 분석을 실행하고 그 결과를 툴에 반환하는 리뷰 담당자 역할을 수행합니다.
Polyspace 제품에 대해 자세히 알아보기
- Polyspace Bug Finder™는 C/C++ 소스 코드의 코딩 표준 위반 사항을 검사하고, 여러 유형의 버그를 발견하고, 보안 취약성을 검출하고, 코드 복잡도 메트릭 등의 품질 메트릭을 계산합니다.
- Polyspace Code Prover™는 정형 기법을 사용해 C/C++ 소스 코드 내 치명적인 런타임 오류의 부재를 코드 실행 없이 증명합니다.
- Polyspace Products for Ada는 Ada 소스 코드 내 런타임 오류의 부재를 증명합니다.