Werkzeuge Zur Code-Analyse - Presentation
-
Upload
bob-ferris -
Category
Documents
-
view
665 -
download
1
description
Transcript of Werkzeuge Zur Code-Analyse - Presentation
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/.