Praktikum aus Software Engineering

339.002 Mössenböck + Assistenten Vorbesprechung am 8.3.2010, 16:00 (HF 9905)

Ziele

Ziel dieses Praktikums ist es, ein größeres Softwareprojekt während eines Semesters eigenständig zu bearbeiten und durch alle Phasen (Anforderungserhebung, Entwurf, Implementierung, Test, Dokumentation) zu begleiten. Das Projekt sollte in Teams zu jeweils 2 Personen bearbeitet werden und ist am Ende des Semesters in einem Vortrag zu präsentieren.

Bereits vergebene Themen

  • Ein Source Code Profiler für C# 3.0
    Patrick Höll, Thomas Klambauer
    Im Rahmen einer Diplomarbeit (Klaus Lehner) wurde 2004 am SSW ein Profiler namens ProfIT für C# 1.0 entwickelt (siehe Homepage von ProfIT). ProfIT instrumentiert Quellcode, indem er an gewissen Stellen Zähler einfügt, die zur Laufzeit erhöht und durch einen separaten Prozess ausgewertet werden. Auf diese Weise kann man die Ausführungshäufigkeiten aller Anweisungen des instrumentierten Programms mit Hilfe einer interaktiven Benutzeroberfläche erkunden, was für die Fehlersuche und Optimierung von Programmen äußerst nützlich ist.
    Im Rahmen des Praktikums aus Software Engineering soll ProfIT auf C# 3.0 angepasst und unter .NET 3.5 zum Laufen gebracht werden. Zur Instrumentierung soll der Compilergenerator Coco/R verwendet werden (eine Grammatik für C# 3.0 liegt vor). Für die grafische Oberfläche wurden eigene User Controls verwendet, die eventuell gegen aktuelle Controls von .NET 3.5 ausgetauscht werden sollen.
    Die Arbeit ist idealerweise für ein Team von 2 Personen gedacht, kann aber auch von einer einzelnen Person gewählt werden.
    Betreuer: Prof. Mössenböck

  • Compiler-Visualisierung
    Daniel Thaller, Dominik Zaunrieth
    Der C1Visualizer ist ein Compiler-Visualisierungstool für den HotSpot Client Compiler. Dieses Werkzeug kann zur Visualisierung der Graphen des C1X Compilers verwendet werden, der Teil der Maxine Research VM ist.
    In diesem Projekt soll das Visualisierungswerkzeug umgebaut werden, sodass es über ein Web-Interface benutzt werden kann. Nach Eingabe eines Java-Quelltexts soll dieser automatisch zunächst auf Java Bytecodes und dann mit Hilfe des C1X Compilers nach Maschinencode kompiliert werden. Die Visualisierung der Kompilierung soll danach in einer HTML-Seite und Bildern angezeigt werden.
    Betreuer: DI Würthinger

  • Dynamische Mixins für Java
    Kerstin Breiteneder, Christoph Wimberger
    Die Dynamic Code Evolution VM bietet erweiterte Möglichkeiten die Definition von Klassen zur Laufzeit zu verändern (HotSwapping). In diesem Projekt soll unter Verwendung der DCE VM ein Mechanismus entwickelt werden, der es ermöglicht eine bestehende Klasse zur Laufzeit als Teil einer anderen Klasse einzubinden (siehe Mixin). Es soll das Bytecode-Framework ASM verwendet werden um die Definition der neuen Klasse zu erstellen.
    Betreuer: DI Würthinger

  • Coco/R Unit-Tests
    Bernd Landgraf, Jakob Springer
    Der Compiler Generator Coco/R kann aus einer attributierten Grammatik einen Scanner und einen Parser erzeugen. Um die Funktionalität von Coco/R stabil zu halten führen wir einfache Unit-Tests aus. In diesen Unit-Tests werden erzeugte Scanner mit erwareten Scannern und erzeugte Parser mit erwarteten Parsern textuell verglichen. Der textuelle Vergleich erhöt den Entwicklungsaufwand, da ein Test schnell fehlschlaegt, und ein Fehler leicht übersehen werden kann.
    In diesem Projekt soll eine Test-Infrastruktur auf abstrakterem Niveau entwickelt werden. Ein Testfall in diesem Framework soll aus einer Testgrammatik, den zu parsenden Eingabedateien und den erwarteten Ausgaben bestehen. Ein solcher Test schlägt nur fehl wenn der Compiler seine Funktion ändert, wie er seine Funktion ausführt ist aber egal.
    Betreuer: DI Löberbauer

  • Visualisieren von EBNF-Regeln
    Andreas Müller, Rudolf Muehlbauer
    Für viele Softwareentwickler ist das Schreiben von attributierte Grammatiken ungewohnt und daher schwierig. Werkzeuge können helfen, zB: mit Syntax-Hervorhebung und Code-Vervollständigung. Deshalb wurde am Institut ein Coco/R Eclipse Plugin entwickelt.
    In diesem Projekt soll das Plugin um die Visualisierung von EBNF-Regeln erweitert werden. Das Vorgänger-Proejkt EBNF Visualizer hat sich bereits mit dem Thema beschäftigt. Sie können daraus Ideen übernehmen und Quellcode portieren.
    Betreuer: DI Löberbauer

  • Graphenlayout für Visualisierungswerkzeug
    Andreas Gruber
    Explorer ist ein graphisches Kompositionswerkzeug für das Plugin-Framework Plux.NET. Der Layoutmechanismus des Exploreres ist zuständig für die Anordnung von Knoten und Kanten im visualisierten Komponentengraph. In diesem Projekt soll der Layoutmechanismus derart verbessert werden, dass das Ergebnis auf dem Niveau der GraphViz-Bibliothek ist.
    Betreuer: Dr. Wolfinger

