





Softwarekomplexität
Code-Komplexität / Software-Metriken
Die Softwarekomplexität (Code Complexity) korreliert mit der Fehlerrate und der Robustheit einer Anwendung. Komplexe Software ist oft der Grund für schlechte Code-Qualität und fehlerhafte Programme. Komplexer Code ist nicht nur fehleranfällig, sondern auch relativ schwierig zu testen. Ebenfalls hat die Softwarekomplexität einen direkten Einfluss auf die Wartbarkeit von Software.Da die Kosten für schlechte Qualität und fehlerhafte Programme sehr hoch sein können, helfen Komplexitätsmessungen Geld zu sparen.
Softwarekomplexitätsmetriken sollten im Entwicklungsprozess so früh wie möglich analysiert werden. Hierdurch haben die Entwickler die Möglichkeit korrigierend einzugreifen sobald von den empfohlenen Werten abgewichen wird.
Komplexitätsmetriken werden auch eingesetzt um die Qualität von Software, die im Rahmen des Outsourcings von Fremdfirmen entwickelt wird, zu überprüfen.
Zeilenmetriken (Lines of Code Metrics, LOC Metrics) sind die ältesten Größen zur Messung der Softwarekomplexität.LOC-Metriken sind einfach zu messen und zu verstehen.Allerdings berücksichtigen diese Metriken nicht das "Layout" und den Informationsgehalt des Codes. Weitere Informationen
Die zyklomatische Komplexität (Cyclomatic complexity of McCabe) v(G) zeigt die Komplexität des Kontrollflusses im Code (also die Anzahl der möglichen verschiedenen Pfade mit denen ein Programm durchlaufen werden kann). Diese Metrik gibt auch Hinweise für den Softwaretest: die Anzahl der Testfälle für eine Funktion sollte mindestens dem McCabe-Wert entsprechen. Weitere Informationen
Halstead-Metriken basieren auf der Anzahl der Operanden und Operatoren im Quellcode:
- Anzahl der verschiedenen Operatoren (n1)
- Anzahl der verschiedenen Operanden (n2)
- Gesamtzahl der Operatoren (N1)
- Gesamtzahl der Operanden (N2)
- Geschätzte Anzahl der ausgelieferten Bugs (Estimated number of errors), B
- Schwierigkeitsgrad (Difficulty level, error proneness), D
- Implementierungsaufwand (Effort to implement), E
- Programmniveau (Program level), Abstraktionsniveau des Programms, L
- Programmlänge (Program length), N
- Implementierungszeit (Implementation time / time to understand), T
- Volumen (Volume: size of the implementation of an algorithm), V
Der Wartbarkeitsindex (Maintainability Index, MI) gibt an, wann es günstiger und empfehlenswerter ist Programmteile neu zu implementieren, statt diese weiter zu warten. Weitere Informationen
Werkzeuge:
Testwell CMT++ (für C und C++)
Testwell CMTJava (für Java)
Imagix 4D
CodeSonar
Dokumente:
Berechnung von Software-Metriken für ein Beispielprojekt



