Halstead

Zur Messung von Softwareprodukten werden sogenannte Software-Metriken verwendet, die unterschiedliche Eigenschaften von Softwareprodukten und -prozessen quantifizieren. Die 1977 von Halstead vorgestellte Software-Metrik ist der Gruppe der Umfangsmetriken zuzuordnen und definiert Kennwerte für das Programmvolumen, die Schwierigkeit ein Programm zu verstehen, den Programmieraufwand sowie die Anzahl der zu erwartenden Programmierfehler. Nachteilig bei diesem doch aufwendigen Verfahren ist, dass die stark unterschiedlichen Merkmale eines Programms vereinfacht und der Quellcode als zentrales Objekt der Messung überbetont werden.


Basis für die Metrik von Halstead

Die Metrik von Halstead beruht auf der Annahme, dass ein Programm nur aus Operanden und Operatoren besteht. Dabei wird als Operator jedes Symbol oder Schlüsselwort bezeichnet, welches eine Aktion nach sich zieht, z.B. arithmetische Operatoren, Schlüsselwörter wie while oder for sowie spezielle Symbole wie := oder Klammern. Als Operanden werden alle Symbole bezeichnet, die Daten darstellen (Variable, Konstanten, Sprungmarken). Dabei wurde die Klassifikation der Operanden und Operatoren nicht eindeutig von Halstead festgelegt. Der Metrik liegen die folgenden Basisgrößen zugrunde:

n1, n2 ... Anzahl verschiedener Operatoren und Operanden,

N1, N2 ... Gesamtanzahl Operatoren und Operanden,

N = n1 + n2 ... Anzahl verschiedener Symbole,

N = N1 + N2 ... Gesamtanzahl aller Symbole.

Halstead hat nun die folgenden Maße definiert:

Programmvolumen: V = N x ldn

Unter der Voraussetzung, dass eine Gleichverteilung der Wörter vorliegt, formuliert dieser Zusammenhang die Länge eines Satzes bei optimaler Binärcodierung. Dies ergibt sich wiederum aus Erkenntnissen der Informationstheorie. Durch Untersuchungen konnte nachgewiesen werden, dass die Kenngrößen für Operatoren, Programmlänge und Programmvolumen in enger Korrelation (Ähnlichkeit) stehen und eine gute Abschätzung für die Modulgröße liefern.

Schwierigkeit: S = (n1 x N2)/(2 x n2)

Dabei beschreibt S den Aufwand zur Implementierung von Algorithmen, das Verstehen von Programmcode sowie den Aufwand des Lesens von Codes im Rahmen des Code-Reviews.

Programmieraufwand: E = V/S

Damit wird der Programmieraufwand als Funktion des Volumens V und des Schwierigkeitsgrades S gekennzeichnet. Der interessante Aspekt dabei ist, dass die Maßeinheit von E elementare Denkschritte sind. Dieser Überlegung legte Halstead eine Studie des Psychologen Stroud zugrunde, nach der das Gehirn zwischen 5 und 18 elementare Operationen pro Sekunde ausführt. Dadurch können Maße in zeitliche Aussagen transformiert werden. In nachfolgenden Experimenten wurde dann auch die starke Korrelation zwischen dem errechneten Programmieraufwand E und dem tatsächlichen Aufwand zur Erstellung einer Software - auf Basis von Manntagen und Mannmonaten - festgestellt.

Programmierfehler: Beta = V/3000

Diesem Formalismus liegt die in Experimenten von Halstead gewonnene Erkenntnis zugrunde, dass im Mittel nach 3000 elementaren Operationen des Gehirns ein Programmierfehler auftritt.

Bei zusammenfassender und kritischer Betrachtung der Softwaremetrik von Halstead kann folgendes festgestellt werden:

  • Bei der Ermittlung der Kenngrößen wird nur ein Ausschnitt des Entwicklungsprozesses betrachtet - die Umsetzung des Entwurfs in den Quellcode. Der Ansatz lässt viele Ursachen für Komplexität wie beispielsweise die Schachtelungstiefe oder den Gültigkeitsbereich von Namen unberücksichtigt.
  • Mehrdeutigkeiten im Ansatz insbesondere bei der nicht eindeutig definierten Klassifizierung von Operanden und Operatoren können das Ergebnis stark beeinträchtigen.
  • Vorteilhaft ist, dass das nach Halstead ermittelte Maß stark mit der Häufigkeit von Programmierfehlern korreliert (Korrelation = Ähnlichkeit).
  • Das Verfahren ist unabhängig von einer Programmiersprache einzusetzen.

Informationen zum Artikel
Deutsch: Halstead-Metrik
Englisch: Halstead
Veröffentlicht: 30.10.2013
Wörter: 520
Tags: #Analyse
Links: Algorithmus, Annahme, Aspekt, Aufwand, Code