SoftwareKritische Softwaremetriken im Überblick

Welche Softwaremetriken sind wichtig? Welche Rolle spielt die Komplexität eines Produkts? Und welche Tests führen zu einem aussagekräftigen Ergebnis? In der Softwareentwicklung gibt es zahlreiche Metriken. Welche wirklich aussagekräftig sind, klärt der Autor.

Wozu dienen Metriken bei der Softwareentwicklung?

Bei der Softwareentwicklung dienen Softwaremetriken dazu, Eigenschaften der Software sowie des Entwicklungsprozesses zu quantifizieren. Das ermöglicht, den Erfüllungsgrad von Anforderungen und vorgegebenen Zielen zu bewerten, basierend auf den Bewertungsergebnissen Schlussfolgerungen zu ziehen und entsprechende Maßnahmen zu treffen.

Mit Metriken lassen sich aber nicht nur Schwachstellen identifizieren. Der gesamte Entwicklungsprozess kann vorhersehbarer geplant und gesteuert werden. Nachfolgende Projekte profitieren ebenfalls, weil der Aufwand besser abgeschätzt werden kann.

Im Laufe der Zeit hat sich eine Reihe von Software-Metriken angesammelt. Im Folgenden werden ausgewählte Metriken vorgestellt, die in der Softwareentwicklung besonders verbreitet und für Softwareprojekte gut geeignet sind.

Metriken für die Messung der Produktkomplexität und -größe

Je komplexer der Code, desto fehleranfälliger ist das Produkt. Der Komplexitätsgrad der Software steht im direkten Zusammenhang mit der Qualität des Produktes. Metriken für die Produktkomplexität und Produktgröße geben an, wie komplex der Anwendungscode ist.

Konventionelle Metriken

Zyklomatische Komplexität nach McCabe

Metrik zur Ermittlung der Komplexität des Kontrollflusses im Code; wird bestimmt durch die Anzahl der Kanten, der Knoten und der verbundenen Programmelemente.

Halstead-Metrik

Maß für die Größe und Komplexität des Codes; wird bestimmt durch die Anzahl der verwendeten Operanden und Operatoren in einem Modul.

Lines of Code (LOC)

Maß für die Größe der Software; gemessen wird die Anzahl von Zeilen im Quellecode.

Objektorientierte Metriken

Depth of Inheritance (DIT)

Metrik zur Messung der Tiefe des Vererbungsbaumes.

Number Of Children (NOC)

Metrik zur Messung der Breite des Vererbungsbaumes.

Number Of Descendants (NOD)

Metrik zählt die Anzahl aller Klassen in einer Oberklasse.

Coupling Between Objects (CBO)

Ein Maß für die Beziehungen von Klassen.

Number Of Services (NOS)

Metrik für die Kopplung; gezählt wird die Anzahl der Dienste.

Lack of Cohesion in Methods (LCOM)

Ein Maß für den Mangel an Kohäsion.

Weighted Methods per Class (WMc)

Metrik zur Ermittlung der Komplexität aller Methoden in einer Klasse.

Metriken für die Messung der Produktqualität

Es gibt eine Reihe von Merkmalen, die den Grad der Produktqualität bestimmen. Im Grunde genommen helfen diese Metriken zu verstehen, inwiefern die Qualität des Produktes den sowohl funktionellen als auch nicht funktionellen Anforderungen entspricht.

Im Folgenden werden Metriken aufgeführt, die es ermöglichen, Qualitätseigenschaften wie Zuverlässigkeit, Wartbarkeit, Funktionalität und Benutzbarkeit zu bewerten.

Zuverlässigkeit der Software

Die Zuverlässigkeit einer Software hängt von drei Faktoren ab: wie häufig das Produkt ausfallen kann (Verfügbarkeit), wie gut es unter außergewöhnlichen Bedingungen laufen kann (Robustheit) und wie schnell es das geforderte Leistungsniveau nach einem Ausfall wieder anbieten kann (Wiederherstellbarkeit). Diese Qualitätseigenschaften können durch die folgenden Metriken gemessen werden:

  • Fehlerdichte bezogen auf die Anzahl der Code-Zeilen (LOC)
  • Anzahl und der Schweregrad von Sicherheitsvorfällen
  • allgemeine Anzahl von Ausfällen
  • durchschnittliche Betriebsdauer zwischen Ausfällen (Mean Time Between Failures)
  • durchschnittliche Dauer bis zur Wiederherstellung (Mean Time To Recovery/Repair)

