본문 바로가기

Process & Project/Posting

[QA] Cyclomatic complexity analysis - 순환 복잡성 분석

측정 (Measurement)
  • QA 활동 중의 주요 Key 중의 하나

측정은 다음과 같은 목적을 위해 진행한다.
  1. 현재 상태 파악 및 목표치 수립
  2. 프로세스 개선 대상 도출 및 우선 순위 파악을 위한 기초 자료
  3. 설득력있는 정략적 기초 데이타 도출 

측정의 대상은 매우 많으나, 이번에는 개발자들의 주요 산출물인 코드를 대상으로 측정하는 것을 주제로 하여 접근한다.

소스 코드는 측정 요소 중에서 매우 중요한 축의 하나이다.
소스 코드의 측정 결과는 개발자들의 생산성, 코드의 품질, 코드 개선 등의 다양한 관점에서 유용하게 사용될 수 있기 때문이다.

이런 소스 코드 측정 기준 중의 하나가 Cyclomatic complexity analysis 이다.
(정의와 내용은 Cyclomatic_complexity wiki 문서 참조)

이번 글에서는, Cyclomatic complexity analysis에 대해서 간단하게 소개하려고 한다. 



<목적> - 일반적인 소스코드 측정의 목적
  1. 정량적 관리를 위한 기초 데이터 도출
  2. 분석을 통해 코드의 복잡성을 측정
  3. 복잡도가 높은 부분의 오류 발생 가능성 확인 및 테스트 전략 수립
  4. 코드 개선의 방향 및 전략 수립 (refactoring등의 코드 개선 작업 규모 및 우선순위 수립)
  5. 코드 개선의 KPI 수립

<도구> - Cyclomatic complexity analysis 분석을 위한 도구

 이름 설명  관련 내용
 Eclipse Metrics 3.12.0  Eclipse Plug-in
 상세한 분석 결과 도출 
 http://marketplace.eclipse.org/content/eclipse-metrics
 N'SIQ Code Metric Collector  NHN에서 개발한 프리웨어
 사용법 간단
 http://dev.naver.com/projects/nsiqcollector

실제 사용해봤던 위 2개의 Tool외에 다양한 Tool들이 매우 많다.
아래 다양한 Tool을 링크한 사이트를 추가하니, 참고하기 바란다.

<측정 결과>
  • Cyclomatic Complexity
  • Lines of Code in Method
  • ...



위 사진은 'Eclipse Metrics 3.12.0' 측정 결과의 Sample 내용임


<맺으며>
Software 개발에서 가장 중요한 핵심은 Software 이며, Software를 만들때 가장 중추적인 산출물이 바로 소스코드이다.
(그외 산출물들은 Software를 잘 만들기 위해서 도출되는 것이고, 소스코드는 Software의 근간이다.)

따라서, 가장 근간이 되는 코드의 품질과 문제점을 파악하는 것이 가장 중요하며, 파악하기 위한 다양한 접근은 정성적인 접근 분석 뿐만 아니라, 정량적인 접근도 매우 중요하다.

소스코드의 정량적인 측정을 위한 기준을 파악하고 Tool을 통해 측정하는 활동을 통하여,
프로세스나 그 외 다양한 업무 기준을 수립하고 개선하는데 도움이 되었으면 한다.