오픈소스 설계 지표로 보는 아키텍처 레이어 자동 복원
초록
본 논문은 객체지향 설계 지표(CK 메트릭)를 활용해 오픈소스 시스템의 계층형 아키텍처를 추정하는 방법을 제시한다. 정적 분석으로 얻은 DAG‑Layers를 기준으로 네 개의 가상 레이어를 정의하고, 각 레이어와 메트릭 간 상관관계를 머신러닝 기반 분류 규칙으로 모델링한다. JabRef, Jbpm, RapidMiner, SweetHome3D 네 프로젝트에 적용한 실험 결과, DIT, CBO, RFC, LCOM, Ca 등 일부 지표가 레이어 구분에 유의미한 영향을 미침을 확인했지만, 높은 정확도와 재현율을 얻지는 못했다. 향후 지표 가중치 조정 및 추가 메트릭 도입을 통해 정확도를 개선하고자 한다.
상세 분석
이 연구는 기존 아키텍처 복원 기법이 주로 클러스터링이나 패턴 매칭에 의존하는 반면, 정적 코드 분석을 기반으로 한 새로운 접근을 시도한다. 먼저 시스템 전체를 정적 분석 도구(Classycle)로부터 DAG(Directed Acyclic Graph)를 생성하고, 이 그래프를 계층화하여 D‑Layer라는 개념을 만든다. D‑Layer는 상위 레이어가 하위 레이어에만 의존하고 역방향 의존이 없도록 정의된 서브셋이며, 이는 전통적인 4계층(UI, Controller, Business, Infrastructure) 구조와 매핑한다.
다음 단계에서는 각 클래스에 대해 CK 메트릭(WMC, DIT, NOC, CBO, RFC, LCOM, Ca, NPM)을 계산하고, D‑Layer와의 상관관계를 스피어만 상관계수로 분석한다. 결과적으로 DIT, CBO, RFC, LCOM, Ca가 모든 데이터셋에서 일관되게 유의미한 상관을 보였으며, 이는 깊이와 결합도가 높은 클래스가 비즈니스 로직이나 인프라스트럭처 레이어에 집중된다는 가설을 뒷받침한다.
상관관계 분석 후, 연속적인 D‑Layer를 네 개의 가상 레이어로 재구성하고, 각 레이어를 목표 클래스 라벨로 삼아 분류 모델을 학습한다. 이때 MDLP(Minimal Description Length Principle) 기반 이산화 기법을 적용해 연속형 메트릭을 범주형 변수로 변환하고, WEKA의 JRip(규칙 기반) 알고리즘을 사용해 IF‑THEN 형태의 규칙을 도출한다. 예를 들어, “CBO가 중간값이고 WMC가 높은 경우 레이어 3에 속한다”와 같은 규칙이 생성되었다.
실험 결과는 레이어별 정밀도와 재현율을 표로 제시했는데, UI 레이어(4)와 인프라 레이어(1)에서 비교적 높은 정밀도(0.74~0.98)를 보였으나, 중간 레이어(2,3)에서는 재현율이 현저히 낮았다. 이는 중간 레이어가 실제 시스템에서 기능적으로 혼재하거나, 단순 메트릭만으로는 복잡한 의존 관계를 충분히 포착하지 못하기 때문으로 해석된다. 또한, 일부 프로젝트(Jbpm, SweetHome3D)에서는 특정 레이어에 대한 규칙이 거의 생성되지 않아 레이어 복원에 한계가 있음을 보여준다.
논문의 한계점은 다음과 같다. 첫째, D‑Layer를 임의로 네 개의 그룹으로 합치는 과정이 주관적이며, 실제 아키텍처와의 일치성을 검증하기 어렵다. 둘째, 사용된 메트릭이 클래스 수준의 정량적 특성만을 반영하므로, 메서드 호출 흐름이나 동적 바인딩 같은 정교한 구조적 정보를 놓친다. 셋째, 머신러닝 모델이 규칙 기반이기에 복잡한 비선형 관계를 포착하기에 부족하다. 향후 연구에서는 메트릭 가중치를 학습 기반으로 최적화하고, 동적 분석 데이터(예: 호출 그래프)와 결합해 다중 특성 모델을 구축함으로써 레이어 복원의 정확성을 크게 향상시킬 수 있을 것으로 기대한다.
댓글 및 학술 토론
Loading comments...
의견 남기기