Wartbarkeit (Änderbarkeit)

Metriken für die Komplexität wie LOC, zyklomatische Komplexität nach McCabe und Halstead-Metrik geben an, wie umfangreich und komplex ein Produkt aufgebaut ist. Sie bilden die Basis für die Berechnung des Wartbarkeitsindexes (engl. Maintainability Index). Die Messung der Wartbarkeit hilft zu bestimmen, wie aufwändig und schwierig es ist, das Produkt zu warten und weiterzuentwickeln. Diese Maßzahlen bieten damit eine Hilfe, frühzeitig wartungsintensive Teile zu erkennen, um Korrekturmaßnahmen zu ergreifen.

Funktionalität

Metriken zu funktionalen Eigenschaften geben an, inwiefern das Produkt vordefinierte funktionelle Anforderungen erfüllt. Um diese Eigenschaft messbar zu machen, kommen Spezifikationen, Test- und Review-Protokolle zum Einsatz. Das Verhältnis zwischen Ist- und Soll-Funktionalität zeigt, wie viele geplante Funktionen im Vergleich zu den vordefinierten implementiert worden sind.

Benutzbarkeit

Ein Maß für die Benutzbarkeit gibt an, wie verständlich, erlernbar und bedienbar das Produkt aus der Sicht von Benutzern ist. Die Benutzbarkeit lässt sich beispielsweise durch die Schulungsdauer für Benutzer (wie lange es dauert, bis man mit dem Produkt gut genug umgehen kann), die Anzahl der Funktionalität oder die Anzahl der Klicks zur Durchführung der gewünschten Aktion messen.

Metriken für die Messung der Testqualität und Testeffizienz

Testmetriken stellen eine besondere Gruppe von Metriken im Entwicklungsprozess dar, die ganz am Anfang des Projektes definiert werden müssen. Diese Metriken ermöglichen, Testaufwand und Kosten zu schätzen, Testprojekte zu planen und die Testqualität zu beurteilen. Man unterscheidet die folgenden Testmetriken:

Schätzung von Testkosten und Aufwand

Um den Testaufwand berechnen und Testkosten kalkulieren zu können, müssen solche Faktoren wie Testumfang, Testbarkeit von Testobjekten und Testproduktivität erst ermittelt werden. Dann kann eine modifizierte COCOMO-Formel zum Einsatz kommen, die im Allgemeinen zur Kosten- und Aufwandschätzung in der Softwareentwicklung verwendet wird.

Bewertung der Testfälle

Es geht nicht nur um die Anzahl von Testfällen (Ist-Testfälle vs. Soll-Testfälle), sondern um ihre Komplexität (Testintensität, Testdatenkomplexität und mehr) und Qualität (Testfalleffizienz, Wiederverwendbarkeit von einem Testfall, Grad der Testfallüberdeckung).

Messung der Testüberdeckung

Eine Metrik zur Bestimmung der Codeüberdeckung ist der Anteil von getesteten Kontrollflusspfaden an allen Pfaden oder der Anteil von getesteten Anweisungen an allen Anweisungen. Um die Überdeckung zu messen, stehen auch Konzepte und Benutzerhandbücher zu Verfügung, zum Beispiel das Verhältnis von getesteten Konzeptelementen zu spezifizierten Konzeptelementen.

Bewertung der Testeffektivität

Für die Bewertung der Testeffektivität wird verglichen, wie viele Fehler im Testbetrieb aufgedeckt wurden und wie viele Fehler nach der Veröffentlichung entdeckt wurden. Wenn die Fehlerrate sinkt und der Überdeckungsgrad steigt, wächst das Vertrauen in das Produkt.

Bewertung der Testfalldurchführung

Gezählt wird die Anzahl von Testfällen mit dem jeweiligen Status, wie „durchgeführt“, „zurückgewiesen“ oder „blocking“.

Bewertung des Anforderungsmanagements

Ist die Anzahl von ungeplanten neuen Testfällen sehr hoch, weist das darauf hin, dass das Anforderungsmanagement verbessert werden muss.

Prozess-Metriken

Eigenschaften im Entwicklungsprozess werden durch folgende Metriken gemessen und bewertet:

Ressourcenaufwand und -management

Dazu dienen Zeit-, Kosten- und Mitarbeiter-Metriken, die zeigen, mit wie viel Zeitaufwand das Projekt realisiert werden muss, wie viel das Projekt voraussichtlich kostet und wie viele Mitarbeiter an dem Projekt beteiligt sind.

Fehlerstrom

Wird gemessen durch die Anzahl von Fehlern nach jeder Phase, die nach Priorität, Schweregrad, korrigierten Komponenten, Laufzeit differenziert werden, sowie durch die Anzahl der Änderungen in der Anforderungsspezifikation.

Kommunikationsaufwand

Der Aufwand wird gemessen anhand der Anzahl von Treffen oder Reviews.

Metriken für die Messung der Projektqualität

Zeitmetriken

Diese Metriken dienen vor allem dazu, Terminabweichungen durch den Vergleich vom Ist-Termin mit dem Plantermin festzustellen. Dabei kann man die durchschnittliche Entwicklungszeit ermitteln und diese Metrik als Grundlage für die Schätzung bei künftigen Projekten verwenden.

Zu dieser Gruppe gehören auch die Antwortzeit (benötigte Zeit, um auf Kundenanfragen zu reagieren) und Bearbeitungszeit, die es ermöglichen, die Produktivität des Teams und die Effizienz des Prozesses zu bewerten.

Aufwands- und Kostenmetriken

Diese Gruppe von Metriken hilft, Kosten und Aufwand besser abzuschätzen. Die Metrik Aufwand-Termin-Treue ermöglicht es, den geplanten Aufwand zu festgesetzten Zeitpunkten mit dem tatsächlichen Aufwand zu vergleichen und zu prüfen, mit wie viel Aufwand tatsächliche Leistungen erbracht worden sind.

Um die Termintreue zu verbessern, kommt die sogenannte Meilenstein-Trend-Analyse zum Einsatz. Meilensteine stehen zur Verfügung, um einen Trend in Bezug auf Termintreue oder Terminverschiebungen zu erkennen und rechtzeitig Gegenmaßnahmen zu ergreifen. Bei der Kontrolle von Projektkosten hilft die Kosten-Trend-Analyse.

Customer Effort Score (CES)

Metrik für die Bewertung des Grades der Kundeneinbindung.

Customer Satisfaction Score (CSAT)

Metrik zur Bewertung der Kundenzufriedenheit durch Umfragen, Interviews, Tests.

Metriken für die Bewertung des Projektfortschrittes

Fertigstellungsgrad und -wert, Ist-Kosten für die Ist-Leistungen, Terminentwicklungsindex, Kostenabwicklungsindex, Gesamtkostenabweichungen und mehr.

ROI-Metrik

Die ROI-Metrik dient der Bewertung von Investitionen.

Metriken für die Bewertung der Produktivität

  • Velocity in agilen Projekten (wie viele Aufgaben innerhalb eines Zeitintervalls erledigt werden)
  • Produktivität pro Mitarbeiter (die durchschnittliche Arbeitsleistung pro Mitarbeiter in einem bestimmten Zeitraum)
  • Auslastung von Mitarbeitern (wie viele Mitarbeiter für die Erledigung jeder Aufgabe eingesetzt sind und ob sie hundertprozentig ausgelastet sind

Beim Einsatz der letztgenannten Metrik sollte man vorsichtig sein, weil eine hohe Auslastung zu weniger Flexibilität und Senkung der Geschwindigkeit führen kann

Dazu im Management-Handbuch

Weiterlesen

Vorlagen nutzen

Excel-Tipps