Indice de maintenabilité
# Indice de maintenabilité

L'indice de maintenabilité est une métrique qui procure une mesure de la complexité de maintenance (facilité du support et des évolutions) d'un projet informatique.

## Calcul

Toutes les métriques d'Halstead sont dérivées

* d'un volume de code (lignes de code),
* de la complexité cyclomatique du code,
* du volume d'Halstead du code.

On obtient l'indice de maintenabilité sans les commentaires ($MIwoc$) selon la formule suivante :

    $MIwoc=(171-5.2*ln(V)-0.23*(CC)-16.2*ln(loc))*100/171$

On obtient le poids des commentaires ($MIcw$) selon la formule suivante :

    $MIcw=50*sin(sqrt(2.4*perCM))$

On obtient l'indice de maintenabilité ($MI$) avec la formule suivante :

    $MI=MIwoc+MIcw$

Où

* $V$ est le volume du code source ;
* $CC$ est la complexité cyclomatique du code source ;
* $cLoc$ est le nombre de lignes de commentaires ;
* $loc$ est le nombre de lignes de code ;
* $perCM=cLoc/loc$

## Interprétations

L'Indice de maintenabilité est une mesure indépendante du langage de programmation utilisé. On admet souvent la grille d'évaluation suivante :

* 85 et plus : bonne maintenabilité,
* 65-85 : maintenabilité moyenne,
* < 65 : maintenabilité difficile.

Dans la pratique, cette grille d'évaluation est parfois assouplie.

## Outils

* Testwell CMT++ outil de mesure de complexité pour C et C++
* Testwell CMTJava outil de mesure de complexité pour Java
* PhpMetrics outil de mesure d'indice de maintenabilité pour PHP
* LDRA Testbed, outil d'analyse statique et dynamique de code source C, C++, Java, Ada
