Mesure de l´index de maintenabilité (MI) avec Testwell CMT++ et CMTJava (outils de mesure de complexité)
Pour langages C, C++, Java et C#
MI est une valeur qui permet d´estimer la maintenabilité relative du code.
L´index de maintenabilité est calculé avec certaines formules des mesures de lignes de code, mesure McCabe et mesures Halstead.
L´index de maintenabilité aide à réduire ou à reverser la tendance d´un système vers "l´entropie de code" ou l´intégrité dégradée, et pour indiquer quand il devient moins cher et/ou moins risqué de réécrire le code plutôt que de le corriger.
Il y a deux variantes de l´Index de Maintenabilité : l´une qui contient les commentaires (MI), et l´autre qui ne les contient pas (MIwoc). CMT++ et CMTJava calculent toutes les deux.
L´Index de Maintenabilité est montré pour les fonctions (et définitions de classes/structures), pour le fichiers et pour l´intégralité du logiciel.
Signification des valeurs de l´Index de Maintenabilité (MI, avec commentaires): 85 et plus: bonne maintenabilité
65-85: maintenabilité modérée
moins de 65: difficile à maintenir
avec des parties de code vraiment mauvaises (grosses, non commentées, non structurées), la valeur MI peut même être négative
Pour réaliser l´avantage complet du MI, l´environnement de maintenance doit permettre la réécriture du module quand il devient mesurablement inmaintenable. Le but de la mesure du MI est d´identifier les parties du code trop risquées qui devraient être réécrites.
Calcul de l´Index de Maintenabilité
L´Index de Maintenabilité est calculé sur chaque fonction/classe/structure, sur chaque fichier et sur le niveau de tous les fichiers ensemble.En fait il y a 3 mesures :
- MIwoc: Maintainability Index without comments (sans commentaires)
- MIcw: Maintainability Index comment weight (poids des commentaires)
- MI: Maintainability Index = MIwoc + MIcw (la somme des deux précédents)
La formule générale pour MI est la suivante :
MIwoc = 171 - 5.2 * ln(aveV) -0.23 * aveG -16.2 * ln(aveLOC)
MIcw = 50 * sin(sqrt(2.4 * perCM))
MI = MIwoc + MIcw
Où
aveV = average Halstead Volume (CMT++/CMTJava´s V) par module
aveG = average extended cyclomatic complexity (CMT++´s v(G) ) par module
aveLOC = average count of lines (CMT++´s LOCphy) par module
"module" est (dans le cas de CMT++) une définition de fonction proche de C, une définition de fonction membre proche de C++, ou une définition de classe/structure.
D'avantage d´informations sur l´Index de Maintenabilité:
Kurt D. Welker, Idaho National Engineering and Environmantal Laboratory: The Software Maintainability Index Revisited (August 2001)D'avantage d´informations sur nos outils de mesure de complexité :
- Mesure métriques des lignes de code
- Métriques d´Halstead
- Mesure de métriques McCabe
- Mesure de l´index de maintenabilité (MI)
Imagix 4D et CodeSonar
En dehors de Testwell CMT++ et CMTJava, Verifysoft Technology propose d´autres outils qui permettent de mesurer la complexité de code:Contactez-nous maintenant!