A. Zündorf, SE Group Reverse Engineering K2 1 Ü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....
A. Zündorf, SE Group Reverse Engineering K2 2 Ziele Heute Dynamische Analyse Debugger Code Instrumentierung Profiler / Coverage Tools
A. Zündorf, SE Group Reverse Engineering K2 3 Debugger 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
A. Zündorf, SE Group Reverse Engineering K2 4 Code 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
A. Zündorf, SE Group Reverse Engineering K2 5 Code 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...
A. Zündorf, SE Group Reverse Engineering K2 6 Profiler statistische Auswertung zeilengenauer Traces DAS Mittel zur Effizienzsteigerung
A. Zündorf, SE Group Reverse Engineering K2 7 Aufgaben Conditional Breakpoint auf System.out.print, findet Welcome to Fujaba ant tasks in eclipse hinzufügen Fujaba/ProjectFiles/IDEA/build.xml task jcoverage run –noabout ausführen Fujaba task jcoverage run –noabout ausführen Reports unter Fujaba/doc vergleichen Welche Zeilen realisieren die AboutBox? Das gleiche noch mal mit den Easter Egg Bugs ausprobieren