CK 메트릭(Chidamber and Kemerer Metrics)

객체지향 설계의 복잡도를 측정하는 대표적인 기준인 CK 메트릭(Chidamber and Kemerer Metrics)은 6가지 주요 지표로 구성됩니다. 이 메트릭은 클래스의 크기, 상속 구조, 결합도 등을 수치화하여 소프트웨어의 유지보수성과 품질을 평가하는 데 사용됩니다.

 

1. WMC (Weighted Methods per Class)

클래스 내 메서드의 가중치 합을 의미합니다.

  • 설명 : 클래스에 정의된 모든 메서드의 복잡도를 합산한 값입니다. 보통 각 메서드의 순환 복잡도(Cyclomatic Complexity)를 가중치로 사용합니다.
  • 의미 : WMC가 높을수록 해당 클래스는 이해하기 어렵고, 테스트와 유지보수 비용이 많이 발생합니다.

 

2. DIT (Depth of Inheritance Tree)

상속 계층의 깊이를 의미합니다.

  • 설명 : 클래스 계층 구조에서 루트(Root) 클래스로부터 해당 클래스까지 이르는 경로의 최대 길이를 측정합니다.
  • 의미 : DIT가 깊을수록 하위 클래스는 더 많은 메서드를 상속받아 재사용성은 높아지지만, 설계가 복잡해지고 오류 발생 시 추적이 어려워집니다.

 

3. NOC (Number Of Children)

자식 클래스의 수를 의미합니다.

  • 설명 : 특정 클래스를 직접 상속받은 하위 클래스의 개수입니다.
  • 의미 : NOC가 높으면 해당 클래스가 시스템 내에서 재사용성이 높다는 것을 뜻하지만, 부모 클래스를 수정할 때 영향받는 범위가 넓어져 신중한 설계가 필요합니다.

 

4. CBO (Coupling Between Object classes)

객체 클래스 간의 결합도를 의미합니다.

  • 설명 : 특정 클래스가 다른 클래스를 사용하는지(메서드 호출, 변수 참조 등)를 나타내는 지표입니다. (상속 관계 제외)
  • 의미 : CBO가 높으면 클래스 간의 독립성이 떨어져 한 클래스의 변경이 다른 클래스에 큰 영향을 줍니다. 즉, 유지보수가 힘들어집니다.

 

5. RFC (Response For a Class)

클래스의 응답 집합을 의미합니다.

  • 설명 : 클래스의 메서드가 호출되었을 때 실행될 수 있는 모든 메서드(클래스 내부 메서드 + 외부 클래스 호출 메서드)의 합집합 크기입니다.
  • 의미 : RFC가 크면 클래스의 동작을 이해하기 위해 확인해야 할 코드가 많아지므로 디버깅과 테스트의 복잡도가 상승합니다.

 

6. LCOM (Lack of Cohesion in Methods)

메서드 간의 응집도 결여를 의미합니다.

  • 설명 : 클래스 내의 메서드들이 공유하는 인스턴스 변수가 얼마나 적은지를 측정합니다.
  • 의미 : LCOM 값이 높을수록 클래스 내 메서드들이 서로 상관없는 일을 하고 있다는 뜻(응집도 낮음)이며, 이는 클래스를 더 작은 단위로 분할해야 한다는 신호가 됩니다.

 

7. CK 메트릭 요약 표

메트릭 정식 명칭 핵심 측정 대상 품질 영향
WMC Weighted Methods per Class 메서드 개수 및 복잡도 높을수록 복잡성 증가
DIT Depth of Inheritance Tree 상속의 깊이 깊을수록 재사용성 증가, 테스트 곤란
NOC Number Of Children 자식 클래스 수 많을수록 추상화 중요성 증가
CBO Coupling Between Objects 타 클래스와의 연관성 높을수록 변경 영향도 큼 (낮을수록 좋음)
RFC Response For a Class 실행 가능한 메서드 총합 높을수록 테스트 복잡도 증가
LCOM Lack of Cohesion in Methods 클래스 내부 응집도 부족 높을수록 설계 품질 저하 (낮을수록 좋음)

 

2015년 정보시스템감리사 49번 문제

 

정답 : ③ 가, 다, 마
나와 라가 틀렸으므로 두개만 체크해도 답을 찾을 수 있습니다. 

 

2022년 정보시스템감리사 40번 문제

 

정답 :