Software vermessen und verbessern
What gets measured gets done – Dieser Satz gilt natürlich für alle in der Axivion Suite enthaltenen Qualitätsindikatoren, für Metriken jedoch insbesondere. Sind doch Software-Metriken der Inbegriff der Software-Messung. Wertemäßige Ausreißer nach unten und oben geben in der Regel einen guten ersten Ansatzpunkt, um Anomalien und Hot-Spots in der Software zu finden. Außerdem dient die Interpretation von Metrik-Werten der Beurteilung komplexer Softwareprodukte. Somit ist die Erhebung von Metriken ein Grundpfeiler des Qualitätsmanagements.
Die Axivion Suite enthält viele bekannte Softwaremetriken. Enthalten sind Produkt-Metriken basierend auf Zeilen und Tokenstrom, der syntaktischen Struktur und Verschachtelung, dem Kontroll- und Datenfluss oder der Systemstruktur. Ganze Metriksätze wie die Halstead-Metriken und HIS-Metriken können ermittelt werden. Außerdem sind individuelle Metriken anhand des Tokenstroms, des abstrakten Syntaxbaums, der Daten- und Kontrollfluss-Informationen und anhand von abstrakten Abhängigkeitsgraphen möglich.
Die Aussagekraft einzelner Metriken inklusive der anzuwendenden Schwellenwerte kann projektspezifisch kalibriert werden, um zu einem operationalisierten Rahmenwerk zur Qualitätssteuerung zu werden.
- Lines of Code (LOC) in verschiedenen Variationen, z.B. mit und ohne Kommentaren, mit Leerzeilen, nur in den Rümpfen usw. jeweils bezogen auf Funktionen, Klassen, Dateien.
- Number Of Statements zählt die Anweisungen innerhalb von Funktionen.
- Nesting berechnet die maximale Verschachtelungstiefe der Bedingungsprüfung je Funktion.
- Zyklomatische Komplexität oder McCabe Complexity ermittelt eine obere Schranke für die minimale Anzahl der Testfälle, die für ein vollständige Zweigüberdeckung einer Funktion notwendig sind. Für den Einsatz als Verstehbarkeitsmaß in der Qualitätsbeurteilung gibt es verschiedene Variationen, die switch-case-Anweisungen und Short-Circuit-Evaluation von Bedingungen unterschiedlich werten (switch-Complexity, Extended Cyclomatic Complexity).
- NPath zählt die maximale Anzahl von nichtzyklischen Programmdurchläufen innerhalb einer Funktion.
- Halstead-Metriken: Klassische Suite von tokenbasierten Metriken, die Operatoren und Operanden zählt und in Verhältnisse setzt; die zentralen Metriken sind Volume, Difficulty und Effort.
- HIS-Metriken: Eine klassische Sammlung von Metriken zusammen mit Schwellenwerten für handcodierte Funktionen im Automotive-Bereich, die für C festgelegt wurde. U.a. sind McCabe und einige Halstead-Metriken Bestandteil dieser Sammlung.
- Number Of Invocations zählt die Anzahl verschiedener Aufrufe innerhalb einer Routine.
- Number Of Parameters ermittelt die Anzahl formaler Parameter einer Funktion.
- Comment zählt die Zeilen innerhalb einer Funktion, welche einen Kommentar enthalten.
- Metric Comment Density berechnet die Kommentardichte einer Funktion, welche mit dem Verhältnis aus Kommentaren vor und innerhalb der Funktion und der Number of Statements korrespondiert.
- Objektorientierte Metriken wie Vererbungstiefe und viele mehr.
Das Bild zeigt die Liste von Änderungen von Metrik-Verstößen im ausgewählten Zeitfenster.
Neben neuen Verstößen wurde auch ein Metrik-Verstoß in derselben Zeit behoben.
Success Stories
Eine Auswahl unserer Success Stories zu den Metriken