Messung des Wartbarkeitsindexes (Maintainability Index, MI)
mit Testwell CMT++ und Testwell CMTJava
Testwell CMT++ und CMTJava sind Werkzeuge zur Messung der Softwarekomplexität in C, C++, Java und C#.
Die Werkzeuge zeigen unter anderem den Wartbarkeitsindex an.
Die Werkzeuge zeigen unter anderem den Wartbarkeitsindex an.
Der Wartbarkeitsindex (MI) ist ein Zahlenwert zur Bestimmung der Wartungsfreundlichkeit (Maintainability) von Softwarecode.
Dieser 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)
Die Messung der Wartbarkeit hilft unter anderem dabei, festzustellen, wann es günstiger bzw. weniger riskant ist Codeteile neu zu schreiben, anstatt sie zu verändern.
Es gibt zwei Varianten des Maintainability Index:
Dieser 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)
Die Messung der Wartbarkeit hilft unter anderem dabei, festzustellen, wann es günstiger bzw. weniger riskant ist Codeteile neu zu schreiben, anstatt sie zu verändern.
Es gibt zwei Varianten des Maintainability Index:
- Wartbarkeitsindex mit Kommentaren (MI)
- Wartbarkeitsindex ohne Berücksichtigung der Kommentare (MIwoc).
Bedeutung der Werte des Maintainability Index (MI, mit Kommentaren):
85 und mehr: gute Wartbarkeit65-85: mittlere Wartbarkeit
unter 65: schwierige Wartbarkeit
bei sehr 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 Modul (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 zum Maintainability Index
Kurt D. Welker, Idaho National Engineering and Environmantal Laboratory: The Software Maintainability Index Revisited (August 2001)Testwell CMT++ und CMTJava zeigen die folgenden Softwaremetriken an:
- Zeilenmetriken/Lines-of-code (LOC) Metriken
- Halstead-Metriken
- McCabe Cyclomatic Number v(G)
- Wartungsaufwand (Maintainability Index)
GrammaTech CodeSonar und Imagix 4D
Neben Testwell CMT++ und CMTJava bietet Verifysoft Technology in den deutschsprachigen Ländern folgende Werkzeuge an, die unter anderem auch die Code-Komplexität messen:Wir beraten Sie gerne bei der Auswahl des für Sie besten Werkzeugs.
Kontaktieren Sie uns jetzt!