Skip to main content
QUICK REVIEW

[논문 리뷰] An Empirical Evaluation of Impact of Refactoring On Internal and External Measures of Code Quality

Sampath Kannangara, Janaka Wijayanayake|arXiv (Cornell University)|2015. 02. 12.
Software Engineering Research참고 문헌 15인용 수 4
한 줄 요약

이 사례 기반 연구는 소프트웨어 시스템에서 10가지 리팩터링 기법이 내부 및 외부 코드 품질 측정치에 미치는 영향을 평가한다. 외부 메트릭인 자원 활용도 및 시간 동작 특성은 리팩터링 후 개선되지 않았지만, 내부 메트릭은 유지보수성 지수의 유의미한 증가를 보여, 리팩터링이 유지보수성과 같은 특정 코드 품질 요소를 향상시킬 수 있음을 시사한다.

ABSTRACT

Refactoring is the process of improving the design of existing code by changing its internal structure without affecting its external behaviour, with the main aims of improving the quality of software product. Therefore, there is a belief that refactoring improves quality factors such as understandability, flexibility, and reusability. However, there is limited empirical evidence to support such assumptions. The objective of this study is to validate/invalidate the claims that refactoring improves software quality. The impact of selected refactoring techniques was assessed using both external and internal measures. Ten refactoring techniques were evaluated through experiments to assess external measures: Resource Utilization, Time Behaviour, Changeability and Analysability which are ISO external quality factors and five internal measures: Maintainability Index, Cyclomatic Complexity, Depth of Inheritance, Class Coupling and Lines of Code. The result of external measures did not show any improvements in code quality after the refactoring treatment. However, from internal measures, maintainability index indicated an improvement in code quality of refactored code than non-refactored code and other internal measures did not indicate any positive effect on refactored code

연구 동기 및 목표

  • 리팩터링이 소프트웨어 품질을 향상시킨다는 널리 퍼진 믿음을 경험적으로 검증하거나 기각하는 것.
  • 특정 리팩터링 기법이 내부 및 외부 코드 품질 측정치에 미치는 영향을 평가하는 것.
  • 리팩터링이 유지보수성, 유연성, 재사용성 향상에 측정 가능한 영향을 미치는지 평가하는 것.
  • 순환 복잡도, 결합도, 코드 줄 수와 같은 표준 소프트웨어 품질 요소에 리팩터링의 영향을 분석하는 것.
  • 리팩터링이 변경 가능성 및 분석 가능성과 같은 외부 품질 요소에 측정 가능한 향상 효과를 주는지 확인하는 것.

제안 방법

  • 연구는 소프트웨어 시스템 세트에 10가지 특정 리팩터링 기법을 적용하여 코드 품질에 미치는 영향을 평가했다.
  • 외부 품질 측정치—자원 활용도, 시간 동작 특성, 변경 가능성, 분석 가능성—는 수집 및 분석되었다.
  • 내부 품질 측정치—유지보수성 지수, 순환 복잡도, 상속 깊이, 클래스 결합도, 코드 줄 수—는 리팩터링 전후로 계산되었다.
  • 실험은 실제 코드베이스에서 수행되어 실용적 관련성과 경험적 타당성을 확보했다.
  • 통계 분석을 통해 내부 및 외부 메트릭의 전후 값 간 비교가 이루어졌다.
  • 연구는 일관성과 비교 가능성을 확보하기 위해 ISO에서 정의한 외부 품질 요소와 표준 내부 코드 메트릭을 사용했다.

실험 결과

연구 질문

  • RQ1리팩터링은 자원 활용도 및 시간 동작 특성과 같은 외부 소프트웨어 품질 요소에 측정 가능한 향상 효과를 주는가?
  • RQ2리팩터링은 순환 복잡도 및 클래스 결합도와 같은 내부 코드 품질 메트릭에 어느 정도 영향을 미치는가?
  • RQ3리팩터링 후 유지보수성 지수에 통계적으로 유의미한 향상이 있는가?
  • RQ4변경 가능성 및 분석 가능성과 같은 외부 품질 요소는 리팩터링 후 향상되는가?
  • RQ5어느 내부 메트릭이 리팩터링 후 일관되게 긍정적인 변화를 보이며, 어느 것은 그렇지 않은가?

주요 결과

  • 자원 활용도, 시간 동작 특성, 변경 가능성, 분석 가능성과 같은 외부 측정치는 리팩터링 후 유의미한 향상이 없었다.
  • 비리팩터링 코드 대비 리팩터링된 코드에서 유지보수성 지수가 유의미하게 증가하여 유지보수성 향상이 확인되었다.
  • 순환 복잡도, 상속 깊이, 클래스 결합도, 코드 줄 수는 리팩터링 후 일관된 긍정적 변화를 보이지 않았다.
  • 결과적으로 리팩터링은 유지보수성을 향상시키지만, 일반적으로 상상하는 바와 같이 성능이나 구조적 유연성 향상은 보장되지 않는다는 점을 시사한다.
  • 리팩터링의 이점이 모든 품질 차원에 균일하게 분포하지 않는다는 경험적 증거를 제공한다.
  • 오직 한 가지 내부 메트릭—유지보수성 지수—만이 명확한 긍정적 영향을 보였으며, 이는 코드 품질에 대한 전반적인 영향이 제한적임을 시사한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.