Dieses Dokument beschreibt die Aufgaben für den Schein zur Vorlesung
Software-Reengineering
WS 08/09 .
Hier wird zunächst die erste Aufgabe beschrieben. Im Laufe des
Semester erfolgen noch zwei weitere Aufgaben:
- Abgabe 2
- Abgabe 3
Ergänzt wird die Projektarbeit noch durch ein Fachgespräch über den
Inhalt der Vorlesung.
Abgabe
Die Abgabe muss elektronisch per E-Mail spätestens bis zum 19. Januar 2009 erfolgen.
Elektronische Abgabe
Die elektronische Abgabe erfolgt als E-Mail an Rainer Koschke. Das
Format der elektronischen Fassung muss entweder ASCII oder PDF
sein.
Aufgabe 1
Versetzen Sie sich in die folgende Situation: Sie sollen die Wartung
für Minilax übernehmen, das Sie von einem Vorgänger
geerbt haben.
Minilax ist ein Compiler für eine einfache Sprache, der Code für eine
einfache virtuelle Maschine generiert. Minilax wurde im Rahmen eines
Compilerbau-Praktikums von einem Studenten im dritten Semester
entwickelt.
Ihr Chef (ein weiser Manager, wie man ihn selten findet)
räumt Ihnen Zeit ein, die Implementierung des Systems in Ordnung zu
bringen, bevor er Sie mit Erweiterungen beauftragt. Zunächst
betrachten Sie den Quellcode und finden dessen "Problemzonen", ohne
tatsächlich den Code zu ändern.
Finden Sie Schwachstellen im Quellcode von Minilax, die Sie als
verbesserungswürdig betrachten; d.h. von der Sie der Ansicht sind,
dass sie einem Refactoring unterzogen werden sollten. Sie können
hierzu jede beliebige Technik (z.B. Software-Metriken, Klonerkennung,
aber auch einfaches Durchlesen) und jedes verfügbare Werkzeug
verwenden.
Begründen Sie jeden Ihrer Vorschläge.
Beschreiben Sie, wie Sie die Schwachstellen gefunden haben und -
präzise mit Bezug auf die Quelltextstellen - wie Sie sie ausbessern
würden.
Stellen Sie einen klaren Bezug Ihrer Anmerkungen zum Quellcode her,
indem Sie für jede Anmerkung den Dateinamen, die Anfangs- und die
Endzeile angeben.
Beschreiben Sie kurz aus Ihrer Sicht Ihre "Lessons Learned" in diesem
Projekt und welche Erfahrungen Sie mit welchen Werkzeugen gemacht
haben. Interessant wäre auch, welche Art Werkzeugunterstützung Sie
sich noch für Ihre Aufgabe gewünscht hätten.
Sie können hierzu in Zweiergruppen arbeiten.
Werkzeuge
Sie können die Klonerkennung und Metrikerhebung des
Bauhaus-Systems verwenden. Sie können aber natürlich auch jedes
andere Werkzeug heranziehen und selbstredend ganz manuell vorgehen.
Bauhaus erhalten Sie über Rainer Koschke.
Vorberechnete Informationen über Minilax
Um Ihnen Arbeit abzunehmen, haben wir einige Informationen mit den
Bauhaus-Werkzeugen für Sie vorberechnet, die Sie in dem
Minilax-Archiv finden:
- clones.baxter.cpf: Klonliste nach Baxter (im Clone-Pair-Format (CPF);
visualisierbar mit Emacs und dem CPF-Emacs-Mode)
- clones.baker.cpf: Klonliste nach Baker (im Clone-Pair-Format;
visualisierbar mit Emacs und dem CPF-Emacs-Mode)
- minilax.csv: Metriken (Lines of Code, Halstead, McCabe und
maximale Schachtelungstiefe pro Funktion) als Comma-Separated-Values
- METRICS.txt: beschreibt kurz die Metriken, deren Werte in
minilax.csv erhoben sind
- DEAD_FUNCTIONS.txt: enthält die Liste der toten Funktionen, die
im Aufrufgraph von main aus nicht erreichbar sind
- LOG: enthält das Protokoll der Übersetzung mit Bauhaus; darin
findet man auch alle Compiler-Warnungen zu unbenutzten Deklarationen
etc.
- README.ANALYSIS: beschreibt die oben genannten Dateien
Sie können damit die Aufgabe angehen, ohne tatsächlich die
Bauhaus-Werkzeuge installieren zu müssen.
Emacs-Mode für CPF (Visualisierung von Klonen)
Hier können Sie sich den Emacs-Modus für die Visualisierung der
Klonpaare in Emacs herunterladen. Bitte
beachten Sie die Installationshinweise in dieser Datei.
Bewertungskriterien
Die folgenden Bewertungskriterien werden wir für die Benotung Ihrer
Abgabe anlegen:
- Vollständigkeit: Werden Aussagen zu allen geforderten Aspekten gemacht
(Schwachstelle, mögliches Refactoring, Begründung, Vorgehen)?
- Umfang: Wurden die wesentlichen Schwachstellen identifiziert?
- Granularität: Erfolgen die Angaben in ausreichendem Detail?
- Systematik: Sind Sie systematisch vorgegangen?
- Konsistenz: Sind die gemachten Aussagen konsistent zueinander?
- Reflexion: Wurden die gemachten Erfahrungen ausreichend reflektiert (Lessons Learned)
- Termintreue: Wurde die Aufgabe fristgerecht abgegeben?
- Äußere Form: Ist Ihre Abgabe verständlich und lesbar sowie frei
von Rechtschreibfehlern? Ist der Bezug zwischen Anmerkungen
und Quellcode klar? Sind etwaige Tabellen und Grafiken lesbar
und klar verständlich?
Bonus-Punkte werden für die selbstständige Suche nach alternativen
Werkzeugen und besonders kreatives Vorgehen vergeben.
Minilax
Hier können Sie die Sourcen von Minilax herunterladen (das Archiv
enthält neben den Sourcen auch alle von den Bauhaus-Werkzeugen
generierten Dateien, wie z.B. die Zwischendarstellungen IML und RFG
sowie die Metrikendateien und die Klonlisten):
Sourcen + Bauhaus-Dateien
Das Archiv enthält ein angepasstes Makefiles:
- "make" übersetzt Minilax nach IML, dem Bauhaus-Zwischenformat (ein
AST). Das Resultat ist die Datei 'minilax', die jedoch nicht
ausführbar ist.
- "make bauhaus" generiert alle weiteren Daten (den RFG, die
Metriken und die Klonlisten)
Beachten Sie bitte, dass Bauhaus den normalen Übersetzungsprozess
simuliert und damit Dateien mit der Endung .o sowie die
Datei minilax anlegt. Diese Dateien enthalten jedoch
Programmrepräsentationen in Bauhaus-Formaten.
Seite erstellt von
Rainer Koschke
WS 08/09 $