복잡성과 도달 가능성 사이에 상관 관계가 있습니까?


18

나는 최근 UniC에서 순환 복잡성 (McCabe)과 소프트웨어의 도달 가능성을 연구했습니다. 오늘 제 강사는 두 측정 항목 사이에 상관 관계가 없다고 말했지만 이것이 사실입니까?

덜 복잡한 프로그램 (우리가 살펴본 몇 안되는)에서 도달 가능성 측면에서 '더 나은'결과를 얻는 것처럼 보이기 때문에 약간의 상관 관계 가 있다고 생각 합니다.

누구든지 두 가지 메트릭을 함께 보려는 시도를 알고 있으며 그렇지 않은 경우 많은 수의 프로그램에 대한 복잡성과 도달 가능성에 대한 데이터를 찾기에 좋은 장소는 무엇입니까?

답변:


2

나는 최근 UniC에서 순환 복잡성 (McCabe)과 소프트웨어의 도달 가능성을 연구했습니다. 오늘 제 강사는 두 측정 항목 사이에 상관 관계가 없다고 말했지만 이것이 사실입니까?

실제로 그렇기도하고 그렇기도합니다.

우선 순환 복잡도에 대한 McCabe 메트릭은 제어 흐름 그래프에서 계산됩니다. 제어 흐름 그래프에서 소스 블록을 기본 블록 또는 명령문이 노드 인 노드와 이들 사이의 전이가있는 직접 그래프로 변환합니다. 또는 조절 된 점프 및 루프의 경우)가 모서리입니다. 여기의 순환 복잡도는 에지 수와 노드 수의 차이로 볼 때 대략 전체 프로그램에 분리 된 코드가없는 것으로 간주되는 경우 (예 : 그래프가 연결된 경우) 발생할 수 있습니다.

CC = E - N

도달 가능성 문제는 다음과 같이 표현 될 수있는 그래프 이론의 일반적인 문제입니다. 두 개의 노드 A와 B가 주어지면 노드 A는 노드 A에서 도달 할 수 있습니다. 즉, 하나는 A에서 시작하여 그래프의 가장자리를 따라 올 수 있습니다. 방향? 따라서 다시 코드가 아닌 제어 흐름 그래프에 적용되는 메트릭입니다.

이 문제를 제어 흐름 그래프 에 적용하는 방법에는 여러 가지가 있습니다 . 한 가지 방법은 소위 "가변성 도달 가능성 분석"입니다. 즉, 주어진 변수에 대해 분석이 특정 프로그램 지점에서 해당 값을 계속 사용할 수 있는지 여부를 결정합니다 (이 기법은 소프트웨어 분석에서 슬라이싱이라고도 함). 또한 멀티 스레드 응용 프로그램에 대해이 용어 (및 일반적으로 연결 가능성 문제)를 사용하는 기사 만 찾았습니다 .

기본적으로 CC와 도달 가능성 사이의 일종의 상관 관계를 볼 수 있습니다 .CC가 증가하면 노드의 가장자리 비율도 증가하고 가장자리의 방향이 중요한 방향 그래프의 경우에도 증가하는 것으로 추측 할 수 있습니다 에지의 수는 결국 그래프에서 이용 가능한 경로를 증가 시키며 따라서 노드들 사이의 직접 또는 간접 연결을 통해 도달 가능성을 증가시킨다. 그래서, 대답은 예입니다 여기.

다른 한편으로, 멀티 스레드 환경에서 도달 가능성에 대한 개념은 소위 상층 분석을 필요로하며 이는 사소한 것이 아닙니다. CC의 증가 (여기서는 " 동기 복잡도 "라고 함)는 소프트웨어에서 교착 상태가 발생할 가능성이 높아져 특정 노드 / 코드 세그먼트의 도달 가능성을 감소시킬 수 있습니다. 따라서 "아니오"도 여기에 유효한 답변 입니다.


1

나는 접근성에 익숙하지 않지만 실행할 수없는 코드 경로의 척도라면 순환 복잡성은 일종의 상한입니다.


0

이것에 대한 몇 가지 통계가있을 수 있지만 하나는 다른 것에 의존하지 않기 때문에 상관 관계가 없으며 소프트웨어 시스템 설계에서이를 제거 할 수있는 선택도 있습니다.

실제 데이터의 관점에서, 거기에 있습니다 강한 상관 관계가 될하지만 그 때문에이 상관 관계를 제거하지 않는 심하게 설계된 소프트웨어 시스템이 될 수 있습니다. 그래프 이론에 대한 지식이 없기 때문에 우연한 상관 관계가 될 수 있습니다.


1
다른 하나에 따라 하나는 상관 관계가 아닌 인과 관계입니다.
JeffO
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.