Grafische Konfiguration und Debugging der Programmierabstraktion Dynamische Mengen
Folgende Aufgabenstellung kann im Rahmen der Veranstaltungen Projekt oder KSWS umgesetzt werden. Die nachfolgenden Ausführungen dienen als Diskussionsgrundlagen. Die genauen Inhalte erarbeiten wir in persönlichen Gesprächen entsprechend der Gruppenstärke sowie Präferenzen.
Motivation
Anwendungen in den Domänen wie Ubiquitous Computing, Internet of Things oder Sensornetzwerken nutzen häufig Geräte aus verteilten, dynamischen Ensembles. Die genaue Zusammensetzung der erreichbaren Systemumgebung ist meist erst zur Laufzeit bekannt. Jedoch müssen Entwickler ihre Anwendung zur Entwurfszeit umsetzen. Hier unterstützen Programmierabstraktionen bei der Implementierung. So können bspw. Richtlinien in Form von Metadaten in der Anwendung spezifiziert werden, welche zur Laufzeit durch eine Ausführungsumgebung in konkrete Instruktionen überführt werden
Grundlage
Dynamische Mengen sind eine Programmierabstraktion, die es Anwendungsentwicklern erlauben gegen eine Schnitstelle zu programmieren, welches eine einzelne Instanz repräsentiert, jedoch durch die Laufzeitumgebung mehrere Instanzen verwalten kann [1, 2]. Entsprechend der Selektionskriterien werden Funktionsaufrufe repliziert und mehrere Rückgabewerte aggregiert. Neben der programmatischen Konfiguration über Annotationen oder API-Aufrufe soll Nutzern auch die grafische Konfiguration sowie Zustandsrepräsentation zur Laufzeit gegeben werden.
Ziel der Arbeit
Eingehend werden die zu erfüllenden Anforderungen gegen bestehende GUI-(Web-)Frameworks evaluiert. Anschließend wird eine entsprechende Client- oder Web-Anwendung konzipiert, prototypisch implementiert und evaluiert, welche Instanzen von Dynamischen Mengen an ausgewählten Middleware-Brokern einer Testumgebung visualisiert sowie deren Konfiguration und Status ermöglicht. Damit sollen die folgenden Fragestellungen bezüglich der grafischen Repräsentation von und der Interaktion mit dynamischen Mengen zu diskutiert werden:
- In welchem Umfang sind Konfigurationen dynamischer Mengen über grafische Oberflächen möglich?
- Wie lassen sich Konfigurationen in verteilten Umgebungen effizient und konsistent speichern und abrufen?
- Wie werden deklarative/imperative Selektionskriterien (auf Basis von Attributen und Vererbung) grafisch repräsentiert und aktualisiert sowie die Datenbindung übersetzt?
- Wie lassen sich Standardfunktionen für Replikation sowie Aggregation (avg, median, first, max, ...) aus vorhandenen Bibliotheken auswählen und eigene Implementierungen integrieren?
- Wie lassen sich generische Funktionserweiterungen für Mengen in die gegebenen Basis-Schnittstellen einweben, vgl. [2, Sect. 4.2, Bsp. StepSwitch]?
- Wie lassen sich Dienstgüteparameter (QoS) grafisch konfigurieren, bspw. Time-out, Round-robin-Auswahl von Teilmengen?
- Bis zu welchem Detailgrad lassen sich Zustände von Dynamischen Mengen und entfernten gebundener Entitäten benutzerfreundlich sowie die Visualisierung von Nachrichtenflüssen und eine abrufbare Historie darstellen entsprechend deren Anzahlen und der Displaydimension?