Uni Bremen

Software-Reengineering WS 2004/05

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

FB3


Dieses Dokument beschreibt zwei der drei Aufgaben für den Schein zur Vorlesung Software-Reengineering WS 05/06 . Hier wird zunächst die zweite Aufgabe beschrieben (die erste Aufgabe zu TXL ist bereits bearbeitet). Im Laufe des Semester erfolgt noch eine weitere Aufgabe zum Thema Architekturrekonstruktion.

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 30. Januar 2006 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 2

Versetzen Sie sich in die folgende Situation: Sie sollen die Wartung für einen Minilax-Compiler übernehmen, den Sie von einem Vorgänger geerbt haben. Ihr Chef (ein weiser Manager, wie man ihn selten findet) räumt Ihnen Zeit ein, die Implementierung des Compilers 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 des Minilax-Compilers, 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 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.

Wenn Sie eine Lizenzvereinbarung für Bauhaus unterzeichnet und abgegeben haben, dann werden Sie in den nächsten Tagen eine Benachrichtigung mit dem Lizenzschlüsssel erhalten. Allerdings nur, wenn Sie Ihre E-Mail-Adresse korrekt und lesbar angegeben haben. Sollten Sie nichts von uns hören, dann melden Sie sich bei uns.

Vorberechnete Informationen über den Minilax-Compiler

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 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-Compiler

Sie können die Sourcen des Minilax-Compilers in folgender Weise herunterladen (die mit "Bauhaus-Dateien" gekennzeichneten Archive enthalten neben den Sourcen auch alle von den Bauhaus-Werkzeugen generierten Dateiten, wie z.B. die Zwischendarstellungen IML und RFG sowie die Metrikendateien und Klonlisten):

Sourcen + Bauhaus-Dateien

Das Archiv enthält zwei Makefiles: Beachten Sie bitte, dass beide die Dateien mit der Endung .o sowie die Datei minilax überschreiben. Die Dateien mit .o und die Datei minilax sind natürlich nicht linkbar bzw. ausführbar. Bauhaus generiert Dateien dieses Namens, um den Make-Prozess zu mimen, so dass existierende Makefiles benutzt werden können.

Seite erstellt von Rainer Koschke - $Id: abgabe1.html,v 1.5 2005/02/11 12:11:49 quante Exp $