1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em....

9
1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik 10.02.2002

Transcript of 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em....

Page 1: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

1

Vortrag 11:

Reengineering - Refactoring

Referenten: Christian Ecke, Joscha Menzel

Univ.-Prof. em. Dr. H.-J. HoffmannTU Darmstadt, Fachbereich Informatik

10.02.2002

Page 2: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

2

Zum Inhalt

Einleitung

Was ist Reengineering?

Forward Engineering

Reverse Engineering

Reengineering

Einordnung in den Lebenszyklus von Software

Wann ist Reengineering sinnvoll?

Ziele

Voraussetzungen

Page 3: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

3

Einleitung

Das erste Gesetz von Lehman

Software, welche in einer realen Umgebung benutzt wird, muss verändert werden oder sie wird nach und nach unbrauchbar.

Das zweite Gesetz von Lehman

Bei der Weiterentwicklung einer Software wird deren Struktur immer komplexer, falls keine Maßnahmen ergriffen werden um dies zu vermeiden.

Die Weiterentwicklung und Wartung von Software ist von entscheidender Bedeutung!

Page 4: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

4

Was ist Reengineering?

Forward Engineering

Traditioneller Prozess der Entwicklung von einem hohen Abstraktionsniveau zu der fertigen Implementierung der Software

Reverse Engineering

Analyse einer vorhandenen Software um:

Die einzelnen Komponenten und ihre Beziehungen festzustellen

Neue Repräsentationen der Software auf höherem Abstraktionsniveau zu erstellen

Der Startpunkt dieses Prozesses muss nicht die fertige Software sein

Die Software selbst wird nicht verändert

Page 5: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

5

Was ist Reengineering?

Definition

Unter Reengineering versteht man die Analyse und Modifizierung einer bestehenden Software mit dem Ziel diese zu erneuern und zu verbessern.

Benutzte Verfahren

Reverse Engineering (um eine abstraktere Beschreibung zu erhalten)

Forward Engineering

Refactoring

Page 6: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

6

Einordnung in den Lebenszyklus

Page 7: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

7

Wann ist Re-Engineering sinnvoll?

Generell bei Wartung/Aktualisierung von großen Softwareprojekten

Die Entwickler der Software sind nicht erreichbar, um Funktionalität zu erklären

Hier ist besonders Software zu nennen, welche sich regelmäßig ändert

Die Geschäftsmodelle vieler Unternehmen sind heute in Software implementiert (z.B.: Datenbanksysteme, etc.)

Diese Modelle ändern sich in bestimmten Zeitintervallen und somit auch die Software

Page 8: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

8

Ziele des Re-Engineering

Anpassung des Systems an neue Anforderungen, welche zuvor nicht erfüllt waren

Ein besseres Verständnis der Software erlangen, um einerseits die Wartung als auch andererseits die Weiterentwicklung zu vereinfachen

Leichterer Umgang mit hoch komplexer Software

Risiken der Softwareentwicklung verringern

Senken von hohen Wartungs- und Entwicklungskosten(normalerweise 50-90% der Gesamtkosten)

Page 9: 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em. Dr. H.-J. Hoffmann TU Darmstadt, Fachbereich Informatik.

9

Anforderungen für Re-Engineering

Hilfe von Tools ist unverzichtbar

Um abstraktere Beschreibungen einer Software zu erhalten (Disassembler, Recompiler, etc.)

Um Refactoring durchzuführen

Gut ausgebildetes Personal

Einsatz von Regressionstests, um evtl. neu entstandene Fehler zu finden