Messung des Maintainability Index (MI) mit Testwell CMT++ und CMTJava (Complexity Measures Tool)
Die Software-Komplexitätsmesstools Testwell CMT++ und CMTJava zeigen Lines-of-Code-Metriken, Halstead-Metriken, McCabe-Metriken und den Wartbarkeitsindex / Maintainability Index (MI).
MI ist ein Zahlenwert zur Bestimmung der Wartungsfreundlichkeit (Maintainability) von Softwarecode.
Der Maintainability Index wird mit bestimmten Formeln errechnet, die auf Lines-of-Code-, McCabe-
und Halstead-Metriken basieren (näheres hierzu im Artikel
Komplexität und Qualität
von Software (Artikel aus MSCoder) (
738 KB)
Die Messung der Maintainability hilft unter anderem dabei, festzustellen, wann es günstiger bzw. weniger riskant ist Codeteile neu zu schreiben, anstatt sie zu verändern.
Der Maintainability Index ist während der letzten zehn Jahre in den USA definiert worden und
z.Bsp. auf der Webseite des
Software Engineering Institutes beschrieben.
Es gibt zwei Varianten des Maintainability Index:
einer, der die Kommentare enthält (MI) und einer, der diese Kommentare nicht enthält
(MIwoc).
CMT++ berechnet beide Varianten.
Die Analysetools Testwell CMT++ und CMTJava berechnen den Wartungsindex
(Maintainability Index) für Funktionen (sowie class/struct
Definitionen), für Dateien und für die gesamte Software.
Bedeutung der Werte des Maintainability Index (MI, mit Kommentaren):
| 85 und mehr | gute Wartbarkeit |
| 65-85 | mittlere Wartbarkeit |
| < 65 | schwierige Wartbarkeit bei wirklich schlechten Codeteilen (zu komplex, unkommentiert, unstrukturiert) kann der MI-Wert sogar negativ sein |
Um den vollen Nutzen aus dem MI-Index zu ziehen, sollte die Möglichkeit bestehen, ein Codemodul neu zu schreiben, wenn es gemäß Index als nicht wartbar angesehen wird.
Berechnungsformeln für den Maintainability Index
Der Maintainability Index wird für jede Funktion/Klasse/Struktur einer Datei, sowie für die Summe aller Dateien berechnet.
Testwell CMT++ gibt für den Wartungsindex drei Maße:
- MIwoc: Maintainability Index ohne Kommentare
- MIcw: Maintainability Index Kommentaranteil
- MI: Maintainability Index = MIwoc + MIcw
Die allgemeinen Formeln für den Maintainability Index lauten wie folgt:
MIwoc = 171 - 5.2 * ln(aveV) -0.23 * aveG -16.2 * ln(aveLOC)
MIcw = 50 * sin(sqrt(2.4 * perCM))
MI = MIwoc + MIcw
Hierbei sind
aveV = durchschnittliches Halstead Volumen
(CMT++/CMTJava´s V) pro Modul
aveG = durchschnittliche Cyclomatic Komplexität
(CMT++/CMTJava´s v(G) ) pro Modul
aveLOC = durchschnittliche Zeilenanzahl
(CMT++/CMTJava´s LOCphy) pro Modul
perCM = perCM ist hier der durchschnittliche Prozentsatz des Anteils der
Kommentarzeilen pro Module (average percent of lines of comments per Module)
Ein "Modul" (im CMT++ Sinn) ist eine C-mäßige Funktionsdefinition, eine C++-mäßige "member function definition" bzw. eine "class/struct"-Definition.
weitere Informationen zu Testwell CMT++ und Testwell CMTJava
weitere Informationen zum Maintainability Index:
Kurt D. Welker, Idaho National Engineering and Environmantal Laboratory:
The Software Maintainability Index Revisited (August 2001)
last updated: 26.06.2007
© 2005-2007 Testwell Oy
© 2005-2007 Verifysoft Technology for the german 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.