Seminararbeit, 2010
8 Seiten, Note: 1.0
1. Einleitung
2. Einordnung
3. Analysetypen
3.1 Syntaxanalyse
3.2 Stilanalyse
3.3 Kontrollflussanalyse
3.4 Datenflussanalyse
4. Anforderungen an Werkzeuge
4.1 Umfang der Analyse
4.2 Zuverlässigkeit
4.3 Reports
4.4 Performanz
5. Vergleich verschiedener Werkzeuge
5.1 Überblick
5.2 Umfang der Analyse
5.3 Zuverlässigkeit
5.4 Reports
5.5 Performanz
6. Fazit
Die Arbeit untersucht die Bedeutung, Methoden und Werkzeuge der statischen Codeanalyse zur frühzeitigen Fehlererkennung in Softwareprojekten, insbesondere in sicherheitskritischen Bereichen. Es wird analysiert, wie diese automatisierten Verfahren die Stabilität von Programmen erhöhen und als Ergänzung zu dynamischen Testverfahren dienen.
3.4 Datenflussanalyse
Bei der Datenflussanalyse wird der Zustand einer Variablen entlang eines Pfades betrachtet. Dazu wird zunächst ein Graph des Programms (bzw. einer Funktion) gebildet, der sämtliche Pfade beinhaltet. Anschließend wird festgehalten, welche Aktionen entlang jedes Pfades mit dieser Variablen durchgeführt werden. Dabei kann man zwischen vier verschiedenen Aktionen unterscheiden (vgl. [Lig09], S.293ff):
• d: Definition (Wertzuweisung) der Variablen
• r: referenzieren (lesen) der Variablen
• u: undefinieren der Variablen (beispielsweise beim Verlassen einer Funktion bei einer lokalen Variablen, oder nach der Deklaration, wenn noch keine Wertzuweisung stattgefunden hat)
• -: es findet keine Aktion statt
In den dadurch entstandenen Zugriffssequenzen können verschiedene Muster auftauchen, die auf Fehler hinweisen:
• dd: es finden unmittelbar hintereinander zwei Zuweisungen einer Variablen statt
• du: nach einer Zuweisung wird die Variable undefiniert
• ur: eine Variable, die nicht definiert ist, wird verwendet
Die ersten beiden Muster müssen nicht zwangsweise Fehler sein, sondern können auch Absicht gewesen sein. Ein ur-Fehler dagegen ist fast immer ein Fehler und führt bei Programmausführung unter Umständen sogar zum Absturz. (vgl. [Hof08], S.315ff)
1. Einleitung: Beschreibt die Notwendigkeit der Fehlervermeidung in sicherheitskritischen Softwaresystemen und führt in das Prinzip der statischen Codeanalyse ein.
2. Einordnung: Differenziert zwischen statischen und dynamischen Testverfahren und erläutert die Grunddefinition der statischen Codeanalyse.
3. Analysetypen: Erläutert die verschiedenen methodischen Ansätze wie Syntax-, Stil-, Kontrollfluss- und Datenflussanalyse zur Prüfung des Quellcodes.
4. Anforderungen an Werkzeuge: Definiert die notwendigen Qualitätsmerkmale für Analyse-Tools, darunter Zuverlässigkeit, Berichtswesen und Performanz.
5. Vergleich verschiedener Werkzeuge: Gegenüberstellung und Bewertung marktrelevanter Werkzeuge wie Coverity, PolySpace und CodeSonar anhand der zuvor definierten Kriterien.
6. Fazit: Resümiert die Bedeutung statischer Codeanalyse als unverzichtbare Methode für stabile Software und reflektiert über die technologischen Grenzen.
Statische Codeanalyse, Softwarequalität, Fehlererkennung, White-Box-Test, Datenflussanalyse, Kontrollflussanalyse, False Positives, False Negatives, Coderichtlinien, Misra C, Softwaretest, Werkzeugvergleich, Quellcode-Prüfung, Testautomatisierung, Sicherheit.
Die Arbeit befasst sich mit dem Verfahren der statischen Codeanalyse als Mittel zur frühzeitigen Identifikation von Softwarefehlern ohne die Notwendigkeit einer Programmausführung.
Die zentralen Themen umfassen die theoretischen Analysemethoden (z. B. Syntax-, Datenflussanalyse), die Anforderungen an professionelle Analysetools sowie deren praktische Leistungsfähigkeit im Vergleich.
Das Ziel ist es, aufzuzeigen, wie durch den Einsatz statischer Analyseverfahren die Robustheit und Qualität von Software, insbesondere in sicherheitskritischen Umgebungen, signifikant gesteigert werden kann.
Es wird eine deskriptive Analyse und ein systematischer Vergleich gängiger industrieller Software-Werkzeuge auf Basis von Fachliteratur und Herstellerdaten durchgeführt.
Im Hauptteil werden zunächst die verschiedenen Arten der Codeanalyse theoretisch hergeleitet und anschließend ein Anforderungskatalog für Analysetools erstellt, welcher zur Bewertung der Werkzeuge herangezogen wird.
Wichtige Begriffe sind statische Codeanalyse, Softwarequalität, False Positives, Datenflussanalyse und Coderichtlinien wie Misra C.
Diese Kennzahlen sind entscheidend für die Effektivität eines Tools: Eine hohe Rate an "false positives" erhöht den manuellen Aufwand, während "false negatives" ein Sicherheitsrisiko darstellen, da sie tatsächliche Fehler im Code verbergen.
Die Analyse großer Codebasen mit Millionen Zeilen ist zeitintensiv; moderne Tools adressieren dies durch inkrementelle Analysen und die Beschränkung auf relevante Codeteile.
PolySpace nutzt eine formale Methode, um für Codeabschnitte zu beweisen, ob sie fehlerfrei oder fehlerbehaftet sind, was zu einer spezifischen farblichen Kategorisierung (grün/rot/orange) der Ergebnisse führt.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

