Sourcecode-Analyse
Was bieten mir Sourcecode-Analysen?
Durch Sourcecode-Analysen werden qualitätsrelevante Parameter des Sourcecode erhoben. Ferner werden durch Codeinspektionen und Walkthroughs Abweichungen im Sourcecode frühzeitig erkannt sowie nicht (bzw. nur mit erheblichen Aufwand) durchführbare dynamische Testfälle ersetzt.
Codierrichtlinien
Durch die Verwendung von Codierrichtlinien wird eine einheitliche Programmierung erzwungen. Es gibt z.B. Codierrichtlinien für die Entwicklung in der Programmiersprache C für sichere Systeme wie die SEI CERT Coding Standards. In der Automobilindustrie sind dafür die Standards AUTOSAR und MISRA vorgeschrieben. Zur Prüfung der Richtlinien werden beispielsweise Werkzeuge aus der Lint-Familie eingesetzt. Auf dem Markt existieren sowohl Open-Source Werkzeuge (z.B. VisualCodeGrepper, splint) als auch kommerzielle Tools (z.B. Polyspace, CodeSonar).
Die certitudo GmbH mit Ihrer breiten Erfahrung kann bei Ihrer Software die Einhaltung der Codierrichtlinien als ersten Schritt bei der Sourcecodeanalyse prüfen.
Metriken
„Eine Softwarequalitätsmetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet, welcher als Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit interpretierbar ist.“ – IEEE Standard 1061, 1998
Metriken liefern Maßzahlen über bestimmte Eigenschaften der Software. Sie lassen sich in die Bereiche Komplexität und Architektur aufteilen.
Unsere erfahrenen Mitarbeiter ziehen Komplexitätsmetriken wie z.B. die zyklomatische Komplexität nach McCabe oder die Halstead-Metrik zur Analyse der Programmierung heran. Diese Metriken betrachten einzelne Funktionen oder Methoden. Ein hoher Wert deutet auf sehr komplexe Funktionen hin, die schwer verständlich und schwer testbar sein können. Ferner könnten hier besondere weitere Maßnahmen zur Qualitätssicherung (z.B. Walkthrough) notwendig sein. Des Weiteren lässt sich auch der Testaufwand aus Komplexitätszahlen abschätzen.
Mit Architekturmetriken betrachten die certitudo-Mitarbeiter nicht einzelne Funktionen oder Methoden, sondern die gesamte Software eines Produktes. Hier werden Maßzahlen u.a. für Modularität, Kohäsion und Kopplung ermittelt. Die Ergebnisse werden für eine kritische Betrachtung der Softwarearchitektur verwendet. Wir ermitteln dadurch diejenigen Teile der Software, die umstrukturiert werden sollten, um die Software zu vereinfachen. Durch die Vereinfachung wird die Software leichter verständlich, wartbarer, erweiterbarer und testbarer.
Walkthrough
Beim Walkthrough wird der Sourcecode gelesen. Meistens nehmen am Walkthrough die/der Entwickler/in und ein/e Reviewer/in teil. Alle Codezeilen werden einzeln durchgegangen und entsprechende Reviewkommentare erstellt. Die Kommentare können sich sowohl auf eine fehlerhafte oder zu komplexe Implementierung, als auch auf formale Abweichungen, wie fehlende Codekommentierung, beziehen. Nach dem Walkthrough werden die Abweichungen bearbeitet und der Sourcecode erneut zum Review vorgelegt. Unsere Mitarbeiter setzen dieses Verfahren insbesondere für komplexe oder kritische Funktionen ein, die für das korrekte Produktverhalten wichtig sind.
Referenzprojekt
Für einen Gerätehersteller wurde der Sourcecode komplett mit Hilfe von Reviews analysiert. Der Code bestand aus ca. 43000 Zeilen. Die Anwendung startet mehrere Threads, wodurch sich die Komplexität weiter erhöht hatte.
Die certitudo GmbH hat hier mit dem Werkzeug VisualCodeGrepper 455 Abweichungen gefunden und einzeln bewertet. In einem 2. Schritt wurde die Implementierung der Threads auf konkurrierende Variablenzugriffe untersucht. Dazu wurde der Calltree und die Verwendung von globalen Variablen für jeden Thread mit Hilfe der Entwicklungsumgebung Eclipse ausgewertet. Diese Auswertung ermöglichte es die Verwendung der Mutexe den einzelnen aufgerufenen Funktionen der Threads zuzuordnen. Durch Codeinspektionen wurde geprüft, inwieweit die Zugriffe auf die zu schützenden Variablen korrekt durch Mutexe gekapselt sind. Ferner wurde geprüft, dass die zu schützenden Variablen immer durch denselben Mutex geschützt werden.
Mit dem Werkzeug PMD/CPD (Copy/Paste Detector) hat die certitudo GmbH dann den Sourcecode auf kopierte Codezeilen hin untersucht. Kopierte Codezeilen stellen ein Risiko in der Wartung dar, wenn an einer Stelle der Code modifiziert wird an anderen Stellen hingegen nicht. Es wurde 84 Stellen gefunden, an denen identischer Code vorhanden ist.
Die certitudo GmbH hat in diesem Projekt innerhalb von 3 Wochen dem Auftraggeber viele Hinweise für seine Softwareentwicklung gegeben. Das Produkt wurde daraufhin überarbeitet und ist heute weltweit im Einsatz.