멀티리팩터 자동 리팩터링으로 소프트웨어 품질 혁신

멀티리팩터 자동 리팩터링으로 소프트웨어 품질 혁신
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 26가지 리팩터링을 자동으로 수행하고, 30여 개의 품질 지표와 6가지 탐색 기반 최적화 알고리즘을 결합한 도구 “멀티리팩터”를 제안한다. 단일·다목적 유전 알고리즘을 비교 실험한 결과, 다목적 접근이 동일한 품질 향상을 더 짧은 시간에 달성함을 확인하였다. 또한, 구체적인 코드 요소와 연관된 지표가 검색 효율을 높이는 데 유리함을 실증하였다.

상세 분석

멀티리팩터는 자동화된 소프트웨어 유지보수를 목표로 설계된 통합 프레임워크이다. 먼저 26개의 리팩터링을 정의했으며, 이는 메서드 추출, 클래스 이동, 인터페이스 도입 등 전통적인 객체지향 리팩터링을 포괄한다. 각 리팩터링은 사전·사후 코드 구조를 비교해 적용 가능성을 판단하고, 적용 후에는 사전에 정의된 품질 지표를 재계산한다.

품질 지표는 크게 구조적, 복잡도, 응집도·결합도, 테스트 가능성 등 네 범주로 나뉜다. 총 30여 개의 지표 중, 실험에서는 각 지표가 검색 공간을 어떻게 가이드하는지를 평가하기 위해 다섯 개의 오픈소스 코드베이스에 적용하였다. 결과적으로, “메서드 길이”, “클래스 응집도”, “제어 흐름 복잡도”와 같이 구체적인 코드 요소에 직접 연관된 지표가 검색 효율을 크게 향상시켰다. 반면, 전체 라인 수나 주석 비율처럼 거시적인 지표는 변화 탐지에 한계가 있었다.

검색 기반 최적화는 6가지 알고리즘—단일 목적 유전 알고리즘(GA), 다목적 유전 알고리즘(NSGA‑II), 파레토 기반 입자 군집 최적화(PSO), 심층 강화 학습, 모의 담금질, 그리고 무작위 탐색—을 제공한다. 각 알고리즘은 동일한 초기 개체군을 사용해 동일한 리팩터링 연산자를 적용한다. 단일 목적 GA는 하나의 목표(예: 사이클 복잡도 감소)만을 최적화하도록 설계됐으며, 다목적 NSGA‑II는 사이클 복잡도, 클래스 응집도, 테스트 커버리지 세 가지 목표를 동시에 고려한다.

실험 결과, 다목적 NSGA‑II는 각 목표에 대해 단일 목적 GA와 비교했을 때 비슷하거나 더 나은 파레토 전선을 제공했으며, 전체 실행 시간도 평균 30 % 정도 단축되었다. 이는 다목적 알고리즘이 탐색 과정에서 다양한 목표 간의 트레이드오프를 효율적으로 활용해 불필요한 반복을 줄이기 때문이다. 또한, 다목적 접근은 최종 솔루션 집합이 다양해 유지보수 담당자가 상황에 맞는 개선안을 선택할 수 있는 유연성을 제공한다.

한계점으로는 현재 26가지 리팩터링이 모든 도메인에 적용 가능하지 않을 수 있으며, 지표 선택이 프로젝트 특성에 따라 달라질 필요가 있다는 점이다. 또한, 탐색 알고리즘의 파라미터 튜닝이 자동화되지 않아 초기 설정에 따라 결과 변동성이 존재한다. 향후 연구에서는 도메인 특화 리팩터링 추가와 메타러닝 기반 파라미터 자동 조정, 그리고 실시간 개발 환경과의 연동을 목표로 하고 있다.


댓글 및 학술 토론

Loading comments...

의견 남기기