|
|

Home
|
Software-Reengineering
Vorlesungsnummer 03-706.01
Aufgaben für den Schein
Die Aufgaben zur Erlangung des Scheins sind hier erhältlich.
Warum Sie diese Vorlesung interessieren sollte
Die Pflege und Weiterentwicklung existierender Software verschlingt 50-80% der
Kosten im Software-Life-Cycle. Aus empirischen Untersuchungen ist bekannt,
dass Wartungsprogrammierer 50-60% ihrer Zeit nur mit der Analyse der
Implementierung verbringen, bevor sie eine Änderung tatsächlich durchführen
und testen können.
Für sich persönlich können Sie diese Zahl so interpretieren: Mit sehr großer
Wahrscheinlichkeit werden sie die meiste Zeit ihres späteren beruflichen
Daseins mit der Pflege und Weiterentwicklung existierender Software
verbringen. Darauf sollten Sie sich vorbereiten.
Und wetten, dass die Software, die sie ändern sollen, alles andere als gut
strukturiert und dokumentiert ist? Erschwerend kommt hinzu, dass Sie
nicht der einzige Entwickler dieses riesigen und unübersichtlichen
System sein werden. Was machen Sie nun?
Lernziele
In dieser Vorlesung lernen Sie,
- auf welchen Ebenen Sie Code analysieren können,
- wie Sie Schwachstellen des Codes finden,
- wie Sie duplizierten Code automatisch aufspüren,
- wie Sie Abhängigkeiten zwischen Anweisungen nachverfolgen können,
- wie Sie Code-Muster finden,
- wie Sie den Code automatisch transformieren können,
- wie Sie die Stellen im Code finden, die eine bestimmte
Funktionalität implementieren,
- wie Sie Vererbungshierarchien restrukturieren können,
- wie Sie Software visualisieren können
- und wie Sie Reengineering-Projekte organisieren.
Inhalt
Software Reengineering beschäftigt sich mit Wiedergewinnung
verlorener Informationen über existierende Software-Systeme
(Reverse Engineering), Restrukturierung der Beschreibung des
Systems (Restructuring) und der nachfolgenden Implementierung der
Änderungen (Alteration). Reengineering hat es dabei nicht nur
mit alter Software zu tun; gerade neuere objekt-orientierte Systeme
erfordern oft schon bald eine Restrukturierung, weshalb sich ein guter
Teil der Vorlesung speziell objekt-orientierter Software widmet
(Restrukturierung von Klassenhierarchien, automatisches
Refactoring). Auch im Kontext neuerer Ansätze des Software
Engineerings zur Entwicklung ähnlicher Produkte als Produktlinie
findet Reengineering Einsatz.
Über Inhalte und Erfahrungen der Vorlesung im Wintersemester 1999/2000
an der Uni Stuttgart berichtet dieser Artikel im PDF-Format.
Themen dieser Vorlesung sind:
-
allgemeiner Überblick über das Thema
sowie Beziehung des Reengineerings zu verwandten Gebieten der Software-Wartung,
Wrapping, etc.
-
Zwischendarstellungen für Programmanalysen (abstrakte Syntaxbäume, Program Dependency Graph, Single Static Assignment),
Datenfluss-/Kontrollflussanalysen
- Program Slicing
- Klonerkennung
- Mustersuche
-
automatische Code-Transformationen
und Refactoring
- Begriffsanalyse
- Merkmalsuche
- Analyse und Restrukturierung von Vererbungshierarchien
- Software Visualisierung
- Planung und Durchführung von
Reengineering-Projekten, Prozessmodelle des Reengineerings
Übungen
Die Übungen werden zweiwöchig stattfinden. Neben der Wiederholung
und praktischen Vertiefung des Vorlesungsinhalts werden auch existierende
Reengineering-Werkzeuge vorgestellt.
Voraussetzungen Die Vorlesung richtet sich an
Informatikstudentinnen und -studenten im Hauptstudium sowie an
Studierende anderer Fachrichtungen, die über
Informatikgrundkenntnisse verfügen. Kenntnisse im Compilerbau und
Software Engineering wären hilfreich, sind aber keine notwendige
Voraussetzung.
Termine
Die geplanten Termine der Vorlesung und der Übung sind wie folgt.
- Vorlesung: Montags, 10:00 - 12:00 Uhr, Raum MZH 5210,
und montags, 15:00 - 17:00 Uhr, Raum MZH 1380
- erste Vorlesung am 25. Oktober 2004
- Übung: Montags, 15:00 - 17:00 Uhr, Raum MZH 1380,
zweiwöchig alternierend zur Vorlesung; erster Übungstermin voraussichtlich
8. November (wird in der Vorlesung bekannt gegeben).
Weiterführende Informationen
Weitere Informationen zu Reengineering sind in der Reengineering-Bibliographie
erhältlich.
Literatur
| ALLE FOLIEN |  | Alle Folien für alle Abschnitte in einem Dokument mit Wiederholungs- und Vertiefungsfragen |
| Tutorial zu TXL |  | Originaleinführung in TXL vom Macher von TXL: Jim Cordy (Queen's University, Kanada). |
| Übungsblatt 1 |  | Übungsblatt 1 - Wird am 8. November um 15:15 Uhr in MZH 1380 besprochen. |
| Übungsblatt 2 |  | Übungsblatt 2 zu Programminformationen.
- wird am 22. November besprochen |
| Übungsblatt 3 |  | Wird am 6. Dezember besprochen. |
| Übungsblatt 4 |  | Wird am 3. Januar 2005 besprochen. |
| Übungsblatt 5 |  | Übungsblatt zur Restruktuierung von Vererbungshierarchien mittels Begriffsanalyse. Wird am 17. Januar besporchen. |
| Übungsblatt 6 |  | Übungsblatt zu Clustering und Code-Transformationen; wird am 31. Januar besprochen. |
| Folien zu den Übungen |  | alle Folien, die in den Übungen aufgelegt wurden. |
| |
|
|



---------
BEDIENUNG
---------




|

|
|