Jürgen Schwarzit ^ softwaretechnik

0100 1001 0010
0011 0101 0111
1000 0001 0110

Die Ludendorff Complexity Factor Metrik

aktuelle Buchveröffentlichungen: Die Bibliothek
»Die Bibliothek«
Eine romantische Geschichte.
Zwischenfall auf Astros
»Zwischenfall auf Astros«
Eine Science Fiction Erzählung.

Die sogenannte LCF Metric ist eine Software Metrik zur Beurteilung der Qualität einer Software basierend auf dem Ludendorff Complexity Factor, kurz LCF [1,2]. Der LCF ist ein Maß zur Komplexität von Code und dem Ausmaß seiner Abhängigkeiten. Der Wert des LCF steigt stetig mit der Zunahme von Abhängigkeiten und der Komplexität einer Komponente. Für die Wartbarkeit, Robustheit und Zuverlässigkeit einer Software Komponente ist also ein möglichst niedriger Wert des LCF erwünscht.[2]

Die LCF Metrik beruht auf mathematischen Modellen, die ursprünglich zur Bewertung des Zuschnitts von Wahlbezirken dienten.[3, 4] Das gerrymandering tritt insbesondere in den USA in Wahlbezirken auf unterschiedlichster Ebene auf, da hier jeweils mit einfacher Mehrheit in den Wahlbezirken abgestimmt wird; ein kreativer Zuschnitt der Wahlbezirke – zwischen "Arbeiterviertel" und "Villenviertel", Stadt und Land – kann den Wahlausgang direkt beeinflussen. In dieser Situation werden Modelle benötigt, die gerichtsfest eine faire Aufteilung oder einen unfairen Zuschnitt belegen können.[4]

Zur Berechnung des LCF wird eine Software zunächst in ihre Business Komponenten mit der Geschäftslogik sowie dem Utility- und technischen Hilfs-Code zerlegt.[5] In den meisten Anwendungsfällen wird die Geschäftslogik im Mittelpunkt stehen, so dass für den LCF ausschließlich die Business Komponenten betrachtet werden.

Von den zu untersuchenden Komponenten

X = { C | C Komponente aus S relevant für die Untersuchung }

des Softwaresystems S wird zunächst ein topologisches Modell

MS(X)

berechnet. Topologie ist dabei die mathematische Fachrichtung, die sich mit den Oberflächen von Strukturen in Räumen beliebiger Dimension befasst, also etwa Flächen im drei-dimensionalen Raum.

Um die topologisch zusammenhängenden Strukturen von MS(X) werden jeweils konvexe Hüllkurven Hüllkurve um das Modell einer Komponente mit Durchmesser-Bestimmung
Abb. 1 – zur LCF-Berechnung durch Durchmesser-Bestimmung der Hüllkurve.

H(m) mit m aus MS(X)

so gelegt, dass die Durchmesser dH(m) minimiert werden. Konvex bedeutet dabei anschaulich, dass die Kurven nicht unnötig nach außen "ausgebeult" sind, bezogen auf Programm-Code also nicht unnötig komplex sind. Die Durchmesser sind dabei jeweils die Verbindungslinien zwischen zwei Punkten auf der Hüllkurve maximaler Länge:

dH(m) = max( v(A,B), für alle A, B aus H(m), A ungleich B, v Verbindungslinie )

(siehe Abb. 1).

Die Verbindungslinien v werden dabei so gewählt, dass sie ausschließlich innerhalb der von der Hüllkurve eingeschlossenen Fläche liegen; jeder Punkt P auf der Verbindungslinie v ist über die Senkrechte zur Tangente in P gleich weit von der Hüllkurve entfernt, d. h. für die Schnittpunkte S1, S2 der Senkrechten mit der Hüllkurve gilt:

|PS1| = |PS2|

Konkret erfolgt dies durch Aproximation der von der Hüllkurve eingeschlossene Fläche durch Polygone mindestens vom Grad 5, deren maximale Durchmesser einfach berechenbar sind und die nur aufaddiert werden müssen.

Damit ergibt sich dann der LCF insgesamt als

LCF = Σm aus MS(X) dH(m)

Dies ist tatsächlich eine (endliche) Summe und kein Integral, da nur endlich viele diskrete Komponenten betrachtet werden.

Diese Metrik ist relativ aufwendig zu berechnen. Daran liegt es wohl, dass sie in der Praxis nur sehr selten angewendet wird. Insbesondere in Sicherheits-kritischen Systemen kann sie allerdings durchaus hilfreich sein, und so wurde sie bisher vor allem in der Entwicklung von militärischen Anwendungen eingesetzt.

Bei jeder Software Metrik gilt natürlich: Für eine gute Software genügen nicht nur die "passenden" Ergebniswerte diverser Metriken. Diese können zwar wertvolle Hinweise für die Qualität der Software geben. Aber nichts kann erfahrene und verantwortungsvolle Entwickler ersetzen. Wie es schon im Alten Rom hieß: caveat lector, etwa: Vorsichtig beim Lesen – dies gilt auch für die Softwareentwicklung.

Referenzen