a. zündorf, se group reverse engineering k2 1 Übersicht 1.quelltextanalyse mit regulären...
TRANSCRIPT
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. ...
Reverse Engineering K2 2
A. Zündorf, SE GroupZiele Heute
Dynamische Analyse
• Debugger
• Code Instrumentierung
• Profiler / Coverage Tools
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
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
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• . . .
Reverse Engineering K2 6
A. Zündorf, SE GroupProfiler
• statistische Auswertung zeilengenauer Traces
• DAS Mittel zur Effizienzsteigerung
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