# Softwaremetrie

Die Softwaremetrie beschäftigt sich als Teilgebiet der Softwaretechnik mit der Messung von Softwareeigenschaften und der Deutung dieser Messungen.
Ziel der Softwaremetrie ist es, mit Hilfe von objektiven und am besten automatisch erstellbaren Maßzahlen verschiedene Aussagen über eine Softwareeinheit und/oder den Prozess ihrer Erstellung tätigen zu können.
Die Fragestellungen umfassen dabei eine Reihe von Themengebieten, die in unterschiedlichen Phasen der Softwareentwicklung zum Tragen kommen und die Antworten auf Fragen unterschiedlicher Fragesteller liefern sollen. Im Folgenden werden die häufigsten Fragesteller mit einigen typischen Fragen aufgeführt.

## Manager

    sind meist an einem Maß für das Fortschreiten einer Entwicklung interessiert. Wie lange brauchen wir noch, um die Software fertigzustellen? Wie viel der Arbeit haben wir schon erledigt?

## Softwareentwickler

    stellen in kleinerem Rahmen ähnliche Fragen an die Softwaremetrie, meistens vor dem Hintergrund, ihre eigene Performance zu verbessern und/oder für zukünftige Aufwandsschätzungen bessere Werte liefern zu können. Wie lange benötige ich für einen Funktionsblock (function point)? Aus wie vielen Elementen besteht die Realisierung einer Funktionalität? Werden bestimmte Kriterien (z. B. Maximallänge von Methoden) in der entwickelten Software eingehalten? Wie stark ist ein Element von anderen Elementen abhängig (Kopplungen)?

## Qualitätssicherer

    haben ihren Fokus auf Maßzahlen, die ihnen Aufschluss über die Eigenschaften der Software selbst, aber auch über den Verlauf der Softwareentwicklung in Bezug auf Qualität liefern. Wie entwickelt sich die Zahl der gefundenen Fehler in der Software? In welchen Modulen tauchen besonders viele Fehler auf (denn dort sind typischerweise noch mehr Fehler versteckt)? Ist die Konstruktion der Software gut?
Um diese Fragen beantworten zu können, benötigt man zunächst als Datenquelle sogenannte Softwaremetriken. Diese Metriken liefern Maßzahlen zu dem untersuchten Softwareelement. Diese können dann – ergänzt durch weitere Zahlen aus dem Entwicklungsprozess (benötigte Arbeitszeiten, Fehlerreports, Fehlerverteilung etc.) – genutzt werden, um Antworten auf die oben angeschnittenen Fragen zu liefern.

## Kritik an Softwaremetrie

Die Messung von Softwareeigenschaften wie Qualität (d. h. Softwarequalität) oder Komplexität ist sehr schwierig. Da jede Metrik nur wenige Eigenschaften der Software berücksichtigen kann, besteht die Gefahr, dass die Software dahingehend entwickelt wird, die durch die Metrik erfassten Werte in die gewünschte Richtung zu beeinflussen, etwa um so die „Qualität“ der Software zu verbessern. Berücksichtigt die Metrik beispielsweise die Anzahl der Codezeilen (lines of code, LOC), so könnte ein Softwareentwickler – bewusst oder unbewusst – seinen Code so schreiben, dass dieser aus mehr Codezeilen besteht. Hat die Anzahl der gefundenen Softwarefehler einen Einfluss auf die Metrik, so kann das dazu führen, dass entweder viele kleinere Bugfixes zu einem einzigen großen zusammengefasst werden (oder schlimmer noch: gewisse Bugs gar nicht behoben werden), was die Anzahl der Bugfixes verringert, oder aber dass unnötig viele kleine Änderungen veröffentlicht werden, um die Anzahl der Bugfixes künstlich zu erhöhen. Dieser Effekt wird auch als metrik-induzierte Verhaltensänderung bezeichnet und führt in der Regel nicht dazu, dass die eigentliche Intention des jeweiligen Softwaremetrie-Einsatzes – z. B. Steigerung der Software-Qualität – erreicht wird.
Kritiker der Softwaremetrik meinen daher, dass jegliche Versuche, eine Metrik für „Softwarequalität“ oder Ähnliches über eine mathematische Formel zu definieren, zum Scheitern verurteilt sind, da die meisten Metriken versagen, sobald die zu bewertende Software auf die angesetzte Metrik „optimiert“ wird.