McCabe

Zur Messung von Softwareprodukten werden sogenannte Software-Metriken verwendet, die unterschiedliche Eigenschaften von Softwareprodukten und -prozessen quantifizieren. Die Metrik von McCabe wurde bereits 1976 durch Thomas J. McCabe vorgestellt und ist in den Rahmen der Software-Metriken einzuordnen, mit denen ein Maß für die Komplexität von Software ermittelt werden kann.


Die Grundidee geht dabei davon aus, eine Software auf Basis ihrer logischen Struktur zu analysieren. Der Vorteil dieser Metrik liegt in ihrer deutlich trivialeren Berechnung - im Gegensatz zu den auch häufig verwendeten Verfahren nach Halstead und Rechenberg. Besonders nachteilig an dem Verfahren nach McCabe ist jedoch, dass dieses nur die Architektur eines Programms berücksichtigt, dagegen aber die einzelnen Anweisungen und Ausdrücke in deren Komplexität wie beispielsweise Schachtelungstiefen von Schleifen oder den Einfluss langer Sequenzen nicht in die Wertung einbezieht. Auch daher findet die Metrik von McCabe u.a. Verwendung in der Ermittlung von Test- und Wartungsaufwänden, wobei durch das Maß unter Annahme des mindestens einmaligen Durchlaufs eines jeden Pfads die minimale Anzahl von Testfällen ermittelt wird. Häufig findet die Metrik auch Anwendung in der Vorgabe von Strukturbeschränkungen für zu entwickelnde Softwareprodukte.

Auf der Basis von McCabe entwickelten sich zahlreiche weitere Software-Metriken - u.a. die statischen objektorientierten Software-Metriken.

Kontrollflussgraphen nach McCabe

Kontrollflussgraphen nach McCabe

McCabe geht von dem Gedanken aus, die logische Struktur einer Software als einen gerichteten Graphen abzubilden. Dabei werden Anweisungen als Knoten dieses Graphen dargestellt, und dessen Kanten zeigen den Kontrollfluss zwischen den Anweisungen auf. Demzufolge hängt die Programmkomplexität von der Anzahl der Hauptwege ab, diese werden auch als linear unabhängige Programm-Pfade bezeichnet - in dem so erstellten Graphen - auch Kontrollflussgraph genannt. Die minimal ohne Überschneidungen notwendige Anzahl der Kantenzüge V, um alle Kantenzüge durch Kombinationen abbilden zu können, wird durch den folgenden mathematischen Zusammenhang ausgedrückt und zyklomatische Zahl genannt:

V(g) = e - n + 2xp

Dabei bezeichnen e und n die Anzahl der Knoten bzw. Kanten des Graphen und p drückt die Anzahl der Zusammenhangskomponenten aus. Darunter versteht man unabhängige Teilgraphen, die wiederum beispielsweise Prozeduren oder Methoden abbilden.

Der einfachste Fall ist der, dass ein Programm nur einen Eingang und einen Ausgang hat. Dann bestimmt sich das Maß von McCabe zu:

V(g) = 1 + Anzahl der binären Verzweigungen

Beispiel Sequenz: V(g) = 1 - 2 + 2 = 1

Beispiel Auswahl: V(g) = 4 - 4 + 2 = 2

Beispiel Abweisende Schleife: V(g) = 3 - 3 + 2 = 2

Die Software-Metrik von McCabe ist einfach ausgedrückt, die Anzahl der Schlüsselwörter wie if, while, case oder for addiert mit dem Faktor +1. Ein interessanter Rückschluss von McCabe war es auch, dass mit Hilfe des erstellten Graphen eine Bewertung des Programmierstils erfolgen könne, und dadurch sogar der Programmierer der betrachteten Software zu identifizieren wäre.

Informationen zum Artikel
Deutsch: McCabe-Metrik
Englisch: McCabe
Veröffentlicht: 02.11.2013
Wörter: 450
Tags: #Analyse
Links: Annahme, Anweisung, Architektur, Binär, Graphen