Software Engineering (Software-Entwicklung)

  • type: practical course Software-Entwicklung (PSE)
  • semester: WS 12/13
  • lecturer: Markus Scholz, Martin Alexander Neumann
  • sws: 2

Point and Click

 

Intelligente Umgebungen bezeichnen Räume oder andere Bereiche, die mit vernetzten Geräten ausgestattet sind und von den anwesenden Personen direkt oder indirekt gesteuert werden können. Ein Beispiel sind sogenannte SmartHomes, die sich vor allem auf das halbautomatische Schalten von Geräten und Lichtern im Haus konzentrieren. Einfache Fernbedienungen zur direkten Interaktion können  nicht die volle Funktionalität unterstützen, da die limitierte Zahl der Tasten zu einer Mehrfachbelegung führt, die, wie bei einer Universalfernbedienung, das lästige Umschalten zwischen mehreren Profilen erfordert. Um diesen Prozess zu eliminieren, soll von den Teilnehmern eine Android-App entwickelt werden, welche nur Bedienelemente anzeigt, die zu dem Gerät gehören, auf das der Benutzer gerade zeigt. Um herauszufinden, um welches es sich dabei handelt, wird auf die 3D-Kamera Kinect zurückgegriffen, die die Gesten des Anwenders auswertet. Die anzusteuernden Geräte verfügen alle über einfache netzwerkbasierte Schnittstellen, mit denen sie kontrolliert werden können.

Ziel ist es ein Framework zu entwerfen und zu implementieren, welches die Integration heterogener Komponenten ermöglicht. Diese Komponenten beinhalten sowohl die Gestenerkennung der Kinect, die App auf dem Smartphone sowie die Ansteuerung der Geräte. Von den Teilnehmern kann bestimmt werden, auf welche Plattform sich die Entwicklung konzentriert; die Hauptfunktion der Anwendung kann sowohl auf Android-Handys als auch auf einem PC mit Java oder C# implementiert werden. Zu den Herausforderungen dieser Aufgabe zählt die Identifikation des Nutzers in den Daten der Kinect, als auch das Feedback an den Benutzer auf was er gerade zielt.

Design and Deploy

 

Unter dem Titel "Design and Deploy" beschäftigen wir uns in diesem PSE mit der Entwicklung (Design) und Ausbringung (Deploy) von verteilten Anwendungen in intelligenten Umgebungen. Eine intelligente Umgebung zeichnet sich dadurch aus, dass in ihr viele verschiedene Rechensysteme und Sensorik existieren. Diesen können entweder statisch in die Umgebung eingebettet sein (z.B. intelligenter Fernseher, Thermostat) als auch temporär (z.B. Mobiltelefon, neu installierter Sensor). Durch diesen zweiten Aspekt wird die Umgebung also veränderlich bzw. dynamisch. Geräte dieser Umgebung haben außerdem unterschiedliche Ressourcen zur Verfügung, zum Beispiel unterschiedliche Rechenkapazität und Speicher oder spezielle Sensorik. Es ist sowohl eine Herausforderung Anwendungen zu spezifizieren, die auf diesen Plattformen laufen, als auch optimale Verteilungen dieser Anwendungen umzusetzen. Anwendungen für diese heterogenen Umgebungen generisch zu gestalten und zentral anzubieten ist ein relevanter Vorteil, sowohl für Anbieter als auch für Anwender von Programmen.

Im Praktikum gilt es die Architektur eines verteilten Systems zu entwerfen und umzusetzen. Auf Basis einer Middleware für verteilte Systeme bieten einzelne Systeme und Sensoren ihre Fähigkeiten und verfügbaren Kapazitäten ihrem Netz an. Ein zentrales System bietet die Möglichkeit grafisch prozess-orientierte Anwendungen zu entwerfen, deren Prozess-schritte (Funktionsblöcke) mit Anforderungen zu annotieren, und diese im Netz verfügbaren Systemen und Sensoren anzubieten bzw. auf diese zu verteilen. Diese Verteilung ist beschränkt durch die Verfügbarkeit von benötigten Fähigkeiten, wie Sensoren, und optimiert in Bezug auf die faire Auslastung verfügbarer Kapazitäten.

Für das Praktikum bauen wir auf (eingebetteten und verteilten) Raspberry Pi Systemen, einem (zentralen) PC, und Java-Frameworks bzw. -Bibliotheken für Middlewares und Prozess-Modellierung auf. Die Teilnehmer können die verwendeten Frameworks selber bestimmen.