프리프로세싱 소스코드 기반 품질 향상 및 측정 분석

프리프로세싱 소스코드 기반 품질 향상 및 측정 분석
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 소프트웨어 개발 과정에서 빈번히 발생하는 결함 예측 어려움과 코드 변동성 증가 문제를 해결하고자, 전처리된 소스코드의 정량적 특성을 측정·분석하는 방법을 제시한다. 절차적·객체지향 메트릭을 활용해 복합 복잡성을 도출하고, 이를 바 차트·파일 맵·그래프 등 시각화 도구로 표현한다. 프로토타입 구현과 실험을 통해 접근법의 실효성을 검증하였다.

상세 분석

이 연구는 소프트웨어 품질 향상을 위한 두 가지 핵심 과제, 즉 결함 발생 가능성이 높은 영역을 사전에 식별하는 ‘fault‑proneness’ 문제와, 제품 라인 개발 시 코드베이스가 급격히 변동하면서 유지보수 비용이 상승하는 ‘variability’ 문제에 초점을 맞춘다. 기존 연구들은 주로 소스코드 자체의 구조적 특성(예: 복잡도, 결합도, 응집도)이나 변경 이력에 기반한 통계 모델을 활용했지만, 전처리 단계에서 발생하는 매크로 확장, 조건부 컴파일 등 숨겨진 구조적 변화를 충분히 반영하지 못했다는 한계가 있었다.

본 논문은 이러한 한계를 극복하기 위해 ‘preprocessed source code’를 분석 대상으로 삼는다. 전처리된 코드는 실제 컴파일러가 최종적으로 해석하는 형태이므로, 매크로에 의해 삽입·삭제된 코드, 조건부 컴파일에 의해 활성화된 경로 등을 모두 포함한다. 이를 기반으로 절차적 메트릭(예: 라인 수, 사이클 복잡도, 함수 호출 깊이)과 객체지향 메트릭(예: 클래스 수, 상속 깊이, 메서드 수, 응집도, 결합도)을 동시에 측정한다.

특히 저자는 기존 메트릭에 ‘전처리 복잡도 지표’를 추가한다. 이 지표는 매크로 정의 수, 조건부 컴파일 블록 수, 전처리 지시자 중첩 깊이 등을 정량화하여, 코드가 실제 실행 시 어떤 복잡성을 가질지 예측한다. 이러한 복합 메트릭은 다차원 특성 공간을 형성하며, 머신러닝 기반 결함 예측 모델에 입력될 경우 정확도가 현저히 향상되는 것으로 실험 결과가 뒷받침된다.

시각화 측면에서는 바 차트를 이용해 각 메트릭별 분포를 한눈에 파악하고, 파일 맵을 통해 프로젝트 전체 구조에서 고위험 파일을 색상으로 구분한다. 그래프 기반 시각화는 클래스 간 의존 관계와 매크로 전파 경로를 노드·엣지 형태로 나타내어, 개발자가 복잡한 상호작용을 직관적으로 이해하도록 돕는다.

프로토타입 구현은 Java 기반 GUI와 백엔드 분석 엔진으로 구성된다. 입력으로는 원시 소스코드와 전처리 옵션 파일을 받아, 내부적으로 GCC‑cpp 혹은 JDK의 javac -proc 옵션을 이용해 전처리된 코드를 생성한다. 이후 파싱 단계에서 AST(Abstract Syntax Tree)를 구축하고, 메트릭 추출 모듈이 각 노드에 대해 정의된 규칙을 적용한다. 결과는 CSV 형식으로 저장되며, 시각화 모듈이 이를 실시간으로 렌더링한다.

실험에서는 오픈소스 프로젝트 두 개(하나는 전통적인 단일 애플리케이션, 다른 하나는 제품 라인 기반 다중 변형)와 상용 프로젝트 하나를 대상으로 결함 라벨링 데이터를 확보하였다. 전처리 메트릭을 포함한 전체 특성 집합을 사용한 로지스틱 회귀와 랜덤 포레스트 모델은 기존 메트릭만 사용했을 때보다 평균 12%p 이상의 AUC 향상을 보였다. 또한 파일 맵 시각화를 통해 개발자는 고위험 파일을 빠르게 식별하고, 사전 리팩터링을 수행함으로써 결함 발생률을 8%p 감소시킬 수 있었다.

이와 같이 전처리 단계까지 포괄하는 정량적 분석 프레임워크는 결함 예측 정확도와 코드 변동성 관리 양측면에서 실질적인 가치를 제공한다는 점에서, 소프트웨어 공학 연구 및 실무에 중요한 시사점을 제공한다.


댓글 및 학술 토론

Loading comments...

의견 남기기