Wandelbarkeit wieder herstellen - Refactoring C# Legacy Code
1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em....
-
Upload
theresia-ehlke -
Category
Documents
-
view
107 -
download
0
Transcript of 1 Vortrag 11: Reengineering - Refactoring Referenten: Christian Ecke, Joscha Menzel Univ.-Prof. em....
1
Vortrag 11:
Reengineering - Refactoring
Referenten: Christian Ecke, Joscha Menzel
Univ.-Prof. em. Dr. H.-J. HoffmannTU Darmstadt, Fachbereich Informatik
10.02.2002
2
Zum Inhalt
Einleitung
Was ist Reengineering?
Forward Engineering
Reverse Engineering
Reengineering
Einordnung in den Lebenszyklus von Software
Wann ist Reengineering sinnvoll?
Ziele
Voraussetzungen
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!
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
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
6
Einordnung in den Lebenszyklus
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
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)
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