Uni Bremen

Software-Reengineering WS 2008/09

Aufgabe für den Schein
Dozent zur Vorlesung: Prof. Dr. rer. nat. Rainer Koschke

FB3


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:

  1. Abgabe 2
  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: 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: 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: 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 $