Entwicklung verteilter Geräte und Anwendungen für die UPnP
Transcrição
Entwicklung verteilter Geräte und Anwendungen für die UPnP
Entwicklung verteilter Geräte und Anwendungen für die UPnP Plattform unter besonderer Berücksichtigung automatisch generierter User Interfaces Jakob S. Doppler DIPLOMARBEIT eingereicht am Fachhochschul-Masterstudiengang Digitale Medien in Hagenberg im Juni 2006 c Copyright 2006 Jakob S. Doppler Alle Rechte vorbehalten ii Erklärung Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt und die aus anderen Quellen entnommenen Stellen als solche gekennzeichnet habe. Hagenberg, am 26. Juni 2006 Jakob S. Doppler iii Inhaltsverzeichnis Erklärung iii Vorwort vii Kurzfassung viii Abstract ix 1 Einleitung 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Abgrenzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Technische Begriffserklärungen 2.1 Bluetooth . . . . . . . . . . . . . . . . 2.1.1 Technische Details . . . . . . . 2.1.2 Architektur . . . . . . . . . . . 2.1.3 Profile . . . . . . . . . . . . . . 2.1.4 Vergleichbare Funktechnologien 2.2 Service-Plattformen . . . . . . . . . . 2.2.1 JINI . . . . . . . . . . . . . . . 2.2.2 UPnP . . . . . . . . . . . . . . 2.2.3 OSGi . . . . . . . . . . . . . . 1 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 5 7 7 8 8 11 15 3 Geräte 3.1 Szenario . . . . . . . . . . . . . . . . . . . . . 3.2 Konzept . . . . . . . . . . . . . . . . . . . . . 3.3 UPnP-Technologie . . . . . . . . . . . . . . . 3.4 Implementierung . . . . . . . . . . . . . . . . 3.4.1 Sensor-Hardwaredevice . . . . . . . . . 3.4.2 Webcam Streaming-Server und Client 3.4.3 UPnP-Winamp Media Player . . . . . 3.4.4 MIDI-Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 18 19 19 20 23 26 26 iv . . . . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS v 4 Generierung grafischer User Interfaces 4.1 Anforderungen im GUI-Design . . . . . . . . . . . . . . 4.2 Anforderungen im Pervasive Computing . . . . . . . . . 4.2.1 Kontext-sensitive und verteilte Anwendungen . . 4.2.2 Geräteeigenschaften . . . . . . . . . . . . . . . . 4.3 Techniken der GUI-Entwicklung . . . . . . . . . . . . . . 4.3.1 Window Manager und Toolkits . . . . . . . . . . 4.3.2 Web-basierte Entwicklungen . . . . . . . . . . . . 4.3.3 Interaktive GUI-Builder . . . . . . . . . . . . . . 4.4 XML GUI-Sprachen . . . . . . . . . . . . . . . . . . . . 4.4.1 XAML . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2 XUL . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 XForms . . . . . . . . . . . . . . . . . . . . . . . 4.4.4 UIML . . . . . . . . . . . . . . . . . . . . . . . . 4.4.5 XIML . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Model-based User Interface . . . . . . . . . . . . . . . . 4.5.1 User Interface Generierung . . . . . . . . . . . . 4.5.2 Projekt – Pebbles Personal Universal Controller 4.5.3 Projekt – Supple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 29 30 30 31 32 32 32 34 34 35 36 36 38 39 42 44 44 48 5 GUI-Builder 5.1 Konzept . . . . . . . . . . . . . . . . . . . . . . 5.1.1 System-Schnittstellen . . . . . . . . . . 5.1.2 Setup . . . . . . . . . . . . . . . . . . . 5.2 Implementierung - PC . . . . . . . . . . . . . . 5.2.1 Entwicklung mit OSGi . . . . . . . . . . 5.2.2 Systemaufbau . . . . . . . . . . . . . . . 5.2.3 GUI-Generator . . . . . . . . . . . . . . 5.2.4 UI-Erweiterungen . . . . . . . . . . . . 5.3 Implementierung - Smart Phone . . . . . . . . 5.3.1 Entwicklung mobiler Java-Anwendungen 5.3.2 Gateway . . . . . . . . . . . . . . . . . . 5.3.3 Mobile Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 54 56 56 56 58 60 66 70 71 72 74 6 Fazit 6.1 Erreichte Ziele . . . 6.1.1 Geräte . . . . 6.1.2 GUI-Builder 6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 79 79 79 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Inhalt der CD-ROM 82 A.1 Diplomarbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 A.2 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 A.3 Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 INHALTSVERZEICHNIS A.4 Quellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Literaturverzeichnis vi 83 84 Vorwort Mit der Fertigstellung der vorliegenden Diplomschrift geht ein weiterer Abschnitt in meinem Leben zu Ende. Der Blick zurück an den Beginn des Studiums lässt mich kaum glauben, dass seither fünf Jahre vergangen sind. Auch wenn die Zeit an der Fachhochschule Hagenberg mit viel Arbeitsaufwand und Engagement verbunden war, möchte ich sie dennoch nicht missen. Viele gute Erinnerungen und lehrreiche Erfahrungen in fachlicher als auch in menschlicher Hinsicht tragen zu diesem positiven Eindruck bei. Die Faszination der Technik liegt für mich in ihrer gestalterischen Schaffenskraft, die, wenn sie mit Wissen und Gewissen eingesetzt wird, Großartiges vollbringen kann. Ich hoffe mit meiner Arbeit einen kleinen Teil zu einem technologischen Fortschritt beizutragen, der in Einklang mit den Bedürfnissen und Werten unserer Gesellschaft steht. Daher scheint es auch angemessen, jene Personen zu nennen, die mir das Gefühl geben eben dieses erreichen zu können. Im Rahmen einer mehrjährigen Forschungsarbeit konnten mit meinem Projektpartner und Freund Bernhard Wally neue Aspekte einer intelligenten und vernetzten Gerätelandschaft beleuchtet werden, wie sie in ein paar Jahren vielleicht in jedem Haushalt zu finden sein wird. Dafür und für die vielen, teils lustigen Stunden gemeinsamen Wirkens sei ihm gedankt. Auch meinem Betreuer DI Dr. Christoph Schaffer, der mir im Laufe meines Diplomstudiums in zahlreichen Gesprächen mit guten Ratschlägen und fachlichem Wissen zur Seite gestanden ist, gilt mein besonderer Dank. Die Erkenntnis, dass das Leben neben der Schönheit der Technik auch noch andere, ebenso wichtige Facetten zu bieten hat, habe ich zweifelsohne meiner Familie und den zahlreichen, guten Freundschaften in Hagenberg und Gallneukirchen zu verdanken. Insbesondere sind hier meine Eltern Regina und Erwin Doppler genannt, die mir in vielen richtungsweisenden Entscheidungen, denen ich im Laufe meines bisherigen Lebens begegnete bin, geholfen haben und mir meine Ausbildung ermöglichten. vii Kurzfassung Getragen von der rasanten Entwicklung mobiler und eingebetteter Geräte, bringen einheitliche Kommunikationsstandards eine neue Qualität für die im Netzwerk verteilten Anwendungen. Es existiert der Wunsch nach intelligenten Diensten, die in der eigenen Umgebung und in verschiedensten Lebenssituationen in Anspruch genommen werden können. Ein weitgehend ungeklärter Aspekt in diesem Zusammenhang sind Automatismen für die Darstellung und Interaktion mit diesen verteilten Diensten. Im Rahmen der vorliegenden Arbeit werden auf Basis der UPnP ServicePlattform verschiedene Geräte und Anwendungen für ein mögliches Mediensteuerungsszenario beleuchtet. Der erste Schwerpunkt liegt in der Entwicklung von Eingabemedien. Anhand eines sensorbasierten Hardwaredevices und einer Kamera mit Bewegungserkennung soll in Verbindung mit einem UPnP-basierten Framework zur Verknüpfung von Gerätediensten die Fähigkeit zur dynamischen Vernetzung und Ansteuerung anderer, verteilter Geräte demonstriert werden. Im zweiten Teil werden Anforderungen für die automatisierte Generierung von User Interfaces zur Fernsteuerung der Dienste ermittelt. Der Benutzer soll unabhängig vom Ort und der Plattform des darstellenden Endgerätes mit den netzwerkbasierten Anwendungen interagieren können. Anhand zweier Prototypen für den PC und für das Smart Phone wird die technische Machbarkeit dieses Ansatzes gezeigt. viii Abstract Advances in mobile and embedded technology and communication standards for distributed device computing offer new opportunities for home appliances. This trends reflects a deep longing for smart and sophisticated services that help us in everyday life activities. But taking automated representation and interaction with these services into account, there are still a number of open issues. The present thesis deals with research and development of various applications and devices that are based on the UPnP service platform. The first idea places emphasis on prototyping input devices for a UPnP-based media control framework. Thus methods for integrating a sensor-based device and a monitoring camera for motion detection have to be found. The second part covers research on automated user interface generation for distributed network services. Since users should not be restricted in choosing their favorite environment for application usage, two GUI building applications to remotely control these services were implemented. The first one is based on the PC platform. The second one tries to employ the remote control metaphor by using a smart phone. ix Kapitel 1 Einleitung Längst hat sich das Internet als globales Kommunikationsnetzwerk etabliert. Waren die Anfänge des Mediums vorrangig von der schnellen Verbreitung und Beschaffung von Informationen geprägt, so kam im Laufe der Zeit ein weiterer Aspekt zur Geltung: Die Nutzung von automatisierten Dienstleistungen in Echtzeit zeigte neue Qualitäten der Vernetzung auf und sicherte deren nachhaltigen Erfolg. Analog dazu vollzog sich auch im Softwaredesign ein grundlegender Wandel von maßgefertigten Einzellösungen zu der Idee von interoperablen Applikationen, die durch die gemeinsame Standardisierung von Technologien getragen wird. Erwähnenswert hierfür ist die universelle Beschreibungssprache XML (Extended Markup Language), die für die Repräsentation verschiedenster Daten herangezogen wird. Diese Entwicklung entfacht den Wunsch nach intelligenten Diensten, die auch in der eigenen Umgebung und in verschiedensten Lebenssituationen in Anspruch genommen werden können [13]. Der Benutzer soll unabhängig von Ort und Zeit mit kontextsensitiven Anwendungen1 interagieren können. Möglich wird dies durch die zunehmende Verbreitung von Embedded Systems2 und mobilen Endgeräten wie dem PDA (Personal Digital Assistant), dem Mobiltelefon oder dem Laptop, die mit Nah- und Fernfunktechnologien ausgestattet sind. In diesem Zusammenhang spricht man von Ubiquitous Computing 3 . Die Begriffe bezeichnen die alles durchdringende Vernetzung von intelligenten Gegenständen“ des Alltags [40]. Organisationen wie die ” Digital Living Network Association (DNLA)4 beschäftigen sich mit den Anforderungen, die es am Weg zur universellen Vernetzung von Gerätediensten im Haushalt zu erfüllen gilt und dem möglichen Mehrwert, der daraus generiert werden kann. 1 Kontextsensitive Anwendungen besitzen die Fähigkeit, sich an aktuelle Gegebenheiten und Umwelteinflüsse anzupassen. 2 Eingebettete“ Computersysteme, die für den Benutzer - meist unsichtbar - Dienste ” verrichten und auf spezialisierter Hardware basieren und mit Sensoren ausgestattet sind. 3 auch Pervasive Computing 4 DNLA - http://www.dnla.org 1 KAPITEL 1. EINLEITUNG 1.1 2 Motivation Der Grundstein für die Realisierung der Vision einer pervasiven Umgebung scheint mit den fortschreitenden Entwicklungen von mobilen und EmbeddedTechnologien gelegt. Ein weitgehend ungeklärter Aspekt hingegen sind Standards und Automatismen für die Darstellung und Interaktion mit verteilten Diensten. Service-Plattformen wie Universal Plug and Play (siehe Kapitel 2.2.2) sind plattformunabhängige Software-Bibliotheken, die dem Entwickler die große Verantwortung hinsichtlich einheitlicher Geräteschnittstellen und automatischer Erkennung der Netzwerkdienste abnehmen und diese von einem beliebigen Ort aus fernsteuerbar und überwachbar machen. Sie treffen jedoch keine Entscheidungen hinsichtlich der Repräsentation der Interaktionsdaten. Aus diesen Überlegungen entsteht die Idee sowohl Eingabegeräte für den Einsatz in einem Mediensteuerungsszenario zu entwickeln, als auch Forschung in Richtung der automatisierten Generierung von User Interfaces zur Fernsteuerung von verteilten Geräten zu betreiben. Erstere ist Teil eines lang ersehnten Wunsches, den PC als vorrangiges Interaktionsmedium für computerisierte Dienste ablösen zu können. In diesem Zusammenhang wird ein Weg gesucht, um Sensorik und die Bewegungserkennung einer Kamera als Auslöser zur Steuerung verteilter Netzwerkdienste nutzen zu können. Die zweite Idee befasst sich mit Interaktionen, in denen ein Display hingegen notwendig und sinnvoll ist. Hierfür muss ein Konzept zur automatisierten Generierung von User Interfaces im Kontext verteilter Geräte und Anwendungen erstellt werden. Möglich wird dies durch die Architektur von UPnP. Wird ein neues Gerät dem Netzwerk hinzugefügt, werden alle interessierten Teilnehmer darüber informiert und erhalten eine funktionale Beschreibung der Gerätedienste. Diese Beschreibung kann genutzt werden, um ein Interface zur Steuerung des Gerätes darzustellen. Da die Problemstellung der automatisierten Generierung von User Interfaces nicht alleine auf die Domäne der verteilten Netzwerke beschränkt ist, gibt es einige, vielversprechende Ansätze. Mehrere XML-basierte Sprachen und GUI-Building Systeme (siehe Kapitel 4) bieten Lösungsansätze auf verschiedenen Abstraktionsebenen an. Diese reichen von einer konkreten Beschreibung und Positionierung der Steuerelemente bis hin zu einer Verknüpfung zwischen den Interaktionsdatentypen der Gerätefunktion und abstrakten Elementen, denen abhängig von den Vorgaben der Plattform eine andere grafische Repräsentation zukommt. 1.2 Abgrenzung Ziel der Arbeit ist die Nutzung der UPnP Service-Plattform zur Erstellung netzwerkbasierter Geräte, die in einen Wohn- und Arbeitsraum integriert KAPITEL 1. EINLEITUNG 3 werden können und entweder passiv Informationen über Personen in der Umgebung beziehen oder als physisches Interaktionsmedium einsetzbar sein sollen. Zudem müssen, um im Netzwerk verteilte Gerätedienste unter einem gemeinsamen User Interface Standard ansprechen zu können, bestehende User Interface-Auszeichnungssprachen und GUI-Building Systeme zur Fernsteuerung einer UPnP-Gerätelandschaft evaluiert werden. Anhand prototypischer Implementierungen soll der Einsatz der Technologie in einem Mediensteuerungsszenario gerechtfertigt werden. Dazu zählen mit einem Sensormodul und einer Kamera zur Bewegungserkennung mehrere UPnP-fähige Geräte. Weiters soll die Generierung grafischer User Interfaces zur Fernsteuerung der verteilten Anwendungen am PC und für die Smart Phone-Plattform demonstriert werden. Die Arbeit ist in zwei Bereiche unterteilt. Der erste befasst sich mit den technischen Vorrausetzungen und der Erstellung der Geräte. Im zweiten Teil werden die Ergebnisse der Recherche zur automatisieren User Interface Generierung anhand zweier Prototypen beleuchtet. Die Schwerpunkte umfassen jeweils zwei Kapitel: Kapitel 2 stellt die technischen Vorraussetzungen für die Arbeit mit den Geräten vor. Es wird der Funkstandard Bluetooth beleuchtet und die Wahl UPnP als bevorzugte Service-Plattform vorgestellt. Kapitel 3 versucht mit einem pervasiven Szenario die Intention der Arbeit zu erklären und beleuchtet anhand der entwickelten Geräte den ersten Teil der Implementierung. Kapitel 4 beschäftigt sich mit vorhandenen Systemen und XML-Sprachdefinitionen rund um das Thema einer generischen Beschreibung und Generierung von grafischen Benutzeroberflächen. Kapitel 5 demonstriert und dokumentiert die praktische Anwendbarkeit einer generischen Mediensteuerung für verteilte Geräte anhand zweier prototypischer GUI-Builder Anwendungen für PC und Smart Phone. Kapitel 6 ist eine Zusammenfassung der gewonnenen Erkenntnisse und wagt einen Ausblick in die nahe Zukunft. Kapitel 2 Technische Begriffserklärungen 2.1 Bluetooth Durch den Bedarf einer kostengünstigen Technologie mit niedrigem Energieverbrauch als Ersatz für kabelgebundene Kommunikation, wurde 1994 von dem Mobilfunkunternehmen Ericsson die Bluetooth-Technologie1 ins Leben gerufen. Das rege Interesse namhafter Hersteller wie IBM, Intel und Nokia führte zur Gründung des Entwicklerkonsortiums Bluetooth Special Interest Group (Bluetooth SIG)2 und zur Erhebung von Bluetooth zum Industriestandard gemäß IEEE3 802.15.1. Wenngleich auch die flächendeckende Einführung von Anfang an in einer allgemeinen Euphorie prognostiziert wurde, vergingen einige Jahre bevor die Akzeptanz gegeben und eine genügende Verbreitung an Endgeräten mit Bluetooth-Hardware gegeben war. 2.1.1 Technische Details Die Datenübertragung bei Bluetooth erfolgt über das lizenzfreie ISM-Frequenzband im Bereich zwischen 2,400 GHz und 2,480 GHz [31]. Da dieses Band jedoch von einer Vielzahl an Funktechnologien, darunter auch der WLAN-Standard (IEEE 802.11) oder die Schnurlostelefonie, genutzt wird, braucht es ein robustes Verfahren um die Übertragungsqualität zu gewährleisten. Diese Robustheit wird durch ein Frequenzsprungverfahren (Frequency Hopping) garantiert. Darunter versteht man den Wechsel des Trägersignals alle 625 µs zwischen den bei Bluetooth definierten 79 Frequenzstufen im 1-MHz Abstand. Die maximale Übertragungsrate liegt dabei in den Versionen 1.1 und 1.2 bei 723,1 kbit/s und in der verbesserten Version 2.0 EDR 1 Bluetooth - http://www.bluetooth.com/ Bluetooth SIG - https://www.bluetooth.org/ 3 IEEE (Institute of Electrical and Electronics Engineers) - http://ieee.org- eine Institution zur Standardisierung von Computertechnologien 2 4 KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 5 WAE WAP SDP TCP/UDP vCard/vCal IP OBEX PPP TCS BIN AT Command AUDIO RFCOMM L2CAP HCI LMP Baseband Bluetooth Radio Abbildung 2.1: Bluetooth Stack Architektur (siehe [31]). (Enhanced Data Rate) bei 2,1 Mbit/s. Um der Anforderung einer kostengünstigen und energiesparenden Funktechnologie gerecht zu werden, wurden drei Leistungsklassen für verschiedene Einsatzzwecke geschaffen. Klasse 1Geräte sind für eine Reichweite von bis zu 100 m bei einer Leistung von 100 mW konzipiert. Am anderen Ende liegen Klasse 3-Geräte mit 1 m und 1 mW. Die breite Palette der Unterhaltungselektronik und mobilen Endgeräte arbeitet mit Klasse 2-Chips bei einem Verbrauch von 2,5 mW und einer Reichweite bis zu 10 m [31]. In einem Bluetooth Netzwerk (Piconet) können sich bis zu 65.000 Geräte befinden, von denen jedoch nur acht aktiv sein dürfen. Ein Master-Gerät sorgt für sie Synchronisation der sieben Slaves. Ein Bluetooth-Teilnehmer kann sich in mehreren Netzwerken aufhalten, wodurch eine netzwerkübergreifende Kommunikation möglich wird. Der Zusammenschluss mehrerer Piconets bezeichnet man als Scatternet. 2.1.2 Architektur Der Bluetooth Protokollstack wurde von der Bluetooth SIG entworfen und enthält eine Sammlung hierarchisch angeordneter Protokolle (siehe Abbildung 2.1). Erklärte Designziele waren eine bindende Richtlinie für die Implementierung von Bluetooth-Geräten und maximale Interoperabilität durch die Wiederverwendung älterer Kommunikationsprotokolle in den höheren Schichten. Die Protokolle werden in vier grundlegende Schichten eingeteilt [31] (siehe Tabelle 2.1.2). KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN Protocol Layer Bluetooth Core Protocols Cable Replacement Protocol Telephony Control Protocols Adopted Protocols 6 Protocols Baseband, LMP, L2CAP, SDP RFCOMM TCS Binary, AT-commands PPP, TCP/UDP/IP, OBEX, WAP, vCard, cCal, IrMC, WAE Tabelle 2.1: Bluetooth-Architektur Protokollschichten (siehe [5]). Core Protocols: Das Baseband sorgt für die physikalische Verbindung und die Synchronisation der Netzwerkteilnehmer mittels des zuvor erwähnten Frequenzsprungverfahrens. Echtzeitkritische Audiodaten werden ebenfalls ohne zusätzlichen Overhead über dieses Protokoll übertragen. Das Link Manager Protocol (LMP) ist für den Verbindungsaufbau zwischen den Bluetooth-Geräten sowie Authentifizierung und Verschlüsselung zuständig. Das Logical Link Control and Adaption Protocol (L2CAP) fungiert als Vermittlungsschicht zwischen höherliegenden Protokollen und dem Host Controller Interface (HCI). Geräte- und Dienstinformationen können nach erfolgreicher Verbindung mit dem Simple Discovery Protocol (SDP) abgefragt werden. Cable Replacement Protocol - RFCOMM: Zur Emulation des seriellen Datenübertragungskanal RS232 wurde die RFCOMM -Schnittstelle geschaffen. Dadurch können eine große Anzahl an höherliegenden Protokollen ohne Anpassungsaufwand auch über Bluetooth Funk betrieben werden. Telephony Control Protocols: Auf Empfehlung der International Telecommunication Union (ITU-T) flossen AT-Steuerkommandos (AT-commands) in die Bluetooth-Spezifikation mit ein. Das zusätzliche Telephony Control Protocol - Binary (TCS Binary) zeichnet sich für den Verbindungsaufbau von Daten- und Sprachübertragung verantwortlich. Adopted Protocols: Um mit IP basierten Protokollen wie TCP und UDP kommunizieren zu können, wurde das Point-to-Point Protokoll (PPP) entwickelt. Es verwaltet den Paketversand des Bluetooth-Gerätes und ermöglicht die Darstellung von Internetinhalten mit dem Wireless Application Protocol (WAP) und der aufbauenden Wireless Application Environment (WAE) Anwendungen. Object Exchange (OBEX) ist der InfrarotSpezifikation entnommen und ermöglicht den schnellen Austausch von Objekten ohne den Transportkanal, in diesem Fall RFCOMM, zu definieren. Ein Verwendungszweck ist das Synchronisieren von Kalendern (vCal) und das Austauschen von Business Cards (vCard). KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 2.1.3 7 Profile Im Vergleich zu anderen Funktechniken wie WLAN, die einmal spezifiziert werden und eine starre Auslegung verlangen, lebt die Bluetooth-Spezifikation vor allem durch ihre hochgradige Flexibilität und Erweiterbarkeit. Verantwortlich dafür ist der vielschichtige Aufbau der Bluetooth-Architektur. Um den verschiedenartigen Anwendungsmöglichkeiten für unterschiedliche Geräteklassen gerecht werden zu können, bedarf es eines komponentenbasierten Ansatzes, der es durch einfachen Austausch von Protokollen schafft, die gewünschten Szenarien abzudecken. Aufbauend auf einem generischen Protokollstack setzen spezifischere Protokolle auf, die in einer Vererbungshierarchie angeordnet sind [20]. Profile sind Kombinationen dieser Komponenten, die bestimmte Rückschlüsse auf den Aufbau und die Zusammensetzung des Bluetooth Protokollstacks zulassen. Die Interoperabilität zwischen zwei Bluetooth-Geräten ist von der Unterstützung der gemeinsamen Profile abhängig. Beim Verbindungsaufbau tauschen die Teilnehmer diese aus und ermitteln, ob sie zueinander kompatibel sind. Es existiert eine Vielzahl an Profilen, die unter anderem die Synchronisation und Vernetzung, den Austausch von Daten und Dokumenten, die Ein- und Ausgabe auf Endgeräten (FAX, Drucker) oder die Übertragung von Audiodaten über Headset und Mobiltelefon definieren. Erwähnenswert ist in diesem Zusammenhang eine Reihe an Profilen, die für die Mediensteuerung interessant sind. Das Personal Area Network -Profil definiert, wie sich alle in Reichweite befindlichen Geräte zu einem Ad-Hoc PAN-Netzwerk zusammenschließen können und Zugang zu einem LAN erhalten. Einen weiteren Schritt in Richtung Vernetzung von Diensten geht die Bluetooth SIG mit dem Entwurf für das Extended Service Discovery Protocol (ESDP), das zur Erkennung von UPnP Geräten herangezogen werden soll. Die Liste der Profile ist einer ständigen Veränderung unterworfen und wird von der Bluetooth SIG verwaltet4 . 2.1.4 Vergleichbare Funktechnologien Im den letzten Jahren entwickelte sich rund um die Idee des Mobile Computing und die dadurch gewonnene Ortsunabhängigkeit ein kompetitives Geschäft. Neben Bluetooth drängen eine Menge ähnlicher Technologien auf den Markt und eine steigende Anzahl an multifunktionalen Endgeräten mit unterschiedlichsten Anforderungen tragen ihren Teil dazu bei, dass die Wahl nicht immer leicht fällt. Waren die Grenzen zwischen Wireless LAN und Bluetooth anfangs noch relativ klar definiert, kann eine Überschneidung mit Technologien wie ZigBee, Near Field Communication (NFC) und Radio Fre4 Eine aktuelle Liste der Bluetooth Profil-Spezifikationen findet sich unter http:// bluetooth.com/Bluetooth/Learn/Technology/Specifications/. Eine Liste der Entwürfe ist unter https://www.bluetooth.org/spec/ abrufbar KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 8 quency Identification (RFID) nur schwer geleugnet werden5 . Dies ruft auch unweigerlich Probleme in der Standardisierung durch die IEEE auf den Plan, wie sie im aktuellen Formatstreit um Ultra Wide Band (UWB), das als Basis für das zukünftige drahtlose USB gilt, ersichtlich sind. Bluetooth wird dennoch an den Spezifikation der beiden gegensätzlichen Konsortien WiMedia Alliance6 und dem UWB Forum7 mitwirken, verspricht UWB doch große Datenübertragungsraten bei niedrigstem Energieverbrauch. 2.2 Service-Plattformen Technologien wie Jini 8 und Universal Plug and Play (UPnP)9 wurden entwickelt, um Ordnung in die heterogene Landschaft verteilter Geräte und Dienste zu bringen und die gegenseitige Kommunikation zu ermöglichen. Neben der einheitlichen Kommunikationsschnittstelle ist auch die automatisierte Ad-Hoc-Vernetzung und Diensterkennung (Service Discovery) ein vorrangiges Ziel10 . Unter Ad-Hoc versteht man in der Informatik-Terminologie die Vernetzung meist mobiler Geräte ohne das Vorhandensein einer festen Infrastruktur. Die Konzepte und Unterschiede der beiden Standards werden im folgenden Kapitel näher erläutert. Im Anschluss wird mit OSGi ein generisches Service-Framework Open Service Gateway Initiative (OSGi)11 vorgestellt, das die beiden konkurrierenden Netzwerk-Technologien in einem gemeinsamen Standard zu vereinen versucht. 2.2.1 JINI Allgemeines Jini wurde 1999 als verteilte Netzwerktechnologie schon viele Jahre vor UPnP ins Leben gerufen. Die Architektur wurde von Sun entworfen und verwendet gängige Java-Technologien [35]. Jini kann auf einem beliebigen Netzwerkprotokoll aufsetzen, ist aber an eine vorhandene Laufzeitumgebung, die Java Virtual Machine (JVM), und dadurch an die Konzepte der Programmiersprache Java gebunden. Dies ist ein entscheidender Nachteil im Vergleich zur generischeren Auslegung des Konkurrenten UPnP (siehe Kapitel 2.2.2) Auf Basis der Virtual Machine setzten Jini’s eigene Netzwerkprotokolle und das Java Remote Methode Invocation-Modell (RMI) für den Aufruf von entfernten Objekten im Netzwerk auf. Die Jini-Bibliothek umfasst die oberen 5 Eine Gegenüberstellung verschiedener Wireless-Technologien und deren Einsatzzwecke findet sich unter http://bluetooth.com/Bluetooth/Learn/Technology/Compare/ 6 WiMedia Alliance - http://www.wimedia.org 7 UWB Forum - http://www.uwbforum.org/ 8 Jini - http://www.jini.org 9 UPnP - http://www.upnp.org/ 10 Ein Überblick über bestehende Protokolle zur Diensterkennung finden sich in [25] 11 OSGi - http://osgi.org/ KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN Java Spaces 9 Other Services Lookup Discovery & Join Jini RMI Java Virtual Machine Abbildung 2.2: Jini Architektur (siehe [24]). Schichten: das Discovery-Managment, den darüber liegenden Lookup-Service und die Applikationsschicht, die sich in Client-Anwendungen, den dazugehörigen Services und unabhängigen Netzwerkservices genannt JavaSpaces gliedert (siehe Abb. 2.2). Kommunikationsmodell Das Jini-Kommunikationsmodell wird von drei Komponenten getragen. Ein Service Provider, im Java Jargon auch als Djinn bezeichnet, stellt einem Netzwerk seine Dienste zur Verfügung. Dazu wird für jeden Dienst ein Dienstobjekt und eine Liste von Attributen mit Serviceinformationen in einer speziell dafür vorgesehenen Java-Klasse erstellt. Dienstobjekte stellen für den Service Provider ein Interface zur Verfügung, mit der er seine Fähigkeiten präsentieren kann. Der Service Provider sendet diese Information an einen Lookup Service und wird dort registriert. Jeder Lookup Service ist ebenfalls ein Dienst und die Anlaufstelle für Jini-Clients die nach Services Ausschau halten. Will ein Client einen Service in Anspruch nehmen, so erhält er aus dem Index des Lookup Services die benötigte Information, um den Dienst am Service Provider eigenständig aufrufen zu können. Die Kommunikation zwischen den Teilkomponenten (Abb. 2.3) wird in die Phasen Discovery, Join, Lookup und Service Call eingeteilt: Discovery: Eine Netzwerkkomponente oder ein Service nutzen das Multicast Request Protocol um beim Start nach Jini Netzwerken und speziell Lookup Services suchen und durchsuchen zu können. Das Multicast Announcement Protocol findet beim Start eines neuen Lookup Services Verwendung, damit dieser potentiellen Clients seine Verfügbarkeit mitteilen kann. Auch beim Ausfall und neuerlichen Eintreten eines Lookup Services in das Jini-Netzwerk kommt dieses Protokoll zum Einsatz. Das Unicast Discovery Protocol wird von Netzwerkteilnehmern verwen- KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 10 Lo o in Jo Se rv ice nd ya er ov sc Client Di Re fe re nc e ku p Lookup Service Service Call Service Provider Abbildung 2.3: Das Jini-Kommunikationsmodell (vereinfachte Darstellung aus [24]). det, um gezielt mit einem Lookup Service kommunizieren zu können. Als Vorraussetzung für eine erfolgreichen Discovery-Prozess gilt die Netzwerkunterstützung von Multicast und Broadcast-Nachrichten. Join: Diese Phase beschreibt die Prozedur der Service-Registrierung bei verschiedenen Lookup Services. Der Service Provider meldet ein Dienstobjekt und die Attributliste an und gibt bekannt, über welche Zeitdauer der Dienst dem Netzwerk zur Verfügung steht. Um die Netzlast zu reduzieren können mehrere Lookup Services auch in logische Gruppen zusammengefasst werden, die der Service Provider einheitlich mit einer Mulitcast Discovery Nachricht ansprechen kann. Jeder Dienst weiß welcher Gruppe er zugeordnet ist. Lookup: Mit Lookup bezeichnet man den Vorgang den ein Client anstößt, wenn er auf der Suche nach einem Dienst ist. Wird er bei einem Lookup Service fündig, so erhält er eine Kopie des Dienstobjektes. Für die Kommunikation wird eine RMI-Verbindung hergestellt, die das dynamisch Laden von Programmteilen und das Ausführen von nicht-lokalen Prozessen auf einer anderen Virtual Machine erlaubt. Service Call: Mit dem Erhalt des Dienstobjektes bekommt der Client die Möglichkeit, direkt mit dem Service Provider zu kommunizieren und den Service in Anspruch zu nehmen. Weitere Konzepte Eventing: Ähnlich dem UPnP-Modell können sich Objekte als Service Listener bei einem Dienst eintragen und werden beim Eintreten eines Ereignisses über die Zustandsänderung informiert. KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 11 Leasing: In Jini wird die temporäre Nutzung der Ressourcen eines Services als Leasing bezeichnet. Ein Client kann nach Absprache mit dem Service Provider einen Zeitrahmen definieren, in dem er den Dienst in Anspruch nehmen darf. Wird bis zum Ablaufs des Abonnements keine Erneuerung der Vereinbarung beantragt, so gibt der Provider die Ressourcen wieder frei. 2.2.2 UPnP Allgemein Universal Plug and Play ist eine offene, verteilte Netzwerkarchitektur, die automatischen Verbindungsaufbau, Steuerung und Datenaustausch zwischen Geräten im Heim- und Office-Bereich auf Basis von TCP/IP und Internettechnologien ermöglicht. Die Entwicklung des Gerätesteuerungssystems wird von namhaften Firmen unterstützt und versucht die Charakteristika des Plug and Play-Paradigmas auf bestehenden Netzwerkstandards umzusetzen und mit verteilter und unabhängiger Applikationslogik zu verbinden. Ein beliebiges Gerät kann somit dynamisch einem Netzwerk hinzugefügt werden, seine Dienste offerieren und über die Verfügbarkeit und Serviceleistungen anderer Geräte lernen. Die Merkmale von UPnP umfassen: • Automatische Geräte- und Serviceerkennung, Konfiguration und Integration (zero configuration). • Abstraktion der Netzwerktopologie zugunsten einer einfachen Bedienung ( invisible“ networking). ” • Plattform-, protokoll- und geräteunabhängige Kommunikation und Datenaustausch. Bedingt durch die Flexibilität der Architektur ist auch eine Anpassung von Technologien und Mediengeräten mit nicht IP-konformen Protokollen möglich. Der Implementierungsaufwand für herstellerspezifische Gerätetreiber ist damit ebenfalls überflüssig, da standardisierte Protokolle verwendet werden und dem Entwickler im Gegensatz zu Jini die freie Wahl der Programmiersprache und des Betriebssystems garantieren. Das UPnP Forum ist ein Konsortium das sich mit dem Design der Weiterentwicklung der UPnP-Kommunikation zwischen den Produkten verschiedener Hersteller beschäftigt. Praktisch alle namhaften Firmen in der ITBranche sind in diesem Forum vertreten12 . Komponenten Die UPnP-Architektur definiert zwei Komponententypen - das Gerät (Device) und die Steuerinstanz (Control Point). 12 UPnP Implementers Corporation - http://www.upnp-ic.org/ KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 12 Gerät: Ein UPnP-Gerät beinhaltet Dienste (Services) und kann in einer rekursiven Anordnung wieder Subgeräte (Embedded Devices) mit Diensten enthalten. Ein mögliche Anwendung wäre eine multifunktionale Stereoanlage, die sich aus verschiedenen Teilgeräten wie CD-Player, Mini-Disk, Kassettendeck, Radio und Uhr zusammensetzt. Diese bieten dem Benutzer abstrakte Services an (Multimedia-Steuerung, Zeitanzeige, Wecker). Diese Services enthalten wiederum Zustandsvariablen (state variables) und Aktionen (actions), die auf dem Gerät ausgeführt werden können (Ein- und Ausschalten, Starten und Stoppen eines Mediengerätes, Setzen und Auslesen der Zeit). Die funktionale Beschreibung dieser Eigenschaften ist in einer XMLDokumentenhierarchie im Gerät festgehalten, und wird im Netzwerk bekanntgegeben. Ausgehend von einem zentralen Dokument mit allgemeinen Geräteeigenschaften sind über relative Verweise weitere Service-Dokumente referenziert. Der untenstehende Code zeigt Teile der XML-Beschreibung eines Licht-Dienstes. Auffallend ist dabei die Kombination aus Zustandsvariable und zugehöriger Getter und Setter -Zugriffsaktion zum Setzen und Auslesen des Variablenwertes, wie sie in UPnP sehr häufig zu finden ist. Jeder Ein- und Ausgabeparameter einer Aktion ist an eine definierte Zustandsvariable gebunden. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 < actionList > < action > < name > SetPower </ name > < argumentList > < argument > < name > Power </ name > < r e l a t e d S t a t e V a r i a bl e> Power </ r e l a t e d S t a t e V a r i a b l e> < direction > in </ direction > </ argument > </ argumentList > </ action > < action > < name > GetPower </ name > < argumentList > < argument > < name > Power </ name > < r e l a t e d S t a t e V a r i a bl e> Power </ r e l a t e d S t a t e V a r i a b l e> < direction > out </ direction > </ argument > </ argumentList > </ action > </ actionList > < serviceStat eT a bl e > < stateVariable sendEvents = " yes " > < name > Power </ name > < dataType > boolean </ dataType > </ stateVariable > </ serviceStat eT a bl e > KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 13 UPnP Vendor UPnP Forum UPnP Device Architecture GENA SOAP SSDP HTTPMU HTTPU GENA HTTP UDP TCP IP Abbildung 2.4: Aufbau der UPnP Architektur (siehe [22]). Control Point: Der Control Point erlaubt die Entdeckung und Steuerung der Geräte. Er liest die Gerätebeschreibungen aus, um Informationen über die Dienste zu erhalten, kann Statusabfragen tätigen, Statusänderungen vornehmen und Aktionen aufrufen um Dienste in Anspruch zu nehmen. Aufbau der UPnP-Stack Architektur Aufbauend auf der IP-Adressierung in der Vermittlungsschicht des OSI/ISOReferenzmodells [36] setzt sich der UPnP-Stack aus folgenden, in Abb. 2.4 ersichtlichen, Protokollen und Technologien zusammen. Als Transportprotokoll für die Kommunikation kommt wahlweise TCP oder das ungesicherte UDP zum Einsatz. Darauf aufbauend werden Protokolle für die speziellen Anforderungen von UPnP bereitgestellt. Auf der UDP Seite sind dies HTTP Multicast over UDP (HTTPMU), HTTP Unicast over UDP (HTTPU) und die darin gekapselten Protokolle Generic Event Notification Architecture (GENA) und Simple Service Discovery Protocol (SSDP), die für die Geräteerkennung zuständig sind. Das bekanntere Protokoll HTTP wird auf der Basis von TCP für die Präsentation und Beschreibung benötigt. Simple Object Access Protocol (SOAP) kümmert sich um den Steuervorgang und HTTP und GENA zusammen sind für die Benachrichtigungen (eventing) im UPnP-Kommunikationsmodell zuständig. UPnP Networking Im Folgenden werden die einzelnen Phasen des in Abb. 2.5 dargestellten UPnP-Kommunikationsmodells beschrieben. Eine ausführliche Beschreibung von UPnP findet sich unter [38]. Addressing: Eine Voraussetzung für die automatische Geräteerkennung ist die Adressierung der Geräte. Diese erfordert das Vorhandensein eines KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 14 Addressing Discovery Description Control Eventing Presentation Abbildung 2.5: Die einzelnen Phasen des UPnP Networking Modells (in Anlehnung an [38]). DHCP-Clients am Gerät. Der Client sucht beim Anschluss an das Netzwerk nach einem DHCP Server und bekommt nach der Anmeldung eine IP Adresse zugewiesen. Ist keine Unterstützung von DHCP gegeben, so muss das Device AutoIP verwenden. Discovery: Nachdem das Device erreichbar ist, beginnt es eigenständig seine Dienstleistungen, die eingebetteten Geräte und deren Services im Netzwerk mit Multicast discovery messages anzubieten. Control Points hingegen suchen aktiv nach Geräten. Auch beim Verlassen des Netzwerkes muss eine Multicast-Mitteilung generiert werden, um alle Netzwerkteilnehmer zu informieren. Description: Nach der Identifizierung eines Gerätes hat ein Control Point nur wenig Information über dessen Beschreibung. Er kennt die URL, die zu einer detaillierten Gerätebeschreibung führt. Darin sind gemäß einem definierten XML-Schema folgende Informationen enthalten: • Herstellerspezifische Angaben wie Modellname, Modellnummer, Seriennummer, Herstellername und URLs zu Webseiten. • Information über die eigenen Services und die der eingebetteten Geräte. • URLs für die zeitgleichen Betriebsphasen der Steuerung, des Eventmanagements und der Präsentation (control, eventing, presentation). • Beschreibung der Aktionen und Zustandsvariablen, die mit einem Service in Verbindung stehen. Control: Mit dem Abschluss der Description ist das UPnP-Netzwerk betriebsbereit. Ein Control Point kann nun ihm bekannte Serviceleistungen in Anspruch nehmen und Zustände an den Geräten abfragen. In Form von KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 15 XML-SOAP Nachrichten werden Aktionsaufrufe an die Geräte-URL geschickt. Das Gerät arbeitet diese Befehle ab und reagiert mit Zustandsänderungen. Eventing: Wenn sich ein Control Point als Listener bei einem Gerät registriert, so wird er durch ausgelöste Events über Änderungen von Statusvariablen informiert. Für die Anmeldung an einem Service sendet er eine Subscription Message an das Gerät. Wenn das Abonnement angenommen wird, definiert der Service die zeitliche Begrenzung und sendet diese Information an die Steuerinstanz zurück. Um eine Weiterführung des Abonnements durch eine erneute Benachrichtigung oder die Kündigung vor der abgelaufenen Zeit muss sich der Control Point selbst kümmern. Event-Nachrichten werden im XML-Format GENA erstellt. Um Szenarien mit mehreren Control Points realisieren zu können, werden alle Abonnenten über alle Eventvariablen und deren Änderungen informiert. Dabei ist nicht relevant ob die Zustandsänderung aufgrund eines externen Aktionsaufrufes oder innerhalb des Gerätes zu Stande kommt. Presentation: Bei vielen Geräten ist eine Präsentations-URL enthalten, die in einem Control Point oder einem Webbrowser darstellen werden kann. Die HTML-Seite kann vom Hersteller frei gestaltet werden und kann auch als einfaches Userinterface dienen, das dem Benutzer die Steuerung des Gerätes und der Dienste erlaubt. Fazit UPnP wird aufgrund der Unterstützung vieler Software- und Unterhaltungselektronikkonzerne mit großer Wahrscheinlichkeit zu einer Schlüsseltechnologie im Bereich der verteilten Heimnetzwerke heranwachsen. Es fehlt jedoch noch an konkreten Szenarien, die dem Endkunden die Vorteile verdeutlichen. 2.2.3 OSGi Die Spezifikation zu OSGi (Open Service Gateway Initiative) wird von der OSGi Alliance 13 , einem Zusammenschluss bedeutender Hard- und Softwarehersteller, darunter Sun Microsystems, IBM und Ericsson, getragen. Das OSGi-Framework definiert eine offene Service-Plattform für vernetzte Dienste, die sowohl für industrielle Anwendungen als auch für den Einsatz beim Endkunden und in mobilen Umgebungen geeignet ist. Das Framework setzt auf einer Java Virtual Machine-Umgebung auf und wird folgenden Anforderungen gerecht (vgl. [37]): 13 OSGi und OSGi Alliance - http://www.osgi.org/ KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 16 Komponentenbasierte Architektur: Aufbauend auf einem Framework für die Java-Plattform können modulare Softwareanwendungen (Bundles) installiert werden, die spezialisierte Services zur Verfügung stellen. Integration bestehender Protokollstandards: Der generische Ansatz der OSGi Service-Definition erlaubt die Integration und Kommunikation mit bestehenden Standards verteilter Geräte und Dienste. Auch für UPnP, Jini und Webservices sind Schnittstellen vorhanden. Dynamisches Management: OSGi-Bundles können zur Laufzeit administriert werden. Die Funktionalität für die Installation, das Starten und das Stoppen von Bundles zur Laufzeit ist integraler Bestandteil des Systems. Integriertes Sicherheitsmodell: Die Softwarearchitektur von OSGi ermöglicht eine strikte Trennung von Kompetenzen. Im Bundle-Kontext unterscheidet man zwischen privaten Ressourcen und solchen, die über eine offene Schnittstelle zur Verfügung gestellt werden und auch von anderen Bundles benutzt werden dürfen. Kapitel 3 Geräte 3.1 Szenario Um die Tauglichkeit von UPnP als Service-Plattform unter Beweis stellen zu können, müssen vorher Anforderungen für prototypische Implementierungen definiert werden. Es soll geklärt werden, inwiefern die Technologie in einem Mediensteuerungsszenario genutzt werden kann. Mit Blick auf die vielfältige Unterhaltungselektronik eines Haushaltes ist schnell ein reichhaltiges Einsatzgebiet gefunden. So möchte man beispielsweise auch während der Küchenarbeit nicht auf den Musikgenuss verzichten müssen. Zusätzlich zur Stereoanlage im Wohnzimmer ist das Aufstellen eines weiteren Elektronikgerätes, nur für das Musikhören, jedoch alles andere als platzsparend und ökonomisch. Hinzu kommt, dass die jahrelang gepflegte Mp3-Sammlung am PC im Arbeitszimmer ohnehin dem Radio vorgezogen wird. Obwohl die Inhalte über das Netzwerk auf einen PC mit Bildschirm in die Küche übertragen werden könnten, ist die Bedienung mehr als mühsam. Das Hantieren mit einer Maus passt in keiner Weise zu den Tätigkeiten in der Küche. Ein in die Wand integriertes Touchpanel würde hier Abhilfe schaffen, die Nutzung scheitert jedoch an der Software des Medienplayers, dessen GUI mit den kleinen Bedienelementen nicht für ein solches Szenario ausgelegt ist. Zudem möchte man auch die Inhalte anderer, im Haus verteilter Geräte und Anwendungen in einem gemeinsamen Display darstellen und fernsteuern können, ohne sich über deren Standorte Gedanken machen zu müssen. Ebenso wie in diesem Fall finden sich in einem Haushalt viele Beispiele, in denen ein nahtloses Zusammenspiel zwischen Elektronikgeräten Sinn machen würde. Die Stereoanlage, der Fernseher, der DVD-Player und auch das Raumlicht könnten unter einem gemeinsamen Standard und den entsprechenden technischen Vorrausetzungen alle von einem mobilen Smart Phone aus gesteuert werden. Darüber hinaus eröffnen mit Sensoren ausgestattete Embedded-Geräte und Bewegungsdetektoren neue Möglichkeiten, um Ab- 17 KAPITEL 3. GERÄTE 18 läufe zu automatisieren. Steht eine Person am Morgen auf, könnte dies von Drucksensoren am Boden registriert werden und eine Gebäudesteuerung informieren, die das Licht in allen vordefinierten Räumen einschaltet. Verlässt der Bewohner das Haus und geht zur Arbeit, wird eine Überwachungskamera mit Bewegungsdetektor aktiviert, die, sobald eine Bewegung registriert wird, eine E-Mail mit einem Standbild der Kamera an den Benutzer schickt. 3.2 Konzept Alle diese Szenarien zeigen, dass Mediengeräte durch die Unterstützung verteilter Netzwerke nicht mehr nur als eigenständige Dienste betrachtet werden können, sondern gerade durch ihre vielfältigen Vernetzungsmöglichkeiten eine neue Servicequalität bieten. Die drahtlosen und netzwerkfähigen Geräte hierfür sind mit PCs, PDAs, Touchpanels und Mobiltelefonen vorhanden. Auch Unterhaltungselektronik wird vermehrt mit Netzwerkfunktionalität ausgestattet. Mit einer gemeinsamen Service-Plattform für die Dienste wird eine Trennung zwischen dem Standort eines Gerätes und dessen grafischer Repräsentation zur Fernsteuerung möglich. Die Inhalte der verschiedenen Anwendungen könnten dann über ein gemeinsames, an das Darstellungsgerät angepasstes, User Interface gesteuert werden. Aus diesen Ideen ergeben sich mehrere Komponenten, die zum Aufbau solcher Szenarien benötigt werden: • Geräte: Für das oben erwähnte Szenario müssen UPnP-fähige Hardund Softwaregeräte gefunden oder selbst entwickelt werden. • GUI-Builder: Genauso wie mit UPnP ein gemeinsames Steuerprotokoll für verteilte Geräte vorhanden ist, muss ein Weg zur automatisierten Generierung von User Interfaces zur Fernsteuerung der Netzwerkgeräte gefunden werden. Der Ansatz sollte sowohl auf mobilen Endgeräten als auch auf PC-Systemen angewendet werden können. • Framework zur Kopplung verteilter Geräte: Auf Basis von UPnP als Service-Plattform muss ein System zur Verknüpfung von verteilten Gerätediensten geschaffen werden. Damit kann ein UPnP-fähiges Sensorgerät etwa Drucksensorwerte zur Steuerung der Bedienelemente eines Medienplayers liefern. Möglich wird dies durch die dezentrale Architektur des Torem Frameworks [39], einer UPnP-Controlpoint Instanz, die Geräte im Netzwerk finden und ansteuern kann. Torem erlaubt es dem Benutzer mit einem grafischen Editor ereignisorientierte Zustandsvariablen und Ein- und Ausgabeparameter von UPnPAktionen miteinander zu verknüpfen, um Szenarioabläufe zu definieren (siehe Abb. 3.1). KAPITEL 3. GERÄTE 19 Abbildung 3.1: Torem - Ein Framework zur Kopplung verteilter UPnPGeräte. Der Benutzer kann aus allen vorhandenen Geräte und zusätzlichen Kontrollflusskomponenten, wie If -Bedingungen und Schleifen eine Ereigniskette definieren [39]. 3.3 UPnP-Technologie Als Grundlage für die Entwicklung der Geräte und GUI-Builder Steueranwendung wird eine Bibliothek benötigt, die die Besonderheiten der UPnPTechnologie abstrahiert und die Implementierung von Geräten und Controlpoint-Instanzen ermöglicht. Die Cyberlink UPnP Bibliotheken1 des japanischen Programmierers Satoshi Konno ist in den Programmiersprachen C/C++ und Java verfügbar. Zusätzliche Beispielanwendungen und ein rudimentärer Controlpoint zum Steuern der Gerätedienste sind ebenfalls vorhanden. Die Java-Variante dieser Bibliothek wurde für die Entwicklung ausgewählt, da sie schon mehreren Revisionen unterzogen wurde und eine übersichtliche und gut abstrahierte Klassenstruktur bietet. 3.4 Implementierung Für das Szenario werden Eingabegeräte und verteilte Anwendungen benötigt. UPnP spezifiziert trotz der breiten Herstellerunterstützung zum ge1 Cyberlink UPnP Bibliotheken http://www.cybergarage.org/net/ KAPITEL 3. GERÄTE 20 gebenen Zeitpunkt wenige Geräte-Standards2 , die für die Mediensteuerung von Interesse sind. Neben Standards für Scanner, Drucker, Modems und Router passen eine Überwachungskamera und eine AV MediaServer/MediaRenderer-Architektur [12] besser in das Konzept. Mit dem Philips SL300i3 stand ein WLAN-Client zur Verfügung, der Audio- und Videoformate vom PC auf den Fernseher streamen kann. Das Produkt implementiert jedoch nur die wichtigsten der spezifizierten Funktionen und ist damit nur eingeschränkt bedienbar. Mit Hilfe softwarebasierter Adapter konnte weitere Hardware UPnP-fähig gemacht werden. Dazu zählen ein mit acht Drucksensoren ausgestatteter Mikrocontroller mit LAN-Anschluss und ein Streaming-Server, der das Video einer Webcam zu einem Client übertragen kann und dort Bewegungsdetektion ermöglicht. Auch der MIDI-Protokollstandard4 und der Winamp Media Player konnten mit UPnP-Funktionalität gekapselt werden. 3.4.1 Sensor-Hardwaredevice Anforderungen Um ein alternatives Eingabegerät für das Steuerungsszenario zu erhalten, wurde nach einer Möglichkeit zur Integration von Sensoren gesucht. Dazu wird ein hardwarenahes System benötigt, das den Anschluss von Sensorik an einen Analog-Digital Wandler erlaubt und die gemessenen Spannungswerte der Sensoren ins UPnP-Netzwerk exportieren kann. Um die Anbindung an das Netzwerk zu ermöglichen, sollte eine schlanke C/C++-Bibliothek gefunden werden, die einen UPnP-Stack für performanceschwache Systeme implementiert. In netzwerktechnischer Hinsicht muss das Gerät einen TCP/IP Stack integrieren und den Zugriff über ein LAN-Modul mit RJ45-Anschluss oder eine WLAN-Schnittstelle erlauben. Im besten Falle sollte das Gerät auch geringen Stromverbrauch garantieren oder mit Batterie betrieben werden. Hinsichtlich frei verfügbarer Software wurden folgende UPnP-Bibliotheken für die Entwicklung in Betracht gezogen: • Intel Software for UPnP Technology: Intel’s UPnP-Implementierung5 ist eine Sammlung an Softwarepaketen für die Entwicklung und das Testen UPnP-fähiger Anwendungen. Das Authoring ToolsPaket enthält einen automatisierten Device-Builder, der anhand funktionaler XML-Gerätebeschreibungen portablen Programmcode in C 2 UPnP Geräte-Standards - http://www.upnp.org/standardizeddcps/ Philips Streamium (UPnP AV MediaRenderer) - http://www.streamium.philips.com/ 4 Musical Instrument Digital Interface (MIDI) ist ein Steuerprotokoll für digitale Musikinstrumente, wird aber auch für Mediensteuerungen und künstlerische Installationen gerne eingesetzt. - http://www.midi.org/ 5 Intel Software for UPnP Technology - http://www.intel.com/cd/ids/developer/ asmo-na/eng/downloads/upnp/ 3 KAPITEL 3. GERÄTE 21 generiert. Jedoch ist dieser Code nur für Microsoft Windows, PocketPC und Linux ausgelegt. • Linux UPnP-SDK: Ein UPnP-SDK für Linux6 wird als Open Source Software zur Verfügung gestellt. Die Einarbeitungszeit in ein EmbeddedLinux System ist für den kleinen Teil des Szenarios allerdings nicht gerechtfertigt. • Cyberlink: Neben der Java-Variante wird von Cyberlink auch eine C++und eine C-Bibliothek bereitgestellt. Aufgrund der umfassenden Klassenstruktur und der mehrfachen Threads kann die C++-Implementierung nicht auf einem hardwarenahen System eingesetzt werden. Die C-Bibliothek hingegen ist dezidiert für mehrere Embedded-Systeme ausgelegt. Doch auch hier konnte für die unterstützten Betriebssysteme T-Engine 7 und uTRON 8 kein bekanntes Hardwareboard gefunden werden. Auf der Suche nach entsprechender Hardware stellte sich heraus, dass kein greifbares Gesamtsystem die Anforderungen hinreichend erfüllt und in kurzer Zeit die Erstellung eines Prototyp ermöglicht: • AVR Embedded Internet Toolkit: Mit dem Embedded Internet Toolkit 9 konnte ein System gefunden werden, das ausdrücklich für Industral Control und Home Appliances ausgelegt ist und neben einen TCP/IP-Stack auch aufbauende Protokolle, wie DHCP, HTTP und FTP unterstützt. Jedoch sind die Anforderungen C++-basierter UPnPBibliotheken für einen Mikrocontroller mit 128Kb dynamischem FlashSpeicher und 1MB Festspeicher zu wenig, um Features wie XMLVerarbeitung, das Steuerprotokoll SOAP und die Multi- und BroadcastProtokolle für die automatische Geräteerkennung zu unterstützen. Eine Portierung der Cyberlink C-Bibliothek auf die gängige ARM -Mikroprozessorarchitektur10 wäre mit einigem Zeitaufwand allerdings denkbar. • Sindrion: Sindrion ist eine verteilte Systemarchitektur rund um einen Chip mit niedrigem Energieverbrauch, der von der Firma Infineon11 mit dem Ziel eines kostengünstigen Sensornetzwerkes entwickelt wurde [30]. Im Sindrion-Konzept wird explizit auch die Integration in die 6 Linux UPnP-SDK - http://upnp.sourceforge.net/ Embedded OS: T-Engine - http://www.t-engine.org/ 8 Embedded OS: uTRON - http://www.utron.net/ 9 AVR Embedded Internet Toolkit - http://www.atmel.com/dyn/resources/prod documents/doc2493.pdf 10 Die ARM-Architektur ist ein Designspezifikation für eine Reihe an 32-bit Mikroprozessoren, die dem RISC-Konzept folgen. - http://www.arm.com/ 11 Infineon - http://www.infineon.com/de/ 7 KAPITEL 3. GERÄTE 22 UPnP-Serviceplattform erwähnt. Demnach ist ein Sindrion WirelessTransceiver eine Gerät, das einen reduzierten UPnP-Stack implementiert und Kontakt zu einer Terminal-Software hält, die den fehlenden Teil der Netzwerkkommunikation übernimmt und so in Kombination ein vollwertiges UPnP-Gerät repräsentiert [21]. Der Ansatz von Sindrion erscheint vielversprechend. Allerdings befindet sich die Technologie noch in der Entwicklungsphase. • Sun SPOT: Das Forschungsprojekt Sun SPOT 12 der Sun Microsystems Laboratories13 ist ein Batterie betriebenes Hardwaregerät zum Anschluss von Sensoren. Das ARM-basierte Mikroprozessorboard ist mit Solarzellen und mit einem drahtlosen Funksender nach dem Standard IEEE 802.15.414 ausgestattet und kann als Informationsquelle in intelligenten Netzwerken eingesetzt werden. Die Besonderheit des Konzeptes liegt in der Kombination aus robuster Hardware und Sun’s hauseigener, objektorientierter Programmiersprache Java, die mit CLDC 1.1 den Standard einer vollwertigen, mobilen Virtual Machine implementiert. Als Termin für die Produktreife von Sun SPOT wird aber erst der Sommer 2006 angegeben. Systemaufbau Schließlich wurde ein prototypisches Hardwaredevice der Firma Ubitronix 15 eingesetzt. Das Gerät basiert auf einem Texas Instrument MSP430 -Mikrocontroller16 , der einen 8-Port Analog-Digital Wandler integriert. Zusätzlich ist ein mit dem Lantronix XPort 17 ein Ethernet-Modul angebracht, das die Netzwerkkommunikation ermöglicht. Am Gerät wurden acht Drucksensoren angebracht und so konfiguriert, dass der Wandler je nach Druckstärke einen skalierten Wert zwischen 0 und 4000 zurück liefert. Mit einem proprietären, TCP/IP-basierten Kommunikationsprotokoll kann das Gerät im Netzwerk angesprochen werden. Es definiert eine Folge an Befehlen im Byte-Format um die acht Sensorwerte auslesen zu können. Ein Zyklus einer Sensorabfrage (Abb. 3.2) sieht vor, dass zuerst ein request-Befehl an das Gerät gesendet wird. Das Hardwaredevice bestätigt diese Anfrage (acknowledge) und teilt dem PC mit, dass es Daten senden will (send). Ist der PC damit einverstanden (ack), sendet das Gerät die ermittelten acht Sensorwerte mit je 2 Byte Länge zurück (sensordata). Trotz 12 SUN Spot - http://www.sunspotworld.com/ Sun Microsystems Laboratories - http://research.sun.com/ 14 IEEE 802.15 WPAN Task Group 4 ist ein Arbeitsgruppe zur Spezifizierung von Kurzstrecken-Funktechnik in Wireless Personal Area Networks - http://www.ieee802.org/ 15/pub/TG4.html 15 Ubitronix - http://www.ubitronix.com/ 16 Texas Instrument MSP430 Mikrocontroller - http://www.ti.com/msp430 17 Lantronix XPort http://www.lantronix.com/device-networking/embedded-device-servers/xport.html 13 KAPITEL 3. GERÄTE 23 request ack PC send ack Hardware Device sensordata ack Abbildung 3.2: Die Abbildung zeigt die Befehlskette einer Sensorabfrage zwischen dem PC und dem Hardware-Modul. des aufwendigen Protokolls, das nicht nur für die Sensorabfrage entworfen wurden, zeigte sich der Prototyp als robustes Eingabegerät, das auch nach tagelangem Einsatz noch einwandfrei funktioniert. Für die Integration ins UPnP-Netzwerk wurde eine Adapteranwendung am PC implementiert, die eine persistente Verbindung zum Hardwaredevice hält und auf eine GetSensor-Aktionsanfrage eines UPnP-Controlpoints die acht Sensorwerte ermittelt und in Form eines XML-formatierten Strings zurück liefert. Mit dieser Implementierung wurde die UPnP-Welt des Szenarios um ein physisches Eingabegerät bereichert. Welche Funktionen die Sensoren erfüllen, ist Teil des Mappings zwischen zwei UPnP-Diensten, wie sie im ToremFramework definiert werden kann. So kann unter anderem folgendes Verhalten festgelegt werden: Wenn der Wert des Sensors1 kleiner 2000 ist, dann soll der Play-Befehl eines Medienplayers ausgeführt werden. Ein erweitertes Szenario könnte auch eine Passwortabfrage anhand einer bestimmten Abfolge an gedrückten Sensoren realisieren. Mit dem Hardwaredevice ist die Integration vieler, weiterer Sensortypen, wie Temperatur-Sensoren, DistanzSensoren, Magnetfeld-Sensoren, etc. denkbar, da sie am gleichen Gerät angebracht werden können und die Bedeutung eines Sensors erst durch dessen semantische Verknüpfung definiert wird. 3.4.2 Webcam Streaming-Server und Client Für die Entwicklung eines weiteren Eingabegerätes wurde eine Streaming Server/Client-Architektur entworfen, die das Video einer serverseitig angeschlossenen Webcam im Netzwerk bereitstellt. Die Idee ist, einen UPnPbasierten Server zu schaffen, dessen Konfiguration im Netzwerk vorgenommen werden kann. Neben der Möglichkeit zum Auslesen und Setzen der URL des Videostreams kann der Servers vom Netzwerk aus gestartet und gestoppt werden. Ein ebenfalls UPnP-fähiger Client besitzt dieselben Möglichkeiten, allerdings zum Empfang des Videosteams. Der Streaming Client KAPITEL 3. GERÄTE 24 ermittelt über UPnP automatisch das Vorhandensein eines Servers, liest dessen Videostream-URL aus und nutzt sie, um sich selbst zu konfigurieren und zu starten. Zusätzlich ist am Client eine simple Bewegungserkennung (motion detection) implementiert, die auf Änderungen des Videobildes reagiert und diese Information über zwei Wege auch einem UPnP-Controlpoint zugänglich macht. Zum einen ist eine ereignisorientierte boolsche Variable MotionDetected definiert, die Rückmeldung über den aktuellen Status des Videobildes. Als zweite Maßnahme wird zum Zeitpunkt der Bewegung das Bild des aktuellen Videoframes abgespeichert und über einen Webserver zugänglich gemacht, dessen URL wiederum mit der UPnP-Aktion GetLastMotionImage bekanntgegeben wird. Systemaufbau Für die Implementierung der Streaming-Architektur wurde das Java Media Framework 18 (JMF, Version 2.1.1e), eine Java-basierte Bibliothek für die Medienverarbeitung, herangezogen. JMF ermöglicht den Zugriff auf die Daten, der am PC angeschlossenen Audio- und Videohardware und abgespeicherter Medienformate. Durch die Entwicklung von Plugins können Änderungen in den Datenströmen der Verarbeitungskette vorgenommen werden, die sich aus einer Datenquelle, einem Prozessor und einer Datensenke zusammensetzen. Sowohl Datenquelle als auch Datensenke sind abstrakte Bezeichnungen für Ein- und Ausgabeinstanzen. Dazu zählen neben Geräten wie Videokamera und Bildschirm ebenso ein Netzwerkstream oder eine Mediendatei. Der Streaming Server und der Client verwenden eine annähernd identische Klassenstruktur, die in drei Bereiche unterteilt ist: • net.digidop.upnp.device.rtpapp: Dieses Packet definiert das Zustandsmodell der Applikation, die Anbindung an das Netzwerk als UPnP-Gerät. Für den Client ist zusätzlich auch eine UPnP-Controlpoint integriert, der zur Auffindung des Servers benötigt wird. • net.digidop.upnp.device.rtpserver.business: Diese Schicht definiert Business-Objekte zum Aufbau der JMF-Verarbeitungskette, der Instanzierung des medienverarbeitenden Prozessors und der Generierung einer grafischen Komponente für das Videovorschaubild. • net.digidop.upnp.device.rtpserver.ui: Das Packet enthält Klassen für das GUI und die Konfigurationsoptionen, die auch über das Netzwerk geändert werden können. 18 Java Media Framework API - http://java.sun.com/products/java-media/jmf/ KAPITEL 3. GERÄTE 25 Bevor eine Verarbeitung am Client erfolgt, muss der Processor konfiguriert werden. Anhand der vom Server ermittelten Multicast 19 -URL des Videostreams wird ein MediaLocator angelegt, der zusammen mit einem globalen Manager eine Instanz des Processors erzeugt. Im Anschluss kann eine Liste an beliebigen Plugins in die Verarbeitungskette eingegliedert und die Datensenke an eine GUI-Applikation angebunden werden. Der einfache Motiondetection-Algorithmus FxMotionDetection reagiert auf die durchschnittliche Intensitätsänderungen eines Bildes. Hat sich der ermittelte Wert im Vergleich zum vorgehenden Videoframe stark verändert, wird eine Bewegung registriert und die MotionDetected-Zustandsvariable auf TRUE gesetzt. Sobald der Algorithmus im nächsten, zehnten Frame keine Bewegung mehr registriert, wird der Wert wieder auf FALSE gesetzt. 1 2 3 4 /* * Berechnung von d i v i d e d S u m o f D i f f e r e n c es als Durchschnitt sw e rt * der Intensitäts än de r un g zweier Frames mit Abstand 10 */ 5 6 7 8 9 10 11 12 if (( frameCount % 10) == 0) { if ( motionDetecte d ) { motionDetecte d = false ; } else { clientDevice . trackingVar . setValue ( " FALSE " ); } } 13 14 15 16 17 if ( d i v i d e d S u m o f D i f f e r e n ce s > treshold && ! motionDetecte d ) { motionDetecte d = true ; clientDevice . trackingVar . setValue ( " TRUE " ); } Die Verarbeitung des RTP-Streams20 erfolgt mir 15 Bildern pro Sekunde. Der Algorithmus für die Bewegungserkennung ist sehr einfach aufgebaut. Die Flexibilität des Systems erlaubt es aber, dass mit wenig Aufwand ein robusteres Verfahren, das etwa auch gegen Helligkeitsschwankungen resistent ist, implementiert werden kann. Auch die Nutzung von videobasiertem Tracking scheint in diesem Kontext denkbar. Mit dem Streaming Server (siehe Abb. 3.3) und Client wurde eine kostengünstige Variante einer Überwachungskamera geschaffen, die ohne zusätzlichen Konfigurationsaufwand betrieben werden kann. 19 Multicast bezeichnet in der Netzwerkkommunikation eine Nachrichtenübertragung von einem Punkt zu einer Gruppe. In IPv4 ist hierfür der Adressbereich 224.0.0.0 bis 239.255.255.255 (Klasse D) reserviert 20 Das Real-Time Transport Protocol ist ein Protokoll zur kontinuierlichen Übertragung von audiovisuellen Daten (Streams) über IP-basierte Netzwerke KAPITEL 3. GERÄTE 26 Abbildung 3.3: Die Abbildung zeigt die UPnP-fähige Streaming Server Applikation mit dem Videobild der Webcam. Im rechten Bild ist das Fenster für die Webcam-Einstellungen zu sehen. 3.4.3 UPnP-Winamp Media Player Um auch ein Gerät zum Abspielen von Musik anzusteuern zu können, wurde der Winamp Media Player 21 in der Version 2.91 mit einem Softwareadapter an UPnP angebunden. Neben der Überlegung ein umfangreiches C++basiertes Plugin auf Basis der Winamp SDK22 und der Cyberlink UPnPBibliothek zu entwickeln, wurde mit httpQ 23 ein netzwerkbasiertes Plugin gefunden, das die Funktionen von Winamp über den Zugriff via HTTPGET URL ermöglicht. Dafür wurde in Java ein Adapter entwickelt, der diese Funktionen ins UPnP-Netzwerk exportiert und Steuerzugriffe in den httpQ -Befehlssatz umsetzt. Neben der Steuerung der Abspielelemente kann auch die Zeit, die Lautstärke und Auskunft über die geladene Playlist und den aktuellen Song ermittelt und gesetzt werden. In der Klasse HttpQAdapter sind alle Befehle definiert und können mit processCmd ausgeführt werden. Für das Starten des Players wird etwa folgender String aus dem Play-Befehl und einem geforderten Passwort zusammengesetzt und ausgeführt: http://localhost:4800/play?p=pass. 3.4.4 MIDI-Device Für die Übertragung von MIDI-Steuerbefehlen wurde mit Hilfe des LoopBe1 MIDI-Treibers24 , einer virtuellen MIDI-Kabelverbindung am PC, ein UPnPAdapter für das Windows Betriebsystem entwickelt. Damit können alle soft21 Winamp Media Player - http://httpq.sourceforge.net/ Winamp Plugin Development Center- http://www.winamp.com/nsdn/winamp/plugins/ 23 httpQ Network Protocol - http://httpq.sourceforge.net/ 24 LoopBe1 Virtual MIDI Driver - http://www.nerds.de/en/loopbe1.html 22 KAPITEL 3. GERÄTE 27 warebasierten Klangerzeuger wie Reaktor25 angesprochen werden. Der Adapter sendet mit Hilfe der Java-MIDI API javax.sound.midi Steuerbefehle an die virtuelle Schnittstelle LoopBe1. Wird der Treiber in einem Klangerzeuger als MIDI-Eingabegerät ausgewählt, so leitet er die eintreffenden Befehle direkt an dieses weiter. Über die installierten MIDI-Treiber der Soundkarte des PCs können auch externe Geräte angesprochen werden. Das MIDI-Protokoll definiert eine Reihe an Steuernachrichten mit unterschiedlicher Parameteranzahl. Mit dem Befehlen NOTE_ON und NOTE_OFF und dem Parameter der Tonhöhe kann beispielsweise ein Tastendruck auf einem Klavier simuliert werden. Die Tondauer wird durch das Zeitintervall zwischen den beiden NOTE-Befehlen festgelegt. Diese Funktionalität wird in einem UPnP-Gerät gekapselt, das eine SetNote-Aktion implementiert. Als Eingabeparameter verlangt sie einen MIDI-kompatiblen Tonhöhenparameter zwischen 0 − 127. Ist das virtuelle MIDI-Gerät an einen Klangerzeuger gekoppelt, wird ein Tastendruck mit der Dauer von 100 ms simuliert. Dies führt bei den Konfigurationen der meisten virtuellen Synthesizer zur Ausgabe eines Tons. Obwohl mit diesem Ansatz bislang nur ein Teil des MIDI-Protokolls implementiert ist, demonstriert es die Integration eines breiten Spektrums an zusätzlicher Hard- und Software, die mit diesem Protokoll arbeiten. Vor allem hinsichtlich neuer Eingabemedien scheint dieses Konzept interessant, da zahlreiche MIDI-Controller mit integrierten Tasten, Drehknöpfen, Touchpanels und Schiebereglern für die Steuerung verteilter Geräte bereitstünden und nicht nur im musikalischen Kontext verwendet werden könnten. Ein Beispiel für solche Geräte sind alternative Controller-Produkte26 der deutschen Firma Döpfer27 . 25 Native Instruments Reaktor - http://www.native-instruments.com/index.php?id= reaktor5 us 26 Eine Liste alternativer MIDI-Controller - http://www.stoffelshome.de/alt controller/ alt midi controller.html 27 Döpfer MIDI-Controller - http://www.doepfer.de/home d.htm Kapitel 4 Generierung grafischer User Interfaces Eine große Herausforderungen in der Softwareentwicklung ist das Design von Schnittstellen zwischen Mensch und Maschine. Erklärtes Ziel beim Entwurf eines Interfaces ist es, Daten und Funktionalitäten einer Applikation in einer abstrahierten Form zu präsentieren und dem Benutzer einfache Interaktionsmöglichkeiten anzubieten. In diesem Zusammenhang befasst sich der Human-Computer Interface (HCI) Forschungsbereich neben traditionellen grafischen Oberflächen (Graphical User Interface oder einfach GUI ) für Endgeräte mit Display auch mit alternativen, physischen Eingabegeräten unter dem Begriff Tangible Interfaces, die nicht Gegenstand der vorliegenden Arbeit sein sollen. Vielmehr soll erläutert werden, warum das Design und die Implementierung von GUIs auch Jahrzehnte nach deren Aufkommen keine triviale Aufgabe darstellt [27]. Die Bringschuld des Softwareentwicklers besteht darin, User Interfaces unter Berücksichtigung der Benutzererwartung, hinsichtlich der Bedienung einer Software, zu gestalten. Abhängig von verschiedenen Faktoren wie dem Alter des Benutzers und dem IT-Vorwissen kann dies zu den unterschiedlichsten Bedürfnissen führen. Ein Grafiker, dessen tägliches Arbeitswerkzeug ein Bildbearbeitungsprogramm ist, sucht nach Wegen um wiederkehrende Abläufe standardisieren zu können und schnellstmöglichen Zugriff auf alle ihm zur Verfügung stehenden Funktionen zu haben. Ein Anfänger hingegen möchte aller Voraussicht nach schrittweise in das Programm eingeführt werden und wenige für ihn wichtige Operationen ausführen können, ohne sich in einer Ansammlung von Menüeinträgen und Mehrfachbelegungen von Buttons zu verlieren. Unterstützung im Entwicklungsprozess erfährt der Programmierer dabei von Seiten psychologischer Studien hinsichtlich dem Nutzerverhalten und der Gebrauchstauglichkeit der Software. Diese Art der Evaluierung durch Beobachtung von Benutzern und ihren Gewohnheiten wird durch den Be28 KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 29 griff Usability geprägt. Zusätzliche Schwierigkeiten können sich durch die Einbeziehung Kontext-sensitiver Informationen in die Anwendung ergeben. Je mehr unvorhersehbare Anwendungsbereiche und Geräteumgebungen gegeben sind, desto vielschichtiger sind die Abhängigkeiten, die es in der Software und dem GUI-Design vorab zu bedenken gilt. Dadurch werden eine Reihe wichtiger Fragen aufgeworfen. Im Mittelpunkt dieser Überlegungen steht die Suche nach überzeugenden Methoden um konsistente und benutzerfreundliche Schnittstellen entwickeln zu können: 1. Welche allgemeingültigen Qualitätskriterien sind im GUI-Design definiert und wie können sie angewandt werden? 2. Welche Anforderungen werden bei der GUI-Entwicklung an den Entwickler herangetragen? 3. Welche gesonderten Anforderungen werden durch die Verbreitung mobiler Endgeräte, ubiquitärer Technologien und die Ad-hoc-Vernetzung generiert? 4. Welche unterstützenden Konzepte und Werkzeuge kommen in der Praxis zum Einsatz? 4.1 Anforderungen im GUI-Design In [27] werden allgemeine Aspekte aufgelistet, die es beim Design jedes grafischen Interfaces zu beachten gilt: Standards und Richtlinien: Ebenso wie in anderen Disziplinen haben sich auch im Interface-Design bewährte Konzepte durchgesetzt, die sich als Richtlinien für heutige GUI-Applikationen etabliert haben. Dazu zählen Fenster, Menüleisten und Bestätigungs-Dialoge ebenso, wie Layout-spezifische Konventionen. Das Schließen einer Applikationen oder das Öffnen einer Datei, werden als Hauptfunktionen in verschiedenen Applikationen an der gleichen Stelle zu finden sein. Dem Benutzer wird dadurch die Möglichkeit gegeben, sich an bereits erlernten Metaphern orientieren zu können. Das selbstverständliche Vorhandensein von Maus, Tastatur und einer grafischen Oberfläche bei PC-Systemen zeigt, dass sich aus den Ideen zu Eingabegeräten schnell Standards entwickeln können. Für die grafische Aufbereitung, die das Layout der Komponenten, den Schriftsatz und die Farbwahl beinhaltet, werden von allen wichtigen Betriebssystemherstellern wie Microsoft1 und Apple2 Guidelines definiert. Neben einem konsistenten Look and Feel ist dies auch auf die Tatsache zurückzuführen, dass das moderne Betriebsystem grundlegende Zeichenoperationen 1 Microsoft User Interface Design and Development - http://msdn.microsoft.com/ui/ Apple Human Interface Guidelines - http://developer.apple.com/documentation/ UserExperience/Conceptual/OSXHIGuidelines/ 2 KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 30 mit Hilfe eigener Window Manager zur Verfügung stellt. Eine Vielzahl weiter Publikationen beschäftigt sich mit Richtlinien für Interaktionsdesign [8, 34] und auch für grafisches Design [4]. Aufgrund der Vielfalt und Komplexität von Softwaresystem und dem unvorhersehbaren Nutzerverhalten lassen sich diese Ansätze nicht in einer allgemeingültiger Theorie postulieren. Gutes Design liegt demnach zu einem großen Teil noch immer in den Händen des Designers. Anpassungsfähigkeit und Hilfestellung: Trotz des Bestrebens robuste, einfach zu bedienende Software zu entwickeln, kann es zu Situationen kommen, in denen eine Fehlerbehandlung unvermeidlich ist. Die Art wie der Benutzer davon in Kenntnis gesetzt wird, ist ein Indikator für die Qualität der Anwendung. Programmatische Fehlermeldungen stehen hier in starkem Gegensatz zum Versuch, dem Benutzer die Handhabung der Software zu erklären oder im besten Fall die entstandene Problematik programmintern zu lösen. Ein schwerwiegender Irrtum wäre es, in diesem Zusammenhang vom Fehlverhalten des Benutzers zu sprechen, da das oberste Prinzip die Unterstützung des Benutzers in seiner Tätigkeit sein soll [8]. Die Internationalisierung von Anwendungen eröffnet besseren Zugang zu spezifischen Benutzergruppen und verlangt mehr als nur die Übersetzung von Textinhalten. Auch externe Faktoren wie lokale Kultureinflüsse, soziale und rechtliche Gegebenheiten, spezielle Zahlenformate und Layoutbedingungen müssen ebenso wie Anforderungen für Zielgruppen mit besonderen Bedürfnissen berücksichtigt werden. Um eine gute Handhabung eines Interfaces zu erreichen, muss das Navigationskonzept schlüssig und die Anordnung der Elemente konsistent sein. Der Benutzer muss zudem jederzeit über den Zustand des Systems informiert sein, die Kontrolle haben und bei Interaktionen in kürzester Zeit Feedback erhalten. 4.2 Anforderungen im Pervasive Computing 4.2.1 Kontext-sensitive und verteilte Anwendungen Das Aufkommen mobiler Endgeräte und eingebetteter, smarter Technologien erweitert mit ebenso großer Tragweite den Horizont der computerisierten Wahrnehmungswelt, wie einst der Übergang zwischen dem Zeitalter des zentralisierten Mainframe-Computing hin zur Ära des Desktop-PCs. Die Erfassung Kontext-sensitiver Informationen durch Geräte, die mit Sensoren ausgestattet sind, erlaubt heute schon eine engere Bindung der Anwendung an die unmittelbare Umgebung (location-based services). Bis der Wunschtraum einer ubiquitären Welt nach Mark Weiser [40], in der der Benutzer keinen unmittelbaren Kontakt mehr zu technischen Geräte hält, Wirklichkeit werden kann, müssen essentielle Fragen hinsichtlich Energieversorgung, KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 31 einheitliche Kommunikationsstandards und auch dem Design solcher intelligenter Gegenstände geklärt werden. Durch die Mobilität wird das Paradigma der verteilten Anwendung und spontaner Vernetzung gestärkt. Die physische Trennung von Applikationslogik und grafischer Repräsentation erlaubt es auch leistungsschwachen Geräten aufwendige Aufgaben zu erledigen. Diese können im Hintergrund von Serverdiensten abgearbeitet werden und müssen lediglich für die Synchronisation der Information des GUI-Client sorgen. 4.2.2 Geräteeigenschaften Die gestiegene Performance und Speicherkapazität bei mobilen Geräten erlaubt die Darstellung grafischer Inhalte auf Farbdisplays, die bis vor kurzem noch Desktop-Systemen vorbehalten waren. Mobile Betriebsysteme wie Windows Mobile3 und Symbian4 und systemübergreifende Entwicklungsplattformen wie Microsoft .NET5 und die Java 2 Platform, Micro Edition (J2ME)6 bieten mit grafischen Toolkits Unterstützung für einfache GUIProgrammierung. Eine weitere Eigenschaft der neuen Geräteklassen sind spezialisierte Einund Ausgabehardware. Auf Seiten der Interaktionstechniken reicht die Palette von wandgroßen Displays über berührungsempfindlichen Touch Screens und PDAs mit Bedienstift (stylus) bis hin zu Mobiltelefonen mit mehrfachbelegten Funktionstasten und Joystick oder Richtungstaste für die Navigation. Durch Wegfall von Maus und Tastatur muss die Navigation durch das User Interface anders ausgelegt sein. Am Beispiel einer einfachen Texteingabe lässt sich der Paradigmenwechsel leicht erklären. Durch die Popularität des Short Message Services (SMS ) zeigt sich, dass es dem Konsumenten selbst am Mobiltelefon ein Bedürfnis ist, Texte zu verfassen. Das neue Bedienungskonzept, das für wenigen Tasten mehrfache Buchstabenbelegungen erfordert, wird trotz der offensichtlichen Nachteile in Kauf genommen. Am PDA ist die selbe Funktionalität in mehrfacher Ausführung vorhanden: Der Bedienstift kann dazu benutzt werden, um Zeichen, die auf einer im Display sichtbaren Tastatur aufgereiht sind, anzuwählen. Eine neue Form der Interaktion bieten die Zeichenerkennung per Handschrift. Als weitere Möglichkeit bieten sich externe Eingabegeräte wie das Virtual Laser Keyboard7 an, das mittels einer Laserprojektion ein Standard-Tastaturlayout auf die Tischoberfläche zeichnet. Auch die Forschung mit Spracherkennung und Analyse von Videobildern mittels integrierter Kamera lassen auf zukünftige, alternative 3 Windows Mobile - http://www.microsoft.com/windowsmobile/ Symbian OS - http://www.symbian.com/ 5 .NET Compact Framework - http://msdn.microsoft.com/netframework/programming/ netcf/ 6 Java Micro Edition - http://java.sun.com/javame/ 7 Virtual Laser Keyboard - http://www.virtual-laser-keyboard.com/ 4 KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 32 Interaktionstechniken hoffen. Alle Geräte verfügen mittlerweile über Farbdisplays in unterschiedlichen Ausführungen. Die Auflösung und Skalierung des Displays hat ebenfalls signifikante Auswirkungen auf die Anzahl und Anordnung der grafischen Elemente die in einem GUI dargestellt werden können [26]. Die Bandbereite reicht von kleinen Mobiltelefon-Displays bis zu hochauflösenden Bildschirmen. Trotz des Vorhandenseins gemeinsamer, grafischer Toolkits kann aufgrund der Varianten bei Ein- und Ausgabegeräten nicht jeder grafische Inhalt gleich repräsentiert werden. Erschwerend kommt noch hinzu, dass nicht einmal gemeinsame Geräteklassen über gleiches Hardwarelayout verfügen und Standards in dieser, bedingt durch den großen Wettbewerb, heterogenen Landschaft nur sehr schwer Fuß fassen. Die Entwicklung von Plattform-übergreifenden Applikationen in pervasiven Umgebungen erfordert neue Konzepte im Umgang mit Software und deren grafischer Darstellung. Rapid Prototyping [9], die schnelle und teilautomatisierte Entwicklung von (prototypischen) Implementierungen, ist dabei ebenso ein Thema wie Techniken zur abstrakten Beschreibung und Modellierung von Funktionalität einer Applikation. Auf Basis dieser Anstrengungen können Versuche zur automatisierten Generierung grafischer Benutzeroberflächen unternommen werden. 4.3 4.3.1 Techniken der GUI-Entwicklung Window Manager und Toolkits Eine Reihe an Konzepten führt zu den heute angewandten und weit verbreiteten Techniken in der Entwicklung grafischer User Interfaces. Zu den großen Errungenschaften der Window Manager zählt die Tiefenstaffelung und Skalierbarkeit von Fenstern, die schnelles Wechseln zwischen parallel laufenden Anwendungen ermöglichen. Window Manager sind Teil des Betriebsystems und bieten grundlegende grafische Operationen (Zeichnen, Updaten des Bildschirms) und Schnittstellen für die Ereignisbehandlung an. Aufbauend auf diesem abstrakten Modell stellen grafische Toolkits ein meist komponentenbasiertes Framework für einfaches Arbeiten mit konkreten GUIElementen in einer bestimmten Programmiersprache zur Verfügung. Sie gewährleisten bis zu einem gewissen Grad Konsistenz hinsichtlich der Ereignisbehandlung und dem Zeichnen der grafischen Komponenten und dürfen daher keinen starken Änderungen in der Programmbibliothek(API ) unterworfen sein. 4.3.2 Web-basierte Entwicklungen In der Web-Entwicklung führte ein Zusammenspiel aus der Seitenbeschreibungssprache HTML, der Layoutbeschreibung CSS und Client- und server- KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 33 seitigen Scriptsprachen (Javascript, PHP, Perl) zum kommerziellen Durchbruch. Diese Sprachen müssen nicht kompiliert sondern lediglich zur Laufzeit interpretiert werden und eröffnen durch leicht verständliche Ansätze einem großen Personenkreis Zugang zur Programmierung. Ein Nachteil liegt in der prozeduralen Abarbeitung des Programmcodes und der fehlenden Trennung zwischen Datenhaltung, Präsentationslogik und Applikationslogik (ModelView-Controller oder MVC ). Der großen Erfolg von webbasierten Dienstleistungen führte dazu, dass führende objektorientierte Programmiersprachen mit eigenen Scriptsprachen aufwarten und dadurch das MVC-Prinzip bestärken. Microsofts .NET Plattform arbeitet hier mit C# und Active Server Pages (ASP). In der Java-Domäne erfüllen Java Server Pages und Servlets diese Aufgabe. Ein großer Nachteil von Webapplikationen liegt in dem zustandlosen Transportprotokoll HTTP8 begründet, das die Verbindung zwischen Client und Server nur für den Zeitraum eines Request/Response-Zyklus offen hält. Dadurch ist die grafische Oberfläche gezwungen, bei jeder Interaktion, die Datenzugriff auf den Server verlangt, die Inhalte neu zu laden. Neue in Browser integrierte Technologien wie Asynchronous JavaScript and XML (Ajax) [2], die vermehrte Verwendung von Web Services9 und SOAP als XML- und HTTP-basierte Remote Procedure Call-Variante (RPC) versuchen diesen Nachteil mit Hilfe asynchroner Datenübertragung im Hintergrund ungeschehen zu machen. Auch proprietäre Rich Client Plattformen wie die Macromedia Flash Platform10 [19], arbeiten in dieser Hinsicht mit persistenten Verbindungen. Beispielhafte Anwendungen hierfür sind die Kartographie-Software Google Maps11 und Services basierend auf der Online-Fotodatenbank Flickr12 . Mobiles Web Die fortschreitende Entwicklung mobiler Endgeräte ermöglicht die Nutzung von Webinhalten und Rich Media-Applikationen auch zunehmend auf Smart Phones und PDAs. Mehrere vielversprechende Konzepte versuchen bestehende Technologien auf mobile Plattformen zu portieren. In [41] wird die Idee eines zukünftigen, einheitlichen User Interfaces für dynamische, webbasierte Services erläutert: The next logical step in this evolution is to extend the browser to become the UI container for the smart phone platform. Moving on from the rich media and application platform just described, 8 Das Hypertext Transfer Protocol wurde durch die Internet Engineering Task Force spezifiziert (IETF) http://www.ietf.org/rfc/rfc2616.txt. 9 Web Services (Spezifikation der W3C) - http://www.w3.org/2002/ws/ 10 Macromedia Flash Platform - http://www.adobe.com/de/platform/ 11 Google Maps - http://maps.google.com/ 12 Flickr Services - http://www.flickr.com/services/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 34 by adding the ability to interact with the underlying smart phone hardware and file system, the Web browser can become the engine for the smart phone UI. Drei Methoden wurden als richtungsweisend identifiziert: Die mobile Java-Plattform J2ME, in den Browser integrierte XML GUI-Sprachen wie XUL (siehe Kapitel 4.4.2) und standardisierte und proprietäre Auszeichnungssprachen und Scriptsprachen namens Macromedia Flash, JavaScript und das Vektorgrafikformat SVG. 4.3.3 Interaktive GUI-Builder GUI-Builder Werkzeuge gehen Hand in Hand mit dem eigentlichen Ziel der grafischen Programmierung. Mit Hilfe eines Modellierwerkzeuges wird die Oberfläche aus elementaren Teilen wie Fenster, Button, Textfeld, etc. zusammengesetzt und anschließend in editierbaren Programmcode für die objektorientierte Zielsprache konvertiert. Je nach Ausmaß der Bindung zwischen der Grafikbibliothek der Programmiersprache und Entwicklungsumgebung (Integrated Development Environment (IDE)) können Ereignisbehandlung, Änderungen von Layout-Eigenschaften und auch die Datenanbindung an das Interface integrativer Bestandteil des GUI-Builders sein. Visual Studio bietet eine solche Entwicklungsumgebung für die eigenen Programmiersprachen C# und Visual Basic. Auch für die Java GUI-Bibliotheken Abstract Window Toolkit (AWT) und Swing stellen mehrere Entwicklungsumgebungen GUI-Builder zur Verfügung. 4.4 XML GUI-Sprachen XML als Metasprache mit baumartiger Gliederung eignet sich sehr gut zur Definition von Auszeichnungssprachen, die die komponentenbasierte Struktur und hierarchische Anordnung von grafischen Elementen beschreiben. Es existiert eine Vielzahl an XML GUI-Dialekten, die auf unterschiedlichen Abstraktionsebenen ein grafisches Interface für verschiedene Aufgabengebiete spezifizieren. Das gemeinsame Ziel ist die automatische GUI-Generierung anhand einer Beschreibung, die auf einer Plattform in einer Entwicklungsumgebung mit Hilfe einer Programmiersprache oder in der Laufzeitumgebung eines Programms oder Frameworks in ein konkretes Interface-Rendering verwandelt werden muss. Mit Microsoft XAML, Mozilla XUL und XForms werden drei User Interface Description Languages (UIDL) vorgestellt, die eine starke Bindung zu konkreten GUI-Komponenten und dadurch zum Endresultat des GUIBuilding Prozesses haben. UIML und XIML bieten eine generischere Definition eines grafischen Interfaces. Dies macht eine geräte- und plattformunabhängige Beschreibung möglich, verlangt aber im Gegenzug mehr Auf- KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 35 wand und Intelligenz bei der Auswertung der enthaltenen Information durch Transformatoren und wissensbasierte Systeme und stellt vorab kein konkretes Rendering mit vordefinierten GUI-Elementen in Aussicht. 4.4.1 XAML WinFX13 ist der Name von Microsofts .NET basierter Programmierschnittstelle, die die Basis für Applikationsentwicklungen im kommenden Betriebssystem Windows Vista bildet und in vier Bereiche gegliedert ist. Neben dem Kommunikationsmodell Windows Communication Foundation (WCF), dem Programmiermodell Windows Workflow Foundation (WF) und sicherheitsund authentifizierungsrelevanten InfoCard-Komponenten ist die Windows Presentation Foundation (WPF) für die grafische Aufbereitung in Vista zuständig. Als Teil dieses Subsystems wurde die Extensible Application Markup Language (XAML) als XML-basierte Beschreibungssprache für User Interfaces konzipiert. Ziel ist die Trennung von Logik und Präsentationsschicht, sowie die nahtlose Zusammenarbeit mit bestehenden .NET-Technologien. So kann die Ereignisbehandlung, etwa ein Button-Klick, in externe C# oder VB.NET Codefragmente ausgelagert werden, die in XAML referenziert werden. Innerhalb des Dokuments können auch Layouteigenschaften und einfache visuelle Effekte wie Transparenz festgelegt werden. Darüber hinaus ist XAML als deklarative Sprache zur Darstellung folgender multimedialer Inhalte, die Anlehnung an bestehenden Standards nehmen, angedacht14 : • Layout: Ähnlich HTML und dem Portable Document Format (PDF) soll es mit Flow-Format und Fixed-Format Dokumenten Unterstützung für verschiedene Text- und Objektlayoutdefinitionen und integrierte Steuerelemente für deren Betrachtung geben. • Vektorgrafik und Multimedia: Die Definition von 2D und 3DVektorgrafiken sowie die Steuerung von Animationen und die Integration von Audio und Video erinnern an das Flash-Format SWF und die XML-basierten W3C-Standards SVG (Scalable Vector Graphics) für 2D Grafiken und das Präsentationsformat SMIL (Synchronized Multimedia Integration Language). • Daten Anbindung: Direkte Anbindung an Datenquellen wie Webservices und anderen XML-Daten ist ohne programmatischen Mehraufwand möglich. • Technologieübergreifendes Formularwesen - In XAML festgelegte Oberflächen können sowohl für die Interface-Generierung von Webanwendungen als auch für Desktop-Applikationen eingesetzt wer13 14 WinFX API - http://msdn.microsoft.com/winfx/technologies/default.aspx XAML - http://www.xaml.net/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 36 den und ersetzen damit unterschiedliche Technologien wie Windows Forms und das webbasierte Formularwesen in ASP.NET. 4.4.2 XUL XML User Interface Language (XUL)15 ist eine von Mozilla spezifizierte GUI-Sprache, die in Mozillas Browser Firefox, dem Email-Client Thunderbird und weiteren Projekten zum Einsatz kommt und von der Gecko Rendering Engine verarbeitet wird. XUL wurde zur schnellen Entwicklung plattformunabhängiger Benutzeroberflächen entwickelt und versucht mit Hilfe von Technologien wie XML-Transformationen, CSS und JavaScript den Implementierungsaufwand für grafische Oberflächen, der durch die Mischung dieser verschiedenen Standards entsteht, zu minimieren. Zusätzlich wird an der Gecko Laufzeitumgebung gearbeitet, die in Kombination mit serverseitigen Webarchitekturen wie PHP und JSP und der Programmiersprache Java, die Entwicklung von GUI-Anwendungen mit dynamischem Inhalt auch außerhalb des Webbrowser-Kontextes erlaubt. Obwohl XUL kein Standard ist, der von einer Dachorganisation getragen wird, beschäftigen sich mehrere Projekte mit XUL Implementierungen16 und Anwendungen17. Mit der Erfindung von XUL versucht Mozilla dem durch lange Perioden der Stagnation geprägten Prozess der Standardisierung von Web-Technologien zu entkommen und aufbauend auf vorhandenen Lösungen einen weiteren Schritt in Richtung Unabhängigkeit von XHTML-basierten Services zu wagen. Die Idee dahinter sieht eine Aufteilung von Kompetenzen in vier Bereiche vor: Für die Beschreibung der baumartigen Struktur und den Inhalt des grafischen Interfaces ist die XUL-Datei verantwortlich. Das Look & Feel des Programms übernimmt ein eingebetteter oder referenzierter CSS-Code und die Ereignisbehandlung wird an JavaScript-Anweisungen übertragen. Alle internationalisierten Bezeichner einer GUI-Anwendung werden ebenfalls in einer externen Datei festgelegt. Wie auch XAML befindet sich XUL noch in der Entwicklungsphase, die von einigen wenige Quellen dokumentiert wird18 . 4.4.3 XForms Das XForms-Konzept19 ist aus der Notwendigkeit entstanden, das veraltete Formularwesen in HMTL abzulösen. XForms ist ein XML basierter Standard und vollzieht eine klare Trennung zwischen der Präsentationsschicht und dem dahinter liegenden Formularmodell [6]. Diese modulare Auslegung 15 Mozilla XUL - http://www.mozilla.org/projects/xul/ Luxor XUL - http://luxor-xul.sourceforge.net/ 17 Mozilla Amazon Browser - http://www.faser.net/mab/ 18 XUL Planet (Dokumentation des XUL Entwicklungsprozesses) - http://www.xulplanet. com/tutorials/mozsdk/ 19 XForms - http://www.w3.org/MarkUp/Forms/ 16 KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 37 Host Document (XHTML,SVG,...) XForms Model Person XForms User Interface Process Input Validate Name Address XForms:Input Abbildung 4.1: XForms-Architektur (siehe [14]). erlaubt die Definition von Formularen unabhängig vom konkreten, grafischen Erscheinungsbild und dem Endgerät. So sind neben einem XForm User Interface auch XHTML, WML und proprietäre GUI-Renderings denkbar. Aufgabe der XForms ist das Sammeln von Daten (instance data), die über das XForms Submit Protocol zwischen Server und Client ausgetauscht werden. Die Unterbrechung und Wiederaufnahme von Formulareinträgen und die Definition von Abläufen sind ebenfalls Teil der Spezifikation. Die Validierung von Formularen muss nicht wie in XHTML mit einer gesondert Scriptsprache vorgenommen werden, sondern ist Teil der Spezifikation. So kann etwa die Reihenfolge der Formulareingaben, sowie die Überprüfung von Datentypen lokal vorgenommen werden, sofern diese im XML-Schema spezifiziert wurden. Die Teilung von XForms in die Bereiche Präsentation, Logik und Datenhaltung vollzieht sich auch in der Dokumentenstruktur. Es ist wichtig zu verstehen, dass XForms kein eigenes Dokumentenformat definieren und aufgrund des Aspektes der Geräteunabhängigkeit in andere Dokumente wie XHTML eingebettet werden können (Host Document, siehe Abb. 4.1). Darin enthalten sind der XForms User Interface-Container und der XForms ModelContainer. Ersterer gibt Auskunft über die Anordnung der GUI-Elemente innerhalb des Formulars. Das XForms Model hingegen hat drei Aufgaben: Es ist für die Datenhaltung (instance), die Datenbindung an das Formular (binding) und die Abhandlung der Eingabeereignisse, die auch die Validierung KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 38 Peers Presentation Swing Renderer Interface Logic Structure WML Renderer > i am quite sure you can't read this yerk! yak '06... Style Content Behaviour Platform / Device Application Data Source Abbildung 4.2: UIML Architektur (siehe [1]). mit einbezieht (submission) zuständig. Zu den weitgefassten Designzielen von XForms zählen auch die Unterstützung von mobilen Endgeräten und die Generierung von Rich User Interfaces zur Steuerung von Geräten in Office und Haushalt. 4.4.4 UIML Die User Interface Markup Language (UIML)20 versteht sich als eine Metasprache zur Beschreibung von User Interfaces, die plattformunabhängig, geräteunabhängig und auch von der Vorstellung eines grafischen Interfaces losgelöst sein soll. Das Mapping von abstrakten Interaktionselementen in die spezifischen Sprachen Java, HTML, WML und VoiceXML, eine Sprache zur Generierung von sprachgesteuerten Interfaces (auditory displays), wird in der aktuellen Spezifikation [1] aus dem Jahr 2004 unterstützt. Diese Transformationsaufgabe wird dabei von speziellen Renderern übernommen, die einmal für jede Sprache implementiert werden müssen. UIML selbst definiert nur sehr wenige XML-Tags. Ähnlich der Document Type Definition (DTD) für die Definition eines spezifischen XML-Dialekts muss ein Vokabular, das ein direktes Mapping in eine Zielsprache oder eine allgemeinere Beschreibung vorsieht, für das Arbeiten mit UIML geschaffen werden. Die Komponenten eines Interfaces werden daher als Elemente mit einer eindeutigen Id und einem Verweis auf eine Klasse gekennzeichnet. Die Präsentation, die Anbindung an externe Datenquellen und das Interaktionsverhalten sind ebenfalls Teil der Sprachdefinition, die sich am Model-View-Controller Designpattern orientiert (siehe Abb. 4.2). Auch UITemplates und zeitliche Veränderungen der Interface-Struktur, die durch Öffnen eines neuen Fensters entstehen können, werden in UIML berücksichtigt. Die grundlegende Struktur ist in folgende Bereiche gegliedert: 1 2 < uiml xmlns = ’ http: // uiml . org / dtds / UIML3_0a . dtd ’ > < head > ... </ head > 20 UIML - http://www.uiml.org/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 39 3 4 5 6 7 8 9 10 11 12 13 14 15 16 < template > ... </ template > < interface > < structure > < part / > </ structure > < style > ... </ style > < content > ... </ content > < behavior > ... </ behavior > </ interface > < peers > < presentation > ... </ presentation > < logic > ... </ logic > </ peers > </ uiml > Interface-Elemente <part> werden innerhalb des <structure> -Tags hierarchisch angeordnet und können über den Klassennamen und die Id von anderen Tags referenziert und mit Zusatzinformation wie Styleattributen <property> versehen werden. In <presentation> wird das konkrete Mapping zwischen abstraktem Element und konkretem Rendering festgelegt. Untenstehend ist eine vereinfachte Definition eines Java Swing-Fensters: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 < interface > < structure > < part class = " JFrame " id = " JFrame " > < part class = " JButton " id = " Submitbutton " / > </ part > </ structure > < style > < property part - name = " JFrame " name = " layout " > java . awt . GridBagLayout </ property > < property part - name = " JFrame " name = " title " > TestApp </ property > </ style > </ interface > < peers > < presentation id = " JavaSwing " > <d - class id = " JFrame " used - in - tag = " part " maps - type = " class " maps - to = " javax . swing . JFrame " > ... </d - class > </ presentation > </ peers > 4.4.5 XIML Ein fehlender Standard zur Interaktion und Repräsentation von Daten führte zum Design der Extensible Interface Markup Language (XIML)21 . Die Auslegung der Sprache umfasst die ganzheitliche Unterstützung vom UI-Designprozess, über das Mapping zwischen abstrakten und konkreten Steuerele21 XIML - http://www.ximl.org/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 40 menten bis hin zu Evaluierungsfunktionen und der Einbindung von wissensbasierten Systemen zur Auswertung aller vorhandener Daten. XIML will das Paradigma interoperabler, vernetzter Softwaresysteme auch auf die Ebene des User Interfaces ausweiten, indem ein einheitlicher Standard für die Präsentation und den Austausch von Interaktionsdaten definiert wird [29]. Eine schwierige Aufgabe in Anbetracht der Tatsache, dass zu den komplexen Anforderungen von Interaktion und der Modellierung von Navigationsabläufen auch noch plattformübergreifende Synchronisation und Kontext-basierte Einflüsse hinzukommen können. Die Architektur von XIML definiert kontextuelle und strukturale Modelle und die Repräsentation eines Interfaces und bringt sie in einen relationalen Zusammenhang. Daher lässt die Nomenklatur dem Begriff der Komponente eine weitläufigere Bedeutung als in den meisten XML-GUI Sprachen zukommen. Fünf Komponenten, die eine Sammlung an Elementen beinhalten, wurden festgelegt [29]: 1. Task: Die Task-Komponente liefert eine abstrakte Beschreibung aller Vorgänge, die die Interaktion mit dem Benutzer betreffen. Sowohl die hierarchische Ordnung, als auch der Workflow können eingefangen werden. Beispiele für Vorgänge sind eine Datumseingabe oder das Starten eines CD-Players. 2. Domain: Domain-Information bezeichnet anwendungsrelevante Objekte und Datentypen unterschiedlicher Komplexität, die mit dem Interface in Verbindung gebracht werden. Etwa ein Datum oder ein abstraktes Medienabspielgerät. Objekte werden in XIML als Attribute definiert, die elementare Datentypen oder Instanzen von komplexen Objekten sind. 3. User: Die User-Komponente hält alle benutzerspezifischen Informationen fest und erlaubt die Definition von Benutzergruppen. 4. Presentation: Die Präsentationsschicht beschreibt den hierarchischen Aufbau des User Interfaces mit abstrakten Elementen wie einem Window oder einem Button. Für die Transformation in ein konkretes Erscheinungsbild ist ein Konverter für jede Plattform nötig. 5. Dialog: Der Dialog definiert alle Interaktionen und die erlaubte Navigationsstruktur für das GUI auf einer konkreteren Ebene als der Task. Ein Klick und auch Spracheingabe bezeichnen beide Interaktionen. 1 2 3 4 5 6 7 < interface xmlns = "x - schema:http: // www . ximl . org / validator / schema . xml " id = " test " > < definitions > ... </ definitions > < model_compo ne nt s > < task_model id = " dictionary " > ... </ task_model > < domain_model id = " dictobjects " > ... </ domain_model > KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 41 XIML Interface Specification Presentation Component 1 HTML Converter Presentation Component 2 WML Converter > i am quite sure you can't read this yerk! yak '06... Abbildung 4.3: XIML Architektur (siehe [29]). 8 9 10 11 12 < user_model id = " dictobjects " > ... </ user_model > < presentation _m o de l id = " java " > ... </ presentati on _m o de l > < dialog_model id = " dictdialog " > ... </ dialog_model > </ model_compo ne nt s > </ interface > Ein- und Mehrfachbeziehungen zwischen den Elementen dieser Modelle komplementieren das gesammelte Wissen für ein konkretes Interface-Rendering. Die Datenauswertung ist Teil des XIML-Frameworks. Die Sprache sieht vor, dass zu einem GUI für jede Plattform eine eigene Präsentationskomponente deklariert werden muss, die verarbeitet und angezeigt werden kann. Ist die Unterstützung mangels XML-Parser oder anderer, fehlender Vorrausetzungen nicht gegeben, kommen Konverter zum Einsatz. Um nicht für jede GUI-Anwendung neue Komponenten spezifizieren zu müssen, gibt es auch in XIML die Möglichkeit eine plattformübergreifende Präsentationsschicht mit abstrakten Elementbeschreibungen einzuführen (siehe Abb. 4.3 und Abb. 4.4). Es wird nicht definiert, wie diese Abstraktion auszusehen hat und welche organisatorischen und semantischen Informationen darin enthalten sind. Unter dem Begriff Intelligent Interaction Management werden wissensbasierte Systeme unterstützt, die zur Laufzeit Personalisierung von Inhalten, dynamische Anpassung der Informationsdichte und Synchronisation von Interaktionsinformation zwischen mehreren GUI-Instanzen ermöglichen sollen. Der hohe Abstraktionsgrad und die vielen Funktionen zwingen selbst bei kleinen GUI-Projekten zu einer umfassenden Deklaration der Modelle und Relationen. Das folgende Codestück 4.1 zeigt die für ein einfaches Java AWT Fenster nötigen Definitionen der Präsentationskomponente: Listing 4.1: Java AWT Fenster - Präsentationskomponente 1 2 3 4 5 < presentati on _m o de l id = " dictbasicpres " > < name > basic presentation model for the dictionary </ name > <! -- definition of presentation elements -- > < definitions > < relation_de fi ni t io n name = " m a i n w i n d o w _ i s _ a _ a i o w i n d o w" > KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 42 XIML Interface Specification Intermediate Presentation Component Knowledgebased System Presentation Component 1 HTML Converter Presentation Component 2 WML Converter > i am quite sure you can't read this yerk! yak '06... Abbildung 4.4: XIML Architektur mit Intermediate Presentation Component (siehe [29]). 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 < allowed_class es > < class reference = " mainwindow " slot = " left " / > < class reference = " aiowindow " slot = " right " / > </ allowed_class es > </ relation_de fi ni t io n > </ definitions > <! -- here is the hierarchy of presentation elements -- > < p r e s e n t a t i o n _ e l e m e n t id = " mainwindow " location = " optional " > < name > dictionary main window </ name > < p r e s e n t a t i o n _ e l e m en t id = " deflabel " location = " optional " > < name > dictionary definition label </ name > </ p r e s e n t a t i o n _ e l e m en t> < p r e s e n t a t i o n _ e l e m en t id = " termslist " location = " optional " > < name > list of terms in the dictionary </ name > </ p r e s e n t a t i o n _ e l e m en t> </ p r e s e n t a t i o n _ e l e m en t> <! -- now are the definitions of the ( aios ) themselves -- > < p r e s e n t a t i o n _ e l e m e n t id = " aiowindow " location = " optional " > < name > definition of the abstract window </ name > < p r e s e n t a t i o n _ e l e m en t id = " javawindow " location = " http: // www . ximl . org / ui / javaawtrender . ui # awt " > < name > rendered for the java toolkit </ name > </ p r e s e n t a t i o n _ e l e m en t> < p r e s e n t a t i o n _ e l e m en t id = " winntwindow " location = " http: // www . ximl . org / ui / winnt / window . vbx " > < name > rendered for the windows nt environment </ name > </ p r e s e n t a t i o n _ e l e m en t> </ p r e s e n t a t i o n _ e l e m en t> </ presentati on _m o de l > 4.5 Model-based User Interface XML-basierende GUI-Sprachen bieten eine Möglichkeit für die automatisierte Erstellung von grafischen Oberflächen. Je abstrakter jedoch die Definition des grafischen User Interfaces ausgelegt ist, desto schwieriger ist es, alle nötigen Anforderungen im Voraus festzulegen. Wie am Beispiel von UIML KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 43 und XIML zu sehen ist, ist der Aufwand für eine generische, deklarative Beschreibung mit zunehmender Komplexität einer GUI-Anwendung höher einzuschätzen, als eine programmatische Lösung. Zudem müssen ohnehin Transformationswerkzeuge implementiert werden, die Quellcode für die spezifische Plattform oder -sprache erzeugen. In dieser Hinsicht haben XAML und XUL den Vorteil der engen Bindung an bestehende Softwaresysteme, die eine Entwicklung von GUI-Anwendungen auch ohne programmatischen Mehraufwand erlauben. All diese Konzepte stehen aber in Widerspruch zu den Anforderungen eines plattformübergreifenden User Interfaces, das dynamischen Änderungen zur Laufzeit unterliegt und dabei kontextbezogene Informationen mit einbezieht. Model-based User Interface Tools sind Systeme zur automatisierten Erfassung und Auswertung verschiedener Interface-bezogener Datenmodelle. Bereits in den Neunziger Jahren wurden Forschungen in diese Richtung vorangetrieben. Obwohl zu diesem Zeitpunkt noch kein standardisiertes Datenformat wie XML oder tiefgreifende objektorientierte Paradigmen Teil der Softwareentwicklung waren, wurden dennoch grundlegende User Interface Modelle entworfen, die bis heute Gültigkeit haben. In [32] und [23] wurden anhand mehrere Projekte folgende Modelle identifiziert: • User Model: Die Modellierung des Users beinhaltet die Personalisierung von Inhalten und die Aufzeichnung und Analyse von Benutzerverhalten während der Laufzeit der GUI-Applikation. • Task Model: Das Task Model definiert alle Tasks, die ein User in einem GUI ausführen kann. Diese können auch anhand einer Zielbeschreibung, der Aufteilung in mehrere atomare Subtasks und Zustandsüberführungen festgehalten werden. • Application Model: Das Application Model wird auch Object Model oder Business Model genannt, repräsentiert den Zustand der Applikation und listet alle für das GUI relevanten Schnittstellen und Dienste. Diese decken sich mit den Subtasks des Task Models. • Dialog Model: Der Dialog ist eine spezifischere Auslegung des Task Models und beschreibt die tatsächlichen Interaktionsmöglichkeiten einer GUI-Anwendung. • Presentation Model: Auf Ebene des Presentation Models wird das Rendering des GUIs durchgeführt. Dazu werden die vorhandenen Informationen der anderen Models ausgewertet und in eine konkrete Darstellung transformiert. • Domain Model, Device Model und Platform Model: Je nach Auslegung des UI Tools wird eine unterschiedliche Kategorisierung der kontextspezifischen Information vorgenommen. Diese umfassen die Beschreibung der Geräte, die plattformspezifischen Anforderungen und KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 44 andere Daten aus dem Umfeld, die für die Anwendung von Bedeutung sind. 4.5.1 User Interface Generierung Die User Interfaces Generierung, die sich auf die Informationen aus den verschiedenen Models stützt, ist mit einer Reihe an Aufgaben verbunden, die es im Zuge des GUI-Rendering Prozesses zu lösen gilt [32]. Anhand der beiden model-based User Interface Tools Supple und Pebbles Personal Universal Controller (siehe Kapitel 4.5.2 und 4.5.3) werden die Schritte näher erläutert: • Zuerst muss eine Auswertung der Models und eine anschließende Identifizierung aller abstrakten Interface-Elemente passieren. Ein Beispiel für ein abstraktes Interface-Element ist die Definition eines Fenstermenüs, das je nach Wahl der Plattform anders aussehen kann, aber immer die gleiche Funktion erfüllt. • Die spätere Umwandlung in konkrete, plattformabhängige InterfaceElemente wird als Mapping bezeichnet und geschieht zusammen mit der automatisierten Anordnung der Komponenten im Interface. • Zwecks semantischer Bindung werden Zusatzinformationen zur Verhaltensmodellierung des Interfaces eingebracht. Damit können etwa Abhängigkeiten zwischen Elementen definiert werden, um ganze Funktionsgruppen anhand eines Elements zu aktivieren oder zu deaktivieren. Komplexere Verhaltensmuster werden jedoch nicht von den modelbased UI Tools abgedeckt und müssen selbstständig modelliert werden. • Kaum ein generiertes Interface entspricht in allen Belangen den Vorstellungen des Designers oder den Bedürfnissen des Users. Zusätzliche Methoden zur Evaluierung und Revision unter Einbeziehung menschlicher Beurteilungen sind daher ein adäquates Mittel zur manuellen und automatisierten Abänderung des Interfaces zur Laufzeit. 4.5.2 Projekt – Pebbles Personal Universal Controller Der Personal Universal Controller (PUC)22 ist ein Forschungsschwerpunkt im Rahmen des Pebbles Projektes an der Carnegie Mellon University, dass sich mit der Nutzung von PDAs und Smart Phones als Interaktionsgerät für verteilte Anwendungen beschäftigt. PUC setzt dabei auf die automatisierte Generierung und Personalisierung von User Interfaces für Netzwerkdienste, die sich im unmittelbaren Umfeld des Benutzers befinden und mit einer beliebigen Funktechnologie wie Bluetooth oder WLAN angesprochen werden 22 Personal Universal Controller - http://www.pebbles.hcii.cmu.edu/puc/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 45 können. Das Konzept ist auf die Entwicklung mobiler Fernsteueranwendungen für die Betriebssysteme PalmOS und Windows Mobile ausgerichtet. Der Begriff des Interfaces ist in PUC nicht nur auf grafische Oberflächen beschränkt, sondern inkludiert auch Spracheingabe und soll dem Benutzer bei der Wahl des favorisierten Interaktionsmediums freie Hand lassen. Als Basis für die Erstellung von User Interfaces zur Fernsteuerung von Geräten dient die eigens definierte XML GUI-Sprache namens PUC Specification Language 23 , die eine funktionale Gerätespezifikation anhand hierarchisch strukturierter Gruppierungen, Zustandsvariablen und Steuerbefehlen beschreibt. Die enthaltene Information ist mit der eines Application Models gleichzusetzen. Systemarchitektur Abbildung 4.5 zeigt den Systemaufbau von PUC. Da die funktionale Beschreibung von jedem Endgerät zur Verfügung gestellt werden muss, braucht es eine einheitliche Kommunikationsschnittstelle zwischen Gerät und Interface. Gerade im Bereich der Unterhaltungselektronik ist jedoch kaum ein gemeinsamer Standard zu finden. Daher müssen Geräteadapter in Software oder Hardware für die Umsetzung der Befehle des PUC-Protokolls in das proprietäre Protokollformat zwischengeschalten werden. Soweit das Gerät bidirektionale Kommunikation unterstützt, garantiert PUC die Konsistenz zwischen dem Application Model und den Inhalten des Interfaces. Speziell im Niedrigpreissegment sind aber immer noch viele Geräten mit InfrarotSchnittstellen ausgestattet und können nach dem bekannten Prinzip einer Fernbedienung lediglich Befehle entgegennehmen. In PUC existieren nach eigenen Angaben zum gegebenen Zeitpunkt Adapter für Camcorder mit IEEE 139424 -Anschluss und dem AV/C Protokoll, Videorecorder die den Steuerungsstandard HAVi25 unterstützen, den amerikanischen Gebäudesteuerungsstandard X1026 und diverse proprietäre Hardware wie eine Telefonanlage. Die Integration von Jini und UPnP wird in Aussicht gestellt. Obwohl Funktechnologien bevorzugt werden, stellt PUC keine Anforderungen an die verwendete Netzwerktechnologie. Es wird jedoch vorausgesetzt, dass jedes Gerät oder dessen Adapter über eine eigene Netzwerkanbindung verfügt, um die Peer-to-Peer Kommunikation zwischen Endgerät und dem Interface-Client, die ohne zentralen Verbindungsknoten auskommt, zu ermöglichen. Das XML-basierte Kommunikationsprotokoll ist einfach gehalten und definiert sechs Befehle zum Austausch von Gerätebeschreibung, 23 PUC Specification Language - http://www.pebbles.hcii.cmu.edu/puc/specification.html Die Datenschnittstelle ist auch unter dem Namen FireWire bekannt. 25 HAVi - urlhttp://www.havi.org/ 26 X10 - http://www.x10.com/home2.html 24 KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 46 Application PUC Device Adapter PUC Protocol Communication PUC Protocol Network (802.11, Bluetooth, IR...) Communication Abbildung 4.5: PUC Architektur (siehe [28]). Steuernachrichten und Zustandsänderungen27. Layout Generierung Die Gerätespezifikation in Form einer funktionalen XML-Beschreibung ist die Basis für die Generierung eines Interfaces. Innerhalb des Dokuments ist eine Gruppen-Baumstruktur zur Anordnung von Zustandsvariablen und Steuerbefehlen definiert. Die Variable gibt Auskunft über den Namen, den Datentyp und den Wertebereich des Zustandes. Anhand des Datentyps, der neben primären Datentypen auch eine Auflistung und eigens definierte Typen erlaubt, wird ein Interface-Element zur Darstellung und Manipulation des Zustandes ausgewählt. Dennoch sind in Form von Steuerbefehlen, die als ausführbare Buttons gerendert werden, zusätzliche Funktionen nötig, da nicht jeder Zustand im vorhinein bekannt sein kann. Am Beispiel eines Radios, das einen Button für den automatischen Frequenzsuchlauf benötigt, ist dieses Vorgehen schnell erklärt: Würde man ganz auf die Verwendung von Zustandsvariablen verzichten, entspräche die Modellierung des Interfaces einer heutigen Hardware-Fernbedienung, die keinerlei Rückmeldung über die Gerätezustände zulässt [28]. Die logische Gruppierung erlaubt dem UI-Generator, der für jede Plattform einmal implementiert werden muss, anfängliche Rückschlüsse über die Strukturierung der Interface-Elemente. Durch zusätzlich definierte Abhängigkeiten zwischen den Zustandsvariablen können weitere Rendering-Hinweise abgeleitet werden. Das Display mobiler Endgeräte ist in seiner Größe stark eingeschränkt. Daher müssen Funktionen oft in mehreren Reitern angeordnet werden. Werden im Zuge der Auswertungen Gruppierungen und Elementen gefunden, die sich aufgrund von Abhängigkeiten gegenseitig ausschließen, kann diese Information dazu benutzt werden, um die Interface-Elemente auch lokal von einander 27 PUC Communications Protocol - http://www.pebbles.hcii.cmu.edu/puc/protocol spec. html KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 47 zu trennen. Ein Beispiel: Eine Stereoanlage definiert die Operationsmodi Radio, CD, Kassette und AUX, die anhand eines Zahlenwertes von 1 − 4 definiert werden. Zu einem Zeitpunkt kann nur ein Modus in Betrieb genommen werden. Alle Zustände der CD-Sektion sind folglich nur aktiv, wenn der CD-Player in Betrieb ist. Das untenstehende Codestück repräsentiert die Nummer des aktuellen Musikstückes und zeigt die Abhängigkeit zum Mode-Zustand in <active-if> . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <? xml version = " 1.0 " encoding = " UTF -8 " ? > < spec name = " Audiophase - Stereo " > < group > < state name = " CDTrackState " > < type > < valueSpace > < integer / > </ valueSpace > </ type > < labels > < label > CD Track </ label > < label > Track </ label > < text - to - speech text = " Track " recording = " track . au " > </ labels > < active - if > < equals state = " Mode " >2 </ equals > </ active - if > </ state > ... </ group > </ spec > Die Zuweisung von Zuständen und Steuerbefehlen zu konkreten Interface-Elementen wird mit Hilfe eines Entscheidungsbaumes und damit verbundenen Fragen nach dem Typ und anderen Eigenschaften des Elements gelöst. Im Anschluss daran wird das Problem der strukturellen Anordnung durch Traversieren und Analysieren des Gruppen-Baumes in Angriff genommen. Im Falle der Stereoanlage unterteilt der UI-Generator die vier exklusiven Operationsmodi aufgrund der gewonnenen Information schließlich in mehrere, sich überlappende Reiter. Globale Funktionen, die sich auf die Aktivität aller Komponenten auswirken (Einschaltknopf), oder oft genutzt werden (Lautstärkeregler), werden durch andere Abhängigkeitsregeln am linken Rand des Interfaces angeordnet und sind immer verfügbar (siehe Abb. 4.6). Dieses Regel-basierte System wirkt sich nachteilig auf die Skalierbarkeit und Portierbarkeit des PUC-Konzeptes aus, da es mit jeder Änderung auch eine Änderung der plattformabhängigen Rendersysteme nach sich zieht. Der Entscheidungsbaum stellt zudem ein weiteres Hindernis dar, weil das Interface in einem Durchgang erstellt wird und keine weitreichenderen Überlegungen hinsichtlich des globalen Ergebnisses und gerätebedingter Einschränkungen zulässt [17], wie das im nächsten Beispiel anhand von Supple der Fall ist. KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 48 Abbildung 4.6: PUC Rendering einer Stereoanlage (siehe [28]). 4.5.3 Projekt – Supple Supple28 ist ein Softwareprojekt der University of Washington, das in einer langjähriger Tradition der HCI-Forschung steht. Es basiert auf Erkenntnissen im Bereich der Entscheidungstheorie und Optimierungsproblematik. Supple ist ein plattformunabhängiges System zur Generierung von dynamisch-adaptiven User Interfaces für Java-fähige Endgeräte und das Web. Neben einer abstrakten, funktionalen Beschreibung der Applikation auf Ebene des Sourcecodes, dienen ein Device Model und ein User Model als Informationsquellen zur GUI-Generierung [16]. Supple selbst umfasst keine abstrakte Modellierung von Tasks und semantischen Informationen, sondern konzentriert sich rein auf die technische Umsetzung der Interface Generierung. Die funktionale Beschreibung umfasst die hierarchische Anordnung von Steuerbefehlen und Zustandsvariablen, von denen der Name, der Datentyp und Einschränkungen des Wertebereichs bekannt sein müssen. Neben Basisdatentypen können auch Vektoren und komplexere Container-Datentypen definiert werden, die aus ersteren zusammengesetzt werden können. In Supple wird kein Bedeutungsunterschied zwischen der Definition einer Variable und dessen grafischer Auslegung gemacht. Container-Datentypen sind also nichts anderes, als logische Gruppierungen mehrerer Interface-Elemente, die selbst wiederum ein Interface-Element darstellen. Das Device Model beschreibt alle konkreten Elemente, die ein Gerät zur Verfügung stellt, sowie dessen spezifische Eigenschaften. Supple nimmt auf Eigenschaften wie die Plattform, die Größe des Displays und die Interaktionsmethode, die mausähnliche Eingabegeräte aber auch ein Touchpanel 28 Supple - http://www.cs.washington.edu/ai/supple/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 49 Supple Method Call Messages Supple Solver User Model Device Model Application Display Device Interface Model State and Logic Widget Proxies Concrete Widget Abbildung 4.7: Supple Architektur (siehe [15]). sein können, Rücksicht. Das User Model sammelt zur Laufzeit Daten des Benutzers, um das Interface den aktuellen Bedürfnissen anzupassen. Systemarchitektur Abbildung 4.7 zeigt die Architektur von Supple. Für die automatisierte Generierung wird ein Interface Model definiert, das die Steuerbefehle und Zustandsvariablen des unterliegenden Application Models als abstraktes Interface-Elemente exportiert und dem Supple Solver zur Verfügung stellt. Dieser erstellt anhand der Device Model Information mehrere plattformabhängige Widget Proxies und ordnet sie mit Hilfe einer kombinatorischen Suche einem Element zu. Zuletzt werden die bestehenden Verbindungen ausgewertet und für jedes abstrakte Element ein konkretes UI-Element generiert. Ist die Anbindung der Applikation mit Hilfe von Bean-Objekten realisiert, garantiert Supple die bidirektionale Konsistenz zwischen den Daten des User Interfaces und dem Application Model [15]. Mit dieser Funktionalität sind mehrere Instanzen eines GUI mit gleichbleibender Applikationslogik ohne zusätzlichen Aufwand denkbar. Layout Generierung Supple definiert die Aufgabe des Interface-Rendering als Optimierungsproblem, das Teil der theoretischen Informatik und des Forschungsgebietes der Künstlichen Intelligenz ist. Das Ziel ist die Suche nach der bestmöglichen Darstellung des User Interfaces unter den gegebenen Einschränkungen und Erkenntnissen. Diese sind durch die funktionale Spezifikation des InterfaceModels, durch das Device Model und durch die Ablaufverfolgung des Benutzers gegeben. Als Maß für die Optimierung wird eine Kostenfunktion, die den Navigationsaufwand für den Benutzer darstellt, herangezogen. Das bestmögliche Interface-Rendering, das aus einer Menge an errechneten Möglichkeiten ausgewählt wird, ist jenes, das den minimalsten Gesamtaufwand KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 50 aufweist. Die Kosten einer Möglichkeit können als gewichtete Summe einzelner Kostenfunktionen der Interface-Elemente beschrieben werden. Die Kosten für ein einzelnes Element setzen sich aus mehreren Faktoren K und zugehörigen Gewichtungsfaktoren uk zusammen, die durch Interaktion des Benutzers fortwährend adaptiert werden (siehe Formel 4.1 aus [17]). $(render(e)) = K uk (render(e)) (4.1) k=1 Als Lösungsverfahren des Optimierungsproblems auf Basis der InterfaceKostenfunktion wird der Branch and Bound-Algorithmus29 verwendet, der es erlaubt, die Suche auf ein eindimensionales, rekursives Verfahren zu reduzieren. Indem der hierarchisch aufgespannte Suchbaum in Subregionen unterteilt wird, die gesondert auf die Grenzen der gesuchten Variablen analysiert werden können, fällt es leichter ungültige Lösungsbereiche frühzeitig zu finden und zu verwerfen. Bedingt durch die vielen Abhängigkeiten müssen selbst bei einfachen Beispielen wie der Generierung eines User Interfaces für eine Mediensteuerung bis zu 1,8x109 potentielle Rendering-Varianten beachtet werden (siehe Abb. 4.8). Mit Hilfe verteilten Wahrscheinlichkeitsberechungen hinsichtlich des zu erwartenden Nutzerverhaltens und heuristischer Annäherungsfunktionen an das theoretisch optimalste Interface kann allerdings eine annehmbare Reduktion des Suchraumes erreicht werden. So stellt die Auswertung für ein modernes PC-System bei einer durchschnittlichen Rechendauer von 1s keine allzu großen Schwierigkeiten dar. Für einen PDA mit eingeschränkter Hardware kann sich diese Zeitdauer jedoch um den Faktor 40 erhöhen [17]. Adaptierung und Personalisierung Ein wichtige Erkenntnis von Supple ist die Tatsache, dass das Ergebnis des Rendering-Prozesses selten den Erwartungen und Bedürfnissen eines bestimmten Benutzers entspricht. Die Personalisierung von Inhalten ist daher Gegenstand intensiver Forschungen. In Supple sind zwei Arten der Personalisierung bekannt [3]: Adaptierung bezeichnet die automatisierte Änderung des Interfaces auf Basis des Nutzerverhaltens und ist auch im Bereich der künstlichen Intelligenz unter dem Namen Preference Elicitation bekannt [18] . Die manuelle Anpassung ist eine vom Benutzer initiierte Methode zur Evaluierung der erwarteten Qualität des Renderings. Die Adaptierung setzt dabei auf das Erfassen, Verarbeiten und Interpretieren von Benutzerspuren. Der Zustandsautomat einer Applikation wird dabei in Relation zu den ermittelten Interaktionen des Benutzers gesetzt. Werden im Zuge der Auswertung iterative Vorgänge entdeckt, die sich über mehrere, von einander 29 Branch and Bound Algorithmus - http://www.ie.bilkent.edu.tr/˜omer/research/bb.html KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 51 (a) (b) Abbildung 4.8: Renderings einer Mediensteuerung für PC (a) und Touchpanel (b). Beide wurden auf dem Desktop-Screen mit einer Auflösung von 1680 x 1050 erstellt, nahmen jedoch weniger als den zur Verfügung stehenden Platz in Anspruch. Die Hauptcontainer des Interfaces (LightBank, A/V Controls, Vent ) waren ursprünglich sogar untereinander angeordnet und wurden erst durch eine zusätzliche Größeneinschränkung mit maximal 640 x 480 Pixel in eine Form mit ausgewogenem Seitenverhältnis gebracht. entfernte Interaktions-Objekte wie Fenster, Popup-Dialoge und Reiter erstrecken, wird versucht diese Wegkosten zu minimieren. Die automatisierte Umstrukturierung von Layout und Elementanordnungen durch Kopie oder Verschieben muss in sorgfältiger Abwägung der Konsequenzen bedacht werden. Dazu zählt die Desorientierung des Benutzers durch sich dynamisch ändernde Inhalte als auch der Verlust der Konsistenz zwischen ähnlichen Interfaces. Für das Problem der Preference Elicitation wird ein zu Supple komplementäres System namens Arnauld 30 eingesetzt, das ebenfalls entscheidungstheoretische Optimierungsverfahren verwendet [18]. Example Critiquing bezeichnet eine vom Benutzer initiierte Änderungen im System und im Falle von Supple dem konkreten User Interface. Möglich wird dies durch ein in Supple enthaltenes Werkzeug, das zur Laufzeit Änderungen von GUIKomponenten erlaubt (siehe Abb.4.9). Neben dem Slider kann das LevelElement auch noch durch andere Interface-Elemente wie eine Combobox, eine Liste oder ein Spinner-Wiget, das ein manuelles Eingabefeld und zwei kleine Knöpfe zur Abänderung des Wertes um 1 darstellt, repräsentiert werden. Allein aus dieser Methode lassen sich allerdings nicht immer genügend Parameter zur Erstellung der Supple-Kostenfunktion und nachhaltigen Ver30 Arnauld - http://www.cs.washington.edu/ai/arnauld/ KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 52 Abbildung 4.9: Supple – Werkzeug zur dynamischen Änderung von GUIKomponenten zur Laufzeit. besserung der subjektiven Qualität des Interfaces ermitteln. Für diese Fälle generiert Arnauld einfache binäre Fragen, die zwei konkrete Interface-Renderings oder einfache Interface-Elemente miteinander vergleicht und den User nach dem qualitativ besseren Ergebnis fragt. Wichtig ist dabei, dass auch die Fragen signifikanter Relevanz sein müssen, um genügend Informationen extrahieren zu können. In diesem Zusammenhang muss dem Benutzer der Unterschied zwischen den Renderings bewusst sein, um ein Urteil fällen zu können. Betrifft die Frage etwa nur das Aussehen eines einzelnen Elements, so muss diese in einem auffolgenden Schritt auch im Kontext des gesamten Interfaces präsentiert werden, um dieses Bewusstsein zu gewährleisten [18]. Kapitel 5 GUI-Builder 5.1 Konzept Das Supple Projekt (siehe Kapitel 4.5.3) hat sich als brauchbares SoftwareWerkzeug zur automatisierten Generierung grafischer User Interfaces erwiesen. Supple verfügt über geeignete Schnittstellen zur Anbindung externer Applikationslogik. Diese muss in der Lage sein, einen Bezug zwischen dem technischen Aufbau des Interfaces und der zugrundeliegenden Aufgabe der Anwendung herzustellen. Diese Verbindung ist grundsätzlich bei jeder Software der Fall, bei der sowohl die Benutzeroberfläche als auch die Logik gemeinsam entwickelt werden. Verteilte Netzwerkgeräte liefern hingegen nur funktionale Beschreibungen der Schnittstellen ohne Bezug auf den Kontext der Anwendung zu nehmen oder gar Auslegung und Verhalten eines grafischen Interfaces zu definieren. Die Service-Plattform UPnP integriert mit Absicht keine Unterstützung für Benutzeroberflächen, um die herstellerspezifische Individualität der Produkte zu gewährleisten [7]. Die zur Verfügung stehenden Controlpoint-Implementierungen bieten lediglich ein rudimentäres Interface zur zentralen Fernsteuerung der UPnP-Geräte und sind für Laien nur schwer bedienbar (siehe Abb.5.1). Aus dieser Überlegung heraus entstand die Idee zu einer Erweiterung des UPnP-Standards, die den Nutzen einer einheitlichen Service-Plattform auf das User Interface ausweitet und so zu einem Gesamtkonzept für die Steuerung verteilter Anwendungen und Gerätedienste beiträgt. Dafür müssen folgende Anforderungen erfüllt werden: • Zur Fernsteuerung von UPnP-Geräten soll ein ein gemeinsames User Interface erstellt werden, das in ansprechender Form präsentieren und intuitiv bedienbar sein. • Zusätzlich zu der funktionalen UPnP-Gerätespezifikation muss eine Informationsquelle gefunden werden, die Aufschluss über die semantische Zusammengehörigkeit von Interface-Elementen und dadurch zwischen den einzelnen, ausführbaren UPnP-Aktionen gibt. 53 KAPITEL 5. GUI-BUILDER 54 1 Abbildung 5.1: Cyberlink Controlpoint (siehe auch Kap. 3.3) – Entlang einer Baumstruktur werden die Services, Aktionen und Zustandsvariablen der UPnP-Geräte gelistet. Erst auf dritter Ebene ist das Ausführen einer Aktion möglich. Eine eklatante Schwäche hinsichtlich der Benutzerfreundlichkeit zeigt folgender Fall: Wurde ein neues Gerät gefunden oder vom Netzwerk abgemeldet, wird der gesamte Baum geschlossen und neu aufgebaut. • Es dürfen keine Einschränkungen hinsichtlich der Funktionalität bestehender UPnP-Mechanismen gemacht werden. • Ein UPnP-basierter GUI-Builder soll für mehrere Plattformen realisiert werden. Neben der Entwicklung einer PC-Anwendung mit dem Supple-Toolkit soll auch ein reduziertes User Interface für Smart Phones implementiert werden. Das mobile Endgerät wird am besten dem Paradigma einer universell einsetzbaren und drahtlosen Fernsteuerung gerecht. • Sofern die Möglichkeit gegeben ist, soll mit dem UPnP Event-Mechanismus und der gemeinsamen Datenhaltung Konsistenz zwischen den Inhalten der verschiedenen User Interfaces erreicht werden. Konsistenz bedeutet in dieser Hinsicht, dass Änderungen an einem Interface des gesteuerten UPnP-Dienstes auch auf andere Interface-Renderings, die die selben Geräteinhalte darstellen, reflektiert werden sollen. 5.1.1 System-Schnittstellen Für die Implementierung des GUI-Builder Prototyps wird ein OSGi-Framework mit einem Bundle zur Kommunikation mit UPnP eingesetzt. KAPITEL 5. GUI-BUILDER 55 Domoware Base Driver generate Exporter UPnP Device 2 Importer Virtual UPnP Device 1 generate Cyberlink OSGi Framework UPnP Network Virtual UPnP Device 2 UPnP Device 1 Abbildung 5.2: Aufbau des Domoware Base Drivers (siehe Domoware Homepage). OSGi-Framework Um eine Vereinfachung des Entwicklungsprozesses und maximale Kompatibilität zwischen den einzelnen Softwarekomponenten zu erreichen, wird ein OSGi-Framework Release 4 eingesetzt. Die Entwicklung des UPnP-GUI Builders wird mit dem Eclipse Equinox 2 Framework realisiert. Equinox ist ein Teil der Java-Entwicklungsumgebung Eclipse IDE und wird für das Management der OSGi-Plugins (Bundles) verwendet. Durch die enge Bindung zwischen OSGi-Framework und IDE können OSGi-Bundles in Eclipse entworfen und auch direkt darin getestet werden. UPnP-OSGi Gateway Für die Integration von UPnP in das OSGi Service-Framework steht der UPnP Base Driver von Domoware3 zur Verfügung. Das Bundle agiert dabei als Gateway zwischen den beiden Standards. Es importiert alle gefundenen UPnP-Geräte als generische OSGi-Services und hilft beim Export aller in OSGi entwickelten UPnP-Geräte ins UPnP-Netzwerk (siehe Abb. 5.2 von der Domoware-Website4 ). 2 Eclipse Equinox - http://www.eclipse.org/equinox/ Domoware - http://domoware.isti.cnr.it/ 4 Domoware UPnP Base Driver - http://domoware.isti.cnr.it/documentation.html 3 KAPITEL 5. GUI-BUILDER 5.1.2 56 Setup Das in Abbildung 5.3 ersichtliche Setup zeigt die Zusammenhänge zwischen den einzelnen Applikationen. Der GUI-Builder PC ist als OSGi-Bundle entworfen und hat auf die OSGi-internen und, über den Base Driver, auf die externen UPnP-Geräte Zugriff. Er nutzt die von den verteilten UPnP-Geräten zur Verfügung gestellte, XML-Gerätebeschreibung, um anhand dieser Information ein User Interface zu generieren. Das selbe Konzept wird beim mobilen GUI-Builder angewandt. Diese Anwendung wurde jedoch ohne den Overhead des OSGi-Frameworks entwickelt und besteht aus einer Gateway-Anwendung am PC und einem mobilen Client am Smart Phone. Das Gateway ist ein eigenständiger UPnPControlpoint und bereitet die Informationen der gefundenen UPnP-Geräte für den Client auf. Ist ein Smart Phone über Bluetooth zum Gateway verbunden, bekommt es die Gerätebeschreibungen übermittelt und generiert ein GUI zur Fernsteuerung. Die bei der Interaktion durch den Benutzer erzeugten Befehle werden anschließend an das Gateway zurückgeschickt und von diesem auf dem angesteuerten UPnP-Gerät ausführt. Diese Server/ClientArchitektur hat den Vorteil, dass speicherintensive Aufgaben wie das Parsen von XML-Beschreibungen und die Datenhaltung, die am mobilen Endgerät zu Performanceengpässen führen würden, auf den Gateway-Server ausgelagert werden können. Das mobile Endgerät muss sich nur um die Darstellung und Kommunikation kümmern. 5.2 Implementierung - PC Die Implementierung des GUI-Builders wird anhand folgender Bereiche erläutert: • OSGi-spezifische Entwicklungsmerkmale, die die Bundle-Struktur und die Anbindung an die UPnP-Welt beleuchten. • Die Beschreibung des Systemaufbaus. • Die Implementierung des GUI-Generators mit Hilfe des Supple Toolkits. • Erweiterung der UPnP-Gerätespezifikation durch die Integration relevanter Zusatzinformationen für eine verbesserte GUI-Generierung. 5.2.1 Entwicklung mit OSGi Ein OSGi-Bundle ist das Herzstück des GUI-Builders. Es ist nicht alleine lauffähig, sondern muss innerhalb eines OSGi-Frameworks gestartet werden. Jedes Bundle stellt hierfür eine Activator -Schnittstelle zur Verfügung. Diese wird beim Starten des Framework aktiviert und kennzeichnet den Eintrittspunkt in das Programm. Darauf kann eine herkömmliche Java-Applikation KAPITEL 5. GUI-BUILDER 57 OSGi Core UPnP Device Bundle Misc. Bundle UPnP Device Bundle > i am quite sure you can't read this yerk! yak '06... Basedriver Bundle GUI Builder PC UPnP Network UPnP Device Mobile GUI Builder Bluetooth Gateway Controlpoint Abbildung 5.3: Systemaufbau mit beiden GUI-Builder Applikationen. aufgebaut werden. Ein Vorteil in der Arbeit mit OSGI ist der Informationsaustausch zwischen den Bundles über eine zentrale Registrierungsstelle im Framework. Dort können Services registriert werden, die zur Laufzeit zur Verfügung stehen. Alle Bundles können sich als Listener für beliebige Service-Klassen anmelden und werden über Zustandsänderungen wie etwa die An- und Abmeldung von zugehörigen Objekten, informiert. OSGi enthält eine Reihe an vordefinierten Services. Dazu zählt eine einfach gehalten UPnP-Geräteklasse mit Zugriff auf UPnP-Services, Aktionen und Zustandsvariablen. Mit Hilfe dieser OSGi-Serviceschnittstelle für UPnP meldet der Domoware Basedriver alle gefundenen UPnP-Geräte an. Eine weitere Eigenschaft von OSGi ist die Einbindung passiver Bundles, die nichts anderes als globale Programmbibliotheken darstellen. Für alle aktiven und passiven Bundles können Klassen-spezifische Zugriffsrechte mittels einer Manifest-Datei konfiguriert werden. Die Modularität des OSGiKonzeptes erlaubt es, eine Softwareanwendung nicht mehr als starres System, sondern als eine Zusammenspiel mehrerer, dynamischer Komponenten zu begreifen. Dementsprechend muss auch den Beziehungen zwischen den KAPITEL 5. GUI-BUILDER 58 Bundles durch eine implizite Startreihenfolge Rechnung getragen werden, indem jedes Bundle die Abhängigkeiten in seinem Manifest definiert. Für das lauffähige Setup des PC GUI-Builders sind folgende Bundles notwendig. Sie wurde als Eclipse Plugin-Projekte angelegt und direkt mit dem integrierten OSGi-Framework Equinox entwickelt und getestet: • Domoware Basedriver und Basedriver Extra Bundle: Das Gateway zwischen UPnP und OSGi. • Controlpoint-Bundle: Eine Bibliothek mit Hilfsklassen, um über angemeldete UPnP-Geräte informiert zu werden. • UPnPUI Bundle: GUI-Builder Applikation für den Desktop. 5.2.2 Systemaufbau Bei der Konzeption des Systemaufbaus wurde auf eine Trennung von Datenhaltung, Applikationslogik und GUI geachtet. Daraus ergibt sich folgende Aufteilung der wichtigsten Zuständigkeitsbereiche: • net.digidop.upnpui.business.data: Das Package ist für das Management der Applikationsdaten und die Kommunikation mit UPnP zuständig. • net.digidop.upnpui.gui: Darin sind alle GUI-relevanten Klassen enthalten. • net.digidop.upnpui.business.generator: Der Generator kümmert sich um die Aufbereitung der UPnP-Gerätedaten und leitet diese an das Supple-Toolkit, das daraus ein User Interface rendert, weiter. Datenhaltung Um Informationen über im Netzwerk befindliche UPnP-Geräte zu erhalten und um diese ansteuern zu können, wird ein UPnPSupervisor definiert. Er überwacht die An- und Abmeldung der Geräte und speichert die Objekte in einem zugehörigen UPnPDeviceManager, der für die Datenhaltung der Geräte zuständig ist. Allfällige Änderungen werden an betroffene Komponenten wie das GUI weitergeleitet. Mit der Anmeldung eines Gerätes liegt dessen funktionale Beschreibung in Form einer objektorientierten Baumstruktur vor. In einem UPnPDevice sind alle UPnPServices enthalten, die wiederum Zugriff auf die UPnPAction-Objekte und UPnPStateVariables erlauben. Leider ist das Traversieren des Baumes durch die OSGi-bedingte UPnP-Servicedefinition nur in Richtung der Unterelemente möglich. Daher wurde eine ActionPath-Datenstruktur definiert, die Referenzen zu allen Entitäten entlang eines bestimmten Aktionsweges enthält. Dies ist notwendig, da ausgehend von einer UPnPAction, oft auch auf das Service oder das Device zurückgeschlossen werden muss. Um die Zustände der UPnP-Geräte KAPITEL 5. GUI-BUILDER 59 auch zur Laufzeit überwachen zu können, abonniert der Supervisor bei der Anmeldung eines Gerätes alle verfügbaren Services. Der UPnP-Eventing Mechanismus garantiert, dass alle Änderungen von ereignisorientierten Zustandsvariablen eines abonnierten Services an die Applikation übermittelt werden. GUI Abbildung 5.4 zeigt das GUI der Applikation. Im Bereich Available Devices werden alle entdeckten UPnP-Geräte gelistet. Durch Doppelklick wird der Supple Interface-Generator angestoßen und ein Fenster mit einem konkreten Rendering zur Steuerung des Gerätes erzeugt (siehe Abb.5.7 und 5.8). Das aktive Gerät wird anschließend im unteren Bereich Active Devices gelistet und kann kein zweites Mal instanziert werden. Durch das Schließen des Fensters oder den Klick auf den Namen in der Active Device-Liste kann das erstellte User Interface des Gerätes wieder entfernt werden. Um ein schöneres UI-Design zu erzielen, wurde anstatt des standardisierten Java Swing Look and Feels die externe GUI-Bibliothek JGoodies Looks5 eingesetzt. In einer zukünftigen Version soll die Erstellung von User Interfaces aus zusammengesetzten Teilen verschiedener UPnP-Geräte möglich sein. Damit kann eine individualisierte Oberfläche zur Steuerung und Übersicht über mehrere, in einem Szenario vernetzte Geräte realisiert werden. Es wäre etwa denkbar, einen Lichtschalter dazu zu benutzen, gleichzeitig einen CD-Player weiterzuschalten und die Temperatur einer UPnP-fähigen Heizung zu regulieren. In einem gemeinsamen GUI wären somit der Lichtschalter, die Anzeige des aktuellen Songtitels und die Raumtemperatur von Interesse. Die Definition von Abläufen mit UPnP-fähiger Soft- und Hardware ist Teil des Torem-Frameworks, das in [39] näher erläutert wird. Der Informationsaustausch zwischen Applikationslogik und GUI ist über eine Schnittstelle definiert, die Befehle in Form von Beans mit angehängten Objekten vom Interface-Typ IRenderedEntities kapselt. Jedes Objekt, das dieses Interface implementiert, kann übergeben werden. Das Konzept wird vor allem zur Benachrichtigung und einheitlichen Darstellung von Objekten im GUI benötigt. Die Bean-Klasse kennt derzeit vier Befehle, die über das Hinzufügen und Entfernen von UPnP-Geräten und die Erstellung und Zerstörung des User Interfaces eines aktiven Gerätes informieren. Obwohl alle Business-Komponenten Bean-Objekte an das Interface schicken können, macht derzeit nur der UPnPDeviceManager davon Gebrauch, wenn Geräte an- und abgemeldet werden. 5 JGoodies Looks - http://www.jgoodies.com/freeware/looks/ KAPITEL 5. GUI-BUILDER 60 Abbildung 5.4: GUI-Builder PC Applikation. 5.2.3 GUI-Generator Das Supple-Toolkit bildet die Schnittstelle zwischen diesem Datenmodell der Geräte und dem konkreten Interface-Rendering und kümmert sich sowohl um das Mapping von UPnP-Datentypen und Interface-Elementen als auch um das Layout der GUI-Komponenten. Zusätzlich überwacht Supple die Zustände des User Interfaces und leitet durch Interaktionen hervorgerufene Änderungen an interessierte Komponenten der Applikationsschicht weiter. Bevor der Rendering-Prozess eingeleitet werden kann, muss eine Informationsquelle in Form einer UPnP-Gerätebeschreibung ausgewertet werden. UPnP arbeitet mit Aktionen und Zuständen, die als Parametern für Aktionen eingesetzt werden, um Geräte ansteuern zu können. Sehr oft sind UPnPAktionen Getter und Setter -Funktionen einer Zustandsvariable. Am Beispiel einer Volume-Zustandsvariable für einen UPnP-fähigen Medienplayer wird die Vorgehensweise erklärt. Folgender Quellcode zeigt einen Auszug aus dem Dokument des Config-Services am Gerät, das die Volume-Variable eines Medienplayers und deren Aktionen GetVolume und SetVolume definiert: 1 2 3 4 5 6 7 8 9 10 11 < actionList > < action > < name > GetVolume </ name > < argumentList > < argument > < name > Volume </ name > < r e l a t e d S t a t e V a r i a bl e> Volume </ r e l a t e d S t a t e V a r i a b l e> < direction > out </ direction > </ argument > </ argumentList > </ action > KAPITEL 5. GUI-BUILDER 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 61 < action > < name > SetVolume </ name > < argumentList > < argument > < name > Volume </ name > < r e l a t e d S t a t e V a r i a bl e> Volume </ r e l a t e d S t a t e V a r i a b l e> < direction > in </ direction > </ argument > </ argumentList > </ action > </ actionList > < serviceStat eT a bl e > < stateVariable sendEvents = " yes " > < name > Volume </ name > < dataType > ui1 </ dataType > < defaultValue > 255 </ defaultValue > < allowedValu e Ra ng e > < minimum >0 </ minimum > < maximum > 255 </ maximum > </ allowedValue Ra ng e > </ stateVariable > </ serviceStat eT a bl e > Das <direction> Element eines Action-Parameters gibt an, ob die referenzierte Zustandsvariable als Ein- oder Ausgabeparameter gedacht ist. Im <serviceStateTable> sind die Eigenschaften der Variable spezifiziert. Besondere Bedeutung kommt auch dem Attribut sendEvents zu, das angibt, ob die Zustandsvariable Events aussendet. UPnP-Controlpoint Instanzen können das übergeordneten Service abonnieren und werden so über die Änderungen der enthaltenen Zustandsvariablen informiert. Ein Nachteil dieses UPnP-Mechanismusses ist, dass man bei mehreren Eventvariablen in einem Service immer alle abonnieren muss. Für das Interface-Rendering liefert diese funktionale Gerätebeschreibung wichtige Informationen. Die Annahme ist, dass eine UPnP-Aktion den elementarsten, ausführbaren Teil eines Interfaces darstellt. Anhand der Eingangsparameter der Setter -Aktion kann auf die Eigenschaften des referenzierten Zustandes rückgeschlossen werden. Vor allem der Datentyp und der Wertebereich bieten Anhaltspunkte zur Repräsentation des Parameters durch ein Interface-Element. Da eine Getter -Aktion die selbe Zustandsvariable wie die Setter -Aktion referenziert, muss sie nicht extra im Interface aufscheinen. Der abgefragte Wert der Zustandsvariable ist ohnehin schon im von der Setter-Aktion gerenderten GUI-Element ersichtlich. Der Zustand einer Variable am UPnP-Gerät kann jedoch nicht nur durch die Interaktion mit einem einzigen Interface sondern auch durch andere, im Netzwerk verteilte GUIs oder durch interne Abläufe am Gerät selbst geändert werden. Ein häufiges Abfragen des Wertes mit der Getter -Aktion ist kein gutes Mittel, um die Aktualität des Wertes und damit die Konsistenz der Inhalte des Interfaces gewährleisten zu kön- KAPITEL 5. GUI-BUILDER 62 nen. Dazu ist der vorher erwähnte Event-Mechanismus, der jede Änderung an interessierte Netzwerkteilnehmer bekannt gibt, besser geeignet. Für den Fall, dass für eine Aktion mit Rückgabeparameter keine entgegengesetzte Setter -Aktion gefunden wird, muss diese trotzdem im Interface kenntlich gemacht werden. Weil sie jedoch selbst keinen Eingabeparameter definiert, der in ein Elemente umgewandelt werden könnte, muss die Aktion mit einem Button zum Ausführen und im einfachsten Fall einem zusätzlichen Textfeld zur Darstellung des Rückgabewertes repräsentiert werden. UPnP erlaubt auch die Definition von Aktionen mit mehreren oder keinen Ein- oder Ausgabeparametern. Auch Kombinationen sind denkbar. Alleine aus dem Kontext der Gerätebeschreibung kann aber kein Bezug zur konkreten Auslegung im Interface abgeleitet werden. Ein Beispiel hierfür ist eine Aktion mit zwei Integer-Parametern. Ohne die Aufgabe des Gerätes zu verstehen, kann keine genaue Angabe über die Auslegung der Bedienung getroffen werden. Es wäre beispielsweise denkbar diese Aktion als 2D-Matrix mit diskreten Werten aufzufassen und in equidistanten Abständen einen Knopf für jede der Kombinationen im Interface zu zeichnen. Genauso gut kann es aber auch möglich sein, dass zwei Slider eine bessere Repräsentation darstellen. Darüber hinaus ist nicht bekannt, ob die Aktion nur zur Konfiguration von Einstellungen dient und die Aktion mit einem Bestätigungsbutton ähnlich einem Formular ausgeführt werden sollte. Oder aber ob sie, sobald das Interface-Element manipuliert wird, ohne Bestätigung ausgeführt werden soll. Ideen um semantische Probleme dieser Art lösen zu können, werden ansatzweise in Kapitel 5.2.4 erläutert und anhand einiger Regeln demonstriert. Das Konzept der UPnP-Zustandsvariablen kommt Supple sehr entgegen. Der Toolkit benötigt für die Generierung des Interfaces keine Beschreibung konkreter Interface-Elemente, sondern verwendet abstrakte Zustandsvariablen, die neben der Spezifikation des Datentyps und möglichen Einschränkungen des Wertebereichs auch nach einem Bean-Objekt zur Speicherung des Zustandes verlangen. Erst beim Rendering-Prozess werden die Zustandsvariablen anhand ihrer Eigenschaften in Elemente wie Buttons, Slider und Eingabefelder umgewandelt. Dabei ist eine fixe Zuweisung zwischen Zustand und Interface-Element nicht gegeben. Vielmehr schränken deren Eigenschaften die möglichen Render-Ergebnisse ein. Der Datentyp ist zusammen mit den wertebedingten Einschränkungen der Zustandsvariable und den Eigenschaften des Darstellungsgerätes das entscheidende Kriterium zur Generierung des konkreten Interface-Elements. Am Beispiel einer Integer-Variable mit einer ganzzahligen Einschränkung von 0 − 5 werden Ergebnisse der dynamische Elementauswahl von Supple gezeigt. Alle Varianten in Abb.5.5 stellen legale Repräsentationen des Eingangsparameters der UPnP-Aktion SetFanLevel dar. KAPITEL 5. GUI-BUILDER 63 <action> <name>SetFanlevel</name> <argumentList><argument> <name>FanArg</name> <relatedStateVariable>Fanlevel </relatedStateVariable> <direction>in</direction> </argument></argumentList> </action> ... <stateVariable sendEvents="yes"> <name>Fanlevel</name> <dataType>ui1</dataType> <defaultValue>0</defaultValue> <allowedValueRange> <minimum>0</minimum> <maximum>5</maximum> </allowedValueRange> </stateVariable> Abbildung 5.5: Verschiedene Rendering einer Supple-Zustandsvariable mit Integer-Datentyp und ganzzahligem Wertebereich von 0 − 5. Die Eigenschaften werden direkt aus der XML-Beschreibung einer UPnP-Aktion, deren Parameter auf eine UPnP-Zustandsvariable verweist, übernommen. Datentyp Der Datentyp der verknüpften UPnP-Zustandsvariable muss in einen JavaBasisdatentyp umgewandelt werden und anschließend als Supple-Datentyp der Instanz einer Supple-Zustandsvariable StateVar mitgegeben wird. OSGi selbst stellt für die erste Konvertierung mit dem UPnPStateVariable-Interface eine entsprechende Methode getJavaDataType() zur Verfügung. Die Konvertierung in den entsprechenden Supple-Datentyp funktioniert ebenfalls nach einem einfachen Mapping-Prinzip. Die Tabelle 5.2.3 zeigt die Konvertierungsschritte. Bean-Datenstruktur Zur Speicherung des Variablenzustandes wird ein Bean-Objekt benötigt. Das Objekt muss eine Membervariable entsprechend dem Datentyp und Namen des Zustandes enthalten und zusätzlich eine Getter und eine Setter -Methode zur Manipulation des Wertes definieren. Da der Name der Membervariable nicht im vorhinein bekannt ist, kann keine statische Bean-Klasse herangezogen werden. Für diese Aufgabe wird JavAssist 6 verwendet. Die Bytecode Engineering-Bibliothek ermöglicht die Erstellung und Instanzierung von Java Klassen zur Laufzeit durch String-basierte Spezifikation auf Ebene des Sourcecodes. Wenn das Bean-Objekt darüber hinaus für die Zustandsüberwachung ein Objekt der Klasse java.beans.PropertyChangeSupport mitführt, garantiert Supple die Benachrichtigung aller, an einer Variable interessierten, Komponenten und führt in entgegengesetzter Richtung auch Updates des Interfaces bei Manipulation des Bean-Objektes aus. 6 JavAssist - http://www.csg.is.titech.ac.jp/˜chiba/javassist/ KAPITEL 5. GUI-BUILDER 64 UPnP datatype ui1, ui2, ui4 i1, i2, i4, int r4, r8, float Java datatype java.lang.Integer, int java.lang.Integer, int java.lang.Float, float boolean java.lang.Boolean or boolean java.lang.String string enum (as Xml-based string) java.util.Collection additional formats for time, date and url any pre-defined Supple datatype IntegerTypeImpl IntegerTypeImpl IntegerTypeImpl (not exact) BooleanTypeImpl StringTypeImpl, TextTypeImpl StringTypeImpl with collection constraints additional formats for date and image Tabelle 5.1: Mapping zwischen UPnP-, Java- und Supple-Datentypen. ActiveDevice 1 n Supple Application ActionPath Bean UIGenerator Supple Renderer Container TypeImpl 1 n UIObject StringTypeImpl Renderer Renderer StateVarImpl SimpleValue Type Abbildung 5.6: GUI-Builder – Klassendiagramm des Rendering-Prozesses. Rendering-Prozess Abb. 5.6 bietet einen Überblick über die im Rendering-Prozess involvierten Klassen. Der UIGenerator bereitet die Informationen eines angeforderten UPnP-Gerätes für den anschließenden Rendering-Vorgang mit Supple auf. Dazu wird mit den UI-relevanten Supple Klassen7 eine hierarchische Struktur aus Containern und Komponenten ähnlich dem Java Swing Modell8 auf7 8 Supple Java Doc - http://www.cs.washington.edu/ai/supple/docs/ Java Foundation Classes und Swing - http://java.sun.com/products/jfc/ KAPITEL 5. GUI-BUILDER 65 gebaut. Die Zustandsvariablen der Klasse StateVarImpl sind gleichzeitig Objekte des Interfaces UiObject, die mittels ContainerTypeImpl zu Gruppierungen zusammengefasst werden können. Diese Container können wiederum in ein UiObject verpackt werden, womit der Kreis geschlossen ist. Beim Traversieren eines UPnP-Gerätes werden alle Services und Aktionen als Container definiert. Die Parameter einer Aktion hingegen, die bekanntlich Zustandsvariablen eines Services referenzieren, werden mit der definierten Klasse UiObjectCreator als StateVarImpl instanziert und dem Container der Aktion hinzugefügt. Ein finales UiObject, das die Verschachtelung der Komponenten und Container enthält wird in einer SuppleApplication gekapselt und zuletzt einer Instanz des Interfaces Renderer übergeben. Supple definiert mit HtmlRenderer, AwtRenderer und SwingRenderer für drei Plattformen konkrete Renderer, die über globale DeviceProperties gesetzt werden können. Alle drei Plattform können auf eine vollständige Bibliothek aller plattformspezifischen Interface-Objekte im Package edu.washington.cs.supple.wlib zurückgreifen, um das Interface zu rendern. Die Auswahl und Positionierung der Interface-Elemente wird anschließend von einer Solver-Klasse anhand des in Kapitel 4.5.3 beschriebenen Optimierungsverfahrens vorgenommen. Nach Abschluss des Rendering-Prozesses wird die SuppleApplication und das für jede Aktion generierte ActionPath-Objekt in einem ActiveDevice gespeichert. Abbildung 5.7 zeigt das Ergebnis des Rendering-Prozesses für einen UPnP-fähigen Videostreaming-Server. UPnP-Kommunikation Damit Interaktionen im Interface in Steuerbefehle für die im Netzwerk verteilten UPnP-Geräten umgesetzt werden können, wird das ActiveDevice für alle StateVarImpl-Objekte als PropertyChangeListener registriert. Wird ein Interface-Element vom Benutzer manipuliert, versucht der PC GUIBuilder diese Aktion an das entsprechende Gerät weiterzuleiten. Dazu wird ein Dictionary-Objekt mit Schlüssel-Wert Paaren erzeugt, das mit allen Eingangsparameternamen der auszuführenden Aktion und den Werten der zugehörigen Supple-Zustandsvariable befüllt wird. Damit ist auch für den Fall vorgesorgt, dass eine Aktion, die mehrere Eingabeparameter besitzt, auch bei der Manipulation nur eines entsprechenden Interface-Elements ausgeführt werden kann. Der untenstehende Quellcode zeigt den Vorgang in der ActiveDevice-Methode executeAction(): 1 2 3 4 public void executeAction ( ActionPath actionPath ) { Dictionary arguments = new Hashtable (); UPnPAction action = actionPath . getAction (); Map < StateVar , String > stateVarToAr g Na me = actionPath . getMap (); 5 6 7 for ( StateVar suppleVar : stateVarToA rg Na m e . keySet ()) { Object value = suppleVar . getValue (); KAPITEL 5. GUI-BUILDER (a) 66 (b) Abbildung 5.7: Rendering eines UPnP-fähigen Videostreaming-Servers. Das originale User Interface der Applikation ist in Abb. (a) ersichtlich. Abb. (b) zeigt das automatisierte Rendering-Ergebnis. Im Interface können der Treiber der Webcam (SetCaptureDevice), die Broadcast-IP (SetAddress), der Port (SetPort ) und die TimeToLive (SetTTL) Zeit gesetzt werden. Mit Start und Stop kann der Streaming-Server mit Vorschaubild gesteuert werden. 8 String argName = stateVarToAr g Na me . get ( suppleVar ); arg . put ( argName , value ); 9 10 } action . invoke ( arguments ); 11 12 } 5.2.4 UI-Erweiterungen Da UPnP keine native Unterstützung zur Definition von grafischen Oberflächen bietet und die Gerätebeschreibung nicht ausreicht, um die vielschichtigen Vorgänge eines User Interfaces zu modellieren, muss der Standard um semantische Zusatzinformation erweitert werden. Im Rahmen dieser Arbeit wurden mehrere Ideen für eine Erweiterung des Prototyps in Erwägung gezogen. Eine davon wurde im Zuge der Implementierung mit den Geräten getestet. • Geräteklassen: UPnP definieren einheitliche Standards für Geräte- KAPITEL 5. GUI-BUILDER 67 klassen, damit herstellerübergreifende Kommunikation zwischen verschiedenen Produkten ermöglicht werden kann. Diese Strukturierung könnte auch für die Auslegung der User Interface genutzt werden, weil mit der Klasse des Gerätes auch dessen Funktionalität bekannt ist. Mit vordefinierten Interface-Elementen und dem Wissen über die semantische Bedeutung einer Interaktion könnte für eine Instanz der Klasse Mediaplayer, unabhängig von der Implementierung des Gerätes, ein optimales User Interface präsentiert werden. Dieser Ansatz setzt allerdings voraus, dass alle Geräteklassen im vorhinein bekannt sind und die Ressourcen zu einer Klasse außerhalb der Geräte gespeichert werden. Wird ein neues Gerät gefunden, das nicht zugeordnet werden kann, können keine Zusatzinformationen für das zu generierende Interface abgeleitet werden. • Kohärenzen: Ein weiterer Ansatz wäre, Funktionselemente in ähnlichen Geräten zu kategorisieren und diese Information für die Auswahl vordefinierter Interface-Elemente zu nutzen. Der Interface-Generator könnte mit einem wissensbasierten System gekoppelt werden, das über die Zusammengehörigkeit (Kohärenz) der Funktionselemente in Form eines vordefinierten Wissensschatzes verfügt. Am Beispiel der Abspielelemente eines Medienplayers sind beispielsweise Definitionen für die Elemente Play, Pause, Stop, Vor und Zurück möglich. So könnte für den Play-Button im Bezug zum Stop-Button ein Kohärenzwert von 10 definiert werden, der ein engere Bindung als ein Wert 5 im Zusammenhang mit dem Vor -Knopf signalisiert. Mit den Kohärenzwerten wird ein Beziehungsnetzwerk aufgespannt, das für das Layout der Komponenten von Bedeutung ist. Dieses Konzept birgt großes Potential, verlangt jedoch nach ausführlicheren Recherchen als dies im Rahmen der vorliegenden Arbeit möglich war. • Regelbasierte Beschreibung: Im einfachsten Fall sind in der Beschreibung eines Gerätes alle nötigen Informationen zur Darstellung enthalten. Dazu zählen neben grafischen Ressourcen beispielsweise in Form von Icons auch Layout-Informationen. Damit aber nicht zusätzlich zur funktionalen Spezifikation des Gerätes auch noch eine komplette Interface-Definition festgelegt werden muss, kann ein System zum Einsatz kommen, das anhand weniger Regeln Informationen über den Zusammenhang und die Bedeutung zwischen einzelnen Gerätefunktionen definiert. Dieser Ansatz wird im Anschluss anhand zweier Regeln demonstriert. Um den UPnP-Gerätestandard mit einem Interface-relevanten Regelwerk erweitern zu können, wurde folgendes Konzept umgesetzt: UPnP definiert die optionale Angabe einer Präsentations-URL in der XML-basierten Gerätebeschreibung, die eine optionale Referenz zu einer HTML-basierten KAPITEL 5. GUI-BUILDER 68 Präsentationsseite beinhaltet [38]. Es bleibt dem Hersteller überlassen, wie er diese Präsentationsseite gestaltet und mit welchen Inhalten er sie ausstattet. Eine URL zu der Homepage des Produktes ist dabei ebenso denkbar, wie ein lokaler Verweis auf ein HTML-Frontend am Geräte selbst, das Auskunft über Zustände gibt und unter Umständen auch die Steuerung erlaubt. Dieser Ansatz hat jedoch zwei entscheidende Nachteile. Erstens wird nur der Webbrowser als Plattform zur Präsentation von Geräteinhalten propagiert. Ohne fortgeschrittene Web-Technologien ist dieses Modell aber auf das Request/Response-Prinzip reduziert, das kein automatisches Neuladen von Seiteninhalten bei Zustandsänderungen erlaubt. Auch die Anzahl der Interaktionselemente ist im Vergleich zu den Komponenten einer GUI-Bibliothek begrenzt. Zweitens steht dieses Konzept in starkem Kontrast zum Entwurf der generischen Gerätesteuerung, wenn für das User Interface kein einheitlicher Standard gefunden werden kann. Die Präsentations-URL wird daher zum Transport UI-spezifischer Regeln in Form einer XML-Beschreibung genutzt. Das Regelwerk dient zur Unterstützung des GUI-Generators, der das User Interface sonst nur anhand der funktionalen Gerätebeschreibung, die Aktionen mit Zustandsvariablen als Ein- und Ausgabeparameter definiert, rendern kann. Für den Anfang werden zwei Regeln definiert: • Gruppierung: Mit einer Gruppierungen kann die Anordnungsreihenfolge von UPnP-Aktionen und deren Interface-Elementen dezidiert gesetzt werden. Sie sind vor allem dann eine Hilfe, wenn semantisch wichtige Zusammenhänge durch Platzierung der Elemente ausgedrückt werden sollen. Ein Beispiel dafür ist die Anordnung der Knöpfe eines Medienplayers. Der Zurück -Button sollte immer vor dem VorwärtsButton liegen. • Datenquelle: Da in UPnP die Definition der Ein- und Ausgabeparametern einer Aktion auf primäre Datentypen beschränkt ist, können vorerst keine Interface-Elemente gerendert werden, die sowohl dynamische Informationen vom Gerät abfragen als auch senden können. Ein Beispiel hierfür ist die Auswahlliste: Bei einem Medienplayer muss zuerst eine Liste aller verfügbaren Titel im User Interface aufscheinen, bevor der Benutzer einen Song auswählen und abspielen kann. Das Element wird daher aus zwei Aktionen zusammengesetzt. Eine GetPlayList-Aktion, die eine Liste der Titel liefert und eine SetSong-Aktion, die den Titel des aktuellen Songs anwählt. Als Datenquelle der SetSong-Aktion wird dementsprechend erstere festgelegt. Die Abbildungen 5.8(a) und 5.8(b) zeigen die Auswirkungen der Regeln auf das Interface-Rendering. Der untenstehende Quellcode gibt Aufschluss über die Struktur der XML-Datei mit beiden Regeldefinitionen und Informationen, die in Zukunft ausgewertet werden könnten. Dazu zählen die KAPITEL 5. GUI-BUILDER (a) Regeln deaktiviert 69 (b) Regeln aktiviert Abbildung 5.8: Renderings eines Remote-Interfaces zur Steuerung von Winamp mit und ohne zusätzliche Regeldefinitionen in der UPnPPräsentationsschicht. Die Gruppenregel kommt bei der Anordnung der Controls zu tragen. Die Definition einer Datenquelle führt dazu, dass die Aktionen GetPlayList und SetSong zu einer Auswahlliste zusammengeführt werden. Definition von Icons und der Vorschlag eines bestimmten UI-Elementtyps für das Rendering. Letzteres ist vor allem dann von Interesse, wenn mehrere Interface-Elemente zur Darstellung des Datentyps in Frage kämen. Der ganzzahlige Wertebereich einer Zustandsvariable Volume könnte etwa mit einem vertikalen und horizontalen Slider, einer Auswahlliste und einem SpinnerWidget gleich mehrfach grafisch ausgelegt werden. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <? xml version = " 1.0 " ? > < upnpui > < groupings > < group name = " Controls " type = " order " description = " " / > </ groupings > < actions > < action name = " SetSong " type = " " > < datasource name = " GetPlayList " type = " enum " / > </ action > < action name = " Start " type = " setter " > < icon path = " start . gif " / > < group name = " Controls " id = " 2 " / > </ action > < action name = " Stop " type = " setter " > < icon path = " stop . gif " / > KAPITEL 5. GUI-BUILDER 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 70 < group name = " Controls " id = " 3 " / > </ action > < action name = " Pause " type = " setter " > < group name = " Controls " id = " 4 " / > </ action > < action name = " Prev " type = " setter " > < group name = " Controls " id = " 1 " / > </ action > < action name = " Next " type = " setter " > < group name = " Controls " id = " 5 " / > </ action > < action name = " SetVolume " type = " setter " > < widget type = " VerticalSlider " > </ action > </ actions > </ upnpui > Enumerationsdatentyp: Ein UPnP-spezifisches Problem ist das Fehlen eines Enumerationsdatentyps, der unter anderem für den Rückgabeparameter der GetPlayList-Aktion benötigt würde. Um dennoch eine Liste übertragen zu können, wird ein StringDatentyp aus mehreren XML-Elementen zusammengesetzt, der anschließend am Empfänger wieder auseinander genommen werden kann. Dafür wurde folgendes, einfache XML-Format festgelegt: 1 2 3 4 5 < t_list > < element value = " Dave Matthews Band - Satellite " / > < element value = " Incubus - Echo " / > < element value = " Joss Stone - I had a dream " / > </ t_list > 5.3 Implementierung - Smart Phone Der Mobile GUI-Builder ist eine in der Funktionalität reduzierte Anwendung zur Fernsteuerung von UPnP-Geräten. Eine Client-Server Architektur ermöglicht die Kommunikation zwischen einem PC-Gateway und einem Smart Phone via Bluetooth. Die Gateway-Applikation implementiert die UPnPControlpoint Funktionalität und gibt Informationen über die gefundenen Geräte an das Smart Phone weiter. Dieses generiert aus den funktionalen Beschreibungen ein Java-basiertes Interface und sendet bei einer Interaktion vordefinierte Steuerbefehle an das Gateway zurück. Dort werden die Befehle ausgewertet, in gültige UPnP-Aktionsaufrufe konvertiert und ausgeführt. KAPITEL 5. GUI-BUILDER 5.3.1 71 Entwicklung mobiler Java-Anwendungen Ähnlich der Java SE Plattform9 für PC-Applikationen, gibt es für die Entwicklung von Anwendungen auf mobilen Plattformen ein spezialisiertes und im Umfang reduziertes Set an Technologien mit dem Namen J2ME10 . Im Gegensatz zu Java SE ist J2ME jedoch nur ein Überbegriff für Konfigurationen, Profile und optionalen Packages, die vom Standardisierungskomitee Java Community Process(JCP) vorgegeben werden und als Java Specification Requests(JSR) den Weg in eine allgemein gültige Spezifikation finden. J2ME-Technologien werden als JSRs mit einer Nummer versehen. Bei aktuellen Entwicklung für Mobiltelefone muss vor allem auf die Kompatibilität des Endgerätes mit den Spezifikationen CLDC 1.1 (Connected, Limited Device Discovery - JSR 139) und MIDP 2.0 (Mobile Information Device Profile - JSR118) geachtet werden. Zusammen mit MMAPI (Mobile Media API ) und WMA (Wireless Messaging API ) bilden diese Technologien den JSR 185-Stack mit Namen Java Technology for Wireless Industry 11 , der die Grundvoraussetzung an jedes J2ME-fähige Mobiltelefon stellt. Viele zusätzliche Funktionalitäten wie etwa die Bluetooth-Unterstützung (BTAPI - JSR 82), werden ebenfalls in eigenen Spezifikationen festgehalten, die von den Geräten der Elektronikherstellern unterstützt werden können. Softwareunterstützung Für die Entwicklung von J2ME-Anwendungen ist eine Reihe an nützlicher Open Source-Software verfügbar. Das Wireless Toolkit (WTK)12 ist eine einfach gehaltene Sammlung an Softwarekomponenten zur Entwicklung von J2ME-Applikationen. Neben einem Compiler, den API-Spezifikationen und zahlreichen Beispielanwendungen ist auch ein Simulator enthalten. Das WTK ist ein solides Werkzeug um erstellte Applikationen am PC zu testen. Da die Umsetzung der Java-Spezifikationen am Mobiltelefon jedoch dem Gerätehersteller überlassen ist, weicht das konkrete Erscheinungsbild oft vom Look and Feel des Simulators ab. Um in der bekannten Java-Entwicklungsumgebung Eclipse arbeiten zu können, kann das Plugin EclipseME 13 verwendet werden, das die Schnittstelle zwischen dem WTK und Eclipse bildet. Da die Ressourcen mobiler Endgeräte meist begrenzt sind, muss auf speicheroptimierte Programmierung geachtet werden. Um unnötigen Programmoverhead automatisch zu entfernen kann ein sogenannter Obfuscator eingesetzt werden. EclipseME bietet Integrationsmöglichkeiten für externe 9 Java Platform, Standard Edition - http://java.sun.com/javase/ J2ME - Java Technology - http://java.sun.com/j2me/ http://developers.sun.com/techtopics/mobility/getstart/ 11 Java Technology for Wireless Industry (JSR 185) - http://developers.sun.com/ techtopics/mobility/jtwi/ 12 Sun Java Wireless Toolkit (WTK) - http://java.sun.com/products/sjwtoolkit/ 13 EclipseME - http://eclipseme.org/ 10 KAPITEL 5. GUI-BUILDER 72 Application State UPnP Controller Discovery Agent Network Supervisor hierarchical UPnP Data Model 1 n EndPoint Connection Handler Sender Reader Abbildung 5.9: Das Klassendiagramm der wichtigsten Komponenten des Gateways und des Clients. Da sowohl die Anwendung am PC als auch am Smart Phone mit Java entwickelt wurde, können viele Klassen auf beiden Plattformen eingesetzt werden. Obfuscator. Für die Entwicklung des mobilen GUI-Builders kam ProGuard 14 zum Einsatz. Auch wenn die Kombination dieser Software-Tools die Entwicklung mobiler Anwendungen vereinfacht, so bleiben trotzdem einige Unannehmlichkeiten bestehen. Das Testen der Client-Server Kommunikation ist im Zusammenhang mit dem Simulator des WTK nicht möglich, da dieser keinen Zugriff auf die Bluetooth-Treiber des PCs hat. Daher muss das Programm mit jeder Änderung zum Testen auf das Smart Phone übertragen werden. Auch das Debuggen gestaltet sich bei der mobilen Anwendung als schwierig. Da naturgemäß keine Konsole zur Verfügung steht und kaum aussagekräftige Fehlermeldung an das überliegende Betriebssystem weitergegeben werden, ist jede Fehlersuche mit vermehrtem Aufwand verbunden. 5.3.2 Gateway Da die Java-Technologien J2SE uns dessen Derivat J2ME viele Gemeinsamkeiten aufweisen, liegt es nahe den Systemaufbau und das Kommunikationsprotokoll für das Gateway und den Client einheitlich zu gestalten (siehe Abbildung 5.9). Die Implementierung des Gateway ist in folgende Bereiche unterteilt: • net.digidop.bt.network und net.digidop.bt.network.endpoint: Netzwerkkomponenten und Bluetooth-Kommunikation. • net.digidop.statemachine: Das Zustandsmodell der Applikation. • net.digidop.upnp: Datenhaltung der UPnP-Geräte. 14 Pro Guard Obfuscator - http://proguard.sourceforge.net/ KAPITEL 5. GUI-BUILDER 73 Netzwerk Die Entwicklung von Java-Anwendungen mit Bluetooth-Unterstützung ist noch im Anfangsstadium. Da es keine native Java-Unterstützung für Bluetooth-Hardware gibt, kommt Open Source Software zur Anwendung. BlueCove 15 , eine Bibliothek zur Java Bluetooth Kommunikation mit dem PC setzt Teile der JSR82 -Spezifikation um und greift über den Microsoft Bluetooth-Stack direkt auf die Hardware zu16 . Für den Mobile GUI-Builder wird das Bluetooth-Profil Serial Port Profile, das eine serielle Schnittstelle simuliert, eingesetzt. Die Klasse Supervisor ist das Herzstück der Bluetooth-Kommunikation. Sie übernimmt die Initialisierung, die Konfiguration und die Wartung der Netzwerkverbindungen. Durch die Initialisierung zweier Objekte der Klassen DeviceInquiry und ConnectionHandler wird anfangs nach anderen Kommunikationsteilnehmern in Funkreichweite gesucht und ein Server für spätere Verbindungsanfragen eingerichtet. Der Server ist für die Kommunikation mit mehreren Mobile-Clients ausgelegt, jedoch noch nicht in der Praxis getestet. Beim Starten des Servers akquiriert die Klasse DeviceInquiry ein Singleton 17 -Objekt DiscoveryAgent. Dieser Agent instanziert eine ConnectionHandler-Klasse, die während der Laufzeit des Servers auf eingehende Verbindungsanfragen wartet. Bei einem erfolgreichen Verbindungsaufbau werden zwei Threads (Reader und Sender) gestartet und in einem Endpoint gespeichert werden. Der Supervisor verwaltet alle Endpoints und gibt Befehle, die nicht den Auf- und Abbau der Verbindung betreffen, an die Applikation weiter. Ein- und ausgehende Nachrichten werden in Form von Packets gekapselt, die sowohl den Inhalt der Nachricht, als auch Informationen über den Sender und einen verbindungsspezifischen Befehl (SIGNAL_TERMINATE, SIGNAL_HANDSHAKE,SIGNAL_MESSAGE) enthalten. Modellierung des Applikationszustand Um die verschiedenen Zustände der einzelnen Clients modellieren zu können, wurde ein einfach gehaltenes Zustandsmodell eingeführt. Bei einer Änderung werden alle Komponenten die das StateListener Interface implementieren und sich bei der Klasse ApplicationState registrieren, über die Zustandsüberführung informiert. Bei der Anmeldung eines neuen Client wird ein neuer Zustand angelegt und die Klasse UPnPAccessPoint reagiert, indem sie dem Client die Daten aller UPnP-Geräte sendet. 15 Java Bluetooth-Bibliothek - BlueCove http://sourceforge.net/projects/bluecove/ Eine Anleitung für das Arbeiten mit BlueCove findet sich unter http://www.benhui.net/modules.php?name=Bluetooth&page=Connect PC Phone Part 1. html 17 Singleton ist ein objektorientiertes Muster, das von einer Klasse nur eine konkrete Instanzierung erlaubt. 16 KAPITEL 5. GUI-BUILDER 74 Datenhaltung Ebenso wie beim GUI-Builder für den PC werden die Informationen der XML-Gerätebeschreibung in einer hierarchisch Form zusammengefasst. Die Datenhaltung am Gateway wird in einer Baumstruktur speichert. Dieser kann ausgehend von einem Node-Elementen in Richtungen der Kinder und der Eltern-Elemente traversiert werden. Das Gateway transformiert diese XML-Daten in eine flacherer Struktur, die die Verschachtelungstiefe der Elemente zu reduzieren versucht und sendet sie als Zeichenkette an den Client. Dieser Vorverarbeitungsschritt ist notwendig, da die beschränkte Rechenleistung und Speicherkapazität des mobilen Endgeräten beschränkt ist. Der folgende Quellcode zeigt die transformierte Beschreibung im Gegensatz zur originalen Struktur (siehe Abs. 5.2.3). 1 2 3 4 5 6 7 8 9 10 11 12 < service serviceId = " urn:schemas - upnp - o r g : s e r v i c e I d : t e m p : 1" serviceType = " urn:schemas - upnp - org:service : te mp : 1 " > < stateVariable name = " Volume " sendEvents = " yes " dataType = " ui1 " value = " 200 " / > < stateVariable name = " Result " sendEvents = " no " dataType = " boolean " value = " " / > < action name = " SetVolume " > < argument name = " Vol " direction = " in " relatedState = " Volume " / > < argument name = " Re " direction = " out " relatedState = " Result " / > </ action > ... </ service > 5.3.3 Mobile Client Bei der Entwicklung und den Tests kam ein Nokia 6600 18 -Mobiltelefon zum Einsatz. Bis auf wenige Ausnahmen gleicht der Systemaufbau den Angaben des Server-Gateways (siehe Abb. 5.9 der Server-Architektur). XML-Parser Die vom Gateway an den Mobile Client übertragenen Geräteinformationen müssen mit einem, speziell für leistungsschwache Geräte ausgelegten, XMLParser ausgelesen werden. Für diese Aufgabe wird kXML2 19 , eine kleine XML Pullparsing-Bibliothek, verwendet. GUI Die Applikation ist aufgrund gerätebedingter Verzögerungen beim Aufbau der Bluetooth-Verbindung langsam in der Initialisierung. Es kann einige Zeit 18 Nokia 6600 Smart Phone - http://www.nokia.at/german/phones/phone models/6600/ index.html 19 XML Parsing kXML2 - http://kxml.sourceforge.net/ KAPITEL 5. GUI-BUILDER 75 dauern bis am Smart Phone eine Anfrage an den Benutzer für die Erlaubnis zum Verbindungsaufbau erscheint. Wird diese bestätigt, werden die UPnPGeräteinformationen vom Gateway übertragen und am Smart Phone dargestellt. Die Menüführung wurde in folgender Hierarchie festgehalten: Geräteliste > Aktionsliste > Parameterliste (siehe Abb. 5.10). Durch Anwahl eines Gerätes werden die enthaltenen Aktionen aufgelistet. Durch erneutes Klicken kommt man in das Parametermenü der Aktion. Dort können die Werte für die auszuführende Aktion gesetzt werden. Das Setzen von Boolean-Werten, beispielsweise Licht an/aus, führt direkt zum Ausführen der Aktion. Sie können direkt mit einer Checkbox angewählt werden. Float, Integer und String werden als Input Feld dargestellt und müssen erst mit einem Send-Befehl aus dem Optionen-Menü bestätigt werden. Der Back -Befehl führt in das jeweils vorherige Menü. Der Exit-Befehl meldet den Client beim Server ab. Sofern das Gateway aktiviert bleibt, kann sich das mobile Gerät jedoch jederzeit neu verbinden. Um das Look and Feel der Anwendung verbessern zu können, wurde die Grafikbibliothek J2ME Polish 20 verwendet. Mit Hilfe von Auszeichnungen im Java-Quellcode, externen CSS-Layoutdefinitionen und Grafiken kann das Polish Building-Tool eine visuell ansprechende Version der Applikation compilieren, die immer noch dem mobilen Java-Standard MIDP 2.0 entspricht. Dabei berücksichtigt die Bibliothek auch produktspezifische Eigenschaften eines mobilen Endgerätes durch vordefinierte Hersteller-Profile für Firmen wie Nokia und Sony-Ericsson. Die Abbildung 5.11 zeigt das neu gestaltete User Interface anhand der Geräteliste und der Aktionsliste, das im Vergleich zu der vorher präsentierten J2ME-Benutzeroberfläche (siehe Abb. 5.10) deutlich benutzerfreundlicher ist. 20 J2ME Polish - http://www.j2mepolish.org/ KAPITEL 5. GUI-BUILDER (a) 76 (b) Abbildung 5.10: Der Mobile GUI-Builder im WTK Simulator. Die Abbildungen zeigen die Geräteliste (a) und die Parameterliste (b). KAPITEL 5. GUI-BUILDER (a) 77 (b) Abbildung 5.11: Der Mobile GUI-Builder am Nokia 6600 mit J2ME-Polish Grafikbibliothek. Die Abbildungen zeigen die Geräteliste (a) und die Aktionsauswahl (b) eines Medienplayers. Kapitel 6 Fazit Anlass für die Idee der vorliegenden Arbeit war die Erkenntnis, dass vernetzte Strukturen, die in Form von computerisierter Geräte in beinahe alle Bereiche unserer Lebenswelt eindringen, bereits heute allgegenwärtig sind. Mit lokalen und globalen Funknetzwerken wie Bluetooth, WLAN, und den Mobiltelefonie-Standards sind eine Vielzahl neuer Dienste möglich, die bis vor einigen Jahren nicht in dieser Form denkbar gewesen wären. Die zugehörigen Technologien in Form von Geräten wie Smart Phones, PDAs, Laptops und zahlreicher Unterhaltungselektronik finden sich in vielen Haushalten. Es wird aller Voraussicht nach nicht mehr lange dauern, bis Haustechnik wie beispielsweise Heizung und Elektroinstallationen auch an einem lokalen Netzwerk angeschlossen sein wird. In diesem Zusammenhang stellt sich die Frage nach dem Sinn dieser Vernetzung [33]. Die Vision, dass die Wärmeregulierung eines Toasters per Netzwerk vorgenommen werden kann, hat wenig praktische Relevanz um Tätigkeiten im Haushalt zu vereinfachen. Im Gegensatz dazu wäre es jedoch wünschenswert die Steuerung der gesamten Unterhaltungselektronik eines Haushaltes in einem Mobiltelefon zu vereinen und so die Fernbedienungen der einzelnen Geräte wie TV-Gerät und Stereoanlage ersetzen zu können. Solche Szenarien werden erst dann zur Realität, wenn nach der technischen Machbarkeit von Netzwerken auch die Vernetzungen von Anwendungen in die Konzeptualisierung kommender Technologien miteinbezogen wird. Solange es von Seiten der Hersteller nur wenige Anstrengungen in Richtung gemeinsamer Standards für verteilte Geräte gibt, bleibt für die Forschung ein umso größeres Betätigungsfeld. Die vernetzte Service-Plattform UPnP ist ein Ansatz in die richtige Richtung. Wenngleich die Technologie dem Endkunden noch nicht geläufig ist und bisher nur in wenigen Mediengeräten integriert ist, so birgt sie doch großes Potential durch die Standardisierung einer einheitlichen Serviceschnittstelle. 78 KAPITEL 6. FAZIT 6.1 79 Erreichte Ziele Anhand der entwickelten Geräte und der zwei GUI-Builder Prototypen werden die Ergebnisse der Arbeit näher erläutert. 6.1.1 Geräte Auf Basis von UPnP wurden mit einem Sensorgerät und einer Webcam mit Bewegungserkennung zwei Geräte geschaffen, die als Eingabemedien für ein Steuerungsszenario mit weiteren, vernetzten Geräten eingesetzt werden können. Das für die Verknüpfung der Geräte notwendige Framework Torem wird in [39] eingehend beschrieben. In mehreren Tests konnte die nahtlose Zusammenarbeit unter Beweis gestellt werden. So ist es beispielsweise möglich die Webcam als Überwachungskamera einzusetzen. Betritt eine Person den Raum, wird das Ereignis Bewegung erkannt generiert und an die Torem gesendet. Das Framework wertet das Ergebnis aus und schaltet ein Hardware-Licht1 an. Mit wenig Aufwand kann der Ablauf dahingehend geändert werden, dass als Antwort auf das vorher genannte Ereignis nicht nur das Licht angeschaltet, sondern auch eine SMS-Nachricht an den Benutzer gesendet wird. Ähnlich verhält es sich mit dem Drucksensor-Modul, das in einem Szenario als aktives oder passives Eingabegerät zum Einsatz kommen kann. Sind die Drucksensoren am Boden angebracht, können sie zum Beispiel das Auftreten einer Person registrieren und dieses Ereignis an interessierte Steuerinstanzen weiterleiten. In einem anderen Fall könnten die Sensoren als Eingabefelder benutzt werden, um eine Passwortabfrage zu simulieren, die nach einer definierten Reihenfolge bei der Eingabe verlangt. Mit dieser dynamischen Zuordnung der Eingabegeräte zu der spezifischen Bedeutung der Interaktion konnte im Gegensatz zu proprietären Softwarelösungen und dem Konzept des verteilten Netzwerkes eine klare Verbesserung hinsichtlich der ökonomischen Nutzung des computerisierten Gerätes erzielt werden. Umgelegt auf ein Szenario im Haushalt bedeutet dies, dass ein Bewegungsmelder an der Eingangstür nicht nur an das Einschalten eines Lichts, sondern auch an andere Ereignisempfänger gekoppelt sein kann. 6.1.2 GUI-Builder Mit der Definition der regelbasierten UI-Beschreibung am Gerät ist ein erster Schritt in Richtung automatisierter Generierung von User Interfaces für die UPnP Service-Plattform getan. Zusammen mit der funktionalen Gerätebeschreibung stehen dem PC GUI-Builder zwei Informationsquellen zur 1 Das Licht ist Teil des Testaufbaus einer EIB-Gebäudesteuerung, die über einen Softwareadapter ebenfalls ins UPnP-Netzwerk eingebunden wurde. KAPITEL 6. FAZIT 80 Verfügung, um Bedingungen für den UI-Rendering-Prozess formulieren zu können. Die generierten User Interfaces bieten eine einfachere und besser bedienbare Darstellung (siehe Abb. 5.8) als die bestehenden ControlpointImplementierungen (siehe Abb. 5.1) zur Fernsteuerung von UPnP-Geräten. Der Ansatz reicht jedoch nicht aus, um komplexere Anwendungen und Interaktionsmuster beschreiben zu können. Gerade die Spezifikation von gemeinsamen Schnittstellen für verteilte Geräte und Anwendungen verlangt aber, dass dieses Konzept auch in Richtung Präsentation und Steuerung der Inhalte fortgesetzt wird. Letztendlich ist das User Interface immer auch stark an das Applikationsmodell gebunden. Nur mit genaueren Informationen über die semantische Bedeutung der Interaktionen können Aussagen über das Layout, die Navigationsstruktur, die einzelnen Interface-Komponenten, das Verhalten und das Zustandsmodell eines User Interfaces getroffen werden. Der Prototyp des mobilen GUI-Builders (siehe Abb. 5.10) am Smart Phone hat sich ebenfalls als brauchbare Anwendung zur Steuerung der UPnPGerätedienste erwiesen. Das Konzept setzt die universellen Fernbedienung um, die in Reichweite einer Bluetooth-Basisstation an das UPnP-Netzwerk gekoppelt werden kann. Auch wenn sich die grafische Umsetzung und der Bedienkomfort noch in einem Anfangsstadium befinden, so stehen dem Benutzer doch auch jetzt schon alle UPnP-Funktionen zur Verfügung. Alle im Laufe der Arbeit vorgestellten Geräte sind damit ansteuerbar. Um fernbedienbare Unterhaltungselektronik zentral steuern zu können, muss ein Weg für die Integration eines Infrarot-Senders (IR)2 gefunden werden. Das BTkit 3 ist ein Hardwaremodul, das mit einem Bluetooth-Chip und einem Infrarot-Sender und Empfänger über solche Kapazitäten verfügt. In [10, 11] wird der Aufbau und Einsatz dieses Systems zur Steuerung von Infrarot-Geräten via Bluetooth-fähigem Smart Phone beschrieben. Leider konnte das Produkt wegen eines Lieferstopps nicht mehr zur Entwicklung herangezogen werden. 6.2 Ausblick Neben der zentralen Steuerung von Haushaltsgeräten scheinen verteilte Netzwerke in Kombination mit Eingabegeräten auch für einen weiteren Bereich interessant. Es stellt sich die Frage, ob mit diesen Technologien auch künstlerische Medieninstallationen verwirklicht werden können. Diese basieren meist auf der Interaktion eines Benutzers abseits eines Computerterminals und benötigen neben diverser Sensorik auch Zugriff auf viele Mediengeräte. 2 Die Infrarot-Schnittstelle ist aufgrund der niedrigen Produktions- und Integrationskosten die vorrangige Technologie für Fernsteuerungen von Unterhaltungselektronik. Viele Hersteller verwenden auf Basis des Lichtsignals ein eigenes, unidirektionales Übertragungsprotokoll. Ein Überblick findet sich unter http://www.xs4all.nl/˜sbp/knowledge/ir/ir.htm 3 BTkit - http://www.btkit.com/de/ KAPITEL 6. FAZIT 81 Dazu zählen Audio-, Video- und Lichtequipment, das über Steuerprotokolle wie DMX und MIDI angesprochen werden kann. Sie können sehr schnell in eine IP-basiertes Netzwerk eingebunden werden. Die Integration scheitert jedoch an der Anforderung echtzeitfähiger Steuerbefehle. Obwohl Netzwerkbefehle mit ausreichender Geschwindigkeit abgearbeitet werden könnten hat sich die Architektur von UPnP in diesem Zusammenhang als Nachteil erwiesen. Für jeden ausgesandten Steuerbefehl und jedes Ereignis, das auf SOAP und dem, in der Netzwerkschicht darunterliegenden, zustandslosen HTTPProtokoll aufsetzt, muss eine gesonderte Netzwerkverbindung aufgebaut werden. Dies wurde von UPnP so spezifiziert und auch in der verwendete JavaBiblothek Cyberlink umgesetzt. Aus diesem Grund liegt die Zeitdauer zwischen Aufruf und Ausführung einer Aktion zwischen 300 ms und bis zu 2 s. Für Dienste die selten genutzt werden ist diese Latenz kaum ein Problem. Echtzeitkritische Anwendungen können hingegen nicht zufriedenstellend bedient werden. Ein Ansatz, um diese Steuerungsproblematik zu lösen ist die Verwendung anderer Remote Procedure Call 4 -Technologien auf Kosten der Plattformunabhängigkeit, wie das Java-basierte RMI 5 oder die Middleware CORBA6 . Der Einsatz von UPnP würde sich in diesem Fall nur auf die Geräteerkennung beschränken und die Steuerung diesen Architekturen mit persistenten Netzwerkverbindungen übernehmen lassen. Die erzielten Ergebnisse dieser Arbeit zeigen, dass mit einfachen Mitteln auch heute schon verteilte Dienste des Alltags über einheitliche grafische und physische Schnittstellen angesprochen werden können. Die Fähigkeit zur dynamischen und intelligenten Vernetzung wird in Zukunft ein entscheidendes Kriterium für den Nutzen eines Gerätes und einer Anwendung in einem Umfeld sein, dessen Voraussetzungen nicht immer bekannt sind. Im Bereich der automatisierten Generierung grafischer User Interfaces ist noch viel Arbeit zu leisten. Hier könnte mit einer Weiterentwicklung eine einheitliche Schnittstelle für mehrere Plattformen zur Fernsteuerung zukünftiger, im Haushalt integrierter Geräte geschaffen werden. Erste Tests zeigten, dass sich das Supple Toolkit auch für GUI-Renderings auf einer Web-basierten Plattform und für den PDA eignet. Voraussetzung dafür ist eine zunehmende Verbreitung an standardisierten, netzwerkfähigen Geräten, die von Seiten der Elektronikhersteller unterstützt werden muss. 4 Remote Procedure Call (RPC) bezeichnet den Aufruf einer entfernten Funktion über ein Netzwerk. 5 Java Remote Method Invocation (RMI) - http://java.sun.com/products/jdk/rmi/ 6 Common Object Request Broker Architecture (CORBA) - http://www.omg.org/ gettingstarted/corbafaq.htm Anhang A Inhalt der CD-ROM File System: Joliet Mode: Single-Session (CD-ROM) A.1 Diplomarbeit Pfad: /thesis/ da doppler.pdf . . . . . da doppler.ps . . . . . . images/ . . . . . . . . . A.2 Literatur Pfad: /docs/ index.html . . . . . . . . Diplomarbeit (PDF-File) Diplomarbeit (PostScript-File) Alle Grafiken der Diplomarbeit im EPS-Format Link-Liste der Literaturquellen Der Ordner enthält nach einzelnen Kapiteln geordnet alle Online-Literaturquellen als PDF-Files. A.3 Anwendungen Pfad: /applications/ info.pdf . . . . . . . . . guibuilder pc setup.exe guibuilder pc.zip . . . . Anleitung für die Inbetriebnahme und das Arbeiten mit den Geräten. Installierbare Win32 -Version des PC GUI-Builders Zip-Datei des PC GUI-Builders 82 ANHANG A. INHALT DER CD-ROM guibuilder mobile.zip . . devices setup.exe . . . . devices.zip . . . . . . . A.4 Quellcode Pfad: /source/ /guibuilder pc/ . . . . . /guibuilder mobile/ . . /devices/ . . . . . . . . 83 Zip-Datei des mobilen GUI-Builders für das Smart Phone (getestet am Nokia 6600 ) Installierbare Win32 -Version der Geräte Zip-Datei des Geräte Alle Eclipse-Plugin-Projekte, die für den GUI-Builder benötigt werden. Eclipse-Projekt des mobilen GUI-Builders Eclipse-Projekte der UPnP-Geräte Sensor-Device, Streaming Server/Client, Winamp, MIDI-Device Literaturverzeichnis [1] Abrams, M. und J. Helms: User Interface Markup Language (UIML) Specification — Working Draft 3.1 . URL, http://www.oasis-open.org/ committees/download.php/5937/uiml-core-3.1-draft-01-20040311.pdf, March 2004. Kopie auf CD-ROM. [2] Allaire, J.: Macromedia Flash MX - A next-generation rich client. URL, www.adobe.com/devnet/flash/whitepapers/richclient.pdf, March 2002. Kopie auf CD-ROM. [3] Anderson, C., P. Domingos, Etzioni, K. Gajos, T. Lau, D. Weld und S. Wolfman: Automatically Personalizing User Interfaces. In: Proceedings of IJCAI-03 , 2003. [4] Baxley, B.: Making the Web Work - Designing Effective Web Applications. Sams, 2002. [5] Bluetooth Special Interest Group: Bluetooth Protocol Architecture — Version 1.0 . URL, http://bluetooth.com/NR/ rdonlyres/7F6DEA50-05CC-4A8D-B87B-F5AA02AD78EF/0/Protocol Architecture.pdf, August 1999. Kopie auf CD-ROM. [6] Boyer, J. und D. L. et al.: XForms 1.0 Specification (Second Edition). URL, http://www.w3.org/TR/xforms/, March 2006. Kopie auf CD-ROM. [7] Choy, H. und A. Fuchs: Developing Innovative Devices Using Universal Plug and Play (UPnP). Techn. Ber., 2004. [8] Cooper, A. und R. Robert: About Face 2.0 - The Essentials of User Interface Design. Wiley Publishing, Inc., Indianapolis, Indiana, 2003. [9] Davies, N. und J. L. et al.: Rapid Prototyping for Ubiquitous Computing. Pervasive Computing, 4(4):15–17, 2005. [10] Dr. Harbaum, T.: Drahtlos-Dolmetscher — Heim-Elektronik per Funk fernbedienen - Teil 2 . CT, 15:220–225, 2005. 84 LITERATURVERZEICHNIS 85 [11] Dr. Harbaum, T.: Funkzentrale — Heim-Elektronik per Funk fernbedienen - Teil 1 . CT, 14:204–209, 2005. [12] Dr. Scheller, A.: Brückenschlag — Die technische Infrastruktur fürs Digital Home. CT, 18:106–108, 2005. [13] Dr. Stieler, W.: Smarte Begleitung — Pervasive Computing durchdringt den Alltag. CT, 16:78–90, 2004. [14] Focus Software Ltd.: Datasheet - What is XForms? . URL, http: //www.xformation.com/xforms/pr02 01.asp, 2004. Kopie auf CD-ROM. [15] Gajos, K., D. Christianson, R. Hoffmann, T. Shaked, K. Henning, J. J. Long und D. Weld: Fast And Robust Interface Generation for Ubiquitous Applications. In: Proceedings of the Seventh International Conference on Ubiquitous Computing (UBICOMP 2005), Tokyo, Japan, September 2005. [16] Gajos, K. und D. S. Weld: Automatically Generating User Interfaces For Ubiquitous Applications. In: Workshop on Ubiquitous Display Environments, Nottingham, UK, 2004. [17] Gajos, K. und D. S. Weld: SUPPLE: Automatically Generating User Interfaces. In: IUI ’04: Proceedings of the 9th international conference on Intelligent user interface, S. 93–100, New York, NY, USA, 2004. ACM Press. [18] Gajos, K. und D. S. Weld: Preference Elicitation for Interface Optimization. In: UIST ’05: Proceedings of the 18th annual ACM symposium on User interface software and technology, S. 173–182, New York, NY, USA, 2005. ACM Press. [19] Garrett, J. J.: Ajax - A New Approach to Web Applications. Adaptive Path LLC, 18. Februar 2005 . URL, http://www.adaptivepath.com/ publications/essays/archives/000385.php, February 2005. Kopie auf CDROM. [20] Gratton, D. A.: Bluetooth Profiles: The Definitive Guide. Prentice Hall, New Jersey, 2003. [21] Gsottberger, Y., X. Shi, G. Stromberg, W. Weber, T. Sturm, H. Linde, E. Naroska und P. Schramm: Sindrion: a prototype system for low-power wireless control networks. In: 2004 IEEE International Conference on Mobile Ad-hoc and Sensor Systems, 2004. [22] Jeronimo, M. und J. Weast: UPnP Design by Example — A Software Developer’s Guide to Universal Plug and Play. Intel Press, Hillsboro, Oregon, 2003. LITERATURVERZEICHNIS 86 [23] Jespersen, J. W. und J. Linvald: Investigating user interface engineering in the model driven architecture. In: Proceedings of the Interact 2003 Workshop on Software Engineering and HCI , September 2003. [24] Li, S.: Professional Jini . Wrox Press Ltd., Birmingham, UK, 2003. [25] Mutka, M. W., L. M. Ni und F. Zhu: Service Discovery in Pervasive Computing Environments. Pervasive Computing, 4(4):81–89, 2005. [26] Myers, B., S. E. Hudson und R. Pausch: Past, present, and future of user interface software tools. ACM Transactions on Computer-Human Interaction, 7(1):3–28, 2000. [27] Myers, B. A.: Why are Human-Computer Interfaces Difficult to Design and Implement? . Techn. Ber. CMU-CS-93-183, July 93. [28] Nichols, J., B. A. Myers, M. Higgins, J. Hughes, T. K. Harris, R. Rosenfeld und M. Pignol: Generating Remote Control Interfaces for Complex Appliances. In: CHI Letters: ACM Symposium on User Interface Software and Technology, UIST’02 , S. 161–170. ACM Press, 2002. [29] Puerta, A. und J. Eisenstein: XIML: A Universal Language for User Interfaces. URL, http://ximl.org/documents/XimlWhitePaper.pdf, 2002. Kopie auf CD-ROM. [30] Reiter, S.: Smart Shelf Design and Implementation of an RFID Reader UPnP device based on the Sindrion architecture. Diplomarbeit, Fachhochschule Hagenberg, Hardware- Software Systems Engineering, Hagenberg, Austria, Juli 2005. [31] Schiller, J.: Mobile Communications — Second Edition. Pearson Education, Harlow, 2003. [32] Schlungbaum, E.and Elwert, T.: Automatic User Interface Generation from Declarative Models. In: Proceedings of CADUI 1996 , S. 3–18, 1996. [33] Sietmann, R.: Muss man alles und alle vernetzen ? — Natascha Adamowsky über die Folgen des Ubiquitous Computing. CT, 16:91, 2004. [34] Smith, S. und J. Mosier: Guidelines for Designing User Interface Software. Natl Technical Information, 1986. [35] Sun Microsystems, Inc.: Jini Architecture Specification — Version 1.2.1 . URL, http://www.sun.com/software/jini/specs/, Juni 2003. Kopie auf CD-ROM. LITERATURVERZEICHNIS 87 [36] Tanenbaum, A. S.: Computernetzwerke. Pearson Studium, München, BRD, Dritte Aufl., 2000. [37] The OSGi Alliance: OSGi Service Platform Core Specification — Release 4 . URL, http://www.osgi.org/osgi technology/spec download3. asp?Accept=Accept, August 2005. Kopie auf CD-ROM. [38] UPnP Forum: UPnP Device Architecture. URL, http://www.upnp. org/download/UPnPDA10 20000613.htm, 2000. Kopie auf CD-ROM. [39] Wally, B.: Entwicklung einer Steuerinstanz zur interaktiven Kopplung verteilter Geräte. Diplomarbeit, Fachhochschule Hagenberg, Medientechnik und -design, Hagenberg, Austria, Juli 2006. [40] Weiser, M.: The computer for the 21st century. Scientific American, 265:94–104, September 1991. [41] Zucker, D. F., M. Uematsu und T. Kamada: Content and Web Services Converge — A Unified User Interface. Pervasive Computing, 4(4):8–11, 2005. Messbox zur Druckkontrolle — Druckgröße kontrollieren! — Breite = 100 mm Höhe = 50 mm — Diese Seite nach dem Druck entfernen! — 88