Nombre cyclomatique

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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 comptabilise le nombre de « chemins » au travers d'un programme représenté sous la forme d'un graphe.

Définition[modifier | modifier le code]

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

M = EN + 2P

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[modifier | modifier le code]

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[modifier | modifier le code]

Cependant, le nombre cyclomatique ne fait pas l'unanimité. Ainsi, dès mars 1988, une étude montre que le nombre cyclomatique ne s'appuye 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].

Des alternatives 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é[modifier | modifier le code]

Notes et références[modifier | modifier le code]

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. a et b « Cyclomatic and NPath complexity explained », sur Coding Swag,‎ mai 2013 (consulté le 10 septembre 2013)
  3. (en) M. Shepperd, « A critique of cyclomatic complexity as a software metric », Software Engineering Journal, IET, vol. 3, no 2,‎ 1er janvier 88, 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,‎ 1er février 1988, p. 188-200 (ISSN 0001-0782, DOI 10.1145/42372.42379, résumé, lire en ligne)

Outils calculant la complexité cyclomatique[modifier | modifier le code]

Lien externe[modifier | modifier le code]