일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 비주얼베이직
- 윈도우11
- python
- 안드로이드
- win32com
- 파이썬3
- pythongui
- 오피스
- 파워포인트
- pandas
- office
- git
- Excel
- VBA
- 파이썬GUI
- matlab
- html
- Windows10
- 파이썬
- 윈도우10
- Windows11
- Android
- 깃
- Outlook
- windows
- 아웃룩
- 엑셀
- 문자열
- pyqt5
- python3
Appia의 IT세상
SW복잡도, 순환 복잡도(Mccabe Cyclomatic Complexity) 알아 보기 본문
어느 때부터인가는 정확히는 모르겠지만, 갑자기 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에 대한 비중이 조금 더 늘어나는 추세( 몇년 전부터)인것 같습니다. 보시는 분들에게 도움이 되시길 바랍니다.