Upload
bob-ferris
View
665
Download
1
Embed Size (px)
DESCRIPTION
Der Bereich der Software-Qualitätssicherung bekommt in letzter Zeit eine immer größere Bedeutung. Nachdem fastalltäglich Nachrichten von Programmierfehlern in großen Projekten die Schlagzeilen machen, sind die Hersteller nun gefordert geeignete Lösungen zu entwickeln und einzusetzen um diesen negativen Trend entgegenzuwirken. Durch die enorm gestiegene Komplexität von modernen Software-Systemen ist es wirtschaftlich und technisch fast nicht mehrmöglich diese Aufgaben manuell zu erledigen. Werkzeuge zur Codeanalyse automatisieren einen großen Teil dieser Arbeit und sollen in diesen Aufsatz umfassend vorgestellt, unterschieden und klassiziert werden und somit dem Entwickler helfen den richtigen Einstieg in diesen Bereich zu finden.
Citation preview
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
Werkzeugezur
Code-Analyse
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätÜbersicht
# Werkzeugtypen
> Dynamische Testwerkzeuge
> Statische Analysewerkzeuge
> Formale Verifi kationswerkzeuge
> Modellierende und analysierende Werkzeuge
# Analysewerkzeuge
> Aufbau/ Technik/ Beispiele/ Demo
# Portale
> Aufbau/ Beispiele
# Zusammenfassung
01 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätWerkzeugtypen
# Dynamische Testwerkzeuge
> Strukturorientierte Testwerkzeuge
> Funktiosorientierte Testwerkzeuge
> Regressionstestwerkzeuge
> Leistungs- und Stresstestwerkzeuge
02 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
03 / 28
Dynamische Testwerkzeuge
# Strukturorientierte Testwerkzeuge (1)
> Informationen über den Stand der Prüfung
> Testüberdeckungsprotokoll
> Bsp.: Zweigüberdeckungstest-Werkzeuge
> Darstellungsformen:
> Kontrollfl ussgraph
> Strukturdiagramm
> Quellcode in aufbereiteter Form
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
04 / 28
Dynamische Testwerkzeuge
# Strukturorientierte Testwerkzeuge (2)
> Oft programmiersprachen-abhängig
> Instrumentierend:
> Syntaxanalyse mit Anweisungsanreicherung
> Nicht-instrumentierend:
> Abgreifen genutzter Adressen über
Hardware-Schnittstelle
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätDynamische Testwerkzeuge
# Beispiele
> Eclipse Test and Performance Tools Platform (TPTP)
[1]
05 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
06 / 28
Dynamische Testwerkzeuge
# Funktionsorientiere Testwerkzeuge
> Für Testfallerzeugung/ -planung nach Testtechniken
> Bsp.: funktionale Äquivalenzklassenbildung
> Defi nition von Testdaten/ Testergebnissen
>> Testautomatisierung
> Bsp.: Zusicherungswerkzeuge
> Feste Syntax
> Fehlermeldung bei Zusicherungsverletzung
> Oft programmiersprachen-unabhängig
> Zur Komforterhöhung/ Dokumentation der Testplanung
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätDynamische Testwerkzeuge
07 / 28
# Regressionstestwerkzeuge
> Zur Automatisierung der Testdurchführung
> Einspielen/ Aufzeichnung der Testdaten/ -ergebnisse
>> Vergleich möglich
> Nach Fehlerkorrekturen und Funktionserweiterungen
>> Nur Automatisierung bei Testwiederholung technisch
und wirtschaftlich sinnvoll
> i.A. programmiersprachen-unabhängig
> Überprüfung grafi scher Oberfl ächen möglich
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätDynamische Testwerkzeuge
# Leistungs- und Stresswerkzeuge
> Für Leistungs- und Stresstests
> Leistungstest: Testen im Normalbereich an der Grenze
zur Überlast
> Stresstest: Betrieb bei Überlast
> Lastenerzeugung erforderlich
> Oft nur werkzeugunterstützt erforderlich
> Oft in Regressionstestwerkzeuge intergriert
> Enthalten Messfunktionen für Registrierung von
Antwortzeitverhalten und Ressourcenauslastung
08 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätWerkzeugtypen
# Statische Analysewerkzeuge
> Messwerkzeuge
> Stilanalysatoren
> Werkzeuge zur Erzeugung von Grafi ken und Tabellen
> Slicing-Werkzeuge
> Datenfl ussanomalieanalyse-Werkzeuge
09 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätStatische Analysewerkzeuge
# Messwerkzeuge
> Zur Informationsgewinnung und -darstellung mittels
statischer Analyse
>> Quellcodeanalyse mit Merkmalsregistrierung
> i.d.R. programmiersprachen-spezifi sch
> Verbreitete Maße:
> Zyklomatische Zahl
> Halstead-Maße
> Maße zur Datenkomplexität
> Lines of Code
> Maße müssen präzise defi niert sein
10 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätStatische Analysewerkzeuge
# Stilanalysatoren
> Codeanalyse nach Verletzungen von Programmierregeln
> Beispiele:
> Einschränkungen der zu verwendenden
programmiersprachlichen Konstrukte
> Defi nition zusätzlicher Forderungen
> Voraussetzung für bestimmte Programmiersprachen und
bestimmte Anwendungsgebiete
11 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
12 / 28
# Werkzeuge zur Erzeugung von Tabellen und Grafi ken
> i.A. Bestandteil von Werkzeugumgebungen
> Zur Erzeugung von:
> Kontrollfl uss- und Aufrufgraphen
> Variablen-Cross-Reference-Tabellen
Statische Analysewerkzeuge
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätStatische Analysewerkzeuge
13 / 28
# Slicing-Werkzeuge
> Allgemein: zum Vereinfachen von Programmen
>> Betrachten eines semantischen Aspekts
> Speziell: zur Unterstützung der Fehlersuche nach
Erkennen eines Fehlverhaltens
>> Betrachten der Variablen und deren Zusammenhänge
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätStatische Analysewerkzeuge
# Datenfl ussanomalieanlysatoren
> Oft in Compiler integriert
> Geringer Aufwand bei der Erkennung
> Automatisierbar
> Bieten sichere und verlässliche Ergebnisse
14 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
15 / 28
Werkzeugtypen
# Formale Verifi kationswerkzeuge
> Allgemein: Überprüfung der Konsistenz zwischen
Spezifi kation und Realisierung mittels mathematischer
Mittel
> Speziell: symbolic model checking und symbolisches
Testen als Grundlage für erweiterte statische Analyse
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätWerkzeugtypen
# Modellierende und analysierende Werkzeuge
> Anwendungsbereiche:
> Risikoanalyse
> Sicherheitsanalyse
> Zuverlässigkeitsanalyse
> Verfügbarkeitsanalyse
> Oft programmiersprachen-unabhängig
> FMECA-, Fehlerbaumanalyse-, Markov-, HAZOP-
Werkzeuge, ...
16 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
17 / 28
Analysewerkzeuge
# Grundstruktur
[2]
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätAnalysewerkzeuge
# Technik
> Ausnutzung von model checking Technologien und
Abstraktion:
> Symbolische Eingabe
> Abstrakte Werte
> Erhöht die Pfadabdeckung
18 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
# Pfadabdeckung
> Generell: keine 100%ige Pfadabdeckung möglich
> Problem: Anzahl der Pfade bei Schleifen und Rekursion
[3]
> Modellierung von multithreading
> false positives/ false negatives
> keine Erkennung logischer Fehler
Analysewerkzeuge
19 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätAnalysewerkzeuge
# Fehlermuster/- klassen:
> Verschiedene Ansätze/ Kategorisierung
> Teilweise programmiersprachen-spezifi sch
> Beispiele:
> unvorhersehbare/ kritische Fehler
> Speicher-Allokierungs-Fehler
> Thread-Konkurrenz-Fehler
> Inkonsistenzen/ Redundanzen
> Eigene Fehlermuster/- klassen
20 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätAnalysewerkzeuge
# Beispiele
> FindBugs
21 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätAnalysewerkzeuge
# Beispiele
> SemmleCode
[4]
22 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätPortale
# Vereinigung mehrerer Werkzeuge zur Qualitätsanalyse
# Angepasste Ausgabe für verschiedene Rollen
[2]
23 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
# Oft Verwaltung über Webserver
[2]
Portale
24 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätPortale
# Beispiele
> GrammaTech CodeSonar
[3]
25 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätPortale
# Beispiele
> Coverity Prevent / Thread Analyzer
[5]
26 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätPortale
# Weitere Beispiele:
> CAST Application Intelligence Platform
> Klocwork Insight
> Client/Server-Werkzeuge von PolySpace
27 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
28 / 28
Zusammenfassung
# Vielzahl von Test- und Analysewerkzeugen
# Oft mehrere Funktionalitäten vereint
# Gute Verfügbarkeit auch im Open-Source-Bereich
# Statische Analyse-Werkzeuge:
... sind ein gute Ergänzung zu dynamischen Testwerkzeugen
... ersetzen diesen nicht
... helfen echte Fehler zu fi nden
... reduzieren Kosten
... sparen Zeit
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
Dankefür Ihre
Aufmerksamkeit
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
29 / 28
Bilderverzeichnis
[1] Unknown. Eclipse Test and Performance Tools Platform
[TPTP] Project, June 2005. datasheet.
[2] F. Simon, O. Seng, and T. Mohaupt.
Code-Quality-Management. dpunkt.verlag, 2006.
[3] M. Zarins. Overview of GrammaTech Static-Analysis
Technology. Technical report, GrammaTech, Inc., 2008.
[4] E. Hajiyev. .QL: Object-Oriented Queries Made Easy, July
2007. PowerPoint presentation.
[5] http://www.coverity.com/html_pop/thread_analyzer.html
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-QualitätReferenzen
30 / 28
# P. Anderson. Detecting Bugs in Saftey-Critical Code. Dr. Dobb’s Journal, March 2008.# O. de Moor, M. Verbaere, E. Hajiyev, P. Avgustinov, T. Ekman, N. Ongkingco, D. Sereni, and J. Tibble. Keynote address: .QL for Source Code Analysis. Technical report, Semmle Limited, 2007.# V. Garg, S. Lao, X. Shen, G.-S. Wang, B. Wilson, and P. Zhao. Analysis Tool Evaluation: GrammaTech CodeSonar. Technical report, Carnegie Mellon University, 2007.# C. Grindsta. FindBugs, Part 1: Improve the Quality of Your Code [online]. May 2004. Available from: http://www.ibm.com/developerworks/java/library/j-ndbug1/.# E. Hajiyev. .QL: Object-Oriented Queries Made Easy, July 2007. PowerPoint presentation.# M. Harman and R. M. Hierons. An Overview of Program Slicing [online]. Available from: http://www.dcs.kcl.ac.uk/sta/mark/sf.html.# D. Hovemeyer and W. Pugh. Finding Bugs is Easy. Technical report, Dept. of Computer Science, University of Maryland, 2004.# P. Liggesmeyer. Software-Qualität: Testen, Analysieren und Verizieren von Software. Spektrum, Akademischer Verlag, 2002.# F. Simon, O. Seng, and T. Mohaupt. Code-Quality-Management. dpunkt.verlag, 2006.# Unknown. Coverity Thread Analyzer for Java. Data sheet. Coverity, Inc., 2008.# Unknown. Prevent for Java. Data sheet. Coverity, Inc., 2008. # Unknown. Prevent SQS C/C++. Data sheet. Coverity, Inc., 2008. # Unknown. Eclipse Test and Performance Tools Platform [TPTP] Project. Data sheet. Eclipse. June 2005.# M. Zarins. Overview of GrammaTech Static-Analysis Technology. Technical report, GrammaTech, Inc., 2008.
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
# Unknown. TPTP Home [online]. Available from: http://www.eclipse.org/tptp/.# O. Burn. Checkstyle Home [online]. Available from: http://checkstyle.sourceforge.net/.# F. Sauer. Metrics Home [online]. Available from: http://metrics.sourceforge.net/.# Unknown. FindBugs Home [online]. 2008. Available from: http://fi ndbugs.sourceforge.net/.# Unknown. Semmle Home [online]. 2008. Available from: http://semmle.com/.# Unknown. GrammaTech Home [online]. 2007. Available from: http://www.grammatech.com/index.html.# Unknown. Coverity Home [online]. 2008. Available from: http://www.coverity.com/.
Vorgestellte Werkzeuge
31 / 28
Werkzeuge zur Code-Analyse Thomas Gängler
Proseminar: Software-Qualität
32 / 28
Genannte Werkzeuge
# Unknown. CAST Home [online]. Available from:
http://www.castsoftware.com/Default.aspx.
# Unknown. Klocwork Home [online]. 2008. Available from:
http://www.klocwork.com/default.asp.
# MathWorks PolySpace Home [online]. Available from:
http://www.mathworks.com/.