반응형

출처: KOCW 소프트웨어공학 개론 ppt 자료, Chapter 27. Quality Management, 건국대학교 유준범, 2013

 

 

잠재적으로 문제가 될 수 있는 컴포넌트를 식별하는 데 소프트웨어 품질 메트릭을 사용할 수 있다. 예를 들어, 코드 리뷰나 단위 테스팅의 대상 프로그램을 선정하는데 있어 다음과 같은 지표가 우선 순위 결정의 기준이 될 수 있다.

 

소프트웨어 제품 메트릭(Software Product Metrics)

-/-아웃(Fan-in / Fan out)

-인은 어떤 함수나 메서드(: 이름이 X인 경우)를 호출하는 다른 함수나 메서드의 수를 측정하는 지표이다. -아웃은 함수 X에 의해 호출되는 함수의 수이다. -인 값이 높으면 X가 설계의 나머지 부분과 밀접하게 결합되어 X를 변경하면 광범위한 연쇄 효과가 발생함을 의미한다. -아웃 값이 높으면 호출되는 컴포넌트를 조정하는 데 필요한 제어 로직의 복잡성으로 인해 X의 전반적인 복잡도가 높을 수 있음을 시사한다.

 

코드 길이(Length of code)

이는 프로그램 크기를 측정하는 지표이다. 일반적으로 컴포넌트의 코드 크기가 클수록 해당 컴포넌트는 더 복잡하고 에러 발생 가능성이 높다. 코드 길이는 컴포넌트의 에러 발생 가능성을 예측하는 가장 신뢰할 수 있는 지표 중 하나로 알려져 있다.

 

순환 복잡도(Cyclomatic complexity)

이는 프로그램의 제어 복잡도를 측정하는 지표이다. 이 제어 복잡도는 프로그램의 이해가 쉬운지(understandability)와 관련이 있을 수 있다. 참고: McCabeCyclomatic Complexity

 

식별자 길이(Length of identifiers)

프로그램에서 고유 식별자의 평균 길이를 측정한 값이다. 식별자가 길수록 의미를 수반할 가능성이 높아지므로 프로그램이 더 이해하기 쉬워진다.

 

조건부 중첩 깊이(Depth of conditional nesting)

프로그램에서 if 문의 중첩 깊이를 측정한 값이다. 깊게 중첩된 if 문은 이해하기 어렵고 에러가 발생하기 쉽다.

 

포그 지수(Fog index)

문서에 포함된 단어(words)와 문장(sentences)의 평균 길이를 측정한 값이다. 포그 지수 값이 높을수록 문서를 이해하기 어렵다.

 

 

객체 지향 메트릭스(Object-Oriented Metrics)

상속 트리의 깊이(Depth of inheritance tree)

서브클래스가 수퍼클래스로부터 애트리뷰트와 오퍼레이션(메서드)을 상속하는 상속 트리 내 개별 계층의 수를 나타낸다. 상속 트리가 깊을수록 설계가 더 복잡해진다. 트리의 최하위에 위치한 객체 클래스를 이해하려면 여러 다른 객체 클래스를 파악해야 할 수 있다.

 

메서드 팬-/-아웃(Method fan in/fan-out)

이는 위에서 설명한 팬-인 및 팬-아웃과 직접적으로 관련되며 본질적으로 같은 의미이다. 그러나 객체 내의 다른 메서드로부터의 호출과 외부 메서드로부터의 호출을 구분하는 것이 적절할 수 있다.

 

클래스당 가중치 메서드(Weighted methods per class)

이는 각 메서드의 복잡도에 따라 가중치가 적용된, 클래스에 포함된 메서드 수이다. 따라서 간단한 메서드는 복잡도 1을 가질 수 있고, 크고 복잡한 메서드는 훨씬 더 높은 값을 가질 수 있다. 이 메트릭의 값이 클수록 객체 클래스가 더 복잡하다. 복잡한 객체는 이해하기 더 어려울 가능성이 높다. 이는 논리적으로 응집력이 부족할 수 있으므로 상속 트리에서 슈퍼클래스로 효과적으로 재사용될 수 없다.

 

오버라이딩 오퍼레이션 수(Number of overriding operations)

이 수치는 서브클래스에 의해 재정의된(덮어쓰기된) 수퍼클래스의 오퍼레이션 수를 나타낸다. 이 메트릭의 값이 높을수록 사용된 수퍼클래스가 서브클래스에 적합한 부모 클래스가 아닐 수 있음을 시사한다.

 

 

반응형

+ Recent posts