AccueilđŸ‡«đŸ‡·Chercher

Nombre cyclomatique

Le nombre cyclomatique, la complexité cyclomatique ou la mesure de McCabe est un outil de métrologie logicielle développé par Thomas McCabe en 1976 pour mesurer la complexité d'un programme informatique. Cette mesure reflÚte le nombre de décisions d'un algorithme en comptabilisant le nombre de « chemins » linéairement indépendants au travers d'un programme représenté sous la forme d'un graphe.

DĂ©finition

La complexité cyclomatique d'un programme structuré[note 1] est définie[1] par :

oĂč :

M = complexité cyclomatique ;
E = le nombre d'arĂȘtes du graphe ;
N = le nombre de nƓuds du graphe ;
P = le nombre de composantes connexes du graphe.

IntĂ©rĂȘt

Un code simple, au faible nombre cyclomatique, est théoriquement plus facile à lire, à tester et à entretenir[2] :

  • un effort de comprĂ©hension plus soutenu doit ĂȘtre effectuĂ© durant la lecture d'un code complexe, de façon Ă  retenir et Ă  prendre en compte chaque embranchement ;
  • les tests unitaires doivent tester toutes les possibilitĂ©s d’embranchement dans la fonction, de façon Ă  suivre chacun des « chemins » ; or, les tests unitaires ont primordialement Ă©tĂ© conçus pour tester des fonctions en isolation par un cas simple ;
  • de mĂȘme, la correction d'un bug ou l'amĂ©lioration d'une fonction simple sera facilitĂ©e par l'absence d'obligation de prise en compte de ces embranchements et possibilitĂ©s.

Critique

Cependant, le nombre cyclomatique ne fait pas l'unanimité. Ainsi, dÚs , une étude montre que le nombre cyclomatique ne s'appuie pas sur une base théorique solide et n'est pas adapté au développement logiciel et souligne qu'aucune observation empirique ne vient justifier l'utilité de cette mesure[3].

D'autres possibilitĂ©s existent pour complĂ©ter le nombre cyclomatique, comme la complexitĂ© NPath (en anglais, NPath complexity), mesurant le nombre total de possibilitĂ©s d'emprunter l'ensemble des chemins, lĂ  oĂč le nombre cyclomatique se contente d'additionner ces chemins[2] - [4].

Outils de mesure de complexité

Notes et références

Notes
  1. Ici, structuré signifie en particulier « avec un seul point d'entrée et un seul point de sortie ».
Références
  1. McCabe (1976), p. 314.
  2. « Cyclomatic and NPath complexity explained », sur Coding Swag, (consulté le ).
  3. (en) M. Shepperd, « A critique of cyclomatic complexity as a software metric », Software Engineering Journal, IET, vol. 3, no 2,‎ , p. 30-36 (ISSN 0268-6961, rĂ©sumĂ©, lire en ligne).
  4. (en) Brian A. Nejmeh, « NPATH: a measure of execution path complexity and its applications », Communications of the ACM, Association for Computing Machinery, vol. 31, no 2,‎ , p. 188-200 (ISSN 0001-0782, DOI 10.1145/42372.42379, rĂ©sumĂ©, lire en ligne).
  5. https://github.com/bbatsov/rubocop
  6. https://github.com/fzipp/gocyclo

Outils calculant la complexité cyclomatique

Liens externes


Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.