자동 아키텍처 재구성 및 리팩터링 프레임워크
초록
본 논문은 소프트웨어 아키텍처 침식 문제를 해결하기 위해, 기존 시스템의 물리적 구조를 자동으로 분석하고 목표 개념 아키텍처를 재구성한 뒤, 코드 레벨에서 자동 리팩터링을 수행하는 프레임워크를 제안한다. Java 기반 프로토타입을 구현하여 개념 아키텍처 추출 및 물리 아키텍처 정렬 과정을 실증하였다.
상세 분석
소프트웨어 개발 현장에서 아키텍처 침식은 설계 의도와 구현 사이의 괴리를 초래하며, 유지보수 비용 상승, 테스트 어려움, 개발 속도 저하 등 심각한 부작용을 낳는다. 기존 연구들은 침식 현상을 탐지하거나 수동으로 복구하는 방법을 제시했지만, 자동화된 전체 흐름을 제공하지 못했다는 한계가 있었다. 이 논문은 이러한 공백을 메우기 위해 두 단계로 구성된 자동화 파이프라인을 설계한다. 첫 번째 단계는 정적 분석 엔진을 활용해 Java 소스코드와 바이너리 정보를 추출하고, 클래스 간 의존성, 모듈 경계, 레이어 구조 등을 그래프 형태로 모델링한다. 이후 클러스터링 알고리즘(예: 계층적 군집화)과 도메인 규칙(패키지 명명 규칙, 인터페이스 사용 패턴)을 결합해 ‘개념 아키텍처’ 모델을 자동 생성한다. 여기서 개념 아키텍처는 목표 레이어(프레젠테이션, 비즈니스, 데이터)와 모듈 경계를 정의한 추상적 설계도이다. 두 번째 단계에서는 목표 아키텍처와 현재 물리 아키텍처 간의 차이를 매핑하고, 차이를 최소화하기 위한 일련의 리팩터링 작업을 자동으로 생성한다. 구체적인 리팩터링에는 패키지 이동, 인터페이스 추출, 의존성 역전 적용, 메서드 추출 등이 포함되며, 각 작업은 사전 정의된 변환 규칙에 따라 순차적으로 적용된다. 프레임워크는 변환 전후의 아키텍처 일관성을 검증하기 위해 메트릭(응집도, 결합도, 레이어 위반 수)을 측정하고, 목표 메트릭 값에 도달했는지 여부를 피드백한다. 프로토타입 구현에서는 Eclipse JDT와 Spoon 라이브러리를 활용해 AST 기반 분석 및 코드 변환을 수행했으며, 실험 대상인 3개의 오픈소스 Java 프로젝트에 대해 개념 아키텍처 재구성과 자동 리팩터링을 적용했다. 결과는 기존 수동 복구 대비 시간 절감 효과와, 구조적 메트릭 개선을 입증하였다. 그러나 현재는 정적 분석에 국한되어 동적 행위(런타임 의존성)나 비기능 요구사항(성능, 보안)까지 포괄하지 못한다는 제한점이 있다. 향후 연구에서는 동적 분석 통합, 다중 언어 지원, 그리고 머신러닝 기반 아키텍처 패턴 학습을 통해 프레임워크의 적용 범위와 정확성을 확대할 계획이다.