Institut für Verteilte Systeme
- 1:
Projekte. - 2:
Publikationen. - 3:
Lehre. - 4:
Personen. - 5:
Intranet.
Weitere Themen
Middleware
Praktikum im Hauptstudium / SS 2008 / CS 5850
Angaben
- Dozent
- Prof. Dr. Franz J. Hauck
- Betreuer
- Jörg Domaschka, Jan-Patrick Elsholz, Vladimir Nikolov, Andreas Schmied, Holger Schmidt
- Termine
- Einführungsveranstaltung: Donnerstag 17.04.2008, 14.15-15.45 Uhr im Raum O25/346
- Themenvergabe
- In der Einführungsveranstaltung stellen die Betreuer unverbindlich die jeweiligen Themen vor. Im Anschluss daran können sich die Studenten verbindlich für die Bearbeitung eines Themas entscheiden. Vorvergabe per email an die Betreuer möglich.
- SWS
- 4
- Leistungspunkte
- 8
- Zuordnung
- Dipl. Inf.: Praktikum
Ba. Inf. (PO 2001): Praktikum
Ma. Inf. (PO 2001): Praktikum
Dipl. Medieninf.: Praktikum
Themengebiete
Einzelthemen nach Gebiet
Software-Komponenten mit OSGi
OSGi ist eine offene Dienstplattform und implementiert ein leichtgewichtiges Komponentenmodell. Komponenten werden in Form von in Java entwickelten Bundles definiert. Bundles können Services enthalten und zur Laufzeit installiert, gestartet, gestoppt und deinstalliert werden. OSGi ist ein de-facto Standard und wird unter anderem auch von Eclipse zur Implementierung von Plugins verwendet.
Eclipse-Plugin zur SAMProc-ModellierungBetreuer: Holger Schmidt
Selbstadaptive mobile Prozesse (SAMProc) sind ein Konzept zur abstrakten Beschreibung mobiler adaptiver Anwendungen. Mit Hilfe des Konzepts soll die Anwendungsentwicklung vereinfacht werden. Zur Unterstützung der Anwendungsentwicklung soll im Rahmen des Praktikums ein Eclipse-Plugin implementiert werden, mit dessen Hilfe selbstadaptive mobile Prozesse modelliert werden können. Hierzu soll auf der Business Process Modeling Notation (BPMN) aufgebaut werden und ein BPMN-fäges Plugin entsprechend erweitert werden.
OSGi Declarative ServicesBetreuer: Holger Schmidt
Im Rahmen einer abgeschlossenen Arbeit wurde OSGi um eine dynamische Ladefunktion erweitert, welche das dynamische Suchen, die automatische Selektion und Installation von einer Quelle in einem Peer-to-Peer Netzwerk unterstützt. Im Rahmen des Praktikums soll diese Ladefunktion im Sinne der OSGi Declarative Services Spezifikation erweitert werden. OSGi Declarative Services ermöglichen die Spezifikation von Service-Abhängigkeiten in OSGi. Zum Einstieg in die Ladeplattform soll zuerst die simultane Übertragung von Bundle-Code von mehreren Quellen zur Installation eines Bundles implementiert werden (vgl. File-Sharing in einem Peer-to-Peer Netzwerk). Anschließend soll die Ladeplattform Declarative Service Beschreibungen von Bundles verarbeiten können um diese in die automatische Auflösung von Bundleabhängigkeiten mit einzubeziehen.
Multi-SIP für OSGiBetreuer: Holger Schmidt, Jan-Patrick Elsholz
Im Rahmen eines Projekts soll eine OSGi-basierte Middleware entwickelt werden bei der mehrere Applikationen auf eine Session Initiation Protocol (SIP) Komponente zugreifen können (SIP ist das de-facto Standard-Protokoll für Voice over IP). Dies ist mit bisherigen Implementierungen allerdings nicht möglich. Daher soll eine Art Schnittstellenkomponente entworfen werden, welche den Zugriff auf eine SIP-Komponente durch mehrere Anwendungen koordiniert ermöglicht. Hierbei soll auch die Möglichkeit der Priorisierung von Anforderungen einer Anwendung mit Hilfe einer zusätzlichen PriorityManagement-Komponente berücksichtigt werden (z.B. für Notruf).
Instant-X Komponenten für OSGiBetreuer: Holger Schmidt, Jan-Patrick Elsholz
Im Rahmen des Instant-X Projektes soll eine Multimedia Middleware auf der Basis von OSGi entwickelt werden. Wichtige Funktionen einer typischen Multimedia Anwendung sollen durch OSGi Bundles der Middleware bereitgestellt werden. Im Rahmen des Praktikums können diverse Multimedia Komponenten implementiert werden, z.B. für Verhandlung, Signalisierung, Datenübertragung, Lokalisierung, etc (siehe auch auch Hauptseminar Multimediale Datenübertragung). Ziel eines Individualpraktikums ist es, jeweils ein derartiges Bundle zu erstellen und die entsprechende API zu dokumentatieren.
TestenBetreuer: Holger Schmidt, Jan-Patrick Elsholz
Diese ist ein optionales Meta-Praktikum und beschäigt sich mit dem Testen von Software. Die Aufgabe ist es, zunächst die Spezifikationen der anderen Instant-X Praktika einzusammeln, sich darauf Testfällee zu überlegen und zu implementieren. Im Anschluss sollen diese Testfälle gegen die realen Implementierungen in mehreren Testzyklen gefahren und sukzsessive verbessert werden bis sich am Ende die Spezifikationen mit den Implementierungen decken.
Fehlertoleranz und Replikation
Anmerkung: Die Themen Lock-freie Synchronisierung und Erweiterte Fehlertoleranz können auch als Zweierthema vergeben werden.
An der Universität Ulm wird im Rahmen des XtreemOS Projekts eine Java-Software entwickelt, die sogenannte Virtuelle Knoten realisiert. Virtuelle Knoten bieten fehlertoleranz indem sie eine als verteiltes Objekt realisierte Anwendung auf mehreren physikalischen Knoten gleichzeitig zur Ausführung bringen. Für den entfernten Nutzer einer solchen Anwendung ist diese Redundanz jedoch völlig transparent. Ein Nachteil von Replikationssysteme ist der erhöhte Aufwand, der sich auch in der Latez wiederspiegelt. Aus diesem Grund ist es erstrebenswert, die nebenläfige Ausführung von Anfragen zuzulassen. Eine zentrale Anforderung für den erfolgreichen Einsatz von Replikation ist jedoch in der Regel Determinismus, der durch nebenläfige Ausführung mit Standardschedulern jedoch zerstört wird. Aus diesem Grund wurden einige Schedulingalgorithmen entwickelt, die ein deterministisches Scheduling garantieren und dennoch Nebenläfigkeit zulassen.
Lock-freie SynchronisierungBetreuer: Jörg Domaschka
Die angesprochenen Schedulingalgorithmen funktionieren sind jedoch bisher nur mit Code, der zur Synchronisierung verschiedener Threads das von Java angebotene synchronized Schlüsselwort verwendet. Die seit Java 5 im Paket java.util.concurrent angebotene Mechanismen werden nicht unterstützt. Ziel des Praktikums ist es, einen Überblick über die dort angeboteten Konstrukte zu bekommen und sich mit ihrer Funktionsweise bekanntzumachen. Gleiches gilt für die Schedulingalgorithmen. Anschlißend soll ein Konzept erstellt werden, wie dies neuen Mechanismen in die Scheduler integriert werden können. Schließlich soll ein Teil des Konzeptes implementiert werden.
Lock-prediction für deterministische SchedulerBetreuer: Jörg Domaschka
Bisher wird der Programmfluss der Anwendung 1:1 auf Scheduleraufrufe abgebildet. Dies hat den Nachteil, dass viel Information, die im Programmfluss steckt und zur weiteren Optimierung genutzt werden könnte. Zum Beispiel könnte die Nebenläfigkeit oft erhöht werden, wenn der Scheduler über zukünftige Lockanfragen frühzeitig Bescheid wüsste; oder aber bekannt ist, ab welchem Zeitpunkt ein Thread keine weiteren Locks mehr anfordern wird. Details wurden bereits veröffentlich. Im Verlauf des Praktikums sollen erste Optimierungen implementiert werden.
Probing und Monitoring von Virtual NodesBetreuer: Jörg Domaschka
Die Evaluierung der verschiedenen Schedulingalgorithmen hat ergeben, dass ihr Nutzen stark von der Anwendung abhängt. Jedoch ist es schwer im Voraus zu bestimmen, welchen Algorithmus am besten für welche Anwendung geeignet ist. Aus diesem Grund ist es erstrebenswert, den Algorithmus erst zur Laufzeit zu bestimmen. Deshalb soll im Praktikum die bestehende Software so erweitert werden, dass sie verschiedene Parameter der Anwendung und deren Benutzung aufzeichnet und die gesammelten Daten von außen über eine Management Schnittstelle einsehbar sind.
Erweiterte FehlertoleranzBetreuer: Jörg Domaschka
Virtuelle Knoten bieten im derzeitigen Implementierungszustand lediglich Fehlertoleranz für crash-failure Verhalten. Im Verlauf des Praktikums soll ein Konzept erstellt und implementiert werden, wie die bestehende Software sicher gemacht werden kann, d.h. Integrität und Vertraulichkeit der Daten sichergestellt werden kann. In einem zweiten Schritt soll das Konzept auf Byzantinische Fehler erweitert werden. In diesem Fehlermodell können sich Replikate beliebig verhalten und so versuchen dem System zu schaden.
Software Transformation
Reimplementierung eines IDL-Codegenerators als LLTS-ProzessBetreuer: Andreas Schmied
Am Institut wurde ein flexibel konfigurierbarer Code-Generator IDLflex entwickelt, der für verschiedene Middleware-Systeme Adaptionscode mit spezifischen Anforderungen erzeugen kann. In dieser Arbeit soll gezeigt werden, dass die Features des IDLflex direkt als Untermenge des Code-Transformators LLTS umsetzbar sind. Als Nebenprodukt der Arbeit können die Programmiermodelle beider Werkzeuge verglichen werden.
Vergleich von AOP-Sprachen mit LLTS, Partielle ImplementierungBetreuer: Andreas Schmied
Populäre aspektorientierte Sprachen, wie z.B. AspectJ, bieten eine Fülle komplexer Features, um bestehenden Code um Aspektcode zu erweitern. LLTS bietet sich hier als Low-Level-Werkzeug an, um deren Semantik translational zu definieren. Nebenbei erhält man die Fähigkeit die Komposition von Aspekten in LLTS zu studiereren.
Erweiterung der Sprachmodelle für Java, XML, UMLBetreuer: Andreas Schmied
Das LLTS Transformationssystem ist prinzipiell nicht auf eine bestimmte Sprache festgelegt, sondern unterstützt die gleichzeitige Transformation mehrerer Sprachmodelle. In dieser Arbeit können bestehende Metamodelle erweitert oder neue geschaffen werden. Tiefe Kenntnisse von Compilerbau-Techniken sind nicht notwendig.
JVM Internals
Implementierung eines Copying Collectors für die JamVMBetreuer: Vladimir Nikolov
Im Rahmen dieses Praktikums soll ein "Copying Garbage Collector" für eine kleine Java Virtual Machine (die JamVM) implementiert werden. Die aktuelle JamVM Version verfügt über einen globalen Heapbereich und verwaltet die Lebensdauer der darin residierenden Klassenobjekte und Objekt-Instanzen mittels eines Mark/Sweep - Mark/Compact Garbage Collectors. Nach einer kurzen Einarbeitung in die "Internals" heutiger JVMs und speziell im Memory-Management der JamVM, soll ein Konzept für die Integration des Copying Collectors ausgearbeitet und implementiert werden. Dieser Collector verwaltet zwei separate Heapbereiche, die während der Laufzeit des Systems umgeschaltet werden und stets in kompakter Form vorliegen. Abschliessend sollen im Rahmen einer kurzen Evaluierung die Auswirkungen der neuen Garbage Collection-Methode auf die allgemeine Laufzeitperformance der modifizierten JamVM gemessen und mit der originalen JamVM verglichen werden. Dafüg sollen gängige Benchmark-Werkzeuge für Performance von JVMs (wie das SPEC JVM98) verwendet werden.
