|
|

Home
|
Software-Reengineering
Vorlesungsnummer 03-05-H-706.01
3+1 SWS, 6 ECTS, Vertiefungsmodul
Prüfungsanmeldung
Anmelden kann man sich ab sofort mit
MEMS.
Dort "RE 2008/09 Modul" auswählen und unten "Register for exam (new
user)/Prüfungsanmeldung (neuer Benutzer)".
Sollten die Termine aus sein, bitte bei mir melden.
Video
Die Vorlesung wurde auf Video in einem früheren Durchlauf
aufgezeichnet. Das Video findet man
hier
Aufgaben für den Schein
Hier finden Sie die Aufgaben für den Schein.
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 statische Programmanalysen (abstrakte
Syntaxbäume, Program Dependency Graph, Single Static Assignment),
Datenfluss-/Kontrollflussanalysen
- Dynamische Analyse
- Program Slicing
- Klonerkennung
- Mustersuche
-
automatische Code-Transformationen
und Refactoring
- Begriffsanalyse
- Merkmalsuche
- Analyse und Restrukturierung von Vererbungshierarchien
- Software-Visualisierung
- Architekturrekonstruktion und Software-Clustering
- 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 7260,
und Donnerstag, 8:30 - 10:00 Uhr, Raum MZH 5210
- erste Vorlesung am 22. Oktober 2007
- Übung: zweiwöchig alternierend zur Vorlesung
Weiterführende Informationen
Weitere Informationen zu Reengineering sind in
der Reengineering-Bibliographie
erhältlich.
Literatur
Leider gibt es nicht das allein selig machende Buch zu dieser
Vorlesung, das alle Themen dieser Vorlesung abdeckt. Diese Vorlesung
ist zu einer Zeit entstanden, zu der es kaum Bücher zum Thema
Reengineering gab. Mittlerweile ist das anders. Eine Reihe von Büchern
auch in verwandten Gebieten ist erschienen, die ich hier kurz
aufliste:
Reengineering
- Reengineering
- Eine Einführung, Bernd Müller, B.G. Teubner Verlag Stuttgart,
1997. Eines der ersten Bücher überhaupt zu diesem Thema. Ein kurze
Einführung aller wichtiger Begriffe, deren Beschreibung sich mit
meiner Vorlesung deckt. Geht auch kurz auf kognitive Aspekte
ein. Beschreibt gängige Metriken und erörtert die Frage, inwieweit
Wartbarkeit messbar ist. Kapitel 9 zur Kosten-/Nutzenanalyse nach
Harry Sneed ist auch Teil meiner Vorlesung.
- Object Oriented
Reengineering Patterns, Serge Demeyer, Stephane Ducasse, Oscar
Nierstrasz, 2007. Dieses Buch gibt es umsonst als PDF!
Beschreibt Best Practices beim Reengineering von
objektorientierten Systemen in Form von Prozessmustern.
- Refactoring:
Improving the Design of Existing Code, Martin
Fowler, Addison-Wesley, 2000. Das Standardwerk zu
Refactorings. Refactorings sind Restrukturierungen (Reengineering)
des Quellcodes, um die Wartbarkeit zu verbessern, ohne Änderung der
Funktionalität.
- Modernizing
Legacy Systems , Robert C. Seacord, Daniel Plakosh, and Grace
A. Lewis. Addison-Wesley, 2003. Beschreibt Prozesse zur Modernisierung
von Software.
- Anti
Patterns: Entwurfsfehler erkennen und vermeiden, William J. Brown
(Autor), Raphael C. Malveau, Mitp-Verlag; zweite überarbeitete
Auflage, 2007. Ein Anti-Pattern ist ein negatives Pattern. Das Buch
betrachtet Anti-Pattern sowohl in Prozessen als auch in
Architekturen.
Wartung und Evolution
- Legacy-Software,
Dieter Masak, Springer Verlag, 2006. Prozesse und Management zur
Wartung und Migration von Altsystemen.
- Nutzung
und Wartung von Software - Das Anwendungssystem-Management,
Franz Lehner, Hanser Verlag, 1989. Eines der frühesten
deutschsprachigen Bücher zur Wartung. Beschreibt Wartungsprozesse
und Managementfragen aus Sicht der Betriebswirtschaft.
- Software-Produktmanagement:
Wartung und Weiterentwicklung bestehender Anwendungssysteme Harry
M. Sneed, Martin Hasitschka, Maria-Therese Teichmann, Dpunkt Verlag,
2004. Ein Buch, das für Managementfragen bei der Wartung unbedingt zu
empfehlen ist.
- Software
Evolution, Tom Mens, Serge Demeyer (Eds.), Springer Verlag,
2008. Ein Buch, das den aktuellen Stand der Forschung in der
Software-Evolution zusammenfasst. Richtet sich insbesondere an
Doktoranden, die nach einem Forschungsthema suchen.
-
Software-Wartung: Grundlagen, Management und Wartungstechniken,
Christoph Bommer, Markus Spindler, Volkert Barr, DPunkt Verlag,
2008. Ein Buch zur Methoden und Techniken für die Wartung. Der
Abschnitt zu Methoden ist eine kompaktere Darstellung des Buchs von
Sneed, Hasitschka und Teichmann. Der Abschnitt zu Techniken gibt
einige Themen meiner Vorlesung wieder.
- Practical
Software Maintenance: Best Practices for Managing Your Software
Investment, Thomas M. Pigoski, Wiley & Sons, 1996. Eines der
frühestens englischsprachigen Büchern zu Methoden und Prozessen
der Wartung. Stellt Best Practices vor.
Wartbarkeit
Programmanalyse
- Advanced
Compiler Design and Implementation, Steven S. Muchnick, Morgan
Kaufmann, 1997. Ein sehr gutes Buch zur statischen Programmanalyse
von Compilern. Die Front- und Middleendtechniken spielen auch für
die Programmanalyse für das Reengineering eine bedeutende Rolle.
- Principles
of Program Analysis, Flemming Nielson, Hanne Riis Nielson,
Chris Hankin, Springer Verlag, Auflage: 2., 2004. Ein (relativ
theoretisches) Buch zu vier Formen der Programmanalyse: Data Flow
Analysis, Constraint Based Analysis, Abstract Interpretation und
Type Inference.
Software-Visualisierung
- Software
Visualization, Stephan Diehl, Springer Verlag, 2007. Ein Buch
zur Visualisierung von Software. Enthält alle Themen, die ich in
der Vorlesung zur Software-Visualisierung vorstelle, und darüber
hinaus noch Arbeiten zur Animation von Software. Nicht zu
verwechseln mit dem gleichnamigen Buch zum
Dagstuhl-Seminar Software Visualization: International Seminar
Dagstuhl Castle, das Stephan Diehl herausgegeben hat und
Beiträge vieler Forscher zusammenfasst.
Debugging
| GESAMT |   | Alle Folien der Vorlesung in einem PDF. |
| Einführung |   | Motivation; wichtige Begriffe: Wartung
Reverse Engineering, Restrukturierung,
Reengineering, Wrapping, Business Process Reengineering;
Ziele und Aufgaben;
Unterschiede zur Vorwärtsentwicklung; |
| Statische Programmanalyse und Programmrepräsentationen |   | Statische Programmanalyse, Programmrepräsentationen, Kontroll- und Datenfluss; AKTUALISIERTE FASSUNG MIT DATENFLUSSANALYSE MIT VEREINFACHTEM BEISPIEL (Stand: 12.11.08). |
| Refactoring |   | Refactoring, Bad Smells, Prozess, Beispiele |
| Software-Metriken |   | Größenmetriken, Komplexitätsmetriken, Kopplung und Kohäsion, Objektorientierte Metriken, Empirische Studien |
| Software-Klone |   | Software-Redundanz, Klonerkennung, verschiedene Verfahren |
| Program-Slicing |   | statisches Program-Slicing, Forward-/Backward-Slicing, intra-/interprozedural, Program Dependency Graph, System Dependency Graph, weitere Slicing-Varianten. |
| Softwarevisualisierung |   | Visualisierung statischer und dynamischer Information über Software und ihre Versionsgeschichte. |
| Dynamische Analyse |   | Probleme statischer Analysen, Information durch dynamische Analyse, Testfälle, Instrumentierung, Probleme der Instrumentierung, Weiterverarbeitung dynamischer Information, Anwendungsbeispiele, Vergleich mit statischer Analyse |
| Softwarearchitekturrekonstruktion: Methodik |   | Methodik bei der Architekturrekonstruktion, Sichten (Views) und Blickwinkel (Viewpoints)
|
| Architekturrekonstruktion: Statik |   | Reflexionsmethode und Software-Clustering |
| Merkmalsuche |   | Traceability, statische und dynamische Suche nach Merkmalen (Features), formale Begriffsanalyse |
| Übungsblatt 1 |  | Übungsblatt, das zum 5.11.2008 besprochen wird. |
| Übungsblatt 2 |  | Übungsblatt, das zum 24.11.2008 besprochen wird. |
| Übungsblatt 3 |  | wird am 5. Februar besprochen |
| |
|
|



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




|

|
|