CMT++/CMTJava
Outils de mesure de complexité de code pour C, C++ / Java
Pourquoi analyser la complexité du code ?
- le pourcentage d'erreurs et la robustesse du code dépendent de sa complexité
- un code complexe est difficile à tester -> plus d´erreurs dans l´application finale
- un code complexe entraîne une maintenance difficile
Le test et la maintenance sont des sources majeures de coût dans les projets de logiciels ; il faut ajouter à cela les coûts engendrés par des programmes de mauvaise qualité ou erronés, qui peuvent être très élevés, et parfois même fatals pour une entreprise. Une grande partie de ces coûts peuvent être attribués à un code inutilement complexe.
Qu´est-ce qui est mesuré par CMT++/CMTJava ?
Basé sur les propriétés statiques du programme du code, CMT++ et CMTJava fournissent des estimations sur les probabilités d´erreurs dans l´application, sur la durée requise pour la compréhension du code, sur le volume logique du code, etc ...Comme l´équipe travaillant sur un projet n´a généralement pas le temps de vérifier tout le code, CMT++ et CMTJava vous permettent de localiser les modules risquant de poser des problèmes.
CMT++ et CMTJava analysent les métriques suivantes :
a) Métriques des lignes de code (LOC)
| LOCbl | Nombre de lignes vides | |
| LOCcom | Nombre de lignes avec commentaires | |
| LOCphy | Nombre de lignes (number of physical lines) | |
| LOCpro | Nombre de lignes avec du code programme |
b) Métriques de Halstead
| B | nombre estimé d´erreurs | |
| D | niveau de difficulté, prédisposition d'erreurs | |
| E | effort pour implémenter | |
| L | niveau du programme (représente le niveau d'abstraction du programme) | |
| N | longueur du logiciel | |
| N1 | nombre d'opérateurs | |
| N2 | nombre d'opérandes | |
| n | taille de vocabulaire ou nombre d'opérateurs uniques et d'opérandes uniques | |
| n1 | nombre d'opérateurs uniques | |
| n2 | nombre d'opérandes uniques | |
| T | temps nécessaire pour l'implémentation (temps nécessaire pour comprendre) | |
| V | volume: taille de l´implémentation d´un algorithme |
c) Nombre cyclomatique de McCabe v(G)
Le nombre cyclomatique v(G) décrit la complexité d'écoulement
(control flow complexity) d´un programme.
d) Index de maintenabilité (Maintainability Index)
L´index de maintenabilité est calculé à partir de certaines
formules des mesures de lignes de code, des mesures McCabe
et des mesures Halstead.
L´index de maintenabilité a pour objectif d´aider à créer
des logiciels faciles à entretenir.
Il indique également quand il devient plus facile et moins
coûteux de réécrire le code au lieu de le modifier.
Vous pouvez adapter les limites d´alarme à vos besoins
Les limites d´alarme données par défaut sont des suggestions générales, basées sur des mesures faites à partir du code maintenu avec succès.CMT++ et CMTJava utilisent des métriques établies dans le cadre de projets de recherche aux USA (Software Engineering Institute of Carnegie Mellon University).
Ce métriques sont des standards de l´industrie.
Les modules ayant une complexité élevée devraient être sujets à des inspections plus minutieuses.
Comme il n´est pas possible de fixer des valeurs universellement acceptables, CMT++ et CMTJava permettent d´ajuster les définitions des limites d´alarme pour les besoins spécifiques d´un projet..
Avantages de CMT++/CMTJava :
- mesure les fichiers non-préprocessés
- extrêmement rapide -> analyse vos applications en quelques minutes
- peut traiter un grand nombre de fichiers et des fichiers volumineux
- rapport de texte -> les résultats sont exploitables sur Excel
- intégration dans Visual C++ Developer Studio
- disponible pour Windows, Linux, HP, Solaris
Présenatation de CMT++ (17 slides)
Article MSCoder (668 KB) sur le calcul des métriques
en savoir plus:
CMT++
CMTJava
CMT++ (description technique en anglais) (Lien www.testwell.fi)
CMTJava (description technique en anglais) (Lien www.testwell.fi)
last updated: 15.01.2008
© 2005-2008 Verifysoft Technology
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.