Transcript
Page 1: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 1

Reverse Engineering

WS 04 / 05

A. Zündorf

Page 2: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 2

Organisatorisches

Termine:• Montags 14:00 - ...

(Beginn 25.10.2004)Raum: CIP Pool unter der Mensa

• 15 Minuten Vorlesung, 75+ Minuten Übung am Rechner

• Klausur: Computerklausur am ?

Page 3: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 3

Motivation

• Neuentwicklung von Software ist die Ausnahme=> Weiterentwicklung von Legacy-Systemen

• Designdokumentation veraltet

• Aufgabenstellung:

„Ah prima, dass sie da sind, wir wollen für unser System (2 Millionen LOC)

XML Support, bauen sie das doch mal ein“

Page 4: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 4

Motivation

Aufgaben:• Wiedergewinnung von Design

(Klassendiagramme, ...)

• Finden von Funktionalität

• Finden von Fehlerursachen

• . . .

Page 5: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 5

Inhalt

1. Volltextsuchtechniken (grep, ...)

2. Compiler basierte Techniken (Cross-Referencing, ...)

3. Dynamische Analysen1. Code Instrumentierung / Tracing

2. Debugger Techniken

4. Analyse der Versionshistorie

5. JavaDoc und Google

6. Datenanalyse

7. Auswertung und Visualisierung (Clustering, ...)

Page 6: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 6

1. Volltextsuche

Low-Tech Ansätze:• Compiler-Ansätze versagen oft:

– unterschiedliche (alte) Sprachversionen

– Mix aus vielen Sprachen

– zusätzliche Textdateien

Sprachunabhängige Mechanismen– Suchen mit regulären Ausdrücken

– Diff

– . . .

Page 7: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 7

Suchen mit regulären Ausdrücken

Suchen in einer Datei/ im Texteditor:

grep –nH 'System.out.println' FujabaApp.java

Page 8: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 8

Suchen mit regulären Ausdrücken

Suchen in vielen Dateien:

grep –nH 'Welcome' *.java

Suchen in Dateibäumen:

find –name "*.java" | xargs grep –nHi "welcome"

Page 9: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 9

Suchen in IDEs (Eclipse)

Edit -> Find(Ctrl-F)

• suchen in aktueller Datei

Page 10: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 10

Suchen in IDEs (Eclipse)

• suchen in allen Dateien des Projekts

Page 11: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 11

Aufgaben zur Volltextsuche:

1. Studentpackage1 runterladen von:http://www.se.eecs.uni-kassel.de/se/index.php?re0405

2. In „Eigene Dateien“ entpacken

3. Eclipse starten1. Doppelclick auf Eclipse.exe

2. Welcome schließen

3. File -> New -> Project: Java Project

4. Project name: Fujaba

5. o Create Project at external location Browse (Fujaba Tool suite)

6. Compilieren lassen

7. Window -> Preferences: Java -> Compiler: Tab Advanced: Usage of deprecated API: Ignore

8. Alles sollte fehlerfrei durchcompilieren

Page 12: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 12

Reguläre Suchausdrücke in Eclipse

• Normaler Text: Hallo• Wort ...... Wort: This .* to

Page 13: Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf

Reverse Engineering 13

Aufgaben zur Volltextsuche:

4. Suchen:1. TODO

2. Edit class dialog

3. File Save As Implementierung

4. Unterklassen von UMLDiagram

5. Fehlermeldung: • Unnamed class diagram• log4j: ERROR setFile(null,true) call failed.• CFG-parse error during code generation for NewClass::m1

-> Abnormal termination in control flow• java.lang.RuntimeException: Transition guards null and null are incompatible

6. Alle anwendenden Vorkommen von getName() der Klasse UMLClass

7. Wo wird "public" Flag für Klassen in der Codegenerierung erzeugt


Top Related