Appia의 IT세상

SW복잡도, 순환 복잡도(Mccabe Cyclomatic Complexity) 알아 보기 본문

Development/Testing

SW복잡도, 순환 복잡도(Mccabe Cyclomatic Complexity) 알아 보기

Appia 2020. 1. 5. 06:17
반응형

어느 때부터인가는 정확히는 모르겠지만, 갑자기 Software 복잡도에 확인 요구가 늘어났습니다. 혹자들은 분인 ISO26262에서 low complexity 요구해서 그런다고 하기도 하고, 아니 대기 요구사항에 관련 항목들이 있어서런다라는 소리가 있습니다.

 

하지만, 분은 software공학에서는 오래 전부터 이야기 했던분이었습니다. 그중에서 많은분에서용하고 있는 Mccabe Cyclomatic 복잡도, 또환복잡도라고 분에 대해서 오 포스팅을 해 보고자 합니다.

 

먼저 Mccabe Cyclomatic Complexity 측정하는 방법에 대해서 살펴보고자 합니다. (Mccabe Cyclomatic Complexity Cyclomatic Complexity 이야기 하겠습니다.)  Cyclomatic Complexity 기본적으로 Node Edge 통하여 측정합니다.  따라서, 다음과 같은 계산식을 있습니다.

 

V(G) = E(Edge) - N(Node) + 2

V(G) = P(분기문) + 1

 

이는 생각해보면, 프로그램 흐름에 있는 코드 경로의 수를 계산하여 Software Complexity 측정하는 방법입니다. 이를 그래프로 나타내면 다음과 같은 부분을 이용하여 나타냅니다. 

 

 

그럼 간단한 예시로 살펴보도록 하겠습니다. 

while (x <10) {
	if (a[x] % 2 == 0) {
    	value = 0;
    }
    else {
    	value = 1;
    }
    x ++ ;
}

Flague = 0 
      

 이 부분을 그림으로 나타내면 다음과 같습니다. 

 

 

위의 그림을 바탕으로 간단히 각 부분에 대해서 숫자를 세워보겠습니다. 

Node = 7 

Edge = 8

Node와 Edge 를 기반으로 위에서 언급한 공식을 바탕으로 복잡도를 계산해보겠습니다.

 

8-7+2 = 3 

 

따라서, Complexity는 3입니다. 생각보다 간단합니다. 하지만, 관련해서 많은 부분들을 요구하고 있습니다. 종종 이런 부분들은 Stateflow의 flowchart의 계산은 매우 쉽겠구나라는 생각을 할 때도 있습니다. 

 

오늘은 간단히 Mccabe complexity를 측정하는 방법에 대해서 살펴봤습니다. 비록 전장 쪽에서 일을 하지만, 요새 들어서 SW에 대한 비중이 조금 더 늘어나는 추세( 몇년 전부터)인것 같습니다. 보시는 분들에게 도움이 되시길 바랍니다. 

 

 

반응형
Comments