
|

---------------
|
|

Home
|
Software-Reengineering
Vorlesungsnummer 03-706.01
Anmeldung zur Prüfung
Ab sofort kann man sich hier zur mündlichen Prüfung bzw. zum Fachgespräch anmelden.
Aufgaben für den Schein
Hier geht es zur Aufgabenbeschreibung für den Schein..
Videoaufzeichnung
Die Videoaufzeichnung der Vorlesung findet man hier.
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:15 - 11:45 Uhr, Raum MZH 5210,
und Donnerstag, 8:15 - 10:15 Uhr, Raum MZH 5210
- erste Vorlesung am 20. Oktober 2005
- Übung: zweiwöchig alternierend zur Vorlesung
Weiterführende Informationen
Weitere Informationen zu Reengineering sind in der Reengineering-Bibliographie
erhältlich.
Literatur
| Einführung |   | Organisatorisches, Scheinbedingungen, Überblick über die Vorlesung, Motivation, Grundbegriffe, Abgrenzung zur Erstentwicklung |
| Statische Programmanalyse |   | Statische Programmanalyse; Vergleich zu Compiler, lexikalische, syntaktische, semantische Analyse; Kontrollfluss und -abhängigkeit, Datenabhängigkeit, Static Single Assignment Form |
| Refactorings |   | Bad Smells und Refactorings nach Fowler |
| Mustersuche |   | Verschiedene Zwischendarstellungen sowie Formalismen für die Mustersuche. |
| Code-Transformation |   | Was ist eine Transformation? Semantische Äquivalenz. Schritte einer Transformation. Implementierung. Drei Beispiele von Transformationssystemen. |
| TXL-Tutorial |  | Einführung in TXL von Jim Cordy. |
| Statisches Program-Slicing |   | Was ist ein Slice?
Slicing-Technik,
Intraprozedurales Slicing,
Interprozedurales Slicing,
Summary-Edges im SDG,
Anwendungen von Slicing.
|
| Software-Metriken |   | Was ist eine Metrik? Software-Metriken zu Größe, Komplexität, Kopplung und Kohäsion. Objektorientierte Metriken. Empirische Studien. |
| Klonerkennung |   | Software-Redundanz, ihre Ursachen und Auswirkungen. Automatische Klonerkennung nach Baker, Baxter und Mayrand. |
| Dynamische Analyse |   | Dynamische Programmanalyse,
Information durch dynamische Analyse,
Testfälle,
Instrumentierung,
Probleme der Instrumentierung,
Weiterverarbeitung dynamischer Information,
Anwendungsbeispiele,
Vergleich mit statischer Analyse |
| Software-Visualisierung |   | Statische und dynamische Programm-Visualisierung,
Visualisierung von Metriken,
Klassenblaupause,
Evolutionäre Aspekte
|
| Formale Begriffsanalyse |   | Grundlagen der formalen Begriffsanalyse |
| Merkmalsuche (Feature Location) |   | Statische und dynamische Ansätze zur Lokalisierung von Merkmalen, formale Begriffsanalyse und Merkmalsuche, inkrementelle Begriffsanalyse, Szenarien und Merkmale |
| Architekturrekonstruktion |   | Reflektionsmethode und Software-Clustering |
| Übungsblatt 1 |  | Allgemeines zu Reengineering; Programmrepräsentationen. Wird am 10. November besprochen. |
| Scheinrelevante Aufgabe 1 |  | Erste für den Schein relevante Aufgabe. Spätester Abgabetermin ist der 14. Dezember. |
| Übungsblatt 2 |  | Übungsblatt zu TXL und statischer Programmanalyse; wird am 1. Dezember besprochen. |
| Folien zur Besprechung von Übungsaufgabe 2 |  | |
| Übungsblatt 3 |  | wird am 9. Februar besprochen |
| |
|
|



---------
SUBMENU
---------




|

|
|