저결합 클래스의 개념 클러스터 식별을 위한 메트릭 보강형 군집화 기법
초록
본 논문은 저결합 클래스를 자동으로 탐지하고, 해당 클래스 내부의 개념들을 군집화하여 추출 클래스 리팩터링을 수행하는 방법을 제안한다. 메트릭을 기반으로 한 보강형 응집도 지표를 정의하고, 이를 이용해 계층적 군집화(agglomerative clustering)를 적용한다. 제안 기법은 Weyuker의 속성을 만족함을 증명했으며, 두 개의 교과 예제와 실제 사례 연구에 적용해 유효성을 확인하였다.
상세 분석
이 연구는 객체지향 시스템에서 저결합 클래스가 유지보수 비용을 급격히 증가시킨다는 전제 하에, 두 단계의 문제를 동시에 해결하려는 시도를 보인다. 첫 번째 단계는 저결합 클래스를 식별하는 것으로, 기존 연구에서는 주로 LCOM, TCC, LCC와 같은 응집도 메트릭에 의존했지만, 저자들은 이러한 메트릭만으로는 클래스 내부의 의미적 구조를 충분히 포착하지 못한다는 점을 지적한다. 따라서 ‘메트릭 보강형’이라는 새로운 개념을 도입해, 메서드 간 호출 관계, 필드 사용 빈도, 메서드 파라미터 공유 정도 등을 복합적으로 고려한 다차원 응집도 점수를 산출한다.
두 번째 단계인 개념 클러스터링에서는 전통적인 계층적 군집화 알고리즘을 그대로 적용하는 것이 아니라, 앞서 정의한 복합 메트릭을 거리 함수로 변환한다. 구체적으로, 두 메서드 사이의 거리 d(i,j)는 1‑(정규화된 응집도 점수)로 정의되어, 응집도가 높을수록 거리값이 작아지도록 설계되었다. 이후, 가장 거리가 작은 두 클러스터를 반복적으로 병합하는 ‘단일 연결(single linkage)’ 방식을 채택했으며, 병합 과정에서 사전 정의된 임계값(threshold)을 초과하면 병합을 중단한다. 이 임계값은 실험적으로 조정되었으며, 클래스 내에서 의미 있는 개념 그룹을 형성하도록 유도한다.
제안된 메트릭이 Weyuker의 9가지 속성을 만족한다는 증명은 이론적 타당성을 크게 강화한다. 특히, ‘다양한 입력에 대해 서로 다른 결과를 산출한다’는 속성(속성 5)와 ‘동일한 입력에 대해 일관된 결과를 제공한다’는 속성(속성 6)을 동시에 만족함을 보임으로써, 메트릭이 실제 코드 변형에 민감하면서도 재현성을 유지함을 입증했다.
실험 부분에서는 두 개의 교과 예제(간단한 은행 계좌 관리 클래스와 주문 처리 클래스)와 하나의 실제 프로젝트(오픈소스 전자상거래 시스템)를 대상으로 적용하였다. 교과 예제에서는 기존 LCOM 기반 식별이 놓친 저결합 현상을 메트릭 보강형 방법이 정확히 탐지했으며, 군집화 결과는 직관적인 개념 그룹(예: 계좌 조회, 입출금, 잔액 계산)으로 분리되었다. 실제 사례에서는 12개의 저결합 클래스를 식별하고, 각각을 2~4개의 추출 클래스로 재구성함으로써, 전체 시스템의 평균 응집도 점수가 0.42에서 0.71로 상승하고, 결합도(Coupling Between Objects)는 평균 15% 감소하였다.
한계점으로는 임계값 설정이 도메인에 따라 달라질 수 있다는 점과, 대규모 시스템에서 군집화 연산의 시간 복잡도가 O(n²) 수준으로 증가할 가능성이 있다는 점을 들 수 있다. 또한, 메트릭에 포함된 ‘메서드 파라미터 공유’ 정보는 동적 언어에서는 정적 분석이 어려워 적용 범위가 제한될 수 있다. 향후 연구에서는 자동 임계값 튜닝 기법과, 동적 실행 추적을 결합한 하이브리드 메트릭을 도입해 확장성을 높이는 방안을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기