소스코드 품질평가
소스코드 품질평가는 소스코드를 측정해 품질 충족 정도를 판정하는 활동이다. 평가 수단은 정적 분석, 동적 분석, 코드 메트릭으로 나뉜다. 평가 결과는 품질 판정과 신뢰도 수치의 두 가지로 나온다. 정적 분석은 코드를 실행하지 않고 도구로 분석하는 기법이다. 코딩 표준…
주요 장면
대본
소스코드 품질평가란
소스코드 품질평가는 소스코드를 측정해 품질 충족 정도를 판정하는 활동이다.
평가 수단은 정적 분석, 동적 분석, 코드 메트릭으로 나뉜다.
평가 결과는 품질 판정과 신뢰도 수치의 두 가지로 나온다.
정적 분석과 동적 분석
정적 분석은 코드를 실행하지 않고 도구로 분석하는 기법이다.
코딩 표준 위반과 취약점, 코드 스멜을 소스코드 수준에서 찾는다.
동적 분석은 코드를 실행하면서 단위·통합 테스트와 커버리지로 결함을 확인한다.
두 기법은 상호 보완 관계이므로 함께 제시한다.
순환 복잡도 계산
순환 복잡도는 제어 흐름 그래프의 독립 경로 수로 구하는 복잡도 지표다.
E는 간선 수, N은 노드 수, P는 연결된 구성요소 수다. 단일 함수는 P가 1이다.
값이 클수록 분기가 많아 테스트 케이스 수가 늘고 결함 가능성이 커진다.
결함 밀도 계산
결함 밀도는 결함 수를 천 라인 단위 코드 규모로 나눈 값이다.
결함 36건, 코드 규모 12 KLOC이면 36 ÷ 12 = 3이다. 결과는 3건/KLOC이다.
이 값은 기준 수치가 아니라 프로젝트 내 추세 비교에 쓰는 지표다.
같은 조직에서 릴리스마다 값을 비교해 감소 추세가 확인되는지 본다.
평가 절차
소스코드 품질평가는 정해진 절차에 따라 단계마다 점검한다.
평가 기준을 정하고, 정적 분석과 단위 테스트, 메트릭 산출을 차례로 수행한다.
결과는 품질 게이트 기준과 비교해 통과 여부를 정하고, 미달 항목은 수정 후 재평가한다.
신뢰도 지표
신뢰도는 결함 밀도나 MTBF 같은 지표로 정량화한다.
결함 밀도는 KLOC당 결함 수이고, MTTF는 고장 간격의 평균 시간이다.
측정 대상과 단위가 다르므로 두 지표를 섞어 쓰지 않는다.
정리
정적 분석과 동적 분석은 서로 보완하므로 함께 적용한다.
메트릭은 임계값 하나보다 추세로 관리하고, 결과는 품질 게이트에 연결한다.
정량 지표와 추세를 함께 보는 것이 소스코드 품질관리의 핵심이다.