Noch offene Themen

  • Visual Studio Integration für Plux.NET
    Plux.NET ist eine Plugin-Platform für Microsoft .NET (http://ase.jku.at/plux). Das Entwickeln von Plux.NET Programmen mit Visual Studio soll durch integrierte Werkzeuge komfortabler gemacht werden. Plux.NET setzt Programme aus Plugins und Extensions zusammen. Extensions bieten selbst Funktionalität über Stecker (Plugs) an oder binden andere Extensions über Steckplätze (Slots) ein. Die Laufzeitumgebung von Plux.NET setzt Programme zusammen, indem sie Plugs in Slots einsteckt.
    Zur komfortablen Entwicklung von Plux.NET Plugins sollen vier in Visual Studio integrierte Werkzeuge entwickelt werden: (i) Projektvorlagen für Plugin- und Contract-Assemblies, (ii) ein Browser zum Anzeigen und Suchen aller Extensions und Slots in einem Plugin-Repository, (iii) einen Generator der für Extensions, Slots oder Plugs ein Grundgerüst erzeugt, und (iv) ein in MSBuild integriertes Analysewerkzeug das prüft ob die spezifzierten Plugs den Anforderungen der zugehörigen Slots entsprechen.
    Betreuer: Dr. Wolfinger

  • Realisierung eines Modellierungssystems mit Visual Studio DSL Tools
    Die DSL Tools von MS Visual Studio bieten eine Werkzeugkette für die Entwicklung von domänenspezifischen Modellierungssprachen. Im Zuge dieses Projektes soll diese Werkzeugkette verwendet werden, um einen Prototypen einer komponentenbasierten Modellierungssprache zu realisieren. Der Prototyp soll enthalten:
    - Die Definition der Modellierungssprache
    - Die Realisierung eines graphischen Konfigurationssystems
    - Die Codegenierung
    Beachten Sie bitte, dass es zu diesem Thema im SS'09 eine Lehrveranstaltung am SSW gibt: Design and Implementation of Domain-specific Languages.
    Betreuer: Dr. Prähofer

Falls Sie an einem der noch offenen Themen interessiert sind, setzen Sie sich bitte möglichst bald mit Prof. Mössenböck in Verbindung. Ideal wäre es, wenn Sie auch bereits einen Teampartner (eine Teampartnerin) mitbringen.

Benotung

Die Note wird aus der Qualität der erstellten Software (Benutzerfreundlichkeit, Robustheit, Klarheit der Architektur, Klarheit des Programmierstils, Dokumentation) ermittelt. Am Semesterende ist das Ergebnis in einem kurzen Vortrag zu präsentieren. Der Vortrag sowie der persönliche Einsatz während des Projekts fließen auch in die Note ein.

Abschlussvortrag

Termin:
Raum: