Statische Codeanalysen


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.


Siemens AG Österreich, Programm- und Systementwicklung PSE
Ansprechpartner: stdSEM-Webmaster
Zuletzt aktualisiert am: 07 Juli 1998 12:31
Copyright © Siemens AG Österreich 1997. Alle Rechte vorbehalten.