Home  Sitemap  Kontakt 





 


TZI

---------------
 
 
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ührungPDFPRINT PDFOrganisatorisches, Scheinbedingungen, Überblick über die Vorlesung, Motivation, Grundbegriffe, Abgrenzung zur Erstentwicklung
Statische ProgrammanalysePDFPRINT PDFStatische Programmanalyse; Vergleich zu Compiler, lexikalische, syntaktische, semantische Analyse; Kontrollfluss und -abhängigkeit, Datenabhängigkeit, Static Single Assignment Form
RefactoringsPDFPRINT PDFBad Smells und Refactorings nach Fowler
MustersuchePDFPRINT PDFVerschiedene Zwischendarstellungen sowie Formalismen für die Mustersuche.
Code-TransformationPDFPRINT PDFWas ist eine Transformation? Semantische Äquivalenz. Schritte einer Transformation. Implementierung. Drei Beispiele von Transformationssystemen.
TXL-TutorialPDFEinführung in TXL von Jim Cordy.
Statisches Program-SlicingPDFPRINT PDFWas ist ein Slice? Slicing-Technik, Intraprozedurales Slicing, Interprozedurales Slicing, Summary-Edges im SDG, Anwendungen von Slicing.
Software-MetrikenPDFPRINT PDFWas ist eine Metrik? Software-Metriken zu Größe, Komplexität, Kopplung und Kohäsion. Objektorientierte Metriken. Empirische Studien.
KlonerkennungPDFPRINT PDFSoftware-Redundanz, ihre Ursachen und Auswirkungen. Automatische Klonerkennung nach Baker, Baxter und Mayrand.
Dynamische AnalysePDFPRINT PDFDynamische Programmanalyse, Information durch dynamische Analyse, Testfälle, Instrumentierung, Probleme der Instrumentierung, Weiterverarbeitung dynamischer Information, Anwendungsbeispiele, Vergleich mit statischer Analyse
Software-VisualisierungPDFPRINT PDFStatische und dynamische Programm-Visualisierung, Visualisierung von Metriken, Klassenblaupause, Evolutionäre Aspekte
Formale BegriffsanalysePDFPRINT PDFGrundlagen der formalen Begriffsanalyse
Merkmalsuche (Feature Location)PDFPRINT PDFStatische und dynamische Ansätze zur Lokalisierung von Merkmalen, formale Begriffsanalyse und Merkmalsuche, inkrementelle Begriffsanalyse, Szenarien und Merkmale
ArchitekturrekonstruktionPDFPRINT PDFReflektionsmethode und Software-Clustering
Übungsblatt 1PDFAllgemeines zu Reengineering; Programmrepräsentationen. Wird am 10. November besprochen.
Scheinrelevante Aufgabe 1PDFErste für den Schein relevante Aufgabe. Spätester Abgabetermin ist der 14. Dezember.
Übungsblatt 2PDFÜbungsblatt zu TXL und statischer Programmanalyse; wird am 1. Dezember besprochen.
Folien zur Besprechung von Übungsaufgabe 2PDF
Übungsblatt 3PDFwird am 9. Februar besprochen
 



zurück  






Arbeitsgruppe

Forschung

Lehre

Publikationen

Service

Kontakt

 

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


SEITENINHALT DRUCKEN

LESEZEICHEN SETZEN

ENGLISH VERSION  






  SEITENANFANG
Hier geht es zur Homepage des Fachbereiches 03 der Universität Bremen Hier geht es zur Homepage der Informatik des Fachbereiches 03 der Universität Bremen Hier geht es zur Homepage der Universität Bremen