title: Indice de maintenabilité
text: # 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
  