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) ( 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. 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. Bedeutung der Werte des Maintainability Index (MI, mit Kommentaren):
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 IndexDer 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:
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 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: weitere Informationen über Testwell Complexity Measures Tools: last updated: 05.06.2010 © 2006-2010 Testwell Oy / Verifysoft Technology GmbH |