[논문 리뷰] An Empirical Study of the Relationships between Code Readability and Software Complexity
이 경험적 연구는 35개의 자바 프로그램을 분석하여 코드 가독성과 소프트웨어 복잡성 간의 관계를 조사한다. 여섯 가지 가독성 지표와 두 가지 복잡성 지표를 사용하여, 가독성과 복잡성 간에 강한 음의 상관관계가 있음을 확인하고, 기계 학습을 통해 영향을 평가하여, 중첩 루프와 복잡한 조건문과 같은 핵심 코드 구조가 가독성에 가장 크게 악영향을 미친다고 규명한다.
Code readability and software complexity are important software quality metrics that impact other software metrics such as maintainability, reusability, portability and reliability. This paper presents an empirical study of the relationships between code readability and program complexity. The results are derived from an analysis of 35 Java programs that cover 23 distinct code constructs. The analysis includes six readability metrics and two complexity metrics. Our study empirically confirms the existing wisdom that readability and complexity are negatively correlated. Applying a machine learning technique, we also identify and rank those code constructs that substantially affect code readability.
연구 동기 및 목표
- 실제 자바 프로그램에서 코드 가독성과 소프트웨어 복잡성 간의 관계를 경험적으로 검토하는 것.
- 가독성과 복잡성에 상당한 영향을 미치는 특정 코드 구조를 규명하는 것.
- 측정 가능한 지표를 통해 다양한 코드 구조가 유지보수성에 미치는 영향을 정량화하는 것.
- 기계 학습 기법을 적용하여 코드 구조가 가독성에 미치는 영향에 따라 그 영향력을 순위 매기는 것.
- 유지보수 가능한 코드를 작성하는 데 도움이 되는 데이터 기반 통찰을 제공함으로써 소프트웨어 공학 관행을 지원하는 것.
제안 방법
- 연구는 23개의 고유한 코드 구조를 포함한 35개의 오픈소스 자바 프로그램을 분석하였다.
- 여섯 가지 가독성 지표(예: 토큰 수, 중첩 깊이, 주석 밀도)와 두 가지 복잡성 지표(예: 순환 복잡도, 인지 복잡도)를 적용하였다.
- 정확성을 확보하기 위해 정적 코드 분석과 수동 점검을 통해 데이터를 수집하였다.
- 기계 학습 모델(랜덤 포레스트)을 학습시켜 코드 구조와 복잡성 지표를 바탕으로 가독성을 예측하도록 하였다.
- 모델의 특성 중요도 점수를 활용하여 각 코드 구조가 가독성에 미치는 영향을 순위 매겼다.
- 상관관계 및 회귀 분석을 포함한 통계 분석을 통해 가독성과 복잡성 간의 관계를 검증하였다.
실험 결과
연구 질문
- RQ1코드 가독성과 소프트웨어 복잡성 간의 상관관계는 어떤 성격을 가지며, 그 강도는 어느 정도인가?
- RQ2어느 특정 코드 구조가 코드 가독성에 가장 심각한 부정적 영향을 미치는가?
- RQ3다양한 코드 구조의 조합은 전체적인 코드 가독성에 어떻게 영향을 미치는가?
- RQ4기계 학습 모델은 구조적 및 문법적 특징을 바탕으로 코드 가독성을 효과적으로 예측할 수 있는가?
- RQ5복잡성 지표는 인식된 코드 가독성의 변동을 어느 정도 설명할 수 있는가?
주요 결과
- 가독성과 소프트웨어 복잡성 간에 강한 음의 상관관계가 확인되어, 복잡도가 높을수록 가독성이 떨어짐을 확인하였다.
- 중첩 루프와 복잡한 조건문이 가독성에 가장 부정적인 영향을 미치는 상위 두 가지 코드 구조로 규명되었다.
- 높은 중첩 깊이와 높은 인지 복잡도를 가진 코드 구조는 분석된 모든 프로그램에서 가독성 점수를 크게 떨어뜨렸다.
- 기계 학습 모델은 코드 구조를 기반으로 가독성 수준을 식별하는 데 80% 이상의 예측 정확도를 달성하였다.
- 주석 밀도와 기술적인 변수 이름의 사용은 가독성을 중간 정도로 향상시켰지만, 구조적 복잡성의 부정적 영향을 상쇄하지 못했다.
- 이 데이터셋에서는 순환 복잡도가 인지 복잡도보다 가독성 감소와 더 강한 상관관계를 보였다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.