Komplexpraktikum im Sommersemester 2003 - Aufgabenstellung

"Umsetzung eines Containers für Komponenten mit nichtfunktionalen Eigenschaften"

Im Projekt COMQUAD werden komponentenbasierte Systeme mit Quality of Service (QoS) -Anforderungen betrachtet. Wie alle komponentenbasierten Systeme laufen solche Anwendungen in einem Container ab, der den Komponenten gewisse Basisdienste zur Verfügung stellt. Neben den üblichen Diensten (Persistenz, Namensdienst, Transaktionalität etc.) stehen vor allem Dienste zur Aushandlung und Durchsetzung von QoS-Kontrakten im Vordergrund.

Abbildung: Grobkonzept

Für einen solchen Container entsteht im Moment in einer Diplomarbeit ein Konzept basierend auf dem Komponentenmodell von Enterprise Java Beans (EJB). Dieses Konzept soll im Rahmen des Komplexpraktikums prototypisch in einem Container umgesetzt werden. Im Rahmen des Komplexpraktikums bietet sich den Studenten die Möglichkeit, einen Blick hinter die Kulissen von EJB zu werfen und sich genauer mit der Funktionsweise von Komponentencontainern auseinanderzusetzen.


Dokumente:


Aufgabendetails:

Zunächst ist eine Verfeinerung des Konzepts bis auf die Ebene eines implementierungstauglichen Feinentwurfs nötig. Für die Implementierung lassen sich anhand des Grobkonzepts (s. Abbildung) die folgenden möglichen Teilaufgaben ableiten:

  1. Clientanbindung/Integration
  2. Implementierungsverwaltung
  3. QoS-Repository
  4. Vertragsmanager
  5. Proxies zur Durchsetzung von Verträgen
  6. Container-Management-Anwendung

Als Umsetzungsmöglichkeiten bieten sich Erweiterung von jBoss oder vollständige Neuimplementierung mit AspectJ an, jedoch können auch andere Wege gewählt werden. Eine aktuell sehr interessante Frage im Projekt COMQUAD ist die nach der besten Umsetzungsmöglichkeit. Bei ausreichender Zahl von Anmeldungen (ab ca. 10 Studenten) kann die Gruppe daher auch in zwei Untergruppen geteilt werden, die verschiedene Implementierungsvarianten umsetzen, so dass die Vor- und Nachteile am Ende verglichen werden können.

Da das Praktikum Teil der Forschungsarbeit im Projekt COMQUAD ist, ist ein wichtiges Ergebnis auch eine systematische und vollständige Dokumentation, Begründung und Bewertung aller getroffenen Entwurfsentscheidungen.

Clientanbindung/Integration

Der Fokus dieser Teilaufgabe liegt auf der Sicherstellung der Integration der anderen Teilbereiche. Zusätzlich sind die für die Anbindung von Client-Anwendungen an den entwickelten Container notwendigen Funktionen zu implementieren.

In den Bereich dieser Teilaufgabe gehört auch der Entwurf und die Implementation einer Beispielanwendung, die zum Testen des Containers und der Client-Anbindung genutzt werden kann.

Implementierungsverwaltung

Die Implementierungsverwaltung stellt ein Repository aller im Container installierten Komponenten dar. Sie ermöglicht es, alle Implementierungen einer funktionalen Spezifikation (vereinfacht: Schnittstelle) aufzufinden und gezielt zu instantiieren. Außerdem verwaltet sie in Zusammenarbeit mit dem Vertragsmanager die bereits instantiierten Komponenten und die Netze, in die diese eingebunden sind.

Beim Deployment werden den Komponenten Deployment-Deskriptoren im XML-Format mitgegeben. Zusätzlich zu den üblichen Informationen über die Komponenten enthalten diese:

QoS-Repository

Hier werden die QoS-Anforderungen und -Angebote der einzelnen Komponenten verwaltet. Das QoS-Repository erlaubt es, für eine gegebene Komponentenimplementierung die QoS-Information auszulesen. Diese Information wird in einem Objektmodell gespeichert, das gezielt auf die Verwendung bei der Vertragsaushandlung zugeschnitten ist.

Vertragsmanager

Der Vertragsmanager ist für die Aushandlung von Verträgen zwischen den Komponenten sowie für die Reservierung der Ressourcen über die Schnittstelle der Ressourcenverwaltung zuständig. Dabei geht es darum, ein Netz kooperierender Komponenteninstanzen zu erzeugen, wobei als Randbedingungen die gegebene funktionale Spezifikation der Zusammenarbeit und die nichtfunktionalen Spezifikationen der einzelnen Komponenten zu beachten sind.

Proxies zur Durchsetzung von Verträgen

Ausgehandelte Verträge werden durch Proxies fixiert. Diese dienen als Kommunikationsproxy der Durchsetzung der ausgehandelten Kooperationsbeziehungen, d.h. sie sorgen dafür, dass die richtigen Komponenteninstanzen miteinander kommunizieren, und als Ressourcenproxy der Annotation aller Ressourcennutzungen mit den von der Ressourcenverwaltung zugeteilten Handles, die eindeutig die reservierten Ressourcen kennzeichnen.

Container-Management-Anwendung

Zur Steuerung und Überwachung des Containers sowie zum Deployment von Komponenten ist eine Container-Management-Anwendung zu entwickeln. Diese stellt eine separate, Java-basierte Client-Anwendung dar, die verschiedene Steuerungsmöglichkeiten für den Container bietet. Besonders wichtig sind dabei die folgenden Funktionen:

  1. Komponentenmanagement, d.h. Installieren neuer Komponentenimplementationen in den Container sowie Entfernen von Komponentenimplementationen, die sich auf dem Container befinden.
  2. Überwachung des Containers, insbesondere soll es möglich sein, die Aktionen des Containers (Instantiierung von Komponenten, Aushandeln von Verträgen, Reservierung und Freigabe von Ressourcen) zu beobachten und zu protokollieren.

Da die direkte Anbindung an die Ressourcenverwaltung des Betriebssystems zunächst von Java aus nicht möglich sein wird, gehört es zu dieser Teilaufgabe, eine Simulation der Ressourcenverwaltung zu implementieren. Diese soll im Wesentlichen dem Benutzer die Möglichkeit geben, Ressourcenreservierungen manuell zu akzeptieren oder abzulehnen.


Letzte Änderung: 04.06.2003 , Falk Kemmel