[논문 리뷰] On the Impact of Refactoring on the Relationship between Quality Attributes and Design Metrics
이 연구는 소프트웨어 개발자가 커밋 메시지에서 보고한 품질 향상 의도가 리팩터링 이후 구조적 설계 메트릭의 변화와 얼마나 일치하는지 조사한다. 3,795개의 오픈소스 자바 프로젝트에서 수집한 1,245개의 리팩터링 커밋을 대상으로 한 분석에서, 개발자가 응집도, 결합도, 복잡도 향상을 주장할 경우 LCOM, CBO, CC와 같은 메트릭은 유의미하게 향상되는 것으로 나타났다. 반면 NOC나 설계 크기 메트릭은 개발자 의도와 유의미한 일치를 보이지 않았다.
Refactoring is a critical task in software maintenance and is generally performed to enforce the best design and implementation practices or to cope with design defects. Several studies attempted to detect refactoring activities through mining software repositories allowing to collect, analyze and get actionable data-driven insights about refactoring practices within software projects. Aim: We aim at identifying, among the various quality models presented in the literature, the ones that are more in-line with the developer’s vision of quality optimization, when they explicitly mention that they are refactoring to improve them. Method: We extract a large corpus of design-related refactoring activities that are applied and documented by developers during their daily changes from 3,795 curated open source Java projects. In particular, we extract a large-scale corpus of structural metrics and anti-pattern enhancement changes, from which we identify 1,245 quality improvement commits with their corresponding refactoring operations, as perceived by software engineers. Thereafter, we empirically analyze the impact of these refactoring operations on a set of common state-of-the-art design quality metrics. Results: The statistical analysis of the obtained results shows that (i) a few state-of-the-art metrics are more popular than others; and (ii) some metrics are being more emphasized than others. Conclusions: We verify that there are a variety of structural metrics that can represent the internal quality attributes with different degrees of improvement and degradation of software quality. Most of the metrics that are mapped to the main quality attributes do capture developer intentions of quality improvement reported in the commit messages, but for some quality attributes, they don’t.
연구 동기 및 목표
- 리팩터링을 통해 품질 향상을 목적으로 할 때, 어떤 구조적 설계 메트릭이 개발자의 자가 보고한 의도를 가장 잘 반영하는지 규명하는 것.
- 최신 설계 메트릭이 응집도, 결합도, 복잡도, 상속성 등의 품질 특성에 대한 개발자 인식을 실제로 포괄하는지 경험적으로 평가하는 것.
- 이론적 품질 모델과 실제 개발자 실천 간의 괴리를 밝혀내는 것.
- 향후 연구를 위해 재현 가능한 리팩터링 커밋 데이터셋과 관련 메트릭 변화를 제공하는 것.
제안 방법
- 우수한 설계를 가진 시스템을 중심으로, 깃허브에서 3,795개의 정제된 오픈소스 자바 프로젝트를 수집하였다.
- 품질 향상 목표를 명시적으로 언급한 커밋 메시지가 포함된 1,245개의 커밋을 식별하였다.
- 최신 리팩터링 마이닝 도구(예: Refactoring Miner)를 적용하여 이러한 커밋에서 리팩터링 작업을 탐지하고 추출하였다.
- 리팩터링된 코드 요소만을 고립시키고, 내부 품질 속성(예: 응집도, 복잡도)에 따라 커밋을 클러스터링함으로써 데이터셋을 정제하였다.
- 각 커밋 클러스터에 대해 27개의 구조적 설계 메트릭의 리팩터링 전·후 값을 계산하였다.
- 메트릭 변화의 유의미성을 평가하기 위해 통계 분석(p-값)을 수행하여, 개발자 의도를 실제로 반영하는 메트릭을 규명하였다.
실험 결과
연구 질문
- RQ1개발자가 품질 향상 목표를 명시적으로 언급할 경우, 어떤 구조적 설계 메트릭이 리팩터링으로 인해 가장 유의미하게 영향을 받는가?
- RQ2일반적으로 사용되는 설계 메트릭이 리팩터링 과정에서 개발자의 자가 보고한 의도와 어느 정도 일치하는가?
- RQ3응집도, 복잡도, 상속성 등 특정 품질 속성에 대해, 어떤 메트릭도 개발자 의도를 유의미하게 반영하지 못하는가?
- RQ4동일한 품질 속성(예: 결합도)을 측정하는 다양한 메트릭 간에, 개발자 인식의 향상 정도를 얼마나 잘 반영하는가?
주요 결과
- 개발자가 응집도 향상을 주장할 경우 LCOM는 통계적으로 유의미하게 향상되었으며(p = 0.0346), 이는 개발자 의도와 강한 일치를 보였다.
- 개발자가 결합도 향상을 목표로 할 경우 CBO와 FANOUT은 각각 유의미하게 향상되었으며(p = 0.0400 및 p = 0.0456), 이는 이 메트릭들이 결합도를 잘 대표한다는 것을 확인하였다.
- 개발자가 복잡도 향상을 목표로 할 경우 CC, WMC, RFC, Evg, NPATH, MaxNest는 모두 유의미하게 향상되었으며(p ≤ 0.0062), 이는 이 메트릭들이 복잡도 측정에 적합함을 확인하였다.
- 상속성에 대해선 DIT만이 통계적으로 유의미하게 향상되었으며(p = 0.0439), 반면 NOC는 오히려 증가했으며(p = 0.0208), 이는 개발자 인식과의 괴리가 있음을 시사한다.
- 캡슐화, 추상화, 설계 크기 속성(예: LOC, CLOC, CDL)에 대해서는 유의미한 메트릭 변화가 관찰되지 않아, 이 속성에 대한 개발자 의도를 신뢰할 수 있는 메트릭이 없음을 시사한다.
- 폴리모르피즘에 대해선 WMC와 RFC가 유의미한 변화를 보이지 않았으며(p > 0.5), 이는 개발자 보고된 목표와의 일치도가 낮음을 의미한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.