a. zündorf, se group reverse engineering k2 1 Übersicht 1.quelltextanalyse mit regulären...

7
Reverse Engineering K2 1 A. Zündorf, SE Group Übersicht 1. Quelltextanalyse mit regulären Ausdrücken 2. Compilertechniken 3. Prozessanalyse 4. Dynamische Analyse 5. Datenanalyse 6. Design Pattern Erkennung 7. Analyse- und Visualisierungstechniken 1. Clustering 2. Plagiatserkennung 3. Refactoring 4. Hot Spots 5. Designmetriken 6. ...

Upload: christiane-bly

Post on 05-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 1

A. Zündorf, SE GroupÜbersicht

1. Quelltextanalyse mit regulären Ausdrücken

2. Compilertechniken

3. Prozessanalyse

4. Dynamische Analyse

5. Datenanalyse

6. Design Pattern Erkennung

7. Analyse- und Visualisierungstechniken1. Clustering

2. Plagiatserkennung

3. Refactoring

4. Hot Spots

5. Designmetriken

6. ...

Page 2: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 2

A. Zündorf, SE GroupZiele Heute

Dynamische Analyse

• Debugger

• Code Instrumentierung

• Profiler / Coverage Tools

Page 3: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 3

A. Zündorf, SE GroupDebugger

• schrittweise Ausführung• step over / step into• conditional breakpoints

• manuell ein mühsames Geschäft

• JDI Programmierschnittstelle zur "Fernsteuerung" eines Debuggers

• Aufgabe: setzt einen Conditional Breakpoint auf System.out.println und findet Welcome To Fujaba

Page 4: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 4

A. Zündorf, SE GroupCode Instrumentierung

• System.out.println am Anfang und am Ende jeder Methode=> alle Methodenaufrufe und Rücksprünge nachvollziehbar(Auswertung durch zusätzliches Programm)

• noch genauer System.out.println bei jedem If und jeder Schleife=> Statement Abfolge eindeutig rekonstruierbar

• Quellcodeinstrumentierung mit Compilertechniken(Aspektorientierte Techniken)

• Bei Java oft Byte-Code Instrumentierung

Page 5: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 5

A. Zündorf, SE GroupCode Instrumentierung (2)

Unzählige Anwendungen:• Logging (für sporadisch auftretende Fehler)• Profiling (kommt gleich)• Code Coverage• Differenzanalyse

Probleme:• Trace wächst irrsinnig schnell

(Meist Einschränkungen auf bestimmte Packages nötig)• Programm Slow-Down• . . .

Page 6: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 6

A. Zündorf, SE GroupProfiler

• statistische Auswertung zeilengenauer Traces

• DAS Mittel zur Effizienzsteigerung

Page 7: A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse

Reverse Engineering K2 7

A. Zündorf, SE GroupAufgaben

• Conditional Breakpoint auf System.out.print, findet Welcome to Fujaba

• eclemma installieren

• Aspect zum Tracen aller Method Calls schreiben

• Fujaba einmal normal starten und schließen

• Fujaba einmal starten und Projekt anlegen

• Alten und neuen Trace verlgeichen

Welche Zeilen realisieren die AboutBox?

• Das gleiche noch mal mit den Easter Egg Bugs ausprobieren