Wozu dienen statische Codeanalysen?
Statische Codeanalysen befassen sich mit der Struktur des
Sourcecodes von Softwareprogrammen. Die
Analyseergebnisse, die man fast immer durch Einsatz
entsprechender Analysewerkzeuge automatisch geliefert
bekommt, geben ein Bild von der Größe und Komplexität
der analysierten Programme.
Ziel solcher Analysen sind nicht unbedingt Hinweise auf
konkrete Fehler, sondern nur Hinweise, wo die Fehlerwahrscheinlichkeit
auf Grund struktureller Programmeigenschaften höher ist
und der Code schwieriger zu warten und zu testen ist
(z.B.: Viele Programmzweige, hohe Schachtelungstiefe,
etc.). Codeanalysen sollten Bestandteil eines
Code-Reviews sein. Die Analysetools müssen der
jeweiligen Programmiersprache des Sourcecodes mächtig
sein.Mögliche Maßzahlen für die
(automatisierte) Untersuchung des Codes
Die folgende Auflistung zeigt eine Auswahl der am
häufigsten verwendeten Maßzahlen bei der Codeanalyse:
- BLOC (Brutto Lines of Code): Anzahl aller Zeilen
- NLOC (Netto Lines of Code): Anzahl der Zeilen,
die keine Kommentarzeilen sind
- Anzahl der Kommentarzeilen
- DLOC (Delta Lines of Code): Anzahl der Zeilen,
die in der neuen Version eingefügt oder
geändert wurden
- Anzahl der Programmzweige (C1)
- Anzahl der Abfragen (C2)
- Anzahl der Programmpfade (C3)
- Schachtelungstiefe
- Komplexitätszahl nach McCabe
- Verwendete Funktionen
- Verwendete Operatoren
- Halstead estimated errors
Komplexitätszahl nach McCabe
Die Komplexitätszahl nach McCabe sagt etwas über die Komplexität
eines Programms aus. Dies ist eine wichtige
Maßzahl, da mit steigender Komplexität des Codes auch
die Fehlerwahrscheinlichkeit
zunimmt. Ermittelt werden die Anzahl der unabhängigen
Pfade in einer Funktion. Gezählt wird 1 plus die Anzahl
der Entscheidungen in der Funktion: If, for, while,
do...while und ?...: zählen als 1; switch mit n Wegen
als (n-1), else wird nicht gezählt. Als zu erreichendes
Ziel wird für diese Maßzahl in der Literatur meist eine
Zahl <= 10 angegeben, doch erweist sich dies in der
Praxis oft als nicht erreichbar. Es spricht aber nichts
dagegen, mit einer am besten im Kommentar des Programms
festgehaltenen Begründung höhere Werte zuzulassen, wenn
es die Aufgabenstellung erfordert und der Code einem
Review unterzogen wurde.
Halstead estimated errors
Halstead sah Programmieren als einen nicht festgelegten
Prozeß des Selektierens von
Operatoren und Operanden aus einer vorher festgelegten
Liste. Vorausgesetzt die Wahrscheinlichkeit der Auswahl
eines bestimmten Operators ist für alle Operatoren
gleich und ein binärer Entscheidungsbaum repräsentiert
eindeutig die mentale Auswahl eines Menschen so ergibt
sich das Volumen (V) einer Funktion zu:
V = (N1 + N2) x log2 (n1 + n2)
n1: Anzahl der verschiedenen Operatoren einer Funktion
n2: Anzahl der verschiedenen Operanden einer Funktion
N1: Gesamtanzahl der Operatoren einer Funktion
N2: Gesamtanzahl der verschiedenen Operanden einer
Funktion
Als Operatoren werden gezählt:
- Operatoren der Sprache C (Cast () nur in
Ausdrücken gezählt); unäre u. binäre Form
wird jeweils gezählt; für Klammeroperatoren
wird Öffnen u. Schließen zusammen mit 1
gezählt
- Steuerstrukturen (Blöcke {} werden als 1
Operator gezählt, die Operatoren in den
Steuerbedingungen werden dann nicht mehr
mitgezählt)
- ; bei Statements und Initialisierungs-Statements,
nicht bei Deklarationen
Durchschnittlich ist mit 1 Fehler bei 3200 mentalen
Vergleichen zu rechnen. Halstead estimated errors
(B) ergibt sich daher zu (E0 = 3200): B
= V / E0 .
Da Halstead Estimated Errors nur als Fehlerwahrscheinlichkeit
gewertet werden kann, sollte ab einem Wert > 0,50 der
betroffene Code untersucht werden.
Beispiele für Tools:
Proloc ist ein Programm, das
die Größe von Software-Produkten und den
Änderungsumfang gegenüber vorhergehenden Versionen
entsprechend der Siemens-Norm SN77340 berechnet. Bei
Interesse finden Sie hier Kurzbeschreibung
und Anwendungsgebiete. Proloc kann über das Support
Zentrum Aufwandsschätzung und Metriken bezogen
werden.
CANTATA bietet eine sehr
große Anzahl von Maßzahlen (allerdings werden die
Zeilenzählgrößen nicht nach SN 77340 gezählt). Bei
Interesse finden Sie hier Kurzbeschreibung
und Anwendungsgebiete.
Wo gibt es weitere Informationen?
Für weitere Informationen und konkrete Unterstützung
wenden Sie sich bitte an das Support Zentrum
Aufwandsschätzung und Metriken und das Support
Zentrum Test.
|