일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- pyqt5
- windows
- html
- Excel
- Windows11
- pandas
- win32com
- 오피스
- office
- git
- Android
- python
- 파워포인트
- 파이썬GUI
- VBA
- 문자열
- 비주얼베이직
- 윈도우11
- matlab
- 파이썬3
- 안드로이드
- python3
- Outlook
- Windows10
- 엑셀
- 아웃룩
- 윈도우10
- 파이썬
- pythongui
- 깃
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에 대한 비중이 조금 더 늘어나는 추세( 몇년 전부터)인것 같습니다. 보시는 분들에게 도움이 되시길 바랍니다.