클래스 활력 측정 지표
초록
본 논문은 클래스가 객체로 인스턴스화될 때 멤버 접근성을 정량화하는 ‘클래스 활력 지표(Class Activeness Metric, CAM)’를 제안한다. 공개(public), 보호(protected), 비공개(private) 멤버와 상속 관계, 친구 함수 등을 고려해 설계 품질을 평가하고, 복잡한 객체 상호작용을 최소화하도록 설계 가이드를 제공한다.
상세 분석
클래스 설계의 품질을 판단하기 위해서는 객체 간 상호작용이 얼마나 직관적이고 효율적인가가 핵심이다. 기존의 응집도(Cohesion)·결합도(Coupling) 같은 지표는 클래스 내부의 논리적 연관성과 외부와의 의존성을 측정하지만, 실제 실행 시 멤버 접근에 필요한 비용을 직접적으로 반영하지 못한다. 이러한 한계를 보완하고자 저자들은 ‘클래스 활력’이라는 개념을 도입한다. 활력은 클래스가 객체로 생성된 뒤, 외부에서 해당 객체의 멤버에 접근할 수 있는 용이성을 의미한다.
CAM은 크게 네 가지 요소로 구성된다. 첫째, **공개 멤버 수(Pu)**와 **보호 멤버 수(Pr)**는 외부에서 직접 접근 가능한 인터페이스를 제공하므로 활력에 긍정적인 기여를 한다. 둘째, **비공개 멤버 수(Pv)**와 **보호 멤버 수(Prv)**는 접근 제한을 의미하므로 활력을 감소시킨다. 셋째, 상속 관계를 고려한다. 파생 클래스가 기본 클래스로부터 상속받은 공개·보호 멤버는 파생 객체에서도 동일하게 접근 가능하므로, 상속 깊이와 폭을 가중치로 반영한다. 넷째, **친구 함수(friend)**와 친구 클래스는 비공개 멤버에 대한 특별 접근 권한을 제공하므로, 이들의 존재 여부와 수를 별도 보정항으로 포함한다.
수식적으로는 다음과 같이 정의된다.
\
댓글 및 학술 토론
Loading comments...
의견 남기기