Diplomarbeit, 2009
71 Seiten, Note: 1,3
1. Einleitung
2. Grundlagen
2.1. Qualitätsmanagement
2.2. Fehler
2.2.1. Definition Fehlerbegriff
2.2.2. Fehlerklassifikation nach Schwere
2.2.3. Fehlerklassifikation nach Typ
2.3. Metriken
2.4. Programmierstandards
3. Grundlagen der statischen Analyse
3.1. Automatisierte statische Analyse
3.1.1. Token- und Bug-Pattern-Analyse
3.1.2. Programm-, Kontroll- und Datenflussanalyse
3.1.3. Abstrakte Interpretation
3.2. Fagan-Inspektionen
3.2.1. Inspektionsanfrage
3.2.2. Planung
3.2.3. Kickoff-Meeting
3.2.4. Individuelle Prüfung
3.2.5. Logging-Meeting
3.2.6. Edit
3.2.7. Follow up
3.2.8. Exit
4. Studienbeschreibung
4.1. Forschungsfragen
4.2. Studiendesign und -implementierung
4.2.1. Das Unternehmen TomTec
4.2.2. Arbeitsumgebung
4.2.3. Akquise der Analysewerkzeuge
4.2.4. Studienimplementierung
4.3. Studienobjekte
4.3.1. Statische Analysewerkzeuge für C++
4.3.2. Das Softwareprodukt „Quonos“
5. Fallstudie
5.1. Vorbereitungen
5.2. Studie 1: Analyse des Gesamtprojektes
5.2.1. Vorbemerkung
5.2.2. Ergebnisse
5.3. Studie 2: Fagan-Inspektion
5.3.1. Bericht der Inspektion
5.3.2. Ergebnisse
5.4. Studie 3: Vergleich der Ergebnisse im Detail
5.4.1. Vorbemerkung
5.4.2. Ergebnisse
5.5. Validitätsrisiken
5.5.1. Designfehler
5.5.2. Interne Fehler
5.5.3. Externe Fehler
6. Integration von automatischer Codeanalyse in Fagan-Inspektionen
6.1. Integrationsvorschläge
6.2. Bewertung der Vorschläge
7. Zusammenfassung und Ausblick
8. Anhang
8.1. Weitere Werkzeuge
8.2. Checklisten der Inspektion
8.3. Meinungen von Entwicklern
8.3.1. Von den Inspektoren
8.3.2. TomTec Developer Days
9. Literatur
Die Arbeit untersucht das Potenzial und die Effizienz von zwei zentralen Methoden der Software-Qualitätssicherung: der automatisierten, werkzeuggestützten statischen Codeanalyse und der formalen Fagan-Inspektion. Ziel ist es, deren Leistungsfähigkeit bei der Fehlersuche im realen industriellen Kontext (anhand der Software Quonos der Firma TomTec) zu bewerten, ihre Ergebnisse empirisch zu vergleichen und zu prüfen, wie sich diese Methoden sinnvoll in bestehende Entwicklungsprozesse integrieren lassen.
3.1.3. Abstrakte Interpretation
Um dem eingänglich erwähnten Dilemma des Halteproblems zu entgehen, muss die Menge oder der Detailgrad der zu verarbeitenden Informationen reduziert werden [16, 21]. Abstrakte Interpretation nutzt die Technik der Abstraktion, um den Detailgrad zu reduzieren, ganz im Gegensatz zu den zuvor vorgestellten Techniken, die vornehmlich die Datenmenge durch Pfadreduktion etc. einschränken, wie der französische Informatikprofessor Patrick Cousot, der als Pionier der abstrakten Interpretation gilt, seine Idee beschrieb [76, 77].
Erst durch die zunehmende Rechenleistung in den vergangenen Jahren wurde dieser Ansatz der formalen Analyse praktisch realisierbar. Grundgedanke ist der, die Vorgänge in einem Programm abstrahiert zu betrachten, ähnlich wie es durch einen Stadtplan mit einer realen Stadt möglich ist. Eine Multiplikation zweier konkreter Zahlen wird nur noch als die Multiplikation zweier Datentypen betrachtet, wodurch sich dennoch Rückschlüsse auf Eigenschaften des Ergebnisses ziehen lassen, beispielsweise auf das Vorzeichen oder eventuell mögliche Überläufe. Abstrakte Interpretation ermöglicht auf diese Weise, formal zu entscheiden, ob Anweisungen in einem Programm korrekt oder inkorrekt sind oder ob eine solche Entscheidung nicht möglich ist, in Teilen des Codes kann also formal die Abwesenheit von (Programmier-)Fehlern nachgewiesen werden. [47, 76, 77] In engen Grenzen ist es durch abstrakte Interpretation sogar möglich, mit statischer Analyse dynamische Fehler aufzuzeigen, wie beispielsweise mögliche Divisionen durch Null. Leider haben Analysewerkzeuge, die mit dieser Technik die formale Korrektheit beweisen wollen, in der Praxis Probleme mit großen Programmen aufgrund ihrer langen Laufzeit.
1. Einleitung: Motivation durch prominente Beispiele von Softwarefehlern und Einführung in die Bedeutung der statischen Codeanalyse sowie der Fagan-Inspektion als Qualitätssicherungsmaßnahmen.
2. Grundlagen: Definition von Qualitätsmanagement, Fehlerbegriffen nach IEEE/DIN sowie Einführung in Metriken und Programmierstandards für C++.
3. Grundlagen der statischen Analyse: Erläuterung technischer Verfahren wie Token-Analyse, Kontroll- und Datenflussanalyse sowie die detaillierte Beschreibung des Fagan-Inspektionsprozesses.
4. Studienbeschreibung: Definition der Forschungsfragen und Vorstellung des Studiendesigns, der eingesetzten Werkzeuge (Klocwork, Polyspace, PreFast, Coverity, Fortify) und des Testobjekts Quonos.
5. Fallstudie: Empirische Auswertung der Analysewerkzeuge und der durchgeführten Fagan-Inspektion inklusive Vergleich der Ergebnisse und Validitätsrisiken.
6. Integration von automatischer Codeanalyse in Fagan-Inspektionen: Entwicklung und Bewertung von Vorschlägen zur Verzahnung beider Methoden, insbesondere der Nutzung der Analyse als Eingangskriterium.
7. Zusammenfassung und Ausblick: Fazit der Untersuchung, dass keine Methode allein ausreicht, und Empfehlung zur komplementären Nutzung von Werkzeugen und Inspektionen.
8. Anhang: Auflistung weiterer Werkzeuge, verwendete Inspektions-Checklisten und Zusammenfassung der Meinungen beteiligter Entwickler.
9. Literatur: Verzeichnis der zitierten wissenschaftlichen Quellen.
Statische Codeanalyse, Fagan-Inspektion, Software-Qualitätssicherung, Fehlererkennung, C++, Bug-Pattern, Datenflussanalyse, Software-Metriken, Fehlerklassifikation, Industrieprojekt, Qualitätssicherung, Code-Reviews, Fehlerprävention, Software-Wartbarkeit, Testautomatisierung.
Die Diplomarbeit befasst sich mit einem direkten Vergleich von zwei unterschiedlichen Strategien der Qualitätssicherung in der Softwareentwicklung: der automatisierten, werkzeuggestützten statischen Codeanalyse und der manuellen, formalen Fagan-Inspektion.
Die zentralen Themen sind die theoretischen Grundlagen der statischen Analyse, die Methodik formaler Software-Inspektionen sowie die empirische Untersuchung dieser Verfahren an einem realen Softwareprojekt der Firma TomTec Imaging Systems.
Das Ziel ist es, die Effektivität und Effizienz beider Ansätze zu bewerten, herauszufinden, welche Art von Fehlern sie jeweils aufspüren, und zu klären, ob und wie diese komplementären Methoden kombiniert werden können.
Es wird eine empirische Fallstudie durchgeführt, bei der ein Software-Objekt („Quonos“) sowohl automatisiert durch fünf verschiedene Werkzeuge analysiert als auch manuell durch ein Team von erfahrenen Entwicklern mittels Fagan-Inspektion geprüft wird. Die Ergebnisse werden quantitativ verglichen und statistisch ausgewertet.
Im Hauptteil werden zunächst die theoretischen Hintergründe erläutert, dann das Studiendesign inklusive der beteiligten Werkzeuge detailliert beschrieben, die Durchführung der Fallstudien dargelegt und schließlich Integrationsmöglichkeiten der beiden Ansätze erarbeitet und bewertet.
Wichtige Begriffe sind Statische Codeanalyse, Fagan-Inspektion, Software-Qualitätssicherung, Fehlerklassifikation, C++, Fehlerprävention und Code-Reviews.
Die Inspektion ist in Bezug auf die Entdeckung logischer Fehler und Diskrepanzen zur Spezifikation qualitativ und quantitativ überlegen, allerdings ist sie auch deutlich zeitaufwändiger und kostenintensiver als die automatisierte Analyse.
Die Arbeit empfiehlt, automatisierte Werkzeuge vor der Fagan-Inspektion einzusetzen, um diese als obligatorisches Eingangskriterium zu nutzen; dies steigert die Effizienz des Inspektionsteams, da diese sich dann auf komplexere Fehler konzentrieren können.
Fehler in der Klasse „Sonstige“ (z. B. fehlende Prüfungen oder logische Diskrepanzen) werden von automatisierten Werkzeugen oft gar nicht oder nur schwer erkannt, während die manuelle Inspektion hier ihre Stärken ausspielen konnte.
Sie dient als Korrelationswert für die Fehlerrate; es zeigt sich, dass Menschen in komplexen Code-Abschnitten zu mehr Fehlern neigen, wobei auch diese Bereiche für automatisierte Werkzeuge aufgrund von Pfadlimitierungen eine besondere Herausforderung darstellen.
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!

