Testwell CMT++/CMTJava

[English][Deutsch][Polski]

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
 

Complex Code - CMT

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)
[PDF]  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.