[논문 리뷰] 30 Years of Software Refactoring Research:A Systematic Literature Review
이 체계적 문헌 리뷰는 30년에 걸쳐 소프트웨어 리팩터링에 관한 3,183篇의 연구 논문을 분석하여 분열된 분야를 체계화하기 위해 종합적인 분류 체계를 제안한다. 이는 코드 수준을 넘어서 아키텍처, 모델 수준, 비기능적 목표 중심의 리팩터링으로 확장된 추세를 밝혀내며, 스케줄링, 추천, 기회 탐지, 정확성 검증 분야의 주요 연구 격차를 제시한다.
Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools and techniques on software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improve the system design while preserving the behavior. Refactoring studies are expanded beyond code-level restructuring to be applied at different levels (architecture, model, requirements, etc.), adopted in many domains beyond the object-oriented paradigm (cloud computing, mobile, web, etc.), used in industrial settings and considered objectives beyond improving the design to include other non-functional requirements (e.g., improve performance, security, etc.). Thus, challenges to be addressed by refactoring work are, nowadays, beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring, recommendations of specific refactoring activities, detection of refactoring opportunities, and testing the correctness of applied refactorings. Therefore, the refactoring research efforts are fragmented over several research communities, various domains, and objectives. To structure the field and existing research results, this paper provides a systematic literature review and analyzes the results of 3183 research papers on refactoring covering the last three decades to offer the most scalable and comprehensive literature review of existing refactoring research studies. Based on this survey, we created a taxonomy to classify the existing research, identified research trends, and highlighted gaps in the literature and avenues for further research.
연구 동기 및 목표
- 30년에 걸친 3,183편의 논문에서 도출된 통합된 결과를 바탕으로 소프트웨어 리팩터링 연구 분야의 분열된 상태를 체계화하기 위해.
- 기존의 코드 리팩터링을 넘어서 아키텍처, 모델, 요구사항 수준에서의 적용을 포함한 진화하는 연구 추세를 식별하기 위해.
- 클라우드 컴퓨팅, 모바일, 웹 시스템 등 다양한 도메인에서 리팩터링의 도입 현황을 분석하기 위해.
- 성능, 보안, 유지보수성과 같은 비기능적 품질 특성 향상을 위해 리팩터링이 어떻게 활용되고 있는지 탐색하기 위해.
- 스케줄링, 특정 조치 추천, 기회 탐지, 정확성 검증 분야에서 아직 미비하게 다뤄진 핵심 연구 격차를 밝혀내기 위해.
제안 방법
- 주요 학술 데이터베이스 및 저장소를 대상으로 사전 정의된 검색 기준을 활용해 체계적 문헌 리뷰를 수행하였다.
- 1990년부터 2020년까지 출판된 3,183편의 연구 논문을 선별 및 분석하여 포괄적인 커버리지 확보를 위해 노력하였다.
- 레벨(코드, 아키텍처, 모델, 요구사항), 파라다임(OOP, 비-OOP), 목표(설계, 성능, 보안 등)를 기반으로 다차원적 분류 체계를 개발하였다.
- 메타데이터 및 내용 분석을 통해 시간에 따른 추세, 연구 초점 이동, 공동체의 분열 현상을 식별하였다.
- 주제 분석을 통해 문헌에서 반복적으로 나타나는 과제와 연구 방향을 추출하였다.
- 반복적 검토 및 저자 간의 합의를 통해 결과의 정확성과 완전성을 검증하였다.
실험 결과
연구 질문
- RQ1지난 30년 동안 소프트웨어 리팩터링 연구의 범위는 코드, 아키텍처, 모델, 요구사항 수준의 소프트웨어 개발 단계에서 어떻게 진화해 왔는가?
- RQ2리팩터링이 적용되고 있는 주요 파라다임과 도메인은 무엇이며, 시간이 지남에 따라 어떻게 변화해 왔는가?
- RQ3성능, 보안, 유지보수성과 같은 비기능적 품질 특성을 향상시키기 위해 리팩터링이 얼마나 널리 사용되고 있는가?
- RQ4스케줄링, 추천, 정확성 검증 분야에서 아직 다루지 못한 주요 과제들은 무엇이며, 특히 이 분야에서 연구가 미흡한 이유는 무엇인가?
- RQ5리팩터링 연구 분야에서 공동체는 도메인, 목표, 방법론적 접근 방식에 따라 어떻게 분열되어 있으며, 이로 인해 발생하는 영향은 무엇인가?
주요 결과
- 리팩터링 연구는 기존의 객체 지향 코드 재구성에 그치지 않고 아키텍처, 모델, 요구사항 수준의 변환으로 확장되었다.
- 성능, 보안, 확장성 향상과 같은 비기능적 성질 향상을 위해 리팩터링을 적용하는 경향이 뚜렷하게 증가하고 있으며, 특히 클라우드 및 모바일 시스템에서 두드러진다.
- 증가하는 관심에도 불구하고 최적의 리팩터링 시점 스케줄링, 특정 리팩터링 추천, 기회 탐지에 관한 연구는 여전히 미흡한 상태이다.
- 실제 적용된 리팩터링의 정확성은 거의 검증되지 않으며, 이는 도구 및 검증 지원 분야의 심각한 격차를 시사한다.
- 연구 분야는 공동체 및 도메인 간에 매우 분열되어 있으며, 상호 도메인 간 융합 및 공유되는 프레임워크가 부족하다.
- 본 연구에서 개발한 분류 체계는 리팩터링 연구의 12개의 고유한 범주를 포괄하며, 순수한 설계 중심 연구에서 더 넓은 소프트웨어 품질 목표로의 이동을 드러낸다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.