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 Design Pattern Erkennung Zugriffsmethodenklassifizierung Assoziationserkennung Pattern Erkennung
A. Zündorf, SE Group Reverse Engineering K2 3 Design Pattern
A. Zündorf, SE Group Reverse Engineering K2 4 Identifizierung von Zugriffsfunktionen Namenskonventionen: setXY, getXY Parameter- und Rückgabetypen müssen passen Im Rumpf Zugriff auf das ensprechende Attribut void setName (String value) { this.name = value; }
A. Zündorf, SE Group Reverse Engineering K2 5 Identifizierung von (zu-n) Assocs Problem: Speicherung in Container: Vector () neighbors; Eintragstyp unklar (wird mit Java 1.5 besser) Lösung: suche add Operationen und bestimme Eintragstyp: void addToNeighbors(C2 value) { this.neighbors.add (value); }
A. Zündorf, SE Group Reverse Engineering K2 6 Identifizierung von bidirektionalen Assocs finde paarweise auftretende add Operationen:... x.addToN1 (y); y.setN2 (x);... Achtung: das kann manchmal fuzzy sein
A. Zündorf, SE Group Reverse Engineering K2 7 Design Pattern Erkennung: Singleton privates, statisches Attribut vom Typ der eigenen Klasse public static get-Operation zur Initialisierung und zum Zugriff darauf public static get () { if (theInstance == null) { theInstance = new C (); } return theInstance; } eventuell private Konstruktor
A. Zündorf, SE Group Reverse Engineering K2 8 Design Pattern Erkennung Probleme Performance: –Parserbaum für Gesamtprogramm meist zu groß, dauert ewig lazy Parsing der Methodenrümpfe Viele Implementierungsvarianten: Fuzzy Pattern Detection: –Kein 1 zu 1 Match von Code Fragmenten –Vorkommen von z.B. Attributzugriff reicht (Dis Jörg Niere) Statische Analyse allein reicht nicht: Traces analysieren (Current Work by Lothar Wendehals) Siehe Fujaba Reverse Engineering Tool Suite UMLProject einparsen und analysieren. Mit anderen Klassen experimentieren