Liczba cyklomatyczna
Liczba cyklomatyczna The Złożoność cykliczna lub zakres McCabe jest narzędziem metrologia oprogramowanie opracowane przez Thomasa McCabe w 1976 do pomiaru złożoności w programie komputerowym . Miara ta odzwierciedla liczbę decyzji algorytmu, zliczając liczbę liniowo niezależnych „ścieżek” przez program reprezentowany w postaci wykresu .
Definicja
Cyklomatyczną złożoność ustrukturyzowanego programu definiuje:
M=mi-NIE+2P.{\ Displaystyle M = E-N + 2P}![M = E - N + 2P](https://wikimedia.org/api/rest_v1/media/math/render/svg/c20012300a859674252cb36042aa4e770f5a365a)
lub:
M = cyklomatyczna złożoność;
E = liczba krawędzi wykresu;
N = liczba węzłów grafu;
P = liczba
połączonych elementów grafu.
Zainteresowanie
Prosty kod, z niską liczbą cyklomatyczną, jest teoretycznie łatwiejszy do odczytania, przetestowania i utrzymania:
- podczas czytania złożonego kodu należy podjąć bardziej trwały wysiłek zrozumienia, aby zachować i uwzględnić każdą gałąź;
- te jednostki badań należy przetestować wszystkie możliwe gałąź w funkcji, w celu śledzenia, każdy z „drogi”; jednak testy jednostkowe zostały zaprojektowane przede wszystkim do testowania funkcji w izolacji przez prosty przypadek;
- podobnie poprawienie błędu lub usprawnienie prostej funkcji będzie ułatwione przez brak obowiązku uwzględniania tych gałęzi i możliwości.
Krytyczny
Jednak liczba cyklomatyczna nie jest jednomyślna. Więc odMarzec 1988badanie pokazuje, że liczba cyklomatyczna nie jest oparta na solidnych podstawach teoretycznych i nie nadaje się do tworzenia oprogramowania, i podkreśla, że żadna obserwacja empiryczna nie uzasadnia użyteczności tego środka.
Istnieją inne możliwości uzupełnienia liczby cyklomatycznej , jak złożoność NPATH (w języku angielskim złożoność NPATH ), mierząca całkowitą liczbę możliwości pożyczenia zestawu ścieżek, w których liczba cyklomatyczna wystarcza do dodania tych ścieżek.
Narzędzia do pomiaru złożoności
|
- Oprogramowanie komercyjne
- Dla C i C ++
- Dla java
- Wielojęzyczny
- Dla C # (wtyczki programu Visual Studio)
|
Uwagi i odniesienia
Uwagi
-
Tutaj, zorganizowany oznacza w szczególności „z jednym punktem wejścia i jednym punktem wyjścia”.
Bibliografia
-
McCabe (1976), str. 314.
-
„ Wyjaśnienie złożoności cyklomatycznej i NPath ” w Coding Swag ,maj 2013(dostęp 10 września 2013 ) .
-
(w) Pan Shepperd , " Przegląd cyklomatycznej złożoności oprogramowania jako miernika " , Software Engineering Journal , lot EIT . 3, N O 21 st styczeń 88, s. 30-36 ( ISSN 0268-6961 , podsumowanie , czytaj online ).
-
(w) Brian A. Nejmeh , " NPATH miara złożoności ścieżki wykonania i jej zastosowania " , Komunikacja ACM , Stowarzyszenie Maszyn Komputerowych, tom. 31 N O 21 st lutego 1988, s. 188-200 ( ISSN 0001-0782 , DOI 10.1145 / 42372.42379 , podsumowanie , czytaj online ).
-
https://github.com/bbatsov/rubocop
-
https://github.com/fzipp/gocyclo
Narzędzia obliczające złożoność cyklomatyczną
Linki zewnętrzne
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">