코드 메트릭 - 상속 수준(DIT)

이 문서에서는 개체 지향 분석을 위해 특별히 디자인된 메트릭 중 하나인 상속 수준에 대해 알아봅니다. 상속 수준(DIT(상속 트리)라고도 함)은 "노드에서 트리 루트까지의 최대 길이"로 정의합니다. (CK) 간단한 예제를 통해 이를 확인할 수 있습니다. >새 클래스 라이브러리 프로젝트를 만들고, 코드를 작성하기 전에 분석 > 솔루션에 대해 코드 메트릭 계산을 선택하여 코드 메트릭을 계산합니다.

상속 수준 예제 1

모든 클래스가 System.Object에서 상속하므로 현재 상속 수준은 1입니다. 이 클래스에서 상속하고 새 클래스를 검사하는 경우 다음 결과를 볼 수 있습니다.

상속 수준 예제 2

노드가 트리에서 낮게 있을수록(이 경우 Class2) 상속 수준이 높아집니다. 계속해서 자식을 만들고 상속 수준을 원하는 만큼 늘릴 수 있습니다.

가정

상속 수준은 세 가지 기본 가정에 따라 예측됩니다(CK).

  1. 클래스는 계층 구조에서 깊이 있을수록 상속하는 메서드의 수가 많아지므로 해당 동작을 예측하기 어려워집니다.

  2. 트리는 깊을수록 더 많은 클래스 및 메서드가 관련되기 때문에 디자인 복잡성이 증가합니다.

  3. 클래스는 트리에서 깊이 있을수록 상속된 메서드를 재사용할 가능성이 증가합니다.

가정 1 및 2는 높은 상속 수준은 잘못된 것임을 알려 줍니다. 그것으로 끝이라면 문제는 없을 것입니다. 그러나 가정 3은 높은 상속 수준이 코드 재사용 가능성에 유리하다는 것을 나타냅니다.

분석

상속 수준 메트릭을 읽는 방법은 다음과 같습니다.

  • 낮은 상속 수준

    상속 수준이 낮으면 복잡성이 감소하지만 상속을 통한 코드 재사용 가능성도 감소합니다.

  • 높은 상속 수준

    상속 수준이 높으면 상속을 통해 코드를 재사용할 가능성이 증가하지만 복잡성도 증가하여 코드에서 오류가 발생할 확률이 높아집니다.

코드 분석

코드 분석에는 유지 관리 규칙 범주가 포함됩니다. 자세한 내용은 유지 관리 규칙을 참조하세요. 레거시 코드 분석을 사용하는 경우 확장 디자인 지침 규칙 집합에는 유지 관리 영역이 포함됩니다.

상속 수준 디자인 지침 규칙 집합

유지 관리 영역 내에는 상속에 대한 규칙이 있습니다.

상속 수준 유지 관리 규칙

이 규칙은 상속 수준이 6 이상에 도달할 때 경고를 발생하므로 과도한 상속을 방지하는 데 도움이 되는 유용한 규칙입니다. 이 규칙에 대한 자세한 내용은 CA1501을 참조하세요.

총정리

DIT 값이 높으면 오류 가능성도 높습니다. 값이 낮으면 오류 가능성이 감소합니다. DIT 값이 높으면 상속을 통해 코드를 재사용할 가능성이 증가합니다. 값이 낮으면 상속을 통한 코드 재사용이 감소한다는 것을 의미합니다. 데이터가 충분하지 않기 때문에 현재 DIT 값으로 인정되는 표준이 없습니다. 최근에 수행된 연구에서도 이 메트릭에 대한 표준으로 사용할 수 있는 유력한 수를 확인하기에 충분한 데이터를 찾을 수 없었습니다. Shatnawi 이를 지원하는 경험적 증거는 없지만 여러 리소스에서 DIT 상한을 5~6 정도로 제안하고 있습니다. 예를 들어 https://www.devx.com/architecture-zone/45611/를 참조하세요.

인용문

CK

치담버, S. R. & 케머, C. F. (1994). A Metrics Suite for Object Oriented Design (IEEE Transactions on Software Engineering, Vol. 20, No. 2011년 5월 14일, University of Pittsburgh 웹 사이트(http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf)에서 검색

Krishnan

&Subramanyam, R. & Krishnan, M. S. Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects (IEEE Transactions on Software Engineering, Vol. 29, No. 2011년 5월 14일, University of Massachusetts Dartmouth 웹 사이트(https://ieeexplore.ieee.org/abstract/document/1191795)에서 검색

Shatnawi

Shatnawi, R. (2010). A Quantitative Investigation of the Acceptable Risk Levels of Object-Oriented Metrics in Open-Source Systems (IEEE Transactions on Software Engineering, Vol. 36, No.