Transcript
Page 1: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-Qualität

Werkzeugezur

Code-Analyse

Page 2: Werkzeuge Zur Code-Analyse - Presentation

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

Page 3: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-QualitätWerkzeugtypen

# Dynamische Testwerkzeuge

> Strukturorientierte Testwerkzeuge

> Funktiosorientierte Testwerkzeuge

> Regressionstestwerkzeuge

> Leistungs- und Stresstestwerkzeuge

02 / 28

Page 4: Werkzeuge Zur Code-Analyse - Presentation

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

Page 5: Werkzeuge Zur Code-Analyse - Presentation

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

Page 6: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-QualitätDynamische Testwerkzeuge

# Beispiele

> Eclipse Test and Performance Tools Platform (TPTP)

[1]

05 / 28

Page 7: Werkzeuge Zur Code-Analyse - Presentation

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

Page 8: Werkzeuge Zur Code-Analyse - Presentation

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

Page 9: Werkzeuge Zur Code-Analyse - Presentation

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

Page 10: Werkzeuge Zur Code-Analyse - Presentation

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

Page 11: Werkzeuge Zur Code-Analyse - Presentation

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

Page 12: Werkzeuge Zur Code-Analyse - Presentation

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

Page 13: Werkzeuge Zur Code-Analyse - Presentation

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

Page 14: Werkzeuge Zur Code-Analyse - Presentation

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

Page 15: Werkzeuge Zur Code-Analyse - Presentation

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

Page 16: Werkzeuge Zur Code-Analyse - Presentation

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

Page 17: Werkzeuge Zur Code-Analyse - Presentation

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

Page 18: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-Qualität

17 / 28

Analysewerkzeuge

# Grundstruktur

[2]

Page 19: Werkzeuge Zur Code-Analyse - Presentation

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

Page 20: Werkzeuge Zur Code-Analyse - Presentation

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

Page 21: Werkzeuge Zur Code-Analyse - Presentation

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

Page 22: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-QualitätAnalysewerkzeuge

# Beispiele

> FindBugs

21 / 28

Page 23: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-QualitätAnalysewerkzeuge

# Beispiele

> SemmleCode

[4]

22 / 28

Page 24: Werkzeuge Zur Code-Analyse - Presentation

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

Page 25: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-Qualität

# Oft Verwaltung über Webserver

[2]

Portale

24 / 28

Page 26: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-QualitätPortale

# Beispiele

> GrammaTech CodeSonar

[3]

25 / 28

Page 27: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-QualitätPortale

# Beispiele

> Coverity Prevent / Thread Analyzer

[5]

26 / 28

Page 28: Werkzeuge Zur Code-Analyse - Presentation

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

Page 29: Werkzeuge Zur Code-Analyse - Presentation

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

Page 30: Werkzeuge Zur Code-Analyse - Presentation

Werkzeuge zur Code-Analyse Thomas Gängler

Proseminar: Software-Qualität

Dankefür Ihre

Aufmerksamkeit

Page 31: Werkzeuge Zur Code-Analyse - Presentation

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

Page 32: Werkzeuge Zur Code-Analyse - Presentation

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.

Page 33: Werkzeuge Zur Code-Analyse - Presentation

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

Page 34: Werkzeuge Zur Code-Analyse - Presentation

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/.