[논문 리뷰] Why Developers Refactor Source Code: A Mining-based Study
이 연구는 150개의 오픈소스 자바 프로젝트에서 287,813건의 리팩터링 작업을 대규모 혼합 방법 분석을 통해 개발자가 소스 코드를 리팩터링하는 이유를 조사한다. 코드 및 프로세스 메트릭의 정량적 마이닝과 551개의 풀 리퀘스트에 대한 정성적 분석을 융합함으로써, 저자들은 리팩터링의 동기를 67가지로 규명하였으며, 이는 의미적 메트릭과 비기능적 트레이드오프가 개발자 결정에 중대한 영향을 미친다는 것을 보여주며, 현재 리팩터링 추천 시스템과 도구의 격차를 드러낸다.
Refactoring aims at improving code non-functional attributes without modifying its external behavior. Previous studies investigated the motivations behind refactoring by surveying developers. With the aim of generalizing and complementing their findings, we present a large-scale study quantitatively and qualitatively investigating why developers perform refactoring in open source projects. First, we mine 287,813 refactoring operations performed in the history of 150 systems. Using this dataset, we investigate the interplay between refactoring operations and process (e.g., previous changes/fixes) and product (e.g., quality metrics) metrics. Then, we manually analyze 551 merged pull requests implementing refactoring operations and classify the motivations behind the implemented refactorings (e.g., removal of code duplication). Our results led to (i) quantitative evidence of the relationship existing between certain process/product metrics and refactoring operations and (ii) a detailed taxonomy, generalizing and complementing the ones existing in the literature, of motivations pushing developers to refactor source code.
연구 동기 및 목표
- 설문 조사 기반 가정을 뛰어넘어 실제 소프트웨어 리팩터링의 동기를 이해하기 위해.
- 오픈소스 시스템에서 리팩터링 작업과 관련된 제품 및 프로세스 메트릭이 어떻게 상관관계를 가지는지 규명하기 위해.
- 실제 개발 관행에서 유래한 경험적 기반의 포괄적인 리팩터링 동기 분류 체계를 수립하기 위해.
- 구조적 또는 품질 메트릭에만 의존하는 현재 리팩터링 추천 시스템의 한계를 평가하기 위해.
- 다양하고 맥락에 민감한 개발자 목표를 고려한 미래 도구 및 추천 시스템 설계에 기여하기 위해.
제안 방법
- GitHub에 호스팅된 150개의 오픈소스 자바 프로젝트의 버전 기록을 RMiner 도구를 사용해 마이닝하여 25종류의 리팩터링 작업을 포함해 총 287,813건의 리팩터링 작업을 추출한다.
- 리팩터링 작업과 제품 메트릭(예: 품질, 가독성, C3) 및 프로세스 메트릭(예: 결함 발생 가능성, 변경 빈도) 간의 관계를 분석한다.
- 수집된 리팩터링 변경 사항을 포함하는 통계적으로 유의미한 551개의 풀 리퀘스트 샘플을 선별하여 수동 분석을 수행한다.
- 각 리팩터링의 목적과 의도를 분류하기 위해 풀 리퀘스트 논의 및 커밋 메시지에 대한 정성적 코딩을 수행한다.
- 수동 분석 결과를 통합하여 67가지의 동기를 포함한 분류 체계를 수립하며, 이는 이전 설문 기반 분류 체계를 일반화하고 확장한다.
- 정량적 메트릭 상관관계와 정성적 동기를 비교함으로써, 메트릭 기반 리팩터링 추천 시스템의 한계를 평가한다.
실험 결과
연구 질문
- RQ1실제 소프트웨어 프로젝트에서 리팩터링 작업과 가장 강하게 상관관계가 있는 제품 및 프로세스 메트릭은 무엇인가?
- RQ2실제 풀 리퀘스트 논의와 코드 변경 사항에서 유도된 주요 리팩터링 동기는 무엇인가?
- RQ3이 연구에서 규명된 동기는 이전 설문 기반 연구에서 발견된 것들과 어떻게 비교되며, 이를 어떻게 확장하는가?
- RQ4현재 코드 품질 메트릭에만 의존하는 리팩터링 추천 시스템은 개발자 중심 리팩터링 동기의 전반적인 스펙트럼을 어느 정도 포괄하는가?
- RQ5기존 도구와 실무에서의 주요 격차는 무엇이며, 이는 일반적으로 수작업으로 수행되는 리팩터링의 자동화를 방해하는가?
주요 결과
- 의미적 메트릭, 특히 가독성과 C3(클래스의 개념적 결합도)가 리팩터링 작업과 가장 강한 정량적 상관관계를 보였으며, 이는 개발자가 코드 이해 가능성에 우선순위를 두고 있음을 시사한다.
- 리팩터링의 가장 흔한 동기는 코드 중복 제거, 가독성 향상, 코드 냄새 수정이며, 정성적 분석에서 총 67가지의 구체적 동기를 규명하였다.
- 많은 리팩터링 작업이 코드 리뷰 피드백에 의해 유도되었으며, 특히 이름 개선과 약어 전개에 대해 빈번히 발생하여, 동료 리뷰가 변화의 주요 촉매제임을 보여준다.
- 상당수의 리팩터링은 향후 변경을 고려해 사전에 수행된 것으로, 현재 추천 시스템에서 자주 간과하는 전략적이고 미래 지향적인 차원을 드러낸다.
- 현재 구조적 또는 품질 메트릭에만 의존하는 리팩터링 추천 시스템은 의미적 또는 유지보수성 트레이드오프에 기반한 많은 의미 있는 리팩터링을 놓칠 가능성이 크다.
- 본 연구는 자동 약어 전개 및 중복 코드 탐지와 같은 핵심 자동화 기회를 규명하였으며, 이는 기존 연구 솔루션은 존재하지만 실무에서 사용 가능한 도구로는 아직 구현되지 않은 분야이다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.