Număr ciclomatic

Numărul ciclomatic , complexitatea ciclomatică sau amploarea McCabe este un software de metrologie instrument dezvoltat de Thomas McCabe în 1976 pentru a măsura complexitatea unui program de calculator . Această măsură reflectă numărul de decizii ale unui algoritm prin numărarea numărului de „căi” liniar independente printr-un program reprezentat sub forma unui grafic .

Definiție

Complexitatea ciclomatică a unui program structurat este definită de:

sau:

M = complexitate ciclomatică; E = numărul de muchii ale graficului; N = numărul de noduri ale graficului; P = numărul de componente conectate ale graficului.

Interes

Un cod simplu, cu un număr ciclomatic redus, este teoretic mai ușor de citit, testat și întreținut:

Critic

Cu toate acestea, numărul ciclomatic nu este unanim. Deci, de laMartie 1988, un studiu arată că numărul ciclomatic nu se bazează pe o bază teoretică solidă și nu este potrivit pentru dezvoltarea de software și subliniază că nicio observație empirică nu justifică utilitatea acestei măsuri.

Există și alte posibilități pentru completarea numărului ciclomatic, cum ar fi complexitatea NPath (în engleză, complexitatea NPath ), măsurând numărul total de posibilități de a lua toate căile, unde numărul ciclomatic este mulțumit să adauge aceste căi.

Instrumente de măsurare a complexității

Note și referințe

Note
  1. Aici, structurat înseamnă în special „cu un punct de intrare și un punct de ieșire”.
Referințe
  1. McCabe (1976), p. 314.
  2. „  Complexitatea ciclomatică și NPath explicată  ” , pe Coding Swag ,Mai 2013(accesat la 10 septembrie 2013 ) .
  3. (în) Mr. Shepperd , „  Review A cyclomatic complexity of software-as-a metric  ” , Software Engineering Journal , EIT flight.  3, n o  21 st ianuarie 88, p.  30-36 ( ISSN  0268-6961 , rezumat , citit online ).
  4. (în) Brian A. Nejmeh , "  NPATH o măsură a complexității căii de execuție și aplicațiile sale  " , Comunicări ale ACM , Asociația pentru Mașini de Calcul, vol.  31, n o  21 st februarie 1988, p.  188-200 ( ISSN  0001-0782 , DOI  10.1145 / 42372.42379 , rezumat , citit online ).
  5. https://github.com/bbatsov/rubocop
  6. https://github.com/fzipp/gocyclo

Instrumente de calcul a complexității ciclomatice

linkuri externe

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">