Résumé
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. La complexité cyclomatique d'un programme structuré est définie 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. Un code simple, au faible nombre cyclomatique, est théoriquement plus facile à lire, à tester et à entretenir : 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. 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. 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. Notes Références Métrique (logiciel) PMD (logiciel) Calcul du nombre cyclomatique (article dans MSCoder) Cyclomatic and NPath complexity explained sur Coding Sw
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.