어떤 유형의 코드 기반 메트릭을 소프트웨어 결함과 연관시키려는 시도를들을 때마다 McCabe의 순환 복잡성 이라고 생각 합니다. 다양한 연구에 따르면 사이클로 틱 복잡도가 높고 결함 수간에 상관 관계가있는 것으로 나타났습니다. 그러나 크기가 비슷한 모듈을 살펴본 다른 연구에서는 (코드 줄로) 상관 관계가 없을 수 있음을 발견했습니다.
나에게 모듈의 줄 수와 순환 복잡도는 가능한 결함을 나타내는 좋은 지표가 될 수 있거나 모듈을 수정하면 결함이 주입 될 가능성이 더 큽니다. 사이클로 매틱 복잡도가 높은 모듈 (특히 클래스 또는 메소드 레벨)은 코드를 통해 독립적 인 경로가 많기 때문에 이해하기 어렵습니다. 줄 수가 증가하면 더 많은 일이 발생하기 때문에 많은 줄이있는 모듈 (특히 클래스 또는 메서드 수준)도 이해하기 어렵습니다. 지정된 규칙과 순환 복잡성에 대해 소스 코드 라인을 모두 계산할 수있는 정적 분석 도구가 많이 있으며,이를 캡처하면 낮은 매달린 과일을 잡는 것처럼 보입니다.
홀스 테드의 복잡성 조치 도 재미있을 수 있습니다. 불행히도, 그들의 타당성은 다소 논란의 여지가있는 것으로 보이므로, 나는 그것들에 의존 할 필요가 없습니다. Halstead의 조치 중 하나는 노력 또는 양 (전체 연산자 및 피연산자 측면의 프로그램 길이와 개별 연산자 및 연산자 측면의 프로그램 어휘 간의 관계)을 기반으로 한 결함 추정입니다.
CK 지표라고하는 지표 그룹도 있습니다. 이 측정 항목 모음의 첫 번째 정의는 Chidamber와 Kemerer의 AO (Object Oriented Design)를위한 측정 항목 모음이라는 제목의 논문에있는 것으로 보입니다. 클래스 별 가중 메서드, 상속 깊이 트리, 자식 수, 개체 클래스 간 연결, 클래스에 대한 응답 및 메서드의 결여 부족을 정의합니다. 그들의 논문은 계산 방법과 각 방법을 분석하는 방법에 대한 설명을 제공합니다.
이러한 지표를 분석하는 학술 문헌 측면에서, 객체 지향 설계 복잡성에 대한 CK 지표의 경험적 분석 : Ramanath Subramanyam 및 MS Krishna가 저술 한 소프트웨어 결함에 대한 영향에 관심이있을 수 있습니다. 그들은 6 개의 CK 측정 항목 중 3 가지 (클래스 당 가중 방법, 객체 분류 간의 결합 및 상속 깊이 트리)를 분석했습니다. 이 문서를 살펴보면 이들이 잠재적으로 유효한 지표라는 것을 알았지 만, "개선"하면 다른 변경으로 이어질 수 있고 결함의 가능성이 커질 수 있으므로주의해서 해석해야합니다.
Yuming Zhou와 Hareton Leung이 작성한 높고 낮은 심각도 오류 예측을위한 객체 지향 설계 메트릭의 실증 분석은 CK 메트릭도 검사합니다. 그들의 접근 방식은 이러한 메트릭을 기반으로 결함을 예측할 수 있는지 확인하는 것이 었습니다. 그들은 상속 심도 트리와 자식 수를 제외한 많은 CK 지표가 결함이 발견 될 수있는 영역을 예측하는 데 어느 정도의 통계적 유의성이 있음을 발견했습니다.
IEEE 멤버십을 보유한 경우 소프트웨어 엔지니어링 의 IEEE 트랜잭션에서 보다 많은 학술 출판물을 검색하고 IEEE 소프트웨어 를 통해보다 실제적이고 적용 가능한 보고서를 검색하는 것이 좋습니다 . ACM은 또한 디지털 도서관 에 관련 출판물이있을 수 있습니다 .