Mögliche Themen für Projekt- und Abschlussarbeiten 1 Bereich Komponentenmodelle Es gibt bereits ein Werkzeug, das es ermöglicht, Komponenten, basierend auf JavaBeans oder einfachen Javaklassen, mit visuellen Hilfsmitteln zu größeren Komponentern zusammenzubauen. Die Beschreibung der Komponenten liegt in Form einer Textdatei vor, die für jede Komponente die zur Verfügung stehenden angebotenen und benötigten Schnittstellen beschreibt und für nicht atomare Komponenten angibt, aus welchen anderen Komponenten sie zusammengesetzt ist. Diese Anwendung kann in mehrere Richtungen erweitert werden und auf Anwendbarkeit für andere Komponentenmodelle überprüft werden. 1) Das grafische Zusammensetzen kann benutzerfreundlicher gestaltet werden (z.B. Kennzeichnung passender benötigter und angebotener Schnittstellen, Darstellung von Steckern (Zusammenfassung von Schnittstellen zu Verbindungszwecken), automatische Bestimmung von Komponenten, die zusammenpassen etc.) 2) Überprüfen, ob EJBs in das Kompositionskonzept passen und wenn ja, diese in die Anwendung integrieren 3) Überprüfen, ob .NET-Komponenten (seien es .NET-Klassen oder Assemblies) in das Konzept passen und wenn ja, diese in die Anwendung integrieren. 4) Integration von COM+-Komponenten. 5) Überprüfen, ob Webservices in das Kompositionskonzept passen und wenn ja, diese in die Anwendung integrieren. 6) Die Anwendung von Java auf .NET umstellen (Integration verschiedener Quellsprachen für Komponenten möglich: Java#, C#, etc.). 2 Bereich Compilerbau Im Bereich des Compilerbaus gibt es diverse Werkzeuge zu implementieren. Für einige Implementierungen sind keine tiefergehenden Vorkenntnisse im Compilerbau nötig. Folgende Implementierungen stehen zur Auswahl: 1) Werkzeug, das aus einer rechtslinearen Grammatik eine äquivalente Grammatik in rechtslinearer Normalform erzeugt. 2) Werkzeug, das aus einem nichtdeterministischen Automaten einen äquivalenten deterministischen Automaten generiert. 3) Werkzeug, das zu einer gegebenen Grammatik und einer gegebenen Tokenfolge den zugehörigen Ableitungsbaum bestimmt und den Aufbau visuell darstellt (inklusive des Backtrackings). 4) Den Ausbau eines Übersetzers für die in der Vorlesung Compilerbau vorgestellte Beispielsprache. 5) Bau eines Interpreters, der 3-Adress-Code für eine vorgegebene Speicherverwaltung ausführen kann.