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:

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:

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

Uwagi i odniesienia

Uwagi
  1. Tutaj, zorganizowany oznacza w szczególności „z jednym punktem wejścia i jednym punktem wyjścia”.
Bibliografia
  1. McCabe (1976), str. 314.
  2. „  Wyjaśnienie złożoności cyklomatycznej i NPath  ” w Coding Swag ,maj 2013(dostęp 10 września 2013 ) .
  3. (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 ).
  4. (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 ).
  5. https://github.com/bbatsov/rubocop
  6. 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;">