34
Werkzeuge zur Code-Analyse Thomas Gängler Proseminar: Software-Qualität Werkzeuge zur Code-Analyse

Werkzeuge Zur Code-Analyse - Presentation

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

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