Mesure de l'index de maintenabilité (MI) avec Testwell CMT++ et CMTJava (outils de mesure de complexité)
Testwell CMT++ et Testwell CMTJava CMTJava supportent les métriques de lignes de code, métriques Halstead, métriques McCabe et l'index de maintenabilité (MI, comme Maintainability Index).
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.
L'index de Maintenabilité a été défini durant
les dix dernières années au États-Unis et décrit
par exemple sur les pages web de l'Institut de Software Engineering.
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 |
| < 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++´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.
Davantage d'informations sur CMT++ et CMTJava
Davantage d'informations sur l´Index de Maintenabilité:
Kurt D. Welker, Idaho National Engineering and Environmantal Laboratory:
The Software Maintainability Index Revisited (August 2001)
last updated: 26.06.2007
© 1996-2007 Testwell Oy
© 2006-2007 Verifysoft Technology GmbH for the french translation
CTA++, CTC++, CMT++ and CMTJava are products of Testwell Oy, Tampere (Finland)
all other trademarks of this site are the property of their respective owners.