Maintainability Index

[English][Français]

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