Software-MetrikenDie wichtigsten Metriken bei der Softwareentwicklung

In der Softwareentwicklung gibt es eine Fülle von Metriken. Ein Überblick.

Bei der Softwareentwicklung dienen Software-Metriken 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

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
    Die Anzahl von gefundenen Fehlern bezogen auf die Anzahl der Code-Zeilen (LOC).
  • Die Anzahl und der Schweregrad von Sicherheitsvorfällen.
  • Die allgemeine Anzahl von Ausfällen.
  • Mean Time Between Failures (MTBF)
    Die durchschnittliche Betriebsdauer zwischen Ausfällen.
  • Mean Time To Recovery/Repair (MTTR)
    Die durchschnittliche Dauer bis zur Wiederherstellung/Reparatur.

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
    Gemessen durch die 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
    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 dieser Metrik sollte man vorsichtig sein, weil eine hohe Auslastung zu weniger Flexibilität und Senkung der Geschwindigkeit führen kann)

Fazit

Obwohl Metriken mehrere Vorteile versprechen, treten bestimmte Schwierigkeiten beim Einsatz in der Praxis auf: Auswahl ungeeigneter Metriken, Messung ohne vordefiniertes und klares Ziel, geringe Akzeptanz oder sogar die Ablehnung von Metriken. Um Metriken erfolgreich einsetzen zu können, sollte man auf die Planung und die Auswahl einen besonderen Wert legen, geeignete Metriken systematisch erfassen und in den Prozess so früh wie möglich integrieren. Werden alle notwendigen Voraussetzungen erfüllt, gelingt es, gesetzte Ziele zu erreichen.

Dazu im Management-Handbuch

Ähnliche Artikel

Gesundheitstipps