- Alpen-Adria-Universität Klagenfurt
Transcrição
- Alpen-Adria-Universität Klagenfurt
Wolfgang Rabl Multimodale Interaktion im Smart-Home-Bereich Diplomarbeit zur Erlangung des akademischen Grades Diplom-Ingenieur Angewandte Informatik Alpen-Adria-Universität Klagenfurt Fakultät für Technische Wissenschaften Betreuer: Ass.-Prof. Mag. Dr. Gerhard Leitner Begutachter: Univ.-Prof. Dipl.-Ing. Dr. Martin Hitz Institut: Institut für Informatik-Systeme 27. August 2009 Ehrenwörtliche Erklärung Ich erkläre ehrenwörtlich, dass ich die vorliegende wissenschaftliche Arbeit selbstständig angefertigt und die mit ihr unmittelbar verbundenen Tätigkeiten selbst erbracht habe. Ich erkläre weiters, dass ich keine anderen als die angegebenen Hilfsmittel benutzt habe. Alle ausgedruckten, ungedruckten oder dem Internet im Wortlaut oder im wesentlichen Inhalt übernommenen Formulierungen und Konzepte sind gemäß den Regeln für wissenschaftliche Arbeiten zitiert und durch Fußnoten bzw. durch andere genaue Quellenangaben gekennzeichnet. Die während des Arbeitsvorganges gewährte Unterstützung einschließlich signifikanter Betreuungshinweise ist vollständig angegeben. Die wissenschaftliche Arbeit ist noch keiner anderen Prüfungsbehörde vorgelegt worden. Diese Arbeit wurde in gedruckter und elektronischer Form abgegeben. Ich bestätige, dass der Inhalt der digitalen Version vollständig mit dem der gedruckten Version übereinstimmt. Ich bin mir bewusst, dass eine falsche Erklärung rechtliche Folgen haben wird. (Unterschrift) (Ort, Datum) Danksagung Ich bedanke mich sowohl bei Herrn Univ.-Prof. Dipl.-Ing. Dr. Martin Hitz als auch bei Ass.-Prof. Mag. Dr. Gerhard Leitner für die Vergabe und Betreuung der Diplomarbeit. Ihre fachliche und organisatorische Unterstützung, sowie ihre Diskussionsbereitschaft und die daraus resultierenden Denkanstöße waren eine große Hilfe bei der Erstellung dieser Arbeit. Besonders bedanken möchte ich mich bei meinem Studienkollegen Daniel Felsing, der stets ein offenes Ohr für meine Probleme hatte und bei zahlreichen Gesprächen wertvolle Beiträge einbrachte. Ich bedanke mich weiters bei Markus Kurrent für die Korrektur der Arbeit. Nicht zuletzt möchte ich mich bei all jenen bedanken, die mich während des Studiums und bei der Erstellung dieser Arbeit so tatkräftig unterstützt haben. Hier insbesondere meiner Familie, die meine Launen die ganze Zeit über mit viel Geduld ertragen hat und ohne die dieses Studium gar nicht erst möglich gewesen wäre. Wer glaubt etwas zu sein, hat” aufgehört etwas zu werden“ Sokrates Inhaltsverzeichnis 1. Einleitung . . . . . . . . . . . . . . . . 1.1 Motivation . . . . . . . . . . . . . 1.2 Ziele von Smart-Home-Systemen . 1.2.1 Smart Living . . . . . . . 1.2.2 Ambient Assisted Living . 1.3 Visionen . . . . . . . . . . . . . . 1.4 Interaktionsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Spektrum der Arbeit . . . . . . . . . . . . . . . . 2.1 Ausgangssituation . . . . . . . . . . . . . . . 2.2 Zielsetzung . . . . . . . . . . . . . . . . . . 2.2.1 Multimodales Interaktionsframework 2.2.2 Nutzungsszenarien . . . . . . . . . . 2.3 Eingrenzung des Themenbereichs . . . . . . 2.4 Weitere Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 . 8 . 9 . 9 . 10 . 10 . 11 3. Multimodale Interaktion 3.1 Allgemeines . . . . 3.2 Interaktionsmodi . 3.3 Fusion / Fission . . 3.4 Herausforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 4 5 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 13 15 19 4. Multimodale Frameworks und Projekte 4.1 XHTML+Voice (X+V) . . . . . . 4.2 EMBASSI . . . . . . . . . . . . . 4.3 AMIGO . . . . . . . . . . . . . . 4.4 MONA . . . . . . . . . . . . . . . 4.5 SerCHo-MASP . . . . . . . . . . 4.6 W3C MMI . . . . . . . . . . . . . 4.7 Bewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 23 27 31 34 37 43 iv 5. Beschreibungssprachen im multimodalen Bereich . 5.1 Dialogbeschreibungen . . . . . . . . . . . . . 5.1.1 CCXML . . . . . . . . . . . . . . . . 5.1.2 SCXML . . . . . . . . . . . . . . . . 5.2 Generische UI-Beschreibungen . . . . . . . . 5.2.1 XIML . . . . . . . . . . . . . . . . . 5.2.2 UIML . . . . . . . . . . . . . . . . . 5.2.3 UsiXML . . . . . . . . . . . . . . . . 5.3 Datenaustauschformat (EMMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 45 45 46 49 50 52 54 56 6. Konzeptioneller Entwurf . . . . . . . . . . . . 6.1 Statische Aspekte . . . . . . . . . . . . . 6.1.1 Interaktionsmanager . . . . . . . 6.1.2 Modalitäts- und Benutzermanager 6.1.3 Modalitätskomponenten . . . . . 6.1.4 HTTP-Service . . . . . . . . . . . 6.1.5 Applikationsservices . . . . . . . 6.2 Dynamische Aspekte . . . . . . . . . . . 6.2.1 Interaktion . . . . . . . . . . . . 6.2.2 Sessionmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 58 61 61 62 63 63 65 65 66 7. Implementierung . . . . . . . . . . . . . . . . 7.1 Verwendete Technologien . . . . . . . . . 7.1.1 OSGI . . . . . . . . . . . . . . . 7.1.2 Commons SCXML . . . . . . . . 7.1.3 CMU Sphinx . . . . . . . . . . . 7.1.4 FreeTTS . . . . . . . . . . . . . . 7.2 Umsetzung . . . . . . . . . . . . . . . . . 7.2.1 Interaktionsmanager . . . . . . . 7.2.2 Dialogservices . . . . . . . . . . . 7.2.3 Modalitätsadapter . . . . . . . . 7.2.4 Modalitäts- und Benutzermanager 7.2.5 Applikationen . . . . . . . . . . . 7.2.6 Modalitäten . . . . . . . . . . . . 7.3 Anwendung . . . . . . . . . . . . . . . . 7.3.1 Dialogbeschreibung . . . . . . . . 7.3.2 Schnittstellenbeschreibungen . . . 7.3.3 Applikationslogik . . . . . . . . . 7.3.4 Exemplarischer Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 70 70 72 73 75 76 76 78 79 81 82 84 85 87 90 91 92 8. Diskussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 v 9. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 A. MMI-Lifecycle-Events . . . . . . . . . . . . . . . . . . . . . . . . . 105 Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 1 Einleitung 1.1 Motivation In den vergangenen Jahren haben sich die technischen Möglichkeiten in sämtlichen Gebieten zusehends weiterentwickelt. Die Menschen wurden und werden mehr und mehr mit neuen Technologien konfrontiert, welche ihr Leben einfacher, unkomplizierter und lebenswerter machen sollen. So auch im Bereich des Eigenheims, welches sich immer weiter in Richtung einer integrierten, vernetzten und automatisierten Umgebung entwickelt. Durch Anreicherung mit moderner Computertechnik soll den Bewohnern und Bewohnerinnen neue und bessere Lebensqualität geboten werden. Diese Automatisierung und Vernetzung beschränkt sich aber nicht nur auf grundsätzliche Gebäudefunktionen wie Licht und Heizung. Darüber hinaus gibt es auch Bestrebungen, sämtliche weitere Geräte des Haushaltes, wie Fernseher oder Waschmaschine, auf solche Art zu vernetzen, um auch hier eine komfortable Steuerung möglich machen zu können. Diese Entwicklung ist natürlich sehr erfreulich, jedoch ergeben sich dadurch neue Fragen und Probleme, auf die es bisher nur unzureichende Antworten gibt. Die Rede ist hier insbesondere von der Interaktion der Benutzer mit den Häusern, die sie bewohnen und die sie steuern möchten. Die Vergangenheit hat gezeigt, dass selbst einfache Geräte wie Videorekorder oder Mobiltelefone den Benutzer überfordern und vom Gesichtspunkt der Usability relativ schlecht zu bewerten waren. Im Bereich des Eigenheims wird dieses Problem noch viel deutlicher sichtbar, da sich in dieser Umgebung eine Vielzahl von Geräten befindet und die Komplexität den Benutzer schnell überfordern kann, sofern nur Interaktionsmöglichkeiten existieren, die nicht auf dessen Bedürfnisse angepasst sind. Dazu kommt noch die Tatsache, dass diese Technologie einen 1.2 Ziele von Smart-Home-Systemen sehr starken Einfluss auf das Leben der jeweiligen Nutzer nimmt und Probleme in der Bedienung eine erhebliche Auswirkung haben können, wie es zum Beispiel der Fall ist, wenn aus diesen Gründen die Heizung im Winter nicht gesteuert werden kann. Eröffnet man also den Benutzern die Möglichkeit, ihre Hausinstallation in diese Richtung zu erweitern, so muss man auch darauf achten, ihnen Schnittstellen zur Verfügung zu stellen, die den jeweiligen Anforderungen entsprechen bzw. muss es eine einfache, zielführende Möglichkeit geben, solche Schnittstellen definieren und generieren zu können [26]. Die Bestrebungen in diesem Gebiet werden unter dem Begriff Smart Home zusammengefasst, auch wenn man auf dieser Ebene noch nicht wirklich von Systemen sprechen kann, welche eine gewisse Intelligenz besitzen, wie diese Betitelung suggeriert. Man möchte allerdings seit einiger Zeit einen Schritt weitergehen und diesem Begriff wirklich Rechnung tragen, indem man versucht, die Gebäudesteuerung auf eine Stufe zu bringen, die man wirklich als smart“ bezeichnen könnte. Der Grundgedanke hierbei ist folgender: Reichert ” man eine Umgebung mit Technologie in Form von Sensoren und vernetzten steuerbaren Geräten an, so sollte es möglich sein, ein System zu schaffen, welches aufgrund der aktuellen Umgebung und historischer Daten Entscheidungen trifft, welche dem Wohle des dort befindlichen Benutzers zuträglich sind. Diese Entscheidungsfindung und Ausführung kann sogar völlig ohne den konkreten und aktiven Einfluss des Benutzers durchgeführt werden. In diesem Zusammenhang spricht man auch von Ambient Intelligence (AmI) [3]. AmI überspannt viele Gebiete der Informatik. Hierzu zählen Sensorik, Netzwerke, Human Computer Interfaces, Ubiquitous Computing, Künstliche Intelligenz und vieles mehr. All diese Teilbereiche werden zusammengefasst, um dieser Vision Rechnung zu tragen. Der Intention von Pervasive und Ubiquitous Computing folgend, soll der Computer so weit wie möglich in den Hintergrund treten und für den Benutzer transparent sein. Um das zu erreichen, spielt natürlich auch ein gewisses Maß an künstlicher Intelligenz eine Rolle, welche Situationen abschätzt und pro aktiv agieren kann, sehr wohl aber auch in der Lage ist, geeignete Schnittstellen zur Verfügung zu stellen, sollte der Benutzer explizit eine Tätigkeit ausführen wollen. 1.2 Ziele von Smart-Home-Systemen Was wären nun also konkrete Einsatzmöglichkeiten von solchen Smart-HomeSystemen? Als erster Gedanke kommt einem wahrscheinlich die Vereinfachung des Lebens in solchen Umgebungen in den Sinn. Man muss sich nicht 2 1.2 Ziele von Smart-Home-Systemen länger mit lästiger Steuerung beschäftigen. Man ist nicht länger gezwungen, zum Lichtschalter zu gehen, um das Licht zu dimmen, wenn eine künstliche Intelligenz diesen Wunsch auf irgendeine Art und Weise erkennt und dementsprechend handelt. Dieser Bereich wird unter dem Begriff Smart Li” ving“ geführt, hat sich als Ziel die Verbesserung der Lebensqualität gesetzt und ist in der Tat ein wichtiger und interessanter Aspekt solcher Systeme [27]. 1.2.1 Smart Living Die ersten Forschungsaktivitäten für smarte Anwendungen gab es im Unternehmensbereich und in öffentlichen Einrichtungen. Hier ist es relativ einfach, konkrete Ziele zu formulieren, da die jeweiligen Anforderungen schon recht präzise von der Unternehmensstruktur vorgegeben werden. Die notwendigen Arbeitsabläufe sind beispielsweise in Form von Geschäftsprozessen vorgegeben und werden auch häufig schon überwacht und bewertet. Die Effektivitätssteigerung bei der Einführung neuer Systeme kann auch relativ einfach anhand von Werten wie etwa Produktivität, Effizienz oder Gewinn ermittelt und bewertet werden und unterstützt somit eine Entwicklung in hohem Maße. Geht man allerdings auf den Privatbereich über, ist es nicht mehr so einfach, die angestrebten Ziele zu definieren und vor allem zu messen. Produktivität und Effizienz spielen hier nicht unbedingt eine Hauptrolle. In ihrer Freizeit müssen und werden sich Menschen nicht an vorgegebene Abläufe halten. Die zur Verfügung stehende Zeit wird nach eigenem Gutdünken strukturiert und eingeteilt. Eine Vielzahl an ungeplanten Aktivitäten findet zu willkürlichen Zeitpunkten statt und zur Verfügung stehende Ressourcen werden in zufälligen Mustern verwendet. Wie man hier leicht sehen kann, ist die Herausforderung bei der Entwicklung von Smart-Home-Systemen um einiges größer und umfangreicher[23]. Ein weiterer erschwerender Faktor ist auch in den unterschiedlichen Interessen der Bewohner zu sehen. In einem Privathaushalt leben typischerweise mehrere Personen unterschiedlichen Alters und mit unterschiedlichen Vorlieben und Gepflogenheiten. Es reicht also nicht aus, die Umgebung auf einen Benutzer bzw. eine Benutzergruppe hin zu entwickeln, sondern es muss weiters das familiäre Zusammenspiel berücksichtigt werden [10]. Weitere Herausforderungen finden sich bei Ringbauer et al. [39]. Hier wird aufgeführt, dass die Komplexität eines vollständig vernetzten Haushaltes sehr hoch ist, was dessen konsistente Abbildung auf eine Benutzungsschnittstelle schwierig macht. Außerdem gibt es nicht viele Forschungsergebnisse hinsicht- 3 1.2 Ziele von Smart-Home-Systemen lich der Verwendung unterschiedlicher Ein- und Ausgabegeräte. Bei simultaner Verwendung mehrerer Geräte muss auch auf die Konsistenz geachtet werden. 1.2.2 Ambient Assisted Living Ein weiteres Augenmerk bestehender Forschungsaktivitäten liegt in einem etwas anderen Bereich. Hierbei geht es zum Einen um gesundheitlich und geistig beeinträchtige Menschen und zum Anderen um ältere Leute. Es gibt hier viele Fälle von betroffenen Personen, welche eigentlich noch recht gut in der Lage wären, zu Hause in ihrer gewohnten Umgebung zu leben, wobei jedoch das Risiko gegeben ist, dass sie in Situationen kommen könnten, die sie alleine nicht bewältigen können. Aufgrund der hohen Kosten für eine Pflegekraft sind sie leider oft gezwungen, diese Umgebung zu verlassen und in ein Heim oder eine Pflegeeinrichtung zu ziehen. Die Kosten hierfür steigen stetig an, da sich ja eine andauernde Erhöhung des Bevölkerungsalters erkennen lässt. Umgekehrt dazu entwickelt sich die Technologie immer weiter und wird immer kostengünstiger verfügbar. Daher bietet es sich gerade hier an, die gewohnte Umgebung dieser Betroffenen zu einem Smart Home zu erweitern und auszubauen, welches sie in weiterer Folge unterstützen kann und ihnen hilft, ihr alltägliches Leben zu meistern [27]. Im Bereich Ambient Assisted Living, wie der Einsatz dieser Technologie zur Unterstützung älterer und beeinträchtigter Menschen häufig bezeichnet wird, stößt man allerdings auf einige weitere Schwierigkeiten. Man kann hier nicht von der Wissenbasis eines dreißigjährigen Menschen ausgehen. Gerade im Bereich moderner Technologien zeigen sich naturgemäß große Wissenslücken, welche man bei der Planung und Umsetzung berücksichtigen muss. Schon einfache Dinge, wie die Steuerung mit einer Maus, der Unterschied zwischen einem Mausklick und einem Doppelklick können eine zu große Herausforderung darstellen und führen zu fehlerhaften Interaktionen und zu Unverständnis und Frustration. Es ist hier also unumgänglich, dass neben der grundsätzlichen Fragestellung nach Möglichkeiten, das Leben zu vereinfachen und ein Weiterleben in der gewohnten Umgebung zu ermöglichen, auch die Problematik der Interaktion in Hinsicht auf die spezifischen Zielgruppen, die mit dem unterstützenden System in Kontakt treten, zu beleuchten [16]. 4 1.3 Visionen 1.3 Visionen Um diese hochgesteckten Ziele, wie die Vereinfachung bzw. Ermöglichung des Lebens im Eigenheim nun zu erreichen und umsetzen zu können, gibt es naturgemäß mehrere Möglichkeiten. Man kann hier allerding zwei große Visionen erkennen, welche in zwei gegensätzliche Richtungen weisen. Die eine sehr weit verbreitete Vision wurde bereits zu Beginn dieser Arbeit angerissen. Hierbei liegt das Ziel tatsächlich darin, dem Benutzer alle Arbeit abzunehmen und ihm, auf welche Art auch immer, jeden Wunsch von den Augen abzulesen und diesen in weiterer Folge dann auch umzusetzen. In diese Richtung geht auch eine ganze Reihe von Forschungsaktivitäten und Entwicklungen. Das Problem hierbei ist jedoch schnell ersichtlich und nicht einfach lösbar. Wie kann man die Möglichkeiten solch eines Systems vergrößern und optimieren und den Benutzern und Bewohnern des Hauses zur gleichen Zeit dennoch eine ausreichende Kontrolle zugestehen? Hier geht es vor allem um die subjektiv erlebte Kontrolle, die Menschen sollen sich nicht von ihren eigenen vier Wänden entmündigt fühlen, denn so etwas wäre nicht wirklich zielführend. Man befindet sich hier eindeutig in einer sehr zwiespältigen Position, da man ja versucht, die Abhängigkeit der Benutzer von der Verwendung unterschiedlichster Schnittstellen abzuschaffen bzw. zu verringern. Indem man dies tut, stellt sich immer mehr die Frage, wer denn tatsächlich im Haus die Kontrolle hat, der Mensch oder der Computer. Hier eine Lösung zu finden, welche HausbewohnerInnen immer mehr explizite Steuerungstätigkeit abnimmt und ihnen aber gleichzeitig nicht den Eindruck vermittelt, auf eben diese Kontrollfunktion verzichten zu müssen, ist wohl einer der Kernpunkte auf den man sich hier konzentrieren muss [10]. Es gibt allerdings auch Forschungsbestrebungen in eine gänzlich andere Richtung. Hier geht es nicht darum, den Bewohnern von Smart Home Gebäuden Arbeiten abzunehmen und zu automatisieren, sondern die Menschen sollen vielmehr lernen, sich selbst in ihrer Umgebung besser zurecht zu finden. Ein vorhandenes Computersystem soll sich hier um einiges subtiler verhalten und den Bewohnern Informationen zur Verfügung stellen, damit durch diese Unterstützung die anfallende Arbeit erleichtert wird und sich außerdem ein Lerneffekt einstellen kann. Natürlich gibt es auch hier hohe Anforderungen an die verwendeten Systeme, damit die notwendigen Informationen, und nur diese, zur genau richtigen Zeit durch das aktuell am besten geeignete Medium übermittelt werden. Der Benutzer soll dadurch in die Lage versetzt werden, bessere Entscheidungen zu treffen, gleichzeitig sollte er durch diese Vorgänge aber nicht gestört oder belästigt werden. Folgt man solch einer Vision, ergeben sich zumindest keine Probleme damit, den Haus- 5 1.4 Interaktionsmöglichkeiten bewohnern die Kontrolle zu entziehen oder sie gar zu entmündigen, was aus psychologischer Sicht sicherlich als positiv zu bewerten ist [21]. Natürlich ist es klar, dass es nicht darum geht, eines dieser Extreme anzustreben, sondern versucht wird, einen guten Kompromiss zwischen beiden zu finden. Der Schwerpunkt liegt dennoch auf Seiten der Automatisierung der häuslichen Umgebung, was sich auch in den aktuell durchgeführten Forschungsaktivitäten und Projekten widerspiegelt. Gerade in dem oben erwähnten Punkt des Aging in Place bietet sich ja eine Kombination dieser Lösungsansätze an, da ältere Menschen zum Einen Tätigkeiten einfach nicht mehr ausführen können, die ihnen die intelligente Umgebung also abnehmen muss. Zum Anderen wären sie aber sehr wohl in der Lage, eine Vielzahl anderer Tätigkeiten durchzuführen, sofern sie nur daran erinnert werden oder auch nur eine Hilfestellung, in welcher Form auch immer, erhalten. 1.4 Interaktionsmöglichkeiten Auf Grund der vielfältigen Anwendungsmöglichkeiten und der Unmenge an vorstellbaren Szenarien ist die Komplexität der Interaktion sehr hoch und wird in Zukunft auch rasch ansteigen. Die menschliche Leistungsfähigkeit stößt hingegen in dieser Hinsicht alsbald auf eine natürliche Grenze. Aus diesem Grund existiert eine Kluft zwischen der Leistungsfähigkeit des Systems, also der intelligenten häuslichen Umgebung, und der menschlichen Fähigkeit und Motivation, die gebotenen Möglichkeiten vollständig oder auch nur teilweise zu nutzen [14]. Ein möglicher Weg diese Probleme zu umgehen bzw. abzuschwächen, führt in seiner Vollendung zu einer Umgebung, welche die Bedürfnisse ihrer Bewohner a priori erkennt und dementsprechend ohne direkte Benutzereingaben agieren kann. Da man allerdings durchaus davon ausgehen kann, dass es immer Unklarheiten in der Bestimmung dieser Bedürfnisse geben wird und die Bewohner sich durch solch ein Vorgehen entmündigt fühlen können, wird eine Interaktion zwischen Mensch und Maschine immer notwendig sein. Aus diesem Grund versucht man, diese durch Verwendung aufkommender neuer Technologien zu verbessern. Ein äußerst vielversprechnender Ansatz ist die Verwendung eines multimodalen Systems. Ausgehend von der Definition in [31] geht man hier von der Möglichkeit aus, über mehrere Interaktionsformen hinweg zu kommunizieren. Der Begriff Multi“ bedeutet hier also mehr als eine Möglichkeit“ ” ” 6 1.4 Interaktionsmöglichkeiten und Modalität bezieht sich auf den Kommunikationskanal wie Sprache, Gesten oder dergleichen. Da die einzelnen Kommunikationskanäle durch eine gewisse Kapazitätsgrenze eingeschränkt werden, die Verwendung mehrerer solcher Kanäle die insgesamte Kommunikationskapazität aber erhöhen kann, handelt es sich dabei um einen effektiven Weg, der Komplexität Herr zu werden. Dazu kommt weiters noch die Möglichkeit, jeweils auf die aktuelle Situation abgestimmte Modalitäten verwenden zu können. Ein denkbares Beispiel wäre die Zubereitung eines Essens. Man hätte die Möglichkeit, über grafische Oberflächen mit der Umgebung zu interagieren, um etwa Kochrezepte zu finden oder Küchengeräte zu bedienen. Macht man sich im Zuge des Kochens allerdings die Hände schmutzig, so könnte man alle weiteren Befehle mündlich erteilen. Im optimalen Fall sollte solch ein Modalitätswechsel jederzeit möglich sein [7]. 7 2 Spektrum der Arbeit 2.1 Ausgangssituation Es gibt auf dem Markt inzwischen eine Unmenge an Lösungen für die Umsetzung und Installation eines Smart-Home-Systems. Aufbauend auf einer dieser Technologien, nämlich dem FS20-System von Contronics/ELV beschäftigt sich zum aktuellen Zeitpunkt eine weitere Diplomarbeit desselben Institutes damit, eine Plattform zu schaffen, auf welcher man in weiterer Folge aufsetzen und in einer sinnvollen Abstraktionsebene weiterführende Forschungsarbeit durchführen kann. Diese Softwareinfrastruktur wird im ersten Schritt zunächst die wichtigsten Sensoren und Aktoren des FS20-Systems modellieren, abbilden und zur Verfügung stellen. Weiters wird ein offenes Schnittstellendesign erarbeitet, auf dessen Basis verschiedenartige Interface- bzw. Steuerungsmöglichkeiten realisiert werden können. Die von den Komponenten gelieferten Informationen sollen zudem abgebildet und über diverse Schnittstellen abgefragt werden können, um so insgesamt eine leistungsfähige Basis für die Entwicklung diverser Applikationen zu erhalten. Nachdem die Realisierung der Plattform parallel zu dieser Arbeit erfolgt, wird davon ausgegangen, dass diese für die Entwicklung dieses darauf aufbauenden Projekts verfügbar ist [15]. Auf der Ebene der Benutzerinteraktion gibt es für das FS20-System eine Reihe proprietärer Softwarelösungen. Zum Einen eine Entwicklung des Herstellers selbst, das so genannte Homeputer-Studio und ein zugehöriger Webserver zur Steuerung des Haushaltes mittels eines Webbrowsers. Zum Anderen eine allgemeinere Lösung namens IPSymcon. Das Homeputer-Studio selbst ist allerdings in der Konfiguration und Bedienung etwas schwerfälliger und bietet keine sehr große Funktionsvielfalt oder Erweiterungsmöglichkei- 2.2 Zielsetzung ten. Die Installation neuer Komponenten und die Konfiguration des Systems gestaltet sich als recht schwierig und zeitaufwändig. Auch der zugehörige Webserver ist sehr rudimentär ausgeführt und stellt die möglichen Schaltvorgänge lediglich als eine Aneinanderreihung mehrerer Eingabefelder und Dropdownboxen dar. Bei der Verwendung von IPSymcon hat man ein erheblich breiteres Funktionsspektrum zur Verfügung, erkauft sich dieses allerdings mit einer weit höheren Komplexität beim Umgang mit der Software. Das Erstellen von Web-basierten Interfaces funktioniert bei dieser Lösung besser als bei dem Homputer-Webserver. Man bedient sich hierbei der Skriptsprache PHP und hat dadurch die Möglichkeit, Interfaces relativ frei zu gestalten. Allen verfügbaren Softwarelösungen gemein ist allerdings, dass sie nur auf einer Windows-Plattform laufen, kommerzielle Produkte sind und deren Sourcecode nicht frei verfügbar oder einsehbar ist. Aufgrund dessen sind die Erweiterungsmöglichkeiten, welche notwendig werden, sollte eine weiterführende Forschungstätigkeit in diesem Bereich erfolgen, gar nicht bzw. nur eingeschränkt gegeben. Dazu kommt die Tatsache, dass keine der Lösungen eine multimodale Interaktion überhaupt in Betracht zieht. 2.2 Zielsetzung Aufgrund des großen Forschungsbedarfes soll eine grundlegende Plattform entwickelt werden, welche wissenschaftliches Arbeiten im Bereich Smart ” Home Interaktion“ möglich macht und vereinfacht, um in Zukunft UsabilityStudien o. Ä. einfach und rasch durchführen zu können. Die Realisierung wird sich dazu in zwei größere Teilbereiche gliedern: 2.2.1 Multimodales Interaktionsframework Die Basis der Arbeit stellt die erwähnte Plattform dar, welche in ihrer Endform eine API zur Verfügung stellen wird, um in vernünftiger Weise mit den zugrunde liegenden Smart Home Komponenten interagieren zu können. Aufbauend auf diesem Zugang soll ein Framework erstellt werden, welches eine möglichst einfache Entwicklung von Smart Home Applikationen erlaubt. Die Anforderungen an die Funktionalität des Frameworks können wie folgt definiert werden: Die Interaktion der Benutzer mit den Anwendungen soll über unterschiedliche Modalitäten möglich sein. In der Anfangsphase ist es hinreichend, einen Zugang über graphische und sprachliche Modalitäten zu ermöglichen. Einer späteren Erweiterung um zusätzliche Modalitäten soll allerdings nichts im Wege stehen. Die Entwicklung von Anwendungen und die Synchronisierung der einzelnen involvierten Modalitäten soll einfach und 9 2.3 Eingrenzung des Themenbereichs zuverlässig möglich sein. Eine weitere Anforderung besteht darin, die Benutzungsschnittstellen hinsichtlich Anwenderpräferenzen und Geräteeigenschaften adaptierbar halten zu können. Die Interaktionsmöglichkeiten sollen also den Wünschen des aktuellen Benutzers entsprechend aufbereitet und angeboten werden. Geräteattribute, wie kleine Bildschirme oder eingeschränkte I/O Möglichkeiten, sollen einen Einfluss auf das Erscheinungsbild der Schnittstelle haben können. Der Fokus bei der Implementierung von Anwendungen liegt hier jedoch nicht auf den Endbenutzern des Systems, sondern auf Personen mit Programmierkenntnissen, von einem grundlegenden Fachwissen ist also auszugehen. 2.2.2 Nutzungsszenarien Nach der Realisierung des Frameworks sollen grundlegende Nutzungsszenarien entworfen und umgesetzt werden. Dies verfolgt zum Einen den Zweck, eine grundlegende Interaktion mit dem Smart Home möglich zu machen, um die bereits verfügbare Infrastruktur nutzen zu können. Zum Anderen soll mittels der Implementierung diverser multimodaler Applikationen auch die Robustheit und Verwendbarkeit des entwickelten Frameworks getestet werden. Darüber hinaus wird mit diesen Anwendungen auch die zugrunde liegende Architektur von Felsing [15] auf ihre Anwendbarkeit geprüft. 2.3 Eingrenzung des Themenbereichs Die Interaktion zwischen Benutzer und dem System soll über mehrere Interaktionsformen möglich sein. Diese unterscheiden sich zwar in ihrer Ausprägung (sprachlich, visuell ...), die über sie angebotenen Interaktionsmöglichkeiten sind jedoch in vielen Fällen die gleichen. Aus diesem Grund wäre es wünschenswert, wenn man diese nur einmal abbilden müsste und anschließend die Charakteristiken der unterschiedlichen Interaktionsformen automatisch daraus generiert werden könnten. Im Zuge dieser Arbeit, welche den ersten Schritt in diesen Bereich darstellt, ist es allerdings ausreichend, wenn jeder Interaktionsform eine eigene Beschreibung zugrunde liegt. Auf eine zukünftige Erweiterbarkeit wird jedoch geachtet. Es soll für den Benutzer möglich sein, über sämtliche zur Verfügung stehenden Modalitäten Eingaben zu tätigen und auch während der Durchführung einer Tätigkeit die Interaktionsform zu wechseln. Die Kombination der Eingaben mehrerer Modalitäten zur Generierung einer einzelnen Eingabe liegt 10 2.4 Weitere Vorgehensweise allerdings außerhalb des Spektrums der Arbeit. Außer Acht gelassen wird im Zuge der Arbeit auch das Thema Sicherheit. Natürlich muss für eine Benutzerverwaltung auch ein Authentifizierungsund Autorisierungsvorgang existieren, dieser wird aber relativ elementar ausgeführt. Argumentieren kann man dies neben dem prototypischen Charakter der Anwendung vor allem durch die Komponenten, welche in den untersten Ebenen der Plattform verwendet werden und auf die diese UI-Architektur aufsetzen soll. Die hier übertragenen Steuerungsdaten sind unverschlüsselt und von Außenstehenden äußerst einfach zu manipulieren. 2.4 Weitere Vorgehensweise Um die gesteckten Ziele zu erreichen, wird sich die weitere Vorgehensweise wie folgt gestalten: Da sich ein großer Teil der Aufgabenstellung mit der Planung und Implementierung einer multimodalen Architektur befasst, werden zunächst die möglichen Interaktionsmodalitäten untersucht und im Hinblick auf ihre Anwendbarkeit im Smart Home Bereich klassifiziert. In weiterer Folge werden bestehende diesbezügliche Technologien und Projekte in Augenschein genommen und deren Problemlösungsansätze diskutiert. Auch die Beschreibungssprachen, welche in diesem Kontext Anwendung finden, werden auf ihre Relevanz hin untersucht. Anschließend an diese theoretische Aufarbeitung der unterschiedlichen Problembereiche folgt die Konzeptionierung des praktischen Teils dieser Arbeit. Hier wird ausgehend von den zuvor erworbenen Erkenntissen ein Framework bzw. eine Architektur bestimmt, anhand derer ein multimodales System umgesetzt werden kann, welches die Anforderungen in der Zielsetzung erfüllt. Im Rahmen der Konzeptionierung werden weiters die umzusetzenden Szenarien definiert, welche die grundlegende Haussteuerung ermöglichen sollen Danach folgt eine Ausarbeitung über die praktische Umsetzung der Arbeit, welche die verwendeten Technologien kurz anreißt, die Anknüpfungspunkte an die zugrunde liegende Architektur [15] erläutert und Details über die tatsächliche Implementierung des Systems aufzeigt. Abschließend folgt eine Diskussion über die Ergebnisse der Arbeit im Hinblick auf die multimodalen Interaktionsmöglichkeiten. 11 3 Multimodale Interaktion 3.1 Allgemeines Es existiert eine Reihe von unterschiedlichen Methoden zur Mensch-MaschineKommunikation. Die klassischen WIMP-Schnittstellen [6] zählen hier sicherlich zu den verbreitetsten Vertretern im grafischen Bereich. Auch die Verwendung von sprachgesteuerten Systemen ist heute nicht mehr unüblich und findet vor Allem bei Telefonsystemen einen großen Anwendungsbereich. Darüber hinaus existieren auch exotischere“ Schnittstellenvarianten, welche ” sich nicht bzw. noch nicht wirklich durchgesetzt haben, aber insbesondere im wissenschaftlichen Bereich ein reges Forschungsinteresse wecken. Unter Anderem betrifft dies dreidimensionale Schnittstellen, virtuelle Realitäten oder haptische Ein- und Ausgabegeräte sowie die Erkennung von Gesten. Auch Ansätze außerhalb der Computerdomäne sind denkbar, wie beispielsweise die Verwendung von Einrichtungs- oder Kunstgegenständen zum Zwecke der Interaktion mit einem Computersystem. Die meisten dieser Interaktionsformen sind bis zu einem gewissen Maße in einer Smart Home Umgebung durchaus einsetzbar. Wie bereits zu Beginn der Arbeit erwähnt, könnte die Kontrolle des Smart Homes durch die Benutzer jedoch erheblich verbessert werden, indem man mehrere Modalitäten kombiniert und Ein- bzw. Ausgaben nicht nur unimodal sondern multimodal ausführt. Die Anfänge dieser Idee reichen zurück bis hin zu Richard Bolt [9] und haben bis heute eine große Anzahl von Forschungsaktivitäten und Projekten angestoßen, von denen einige nachfolgend auch beschrieben werden. Durchdachte multimodale Systeme erweitern den HCI-Bereich durch größere Flexibilität, einem natürlicheren Zusammenspiel von Mensch und Maschine sowie ausdrucksstärkeren Interaktionsmöglichkeiten. Die Verwendung von Maus 3.2 Interaktionsmodi und Tastatur stößt relativ rasch an Grenzen, geht es zum Besispiel um die Navigation in bzw. Steuerung von virtuellen Umgebungen. Aus diesem Grund werden Systeme benötigt, deren Ein- und Ausgabemöglichkeiten umfangreicher und sehr gut aufeinander abgestimmt sind [34]. Gut durchdachte multimodale HCI-Systeme haben eine Reihe von nicht von der Hand zu weisenden Vorteilen. Die Kommunikation mit Benutzern wird um einiges robuster, Fehler werden leichter erkannt und können verhindert werden. Eingabeverfahren sind häufig mit einer gewissen Fehlerwahrscheinlichkeit bzw. Mehrdeutigkeiten behaftet, welche durch die Kombination mehrerer Interaktionsformen gemildert oder gänzlich verhindert werden können. Wie eben erwähnt, ist es allerdings wichtig, solche Systeme richtig zu konzipieren und einzusetzen, da die Vorteile bei einer falschen Nutzung multimodaler Systeme sehr rasch ins Gegenteil umschlagen können und diese dadurch die Mensch-Maschine-Kommunikation erschweren können [22]. Abbildung 3.1 zeigt einen groben Überblick über multimodale Interaktion und beschreibt die einzelnen Modalitäten als Kommunikationsmodi, welche in Hinblick auf die menschlichen Sinne Sehen, Hören, Berühren, Riechen und Schmecken definiert werden. Die Ein- und Ausgabemöglichkeiten von Computersystemen können ebenfalls einer oder mehrerer dieser Kategorien zugewiesen werden. Mit Hilfe der unterschiedlichen Interaktionsformen können in der Folge verschiedenste Benutzungsschnittstellen konzipiert und umgesetzt werden. Ein Beispiel, welches in Abbildung 3.1 zu sehen ist, sind die Attentive Interfaces“, welche kontextabhängig bestimmen, worauf Benutzer ” gerade ihre Aufmerksamkeit richten, dies als zusätzlichen Input verwenden und darüber hinaus auch den optimalen Zeitpunkt einer eventuellen Ausgabe anhand des Benutzerverhaltens ermitteln können. Wie in der Abbildung ebenfalls zu sehen ist, sind die Anwendungsgebiete dieser Technologie mannigfaltig und jedenfalls auch im Smart Home Bereich zu sehen [22]. 3.2 Interaktionsmodi Ermöglicht man den Benutzern, mit einem System über mehrere Modalitäten hinweg in Beziehung zu treten, so kann man grundsätzlich zwischen sequenzieller, simultaner und gemischter Interaktion unterscheiden[19]. Erfolgt die Kommunikation sequenziell, so werden die Eingaben nacheinander über nur eine der verfügbaren Modalitäten getätigt. Die verwendete Modalität kann hier zwar nach einiger Zeit wechseln, dennoch bleibt sie in der Regel über einen längeren Zeitraum dieselbe. Beispielsweise wird über einen kompletten 13 3.2 Interaktionsmodi Abb. 3.1: Überblick über multimodale Interaktion. Angelehnt an Jaimes und Sebe [22] Workflow hinweg nur eine Spracheingabe akzeptiert. Bei simultaner Interaktion ist es demgegenüber möglich, zu jedem beliebigen Zeitpunkt jede beliebige Modalität zu verwenden. Die Eingaben werden im System zwar dennoch in der Reihenfolge ihres Eintreffens abgearbeitet, aber der Weg, über den sie getätigt werden, ist nicht zwingend vorgegeben. Hier wäre das in der Einleitung erwähnte Kochbeispiel zutreffend und einzureihen. Als Letztes wäre noch die gemischte Interaktion zu sehen. Hier können Eingaben ebenfalls jederzeit über jede beliebige Modalität getätigt werden, jedoch werden sie nicht nacheinander übermittelt, sondern bereits im Vorfeld, sofern semantisch sinnvoll, zu einer einzigen Eingabe zusammengefasst [56]. Ein Beispiel für solch einen Modus wäre das Put that there“-Prinzip von [9]. Hier wird ” ein Teil der Eingabe über die sprachliche Modalität geführt, indem man dem System mitteilt, es möge ein bestimmtes Objekt an einen bestimmten Ort legen. Die genauere Bestimmung des Objektes und des Ortes wird allerdings zeitgleich über eine andere Modalität durchgeführt, indem man beispielsweise auf einer grafischen Oberfläche ein Symbol aus- und einen Zielort anwählt. Eine weitere Unterscheidung ergibt sich durch Verwendung der verfügbaren Modalitäten in einer supplementären bzw. komplementären Kombination. Bei Ersterer werden über alle betroffenen Modalitäten die gleichen grundsätzlichen Ein- und Ausgabemöglichkeiten zur Verfügung gestellt, welche sich aber natürlich in ihrer Ausprägung und dem verwendeten Medium unterscheiden. Der Benutzer kann sich also für die in der aktuellen Situation am besten geeignete Interaktionsvariante entscheiden. So wäre es denkbar, eine bestimmte Telefonnummer während einer Autofahrt über einen Sprachbefehl zu wählen. In einer sehr lauten Umgebung, wie in einer Cafeteria, kann allerdings auf die Möglichkeit der Eingabe über das Tastenfeld zurückgegriffen werden [35]. Weiters wäre es in dieser Situation nicht so tragisch, würde 14 3.3 Fusion / Fission eine der Modalitäten wegfallen, da man sämtliche Eingaben auch über die anderen noch verbliebenen durchführen könnte. Befindet man sich in komplementärem Betrieb, so bedeutet das, dass die Anzahl und Form der möglichen Eingaben je nach verwendeter Modalität variieren kann. Hier muss natürlich größere Aufmerksamkeit darauf gelegt werden, das System auch nach Wegfall von diversen Modalitäten weiterhin zuverlässig bedienbar zu halten. Ist eine bestimmte Eingabe nur über einen Weg möglich und dieser fällt weg, befindet man sich in einer unerwünschten Situation. Ein Ausweg wäre auch hier das Anbieten supplementärer Alternativen, also einer Kombination aus den beiden Modi [56, 19]. 3.3 Fusion / Fission Um nun die eben beschriebene gemischte Interaktion überhaupt möglich zu machen, bedarf es natürlich gewisser Konzepte und Methoden, welche durchaus nicht als trivial zu bezeichnen sind. Der Prozess, mehrere multimodale Eingaben zu einer zusammen zu fassen, wird im allgemeinen als multimodale Fusion bezeichnet. Die entgegengesetzte Variante, also Ausgaben des Systems dem Benutzer wieder semantisch korrekt über die verfügbaren Interaktionskanäle zu präsentieren, wird multimodale Fission genannt. Wie gut und genau solche Fusionsmechanismen arbeiten, hängt neben den verwendeten Modalitätstypen natürlich auch vom Abstraktionsniveau und dem verwendeten Modell ab. Da das Ziel hierbei ein für den Menschen natürlicher Informationsfluss ist, sollte auch das hierfür verwendete Modell dementsprechend aufgebaut sein. Es wurden in der Vergangenheit diverse neurologische Studien mit dem Ziel durchgeführt, zu erkennen, wie die Eindrücke von Bildern, Geräuschen und Berührungen bei Personen im Rahmen einer zwischenmenschlichen Kommunikation zusammengeführt werden. Dabei wurden drei charakteristische Konzepte gefunden, welche im HCI-Bereich von Bedeutung sind. Erstens ist die Reaktion auf mehrere schwache Eingangssignale um einiges höher als bei nur einem starken Eingangssignal, was jedenfalls für die Anwendung multimodaler Benutzungsschnittstellen spricht. Zweitens hängt die Art der Zusammenführung von Information aus unterschiedlichen Kanälen sehr stark vom aktuellen Kontext ab, in der sich das Individuum gerade befindet. Ein- und dieselben Eingaben können also in unterschiedlichen Situationen völlig unterschiedlich kombiniert werden. Drittens können, ausgehend vom aktuellen Kontext, irreguläre oder falsche Eindrücke eines Kommunikationskanals entweder ignoriert oder erneut geprüft werden, was zu einer höheren Fehlertoleranz führt [36]. 15 3.3 Fusion / Fission Wie in Abbildung 3.2 zu sehen, kann nun solch eine Fusion auf unterschiedlichen Ebenen stattfinden. Variante a) beschreibt hier eine Zusammenführung auf der Datenebene. Hier werden Sensordaten direkt miteinander kombiniert. Dies kann natürlich nur dann geschehen, wenn es sich dabei um Sensordaten desselben Typs, bzw. um sehr eng gekoppelte Modalitäten, wie zum Beispiel Sprache und Lippenbewegungen, handelt. Auch wird bei dieser Art der Fusion nur das Ergebnis betrachtet und als eine einzelne gemeinsame Modalität angesehen, was in höheren Ebenen die Bewertung und Bearbeitung schwieriger bis unmöglich macht [22]. Auf dieser Ebene können also unterschiedliche Sensoren nicht zusammengeführt werden, und genau aus diesem Grund ist diese Art der Fusionierung im HCI- und damit weiters im Smart-Home-Bereich nicht oder nur sehr begrenzt einsetzbar [36]. Bei einer Fusion nach Variante b) werden die verschiedenen Eingaben nach ihren Merkmalen und Charakteristiken untersucht. Anders als in a) werden unterschiedliche Modalitäten hier einzeln erfasst und nach Genauigkeit und Zuverlässigkeit der Erkennung klassifiziert. Danach können diese zu einer einzelnen Eingabe kombiniert werden, wobei dies anhand von aktuellen, aber auch erst kürzlich getätigten Eingaben erfolgen kann [22]. Durch diesen Vorgang sind die Informationen auf dieser Ebene zwar etwas abstrakter, allerdings auch toleranter gegenüber Störungen oder Sensorenfehlern. Diese Art der Fusion eignet sich für die Anwendung bei stark gekoppelten Modalitäten am besten und es existiert hierfür auch eine Reihe von Techniken zur Durchführung. Pantic nennt hier einige Beispiele, wie Kalman Fusion, künstliche Neurale Netze oder Hidden Markov Models [36]. Die dritte Möglichkeit zur Fusionierung wird in Variante c) beschrieben. Hier werden zunächst alle Eingaben getrennt bewertet und analysiert. Erst am Ende werden die fertig bearbeiteten Eingaben zusammengeführt. Diese Methode findet sich in sehr vielen multimodalen Systemen wieder, da die Zusammenführung auf den darunterliegenden Ebenen schwieriger umsetzbar ist. Sie ist jedoch nicht die beste Variante. Dies aus dem einfachen Grund, da die Kommunikation, wie bereits beschrieben, durchaus komplementär erfolgen kann und dadurch teilweise Eingaben in nur einer Modalität alleine oft keinen Sinn ergeben und bereits vorher mit anderen kombiniert werden müssen[36]. Ein Vorteil dieser Variante ist unter anderem die Möglichkeit, jede Modalität getrennt voneinander trainieren und anpassen zu können. Sie eignet sich recht gut für Eingabemethoden, welche temporär relativ lose gekoppelt sind oder großteils komplementäre Eingaben erlauben [22]. Foster [17] beschreibt den Terminus multimodale Fission“ als den Pro” 16 3.3 Fusion / Fission Abb. 3.2: Fusion mehrerer Modalitäten [36] zess der Realisierung von Ausgaben über mehrere zur Verfügung stehende Ausgabekanäle, sprich Modalitäten. Es handelt sich hier also um das entsprechende Pendant zur Eingabe über multimodale Fusion. Hierbei sind drei grundsätzliche Schritte relevant und notwendig: Der zu übermittelnde Inhalt muss zunächst ausgewählt und strukturiert werden. Danach kann festgelegt werden, welcher Teil dieses Inhaltes wie und über welche Modalität übermittelt wird. Zu guter Letzt müssen die einzelnen Kommunikationskanäle koordiniert werden, um am Ende ein einheitliches Gesamtbild zu ergeben. Zum ersten Schritt kann nun folgendes gesagt werden: Die Auswahl und Strukturierung von Inhalten multimodaler Anwendungen folgt sehr stark den Prinzipien der Erstellung von Texten. Aus diesem Grund finden hier auch dieselben Techniken Verwendung. Die Strukturierung kann hierbei in drei Bereiche aufgeteilt werden. Zum Einen geht es um die Absicht, welche hinter den unterschiedlichen Äußerungen steht und welchen Einfluss sie auf den Empfänger haben bzw. haben sollen. Zum Anderen geht es um die semantischen Beziehungen zwischen den formulierten Aussagen und den beinhaltenden Informationen. Und zu guter Letzt werden Objekte, Eigenschaften und Beziehungen beschrieben, welche zum aktuellen Zeitpunkt im Fokus der Aussage liegen [17]. Bei der Auswahl der geeigneten Ausgabemodalitäten geht es nun darum, diejenige Kombination zu finden, welche die Daten am besten und verlustfreiesten übermitteln kann. Das Problem hierbei ergibt sich aus der Auswahl der Modalitäten auf der Systemseite und aus der Aufgabe des erneuten Zu- 17 3.3 Fusion / Fission sammenfügens der Informationen auf der Empfängerseite. Für diese Aufgabe ist folgendes Wissen wichtig und relevant (André [2], zitiert nach [17]): Die Charakteristiken der verfügbaren Ausgabemodalitäten: Ausgabemodalitäten können anhand unterschiedlicher Eigenschaften charakterisiert werden. Die grundsätzlichste Eigenschaft ist hier sicherlich der Typ, nämlich ob es sich um eine grafische, akustische oder haptische Modalität handelt. Es gibt aber noch eine Reihe weiterer Eigenschaften, anhand derer eine Unterteilung stattfinden kann. Beispiele wären hier dynamische/statische oder linguistische/nicht-linguistische Ausprägungen. Die Charakteristiken der präsentierten Informationen: Auch der Inhalt kann, wie die Modalitäten selbst, anhand verschiedener Eigenschaften charakterisiert werden. Beispiele wären hier Dringlichkeit, Informationsdichte oder Gültigkeitsdauer von Information. Das Kommunikationsziel Die vom Benutzer durchzuführende Aufgabe Die Charakteristiken des Benutzers: Auch die Eigenschaften des Benutzers können für eine Modalitätsauswahl beeinflussend sein. So könnten erwachsene Personen textlastigeren Output erhalten, wohingegen eine jüngere Zielgruppe Informationen auf andere Art und Weise erhalten würden. Bei Personen mit Hörschäden würden akustische Modalitäten nicht zur Ausgabe herangezogen etc. Jegliche Einschränkungen der verfügbaren Ressourcen: Insbesondere im Bereich mobiler Endgeräte stößt man relativ rasch an physikalische Grenzen, welche bei der Modalitätsausawahl in Betracht gezogen werden müssen. Die Rede ist hierbei von kleinen Displays, begrenzter Rechenkapazität oder Ähnlichem. Eine Kombination von Ausgabemedien ist also auch unter diesem Gesichtspunkt zu betrachten und anzupassen. Der erste Schritt besteht nun darin, die gesamte Ausgabe in Teilbereiche zu gruppieren, welche in sich kompatibel sind. Zu jedem dieser Bereiche werden nun die entsprechenden Repräsentationsformen ausgewählt, welche in der Lage sind, die darin enthaltene Information auszugeben. Anschließend wird anhand von definierten Regeln bestimmt, welche Repräsentationsform aktuell verwendet werden soll. Solch eine Regel könnte beispielsweise lauten: Gibt es sehr viel Information zu vermitteln, soll ein Medium gewählt wer” den, welches diese Informationen dauerhaft darstellen kann“, hier wäre zum Besipiel eine akustische Ausgabe nicht sinnvoll. Sind die zu verwendenden Modalitäten definiert und gefunden, so geht es nun noch darum, diese untereinander zu koordinieren und synchron zu hal- 18 3.4 Herausforderungen ten. Die Inhalte müssen möglichst optimal an die Ausgabemedien aufgeteilt und angepasst werden. Dies kann im einfachsten Fall anhand vordefinierter Templates geschehen, allerdings bietet es sich auch hier an, Regeln zu definieren, anhand derer die Inhalte dynamisch in Form gebracht werden können. Weiters ist die zeitliche Koordination insbesondere bei Verwendung von dynamischen Modalitäten wie Sprachausgabe wichtig, um sicherzustellen, dass bestimmte Ausgaben auch zur richtigen Zeit erfolgen. Diese müssen zum Einen sinnvoll in den Informationsfluss integriert werden, ihn zum Anderen aber auch nicht stören. Eine asynchrone Ausgabe kann den Benutzer eher verwirren, als dass sie ihm hilft, die übermittelten Informationen verarbeiten zu können [17]. 3.4 Herausforderungen Wie bereits erwähnt, genügt es nicht, dem Benutzer einfach ein System zur Verfügung zu stellen, bei dem er mehrere Interaktionsmöglichkeiten hat, um eine schlagartige Verbesserung der Mensch-Maschine-Kommunikation zu erhalten. Die zugrunde liegenden Mechanismen, welche eine solche Interaktion ermöglichen, müssen sehr gut durchdacht sein, um eine Effizienzsteigerung zu erhalten. Diesbezüglich hat Oviatt bereits im Jahr 1999 einige häufige Irrtümer und fälschliche Annahmen in Hinblick auf multimodale Systeme erläutert, die nachfolgend in aller Kürze zusammengefasst werden [34]. Anwender eines multimodalen Systems wollen und werden nicht unbedingt auch multimodal interagieren. Anwender empfinden die Möglichkeit einer multimodalen Interaktion zwar als positiv, nehmen diese allerdings nicht immer wahr. Ausgehend von menschlichen Kommunikationsmustern erfolgt ein großer Teil dieser Kommunikation auf einem unimodalen Weg. Nur in bestimmten und vorhersehbaren Situationen ist die Wahrscheinlichkeit hoch, dass multimodale Kommunikationsmittel eingesetzt werden. Dies erfolgt beispielsweise sehr häufig, wenn räumliche Informationen in der Kommunikation inbegriffen sind. Als Beispiel sei auch hier wieder das Put that there“-Prinzip erwähnt. Diese Tatsache ist gerade für den Fu” sionsvorgang sehr interessant, da so eine Unterscheidung von zusammengehörenden bzw. semantisch disjunkten Eingaben getroffen werden kann. Während der Sprache auf etwas zu deuten, ist nicht zwingend das häufigste Interaktionsmuster. Gerade im Bereich der Gesten treten andere Muster, wie zum Beispiel das Erstellen von Symbolen oder Grafiken, viel häufiger auf und Systeme sollten auch dafür offen konzipiert werden. 19 3.4 Herausforderungen Zusammenhängende Eingaben über unterschiedliche Modalitäten müssen nicht synchron erfolgen. Erfordert ein gesprochener Befehl beispielsweise zusätzliche Information über einen anderen Informationskanal, kann es durchaus vorkommen, dass zwischen beiden Eingaben einige Augenblicke verstreichen. Zur Fusion genügt es also keineswegs, nur zeitgleich eintreffende Eingaben heranzuziehen - dafür verantwortliche Algorithmen müssen darüber hinaus gehende Strategien zur Fusionierung implementieren. Man kann nicht davon ausgehen, dass Sprache, sofern verfügbar, die primär verwendete Modalität darstellt. Auch ist Sprache nicht zwingend der Kanal, über den die ersten Eingabesignale eintreffen. In den meisten Fällen werden zuvor andere Modalitäten genutzt. Man darf bei der Entwicklung von multimodalen Applikationen also die übrigen Modalitäten keineswegs als unwichtiger erachten. Ein großer Teil der Kommunikation erfolgt komplementär. Ein redundanter, supplementärer Modus wird demgegenüber nur selten verwendet. Wie bereits erwähnt, führt die Verwendung mehrerer fehlerbehafteter Eingabemöglichkeiten, bei deren Kombination durchaus nicht zu einer größeren Fehlerhäufigkeit, sondern, ganz im Gegenteil, die einzelnen Modalitäten ergänzen sich zu einem robusteren Eingabesystem. Es hängt sehr stark von der jeweiligen Person ab, wie diese mit dem System umgeht. Einige Menschen tätigen multimodale Eingaben simultan, andere wiederum sequenziell. Zu erkennen ist aber, dass sich die Verwendungscharakteristiken einer jeweiligen Person mit der Zeit nicht verändern. Kann ein System also zu Beginn feststellen, wie sich jemand verhält, kann dieses Verhalten der gesamten Sitzung zugrundegelegt und die Erkennungsrate somit gesteigert werden. Jede Modalität unterscheidet sich grundsätzlich von allen anderen. Es ist demnach nicht möglich, jedweden Inhalt zwischen unterschiedlichen Modalitäten durch einfaches Übersetzen zu transferieren. Es gibt natürlich Teilbereiche, in denen das möglich ist, von einer Allgemeingültigkeit ist jedoch nicht auszugehen. Eine Effizienzsteigerung bei der Verwendung multimodaler Systeme im Gegensatz zu unimodaler Interaktion ist zwar durchaus gegeben, stellt aber nicht den einzigen und auch nicht den wichtigsten Vorteil dar. Viel mehr wiegt hier die bereits erwähnte bessere Fehlererkennung bzw. Vermeidung und natürlich auch die größere Flexibilität, die solche Systeme mit sich bringen. Diese Aussagen sind auch heute noch relevant und sollten bei der Entwicklung einer entsprechenden Plattform im Hinterkopf behalten werden. 20 4 Multimodale Frameworks und Projekte Nachfolgend soll nun ein Überblick über entsprechende Frameworks und Projekte gegeben werden, welche sich mit Multimodalität befassen. Es werden deren Ziele analysiert, deren Konzepte und Methodiken beleuchtet und ihre Relevanz für die Umsetzung eines eigenen Prototypen diskutiert. 4.1 XHTML+Voice (X+V) Wie der Name bereits vermuten lässt, handelt es sich bei dieser Technologie um eine Kombination aus zwei Dokumenttypen bzw. Beschreibungssprachen. Als Basis dient hier die XML-basierte Beschreibungssprache XHTML 1.0 [64], welche vom W3C formuliert wurde und prinzipiell eine Weiterentwicklung aus der ursprünglichen HTML-4.0-Spezifikation darstellt. Die Änderungen betreffen großteils die XML-Konformität. HTML selbst ist in dieser Hinsicht sehr tolerant und erlaubt das Erstellen von Dokumenten, welche nicht der XML-Syntax entsprechen. Bei XHTML ist dies nicht mehr möglich und sämtliche erstellte Dokumente müssen aus validem XML-Code bestehen. Bei der Erweiterung der Spezifikation auf XHTML 1.1 [63] wurde XHTML in eine Sammlung unterschiedlicher Module zerlegt, welche jeweils eine bestimmte Funktionalität anbieten. Diese Module können nun beliebig in XHTMLDokumente eingebunden werden, um gewünschte Aufgaben zu übernehmen und ergeben im Gesamtbild ein valides Dokument. Durch diese Modularisierung wurde es möglich, XHTML mit VoiceXML (VXML), bzw. einer Teilmenge davon, zu kombinieren. VoiceXML, ebenfalls eine XML-basierte Beschreibungssprache, wurde speziell dafür entwickelt, Audiodialoge zu definieren, um interaktive sprachgesteuerte Applikationen zu realisieren [57]. Man erstellt also XHTML-Dokumente, welche die 4.1 XHTML+Voice (X+V) Beschreibung des grafischen Aufbaus der Benutzungsschnittstelle enthalten. Innerhalb dieser Dokumente ist es nun möglich, mittels VXML den sprachlichen UI-Teil zu formulieren. In Abbildung 4.1 ist ein Beispiel für solch ein XHTML+Voice Dokument zu sehen [65]. Abb. 4.1: Einfaches XHTML+Voice Dokument [65] Wie man hier erkennen kann, wird im VXML-Tag (Zeilen 10-13) eine Audioausgabe formuliert, welche über einen Eventhandler in Zeile 17 angestoßen wird, sobald der Benutzer mit der Maus auf den Textbereich klickt. Auf diese Art und Weise können recht einfach audiovisuelle Benutzungsschnittstellen entwickelt und implementiert werden. Allerdings gibt es auch diverse Einschränkungen und Gründe die gegen die Verwendung, vor allem im Smart-Home-Bereich, sprechen. Leider gibt es von Seiten der Browserentwickler keine vernünftige Unterstützung für X+VInhalte, lediglich für Opera existiert ein Plugin, mit welchem solche Dokumente verarbeitet werden können. Des Weiteren sieht diese Spezifikation lediglich die Verwendung von sprachlichen und grafischen Modalitäten vor. Eine Erweiterung von XHTML um zusätzliche Module, welche sich um andere Modalitäten kümmern, wäre zwar denkbar, wird von der Spezifikation aber nicht abgedeckt. Darüber hinaus erfolgt die Verarbeitung der Inhalte und Benutzereingaben clientseitig und relativ eng gekoppelt. Gerade im Smart Home Bereich sollten Benutzer jedoch auch über verschiedene Endgeräte hinweg multimodal mit der Umgebung interagieren können, was eine verteilte oder zumindest serverseitige Verarbeitung der Ein- und Ausgaben 22 4.2 EMBASSI notwendig macht. Ein weiterer Kritikpunkt ist in der Formulierung der UI-Beschreibung zu sehen. Jede der beiden Modalitäten muss separat definiert werden. Dies jedoch in ein- und demselben Dokument, was diesen Ansatz im Hinblick auf übersichtliche und einfache UI-Entwicklung schwächt. Hinzu kommt noch die Tatsache, dass zur Verknüpfung dieser beiden Modalitäten Scripte notwendig sind, welche bei größeren Dokumenten auch einen nicht unerheblichen Teil des Umfangs darstellen. Der Trend in der UI-Entwicklung geht aber hin zu semantisch höherwertigen Schnittstellenbeschreibungen, wobei aus einer allgemeinen Formulierung sämtliche Modalitätsausprägungen abgeleitet werden können. Auch aus diesem Grund ist XHTML+Voice für größere Projekte nicht unbedingt geeignet [20]. 4.2 EMBASSI Das EMBASSI-Projekt lief über einen Zeitraum von vier Jahren bis zu seinem Ende im Jahr 2003 und wurde vom Bundesministerium für Bildung und Forschung in Deutschland gefördert. Hinzu kamen Beteiligungen von Seiten der Industrie und diversen Hochschulen, wobei am Ende 19 unterschiedliche Partner, darunter auch Firmen wie Sony oder Grundig, an der Umsetzung mitgewirkt haben. Im Vordergrund stand hier das Problem der Interaktion mit einer komplexen und unüberschaubaren Umgebung, in der selbst einfache Aufgaben, wie das Programmieren eines Videorekorders, den Benutzer überforderten, von komplizierteren Aufgaben ganz zu schweigen. Die Ziele, die bei diesem Projekt konkret im Mittelpunkt standen, lassen sich wie folgt formulieren [18]: Ermitteln eines einheitlichen und psychologisch fundierten Models zur systematischen Entwicklung von Assistenzsystemen unter Einbeziehung multimodaler Benutzungsschnittstellen. Die Umsetzung einer Designumgebung, welche auf dem zuvor definierten Modell fußt und die Arbeit von Entwicklern unterstützt und bereichert. Die Entwicklung einer generischen Architektur, um solche Assistenzsysteme umsetzen und realisieren zu können. Die Entwicklung von Werkzeugen, um multimodale Komponenten einfach und modular implementieren zu können. Das Konzept hinter EMBASSI geht, im Gegensatz zu den meisten anderen Projekten in diesem Bereich, weg von einer funktionalen Betrachtungsweise hin zu einer zielbasierten Interaktion. Man beschränkt sich bei der 23 4.2 EMBASSI Interaktion mit den diversen Endgeräten also nicht nur darauf, deren Funktionen wie beispielsweise Ein“, Aus“ oder Play“ bei einem Videorekorder ” ” ” direkt zu steuern, sondern hat vielmehr das gewünschte Ergebnis im Auge. In dem genannten Beispiel wäre das also das Betrachten eines bestimmten Videofilmes. Eine solche Herangehensweise hat natürlich den Vorteil, von den vielen verschiedenen Gerätetypen abstrahieren zu können. Geräte verschiedener Hersteller können durchaus denselben Funktionsumfang besitzen, präsentieren diesen jedoch auf unterschiedliche Art und Weise. Diese Differenz kann für den Anwender verwirrend sein [18]. Nachfolgend soll nun ein Überlick über die in EMBASSI entwickelte und verwendete Architektur gegeben werden. Diese besteht aus einem Zusammenschluss von Agenten, welche sich jeweils um spezielle Aufgaben kümmern. Dies geschieht weiterhin in unterschiedlichen Ebenen, in welchen mit jeweils unterschiedlich abstrakten Daten gearbeitet wird. Die Kommunikation zwischen Agenten auf verschiedenen Ebenen wird über genau spezifizierte Protokolle durchgeführt. Verwendung findet hierbei KQML, eine XML-basierte Sprache, welche häufig in agenten-basierten Systemen Einsatz findet. Die Intelligenz des Gesamtsystems ergibt sich also aus dem Zusammenspiel der einzelnen Agenten des Systems und nicht aus einer zentralen Datenstruktur heraus [13]. Der Aufbau dieser Architektur ist in Abbildung 4.2 ersichtlich und kann in folgende Teilbereiche gegliedert werden: Eingabebezogene Komponenten: Hierunter fallen Komponenten, welche Benutzereingaben in Empfang nehmen können. In der Abbildung sind diese als I-Komponenten gekennzeichnet. Für jeden Interaktionstyp bzw. für jede Modalität kommt hierbei eine darauf spezialisierte Komponente zum Einsatz. Jede Eingabe wird in eine geräteunabhängige Repräsentation gebracht, welche sich für die weitere Verarbeitung besser eignet. Die Weiterverarbeitung der Benutzereingaben erfolgt anschließend in den FKomponenten. Hier erfolgt eine Abstraktion und Überführung in semantische Beschreibungen, welche die Intentionen des Benutzers widerspiegeln. Abschließend werden diese Informationen in der PMI-Komponente (polymodal input module) fusioniert, um dadurch zu einer integrierten semantischen Repräsentation der Benutzereingaben zu gelangen. Um diese Vorgänge durchführen zu können, bedarf es natürlich Informationen bezüglich der Umgebung und des Kontextes, in dem sich das System befindet. Diese Informationen werden im Kontext Manager C verwaltet und können von den einzelnen Komponenten jederzeit in Anspruch genommen 24 4.2 EMBASSI Abb. 4.2: EMBASSI Architektur. Angelehnt an Elting et al. [13] werden. Die Fusion erfolgt hierbei nach der bereits beschriebenen 2. Variante (Abbildung 3.2 b). Erhält der PMI über eine beliebige F-Komponente Daten, welche einen bestimmten Zeitraum betreffen, so stellt er an die übrigen registrierten F-Komponenten Anfragen, ob auch diese für dieses Intervall relevante Daten besitzen. Erst wenn von allen Komponenten eine Antwort vorliegt, sei sie positiv oder negativ, wird der Fusionsvorgang durchgeführt. Auf diese Weise wird sichergestellt, dass alle relevanten Informationen für eine korrekte Fusionierung vorliegen [13]. Dialogmanager D: Diese zentrale Komponente hat die Aufgabe, aus den eingegangenen Informationen die jeweilige Intention der Benutzer zu ermitteln um dann, nach eventueller Rückfrage nach weiterem Input, diese anschließend in die Tat umzusetzen. Um diese Aufgaben zu erfüllen, arbeitet der Dialogmanager auf einem logik-basierten Ansatz und verwendet das eingegangene Wissen, um Schlussfolgerungen und notwendige weitere Handlungen unter Zuhilfenahme einer grundlegenden Wissenbasis und Regelbeschreibung zu inferieren. Anhand der Eingaben werden also Ziele (Goals) definiert, welche anschließend abgeleitet werden. Anzumerken ist hierbei im übrigen der Schritt von einer verteilten Anordnung in einer frühen Version von EMBASSI, umgesetzt durch mehrere D-Komponenten hin zu einer zentralen Implementierung in der finalen Version, bei der nur eine D-Komponente existiert [13, 18]. 25 4.2 EMBASSI Komponenten zur Umsetzung: Hierzu existieren in dieser Architektur so genannte Assistenten (A-Komponenten), welche auf ein jeweiliges Aufgabengebiet spezialisiert sind und vom Dialogmanager nach der Auswertung der Benutzerintention angesprochen werden, um die gewünschten Tätigkeiten auszuführen. Dabei werden Änderungen im System nicht direkt durch diese Assistenten durchgeführt, sondern sie bedienen sich zur Umsetzung wiederum spezieller X-Komponenten, die abstrakte Repräsentationen von realen Gerätefunktionen anbieten. Über diese X-Komponenten werden letztendlich die notwendigen Schaltfunktionen durchgeführt und eine Änderung in der realen Umgebung bewirkt [13]. Ausgabebezogene Komponenten: Als Komplement zur Eingabe existieren hier auch vergleichbare Komponenten mit ähnlichen, wenn auch mit entgegengesetzten Aufgaben. Auf der Ausgabenseite existiert eine PMOKomponente (polymodal output module), welche sich für die multimodale Fission verantwortlich zeigt. Hierzu benötigt sie laut 3.3 unter anderem Wissen über die Eigenschaften und Einschränkungen aller verfügbaren Ausgabemodalitäten, das Kommunikationsziel und die Benutzercharakteristiken. Informationen über Erstere müssen von den jeweiligen Geräten zur Verfügung gestellt werden, wenn sie sich am System anmelden. Eine Klassifizierung erfolgt mittels der Bernsen-Taxonomie (Vgl. [12]) in Kategorien wie linguistisch/nichtlinguistisch, statisch/dynamisch etc. Das Kommunikationsziel wird vom Dialogmanager anhand der Eingaben inferiert, zur Benutzeridentifizierung ist auch eine Gesichtserkennung angedacht, aber nicht genauer ausgeführt worden. Nachdem die zu übermittelnden Inhalte auf die zur Verfügung stehenden Modalitäten aufgeteilt wurden, werden die abstrakten UI-Beschreibungen in den R-Komponenten gerendert und anschließend über die O-Komponenten ausgegeben [12]. Das EMBASSI-Projekt ist ohne Zweifel sehr umfangreich und beinhaltet eine große Anzahl interessanter Konzepte, welche auch nachfolgende Forschungsarbeiten geprägt haben. Auch wurde am Ende des Projektes der verfügbare Sourcecode im Rahmen der OpenEmbassi-Initiative veröffentlicht und stellt sicher eine mögliche Grundlage für weiterführende Arbeiten in diesem Bereich dar. Es gibt natürlich auch einige Kritikpunkte, die gegen EMBASSI sprechen. So fehlen nach der Einstellung des Projektes 2003 entsprechende Ansprechpartner für auftretende Fragen, wobei auch die Dokumentation der implementierten Komponenten nicht immer in ausreichendem Maße verfügbar bzw. existent ist. Ein Großteil der Implementierung ist unter der GPL frei verfügbar, es gibt allerdings auch einige Programmteile, welche von Firmen- 26 4.3 AMIGO partnern entwickelt wurden und unter anderen Lizenzen laufen. Neben diesen kleineren Kritikpunkten existiert auch ein etwas größerer, der unter Anderem in [5] angesprochen wird. Hierbei geht es um die monolithische Struktur der EMBASSI-Architektur. Erweiterungen sind nur sehr schwer und aufwändig durchzuführen, insbesondere, da die zentrale Komponente, der Dialogmanager, auf spezialisierten Algorithmen und logischem Schließen basiert. 4.3 AMIGO Bei dem AMIGO-Projekt, welches im Jahr 2004 startete und bis Februar 2008 lief, handelte es sich um ein von der EU gefördertes Programm, in dessen Rahmen eine Middleware geplant und implementiert werden sollte, um heterogene Systeme auf einer interoperablen Plattform zusammenführen zu können. In diesem Projekt gibt es, wie auch bei EMBASSI, eine sehr große Beteiligung von Seiten der Industrie, was sich durch die Mitarbeit von 15 Unternehmen und Forschungseinrichtungen äußerte. Die Ziele waren ebenfalls in eine ähnliche Richtung definiert, deckten jedoch einen noch größeren Bereich ab. Eine besondere Anforderung betraf die Offenheit des Systems gegenüber Änderungen oder Erweiterungen. Diese sollten nicht nur einfach und rasch, sondern vor allem auch zur Laufzeit dynamisch durchführbar sein. Gerade diese Eigenschaft fehlte ja bei EMBASSI großteils, was Weiterentwicklungen auf dessen Basis sehr erschwerten. Aus diesem Grund folgt die AMIGO-Architektur nun einem serviceorientiertem Paradigma [44]. Hier setzt sich die Gesamtapplikation aus mehreren voneinander getrennten Einheiten zusammen, welche auch als Services bezeichnet werden. Ein solches Service bietet eine bestimmte Funktionalität an und verfügt über wohldefinierte Schnittstellen, mithilfe derer es mit der Außenwelt kommuniziert. Weiters existiert eine Service-Infrastruktur, welche das Suchen, Finden und Verwenden von Services ermöglicht. Es ist weiterhin möglich, Services über diverse Netzwerke zu übertragen und in einem anderen System verfügbar zu machen. Auf diese Weise lassen sich neue Funktionalitäten einfach in bestehende Systeme einfügen. Dies ist auch von einem wirtschaftlichen Standpunkt aus gesehen sehr interessant, da zum Beispiel Softwareerweiterungen von Kunden einfach und schnell gekauft, über das Internet bezogen und automatisch in das bestehende System integriert werden können [24]. Als Grundlage findet bei AMIGO konkret das OSGI-Framework als serviceorientierte Plattform Verwendung, welches in einem späteren Kapitel dieser Arbeit auch näher beleuchtet wird [43]. Wie bereits erwähnt, ist das AMIGO-Projekt sehr umfassend und um- 27 4.3 AMIGO 28 fangreich, was sich ebenfalls in der Architektur in Abbildung 4.3 widerspiegelt. Was im Kontext dieser Arbeit von Interesse ist, sind die intelligenten User-Services und hierbei insbesondere das User-Interface-Service, weswegen diese in der Folge näher erläutert werden. Abb. 4.3: AMIGO-Architektur (vgl. [43]) Kontext Management Service: Dieses Service ist vergleichbar mit dem Kontextmanager im EMBASSI-Projekt. Hier werden Informationen hinterlegt, welche den aktuellen Zustand des intelligenten Zuhauses widerspiegeln. Zu diesem Zweck werden physische Sensoren, laufende Anwendungen, Internetapplikationen und viele weitere Informationsquellen herangezogen. Die übrigen laufenden Services können über die definierte Schnittstelle zum Kontext Management Service auf diese Informationen zugreifen und ihr Verhalten dementsprechend anpassen [43]. Sicherheit/Privatsphäre: Ein wichtiger Aspekt im Smart-Home-Bereich ist natürlich auch die Sicherheit. Dieses Service kümmert sich um Benutzerauthentifizierung bzw. -autorisierung genauso wie um Geräte- und Benutzerregistrierungen. Darüber hinaus befasst es sich auch mit der Wahrung der Privatsphäre. Da mehrere Personen auf das System zugreifen können, muss dafür gesorgt sein, dass sämtliche persönliche Daten einer Person von den übrigen nicht eingesehen werden können [29]. Ereignisse/Benachrichtigung: Dieser Service ist sehr eng mit dem Kontext Management verküpft und stellt grundlegende Funktionalitäten zur Verfügung, um Änderungen im aktuellen Smart Home Kontext zu registrieren. Anwendungen, welche sich für verschiedene Ereignisse interessieren, können sich hier registrieren und werden bei einer Änderung benachrichtigt [43]. 4.3 AMIGO 29 Benutzerprofile: Damit Applikationen optimal arbeiten und Ein- bzw. Ausgaben auf bestmöglichem Wege funktionieren, müssen diese auf den jeweiligen Benutzer abgestimmt werden. Dies kann durch in Anspruchname dieses Services geschehen. Zu diesem Zweck werden hier Benutzermodelle und Profile erstellt und auf dem neuesten Stand gehalten, welche im wesentlichen eine Sammlung von individuellen Benutzerpräferenzen darstellen. Benutzer können dem System zunächst über eine grafische Schnittstelle ihre Vorlieben mitteilen, welche im ersten Schritt statisch hinterlegt werden. Diese Informationen werden im Laufe der Zeit immer wieder mit dem impliziten Feedback des Benutzers verglichen und gegebenenfalls angepasst bzw. erweitert. Bei einer Anfrage einer Applikation findet über diese Daten eine Inferenz statt, an derem Ende die Nutzerpräferenzen retourniert werden, welche für die gegebene Situation relevant sind. Des Weiteren gibt es auch noch die Möglichkeit, die Profile mehrerer Benutzer zu einem Gesamtprofil zu vereinen, was notwendig wird, wenn mehrere Personen gleichzeitig in eine Handlung involviert sein sollten (sich also beispielsweise bei einer Ausgabe über den Fernseher im selben Raum mit diesem befinden) [1]. Benutzungsschnittstellen: Dieser Bereich stellt nun den für die vorliegende Arbeit interessantesten dar und befasst sich mit der multimodalen Interaktion zwischen den Benutzern und der Smart Home Umgebung. Abbildung 4.4 zeigt die diesem Service zugrundeliegende Architektur. Abb. 4.4: AMIGO UIS Architektur (vgl. [29]) 4.3 AMIGO Dieses Service stellt nun also eine generische Plattform dar, welche unter Zuhilfenahme der anderen eben erläuterten Services eine homogene multimodale Schnittstelle zur intelligenten Umgebung anbietet. Die Interaktion mit dem System kann über viele verschiedene Geräte erfolgen, welche jeweils eine oder auch mehrere Modalitäten unterstützen. Ein PDA kann so beispielsweise als grafische Benutzungsschnittstelle genutzt werden, aber auch die Eingabe von Gesten mittels Eingabestift ermöglichen. Für die unterschiedlichen Ein- und Ausgabemodalitäten zeichnen nun auch unterschiedliche Services innerhalb des UIS verantwortlich. Das GUI-Service generiert anhand anwendungsspezifischer Beschreibungen konkrete Ausprägungen der geforderten grafischen Schnittstellen und deren Funktionalitäten. Das Sprachservice kümmert sich um die Ausgaben über Lautsprecher bzw. Eingaben über Mikrofone, wobei diese natürlich auch für weiterführende Aufgaben wie Benutzerlokalisierung und -verfolgung herangezogen werden können. Zuletzt existiert noch das Gestenservice, welches sich um die Akquisition von 2D- und 3D-Gesteneingaben kümmert. Hierbei kann es sich ebenso um Stylus-Eingaben über einen PDA handeln, wie auch um die Daten von Beschleunigungssensoren innerhalb von tragbaren Geräten. In der Architektur selbst sind diese drei Services konkret vorhanden. Durch die serviceorientierte Strukturierung ist es aber ohne weiteres möglich weitere, vielleicht spezialisiertere, Services einzuführen. Eine Ebene darüber kümmert sich ein dediziertes Service um die Zusammenführung der Eingaben der unterschiedlichen Modalitäten, also um die multimodale Fusion. Der nun vorhandene zusammengeführte Input wird danach dem UI-Manager übergeben, welcher diesen einer entsprechenden Applikation zuordnet und übergibt. Des Weiteren liegt es in seinem Verantwortungsbereich, für die Synchronisation des aktuell stattfindenden Dialoges zu sorgen. Tätigt der Anwender gerade eine Eingabe über Modalität A, so soll es möglich sein, jederzeit innerhalb des Dialoges auf Modalität B zu wechseln, was sowohl bei supplementärer als auch bei komplementärer Interaktion eine zentrale Rolle spielt. Ein auf der selben Ebene angesiedelter Service zur impliziten Sprachinteraktion kümmert sich um die Verarbeitung von indirekten Benutzereingaben. Eingaben müssen nicht immer aktiv erfolgen, sondern können auch aus dem Anwenderverhalten heraus interpretiert werden. Solche Informationen werden zunächst erfasst und dem Kontext hinzugefügt, bis sie in ihrer Gesamtheit als konkrete Eingabe interpretiert werden können. Hierbei ist die Bezeichnung des Services eventuell verwirrend, denn neben sprachlichen Informationen werden auch sämtliche weiteren unbewussten Eingaben erfasst und verarbeitet. 30 4.4 MONA Zuletzt sind noch das Multigeräte- und Modalitätsberater-Service zu nennen, welche sich darum kümmern, zu einer bestimmten Aufgabe bzw. zu einem konkreten Szenario passende Geräte und Modalitäten zu finden und auszuwählen. Eine Anwendung stellt, wenn ein Kommunikationswunsch vorliegt, einen so genannten interaction request“ an das UIS, ” welcher hier nach Informationen durchsucht wird, die bei einer Modalitätsauswahl hilfreich sein könnten. So könnte bei einer Kommunikation in privatem Rahmen ein PDA bzw. Handy als Ausgabemedium gewählt werden. Öffentliche Kommunikation könnte aber im Gegensatz dazu über den Fernseher im Wohnzimmer durchgeführt werden [29]. Die im AMIGO-Projekt erstellte Architektur stellt in der Tat eine interessante Möglichkeit dar, multimodale Interaktion möglich zu machen. Auch der Fokus auf den Smart Home Bereich trifft den Kern der vorliegenden Aufgabenstellung sehr gut und die hier erarbeiteten Konzepte sollten bei einer Konzeption eines multimodalen Frameworks nicht außer Acht gelassen werden. Eine direkte Verwertung dieser Komponenten ist allerdings leider nicht möglich. Obwohl im Rahmen der Implementierung des AMIGO-Projektes erhebliche Mengen an Sourcecode generiert und auch frei zugänglich gemacht wurden, ist gerade im Bereich der UIS nichts Greifbares vorhanden. Die auf der AMIGO-Webseite hinterlegten Deliverables legen zwar die Existenz einer Implementierung der UIS nahe, welche aber im Repository nicht aufzufinden ist. Auch bei einer direkten Nachfrage bei dem Betreiber des Repositories konnte diesbezüglich nicht weitergeholfen werden. In diesem Zusammenhang sei auch hier wieder das selbe Problem erwähnt, welches auch schon bei EMBASSI zutage tritt: Mit dem Ende des Projektes endete auch der offizielle Support und es existieren keine spezifischen Ansprechpartner mehr. 4.4 MONA Das MONA-Projekt wurde im Jahr 2003 gestartet und bis Ende 2004 aktiv betrieben. Auch hier bestanden die Projektteilnehmer aus unterschiedlichen Firmen wie Kapsch, Mobilkom Austria oder Siemens. Wie bei den bereits beschriebenen Projekten geht es um die multimodale Interaktion zwischen Anwendern und Computersystemen, allerdings geht der Fokus etwas stärker in eine andere Richtung. Auch wenn man sich in diesem Bereich natürlich mit der Einbindung und Umsetzung multimodaler Interaktion beschäftigen muss, geht es im MONA-Projekt vor allem auch um die Abstrahierung der verschiedenen Benutzungsschnittstellen. Die Entwicklung multimodaler Applikationen soll nicht durch die getrennte Spezifizierung der betreffenden Schnittstellen charakterisiert sein, sondern es sollte vielmehr eine einzelne, abstraktere 31 4.4 MONA 32 Schnittstellendefinition Verwendung finden [4]. Eine Applikation im MONA-Projekt stellt anstelle von getrennten UIBeschreibungen, wie XHTML für grafische Interfaces oder VXML für sprachliche Modalitäten, eine einzige abstrakte Spezifikation zur Verfügung. Ein spezieller Präsentationsserver transformiert diese allgemeine Beschreibung anschließend in Sprachen, welche für die verschiedenen Modalitäten verständlich sind. Da dieser Vorgang automatisch ablaufen kann, wird einem Anwendungsentwickler hier ein großer Arbeitsaufwand erspart. Weiters ist das System auf diese Weise einfach durch neue Modalitäten erweiterbar, da hierzu lediglich der Präsentationsserver um die Fähigkeit erweitert werden muss, auch für diese Interaktionsform UI-Beschreibungen aus der abstrakten Definition heraus rendern zu können. Eine Übersicht über die MONA-Architektur ist in Abbildung 4.5 zu sehen [4]. Abb. 4.5: MONA-Architektur [4] Im Rahmen des MONA-Projektes wurden allerdings nur die Zielsprachen HTML, XML und X+V unterstützt, was die Anwendbarkeit für generischere multimodale Applikationen zunächst einschränkt, wobei, wie gesagt, eine Erweiterung auf andere Zielsprachen einfach umsetzbar sein sollte. Clientseitig laufen die Anwendungen von MONA browserbasiert, da dies eine Reihe von Vorteilen mit sich bringt. So erhält man dadurch sehr einfach eine gute Geräteunabhängigkeit, da ein Großteil der am Markt verfügbaren Geräte bereits mit hochwertigen Webbrowsern ausgerüstet ist und man sich nicht mit gerätespezifischen Eigenschaften wie Betriebssystemen oder Unterstützung für diverse Programmiersprachen befassen muss. Weiters befindet sich die Applikationslogik zentralisiert auf dem Server, was eine Weiterentwicklung 4.4 MONA und Wartung stark vereinfacht [4]. Ein Nachteil dieser browserbasierten Umsetzung findet sich in der Einschränkung wieder, dass eine Kommunikation nur von der Clientseite angestoßen werden kann. Es ist also nicht möglich, neue Informationen ohne weiteres zu den Clients zu senden. Bei MONA umging man dieses Problem mit einem Browser-Plugin, welches diese fehlende Funktionalität zur Verfügung stellte. Natürlich verliert man dadurch eine gewisse Flexibilität, da dieses Plugin in jedem einzelnen Endgerät installiert werden muss [66]. Zur Formulierung der abstrakten UI-Beschreibungen fand eine angepasste Form von UIML Verwendung, worauf in einem nachfolgenden Teil dieser Arbeit noch genauer eingegangen wird. Bei der Umsetzung diverser Testszenarien traten gewisse Probleme an die Oberfläche, welche vor allem die Anwendungsentwicklung selbst betrafen. Durch die Verwendung einer abstrakten UI-Beschreibung und somit auch abstrakter und nicht konkret formulierter und vorstellbarer Interface Widgets war ein konventioneller Design-Ansatz schwierig. Für Entwickler selbst ist es einfacher, anhand von konkreten Skizzen oder Storyboards zu planen und zu kommunizieren, als auf dieser neuen abstrakten Ebene. Hinzu kommt das Problem, dass sich das Aussehen der endgültigen gerenderten Benutzungsschnittstellen nicht genau voraussagen lässt, was ja im Prinzip die Intention hinter dieser Abstrahierung ist, die Anwendungsentwickler aber genau dadurch auch stark verunsichert [4]. Um diese Problematik zu entschärfen, wurde ein spezieller Editor auf Java-Basis entworfen und implementiert, welcher das UI-Design vereinfachen sollte. Mittels dieses Werkzeugs ist es möglich, Änderungen in der abstrakten Beschreibung sehr einfach und rasch in den daraus generierten speziellen Beschreibungssprachen mit zu verfolgen und dadurch quasi eine EchtzeitVorschau zur Verfügung zu haben [32]. Abschließend kann zum MONA-Projekt gesagt werden, dass im Kontrast zu den bisher vorgestellten Projekten der Fokus eher auf die UI-Generierung bei multimodalen Applikationen gelegt wurde und sich dieses Projekt der Multimodalität auf einer anderen Ebene annähert. Leider existieren keine frei zugänglichen Codeteile, was eine direkte Verwendung und Adaptierung ausschließt, wobei die hier erarbeiteten Konzepte generischer UI-Beschreibungen durchaus interessant sind und in weitern Kapiteln noch aufgearbeitet werden. 33 4.5 SerCHo-MASP 4.5 SerCHo-MASP Das vom Bundesministerium für Wirtschaft und Technologie in Deutschland geförderte Projekt SerCHo steht für Service Centric Home und befasst sich, wie die bereits vorgestellten Projekte, mit der Entwicklung eines Lösungsansatzes im Bereich intelligenter Umgebungen. Es geht hier wiederum um die Integration aller im Haushalt befindlichen Geräte in ein Gesamtsystem, mit welchem der Anwender mittels intuitiver Schnittstellen einheitlich auf seine Umgebung Einfluss nehmen und verfügbare Services nutzen kann [28]. Im Rahmen dieses Projektes wurde unter anderem die so genannte MultiAccess Service Plattform (MASP) entwickelt. Das Ziel hierbei war es, eine multimodale Interaktion zu ermöglichen, wobei die Vorgehensweise bei der Konzeption und Umsetzung im Grunde an das MONA-Projekt erinnert, aber noch viel weitgreifender ausgeführt wird. Auch hier wird davon ausgegangen, dass unterschiedliche Abstraktionsstufen existieren, wobei Elemente einer Stufe auf eine andere abgebildet werden können. Anders als bei MONA geht man hier allerdings nicht nur von zwei Ebenen aus und beschränkt sich auch nicht nur auf die UI-Beschreibung, sondern bildet die gesamte Anwendung, ausgehend vom Dialog- und Aufgabenmodell bis hin zum finalen UI einer entsprechenden Modalität, als unterschiedlich abstrakte Modelle ab, welche untereinander über Mappings in Beziehung stehen [30]. Abb. 4.6: MASP-Modellstruktur. Angelehnt an Blumendorf et al. [8] Die Struktur der Multi Access Service Plattform ist in Abbildung 4.6 ersichtlich. Wie man sehen kann, besteht sie aus einer Reihe unterschiedlicher Modelle und Mappings, die diese Modelle untereinander verbinden. Neben der bekannten und häufig gebrauchten Funktion der Überführung eines Modelles in ein anderes, können Mappings darüberhinaus auch zur Synchronisierung verwendet werden, wobei der Fokus im Rahmen dieses Projektes auch genau darauf liegt. Durch die Verbindungen, die diese Mappings darstel- 34 4.5 SerCHo-MASP len, können Änderungen in einem Modell auf die damit verbundenen Modelle übertragen und das Gesamtsystem somit synchron gehalten werden. Darüber hinaus können Änderungen am und im System dadurch auch zur Laufzeit durchgeführt werden, was eine Entwicklung sicherlich vereinfacht [8]. Das Aufgabenmodell beinhaltet hierbei die Anwendungsfunktionalität und verwendet dazu eine aufgabenbezogene Herangehensweise. Im Fokus stehen also zu erledigende Aufgaben und ihre kausalen Abhängigkeiten untereinender. Diese werden in Form von Concurrent Task Trees erfasst, welche die Aufgaben in einem gemeinsamen Baum darstellen, wobei jeder Knoten, also jede Aufgabe wiederum in ihre Teilaufgaben unterteilt werden kann [11]. Ein Beispiel ist in Abbildung 4.7 zu sehen. Abb. 4.7: Concurrent Task Tree. Angelehnt an De Boeck et al. [11] Das Domänenmodell geht einen Schritt weiter und definiert die notwendigen Objekte, welche in sich den internen Status der Applikation widerspiegeln und bei der Abarbeitung der Aufgaben manipuliert werden. Dazu werden sowohl die Strukturen der notwendigen Objekte definiert, als auch die konkreten Instanzen zur Laufzeit verwaltet. Eine Statusänderung des Systems, und somit eine Änderung dieser Instanzen, kann nun auf zwei verschiedenen Wegen geschehen. Auf der einen Seite kann das Servicemodell Änderungen herbeiführen. Dieses Modell dient als Schnittstelle zur Systemseite und kann Aktionen im Backend auslösen bzw. dortige Vorgänge erkennen und diese Informationen in der MASP verfügbar machen [8]. Auf der anderen Seite stellt das Interaktionsmodell die Verbindung nach 35 4.5 SerCHo-MASP außen hin zum Anwender dar, welcher auf diesem Wege ebenfalls Einfluss auf den Systemstatus nehmen kann. Zu diesem Zweck werden abstrakte Benutzungsschnittstellen definiert, welche modalitätsunabhängig den Inhalt und Aufbau der notwendigen UI´s beschreiben. Ebenso wie im MONAProjekt kommen universelle UI-Beschreibungssprachen zum Einsatz. Prinzipiell können hier aufgrund der Offenheit der Architektur verschiedenste Modellierungssprachen verwendet werden. In der konkreten Umsetzung findet allerdings nicht wie bei MONA UIML, sondern UsiXML, eine andere Modellierungssprache, Verwendung, welche aber ebenso im nachfolgenden Kapitel erläutert wird. Aus diesen abstrakten Beschreibungen werden in der Folge modalitätsspezifische Schnittstellen generiert und dem Anwender präsentiert [8]. Als fünfte Komponente dieser Struktur existiert weiters noch das Kontextmodell, welches den aktuellen Status der Umgebung beinhaltet. Hier werden also Sensorinformationen gesammelt, welche beispielsweise für die UI-Generierung herangezogen werden können. Durch die Verbindung der Modelle über definierte Mappings findet nun die Synchronisierung bzw. Kommunikation statt [8]. Innerhalb des Aufgabenmodells werden aus der Gesamtmenge aller Aufgaben diejenigen selektiert, welche für den aktuellen Zustand der Anwendung relevant sind und als so genanntes enabled task set“ zusam” mengefasst [11]. Ein Zustandsübergang kann in der Folge Vorgänge innerhalb des Servicemodells und damit im Backend-Bereich triggern, aber natürlich auch Auswirkungen auf das Interaktionsmodell und damit auf die angebundenen Benutzungsschnittstellen haben. Für all diese Vorgänge werden natürlich auch das Domänenmodell und das Kontextmodell herangezogen, da der Systemstatus und der aktuelle Kontext natürlich eine große Rolle spielen. Durch die Änderung in einem Modell werden also alle weiteren Modelle beeinflusst [8]. Zusammenfassend kann gesagt werden, dass bei diesem Projekt dieselben Ziele verfolgt werden wie bei den bisher vorgestellten, wobei durch den modellbasierten Zugang ein gänzlich anderer Weg eingeschlagen wird. Die grundsätzlichen Komponenten, wie zum Beispiel die Dialogführung im Aufgabenmodell, die Kontextakquirierung im Kontextmodell oder die Ansteuerung von Smart Home Komponenten mittels des Servicemodells sind auch in diesem Projekt zu finden. Die modellbasierte Umsetzung ist allerdings etwas Neues und sicherlich ein interessanter und vielversprechender Ansatz. Gerade im Bereich der Benutzerinteraktion, also im Rahmen des Interaktionsmodells, gibt es allerdings noch größeren Forschungsbedarf [8], da hier unter Anderem dieselben Problembereiche wie in MONA zu sehen sind, nämlich 36 4.6 W3C MMI die Unvorhersehbarkeit der generierten Schnittstellen aus den abstrakten Beschreibungen heraus und auch die Vorgänge der multimodallen Fusion und Fission betreffend. Gegenüber den bisherigen Projekten ist allerdings äußerst positiv zu bemerken, dass sich dieses Projekt gegenwärtig noch in Entwicklung befindet und aktiv vorangetrieben wird. 4.6 W3C MMI Es gibt seit einiger Zeit auch vom World Wide Web Consortium ausgehende Bestrebungen Multimodalität, vor allem im Web-Bereich, zu definieren und Lösungs- sowie Umsetzungsmöglichkeiten aufzuzeigen. Zu diesem Zweck wurde 2002 im Rahmen des W3C die Multimodal Interaction Working Group gegründet, welche zunächst Use Cases und Anforderungen für und an multimodale Applikationen definieren sollte. Im nächsten Schritt wurde das W3C Multimodal Interaction (MMI) Framework entwickelt und veröffentlicht. Hierbei handelt es sich nicht um ein konkretes, verwendbares Framework, sondern um eine Empfehlung, wie diesbezügliche Implementierungen aussehen sollten. Es handelt sich weiters um einen Entwurf, der keinen Anspruch auf Vollständigkeit erhebt und sich bis heute in einer stetigen Weiterentwicklung begriffen sieht [50]. Die Veröffentlichung der aktuellen und fünften Version dieses Entwurfs fand am 16. Oktober 2008 statt [58]. Ausdrücklich zu beachten und nochmals erwähnt sei hierbei der Typ dieses Dokumentes als Entwurf, der Artikel kann sich also jederzeit ändern oder durch eine neuere Version ersetzt werden. Der Fokus des MMI-Frameworks liegt wie gesagt darin, ein generelles und flexibles Framework zu schaffen, in welchem modalitätsspezifische Komponenten miteinander interagieren können. Dabei spielt es keine Rolle, ob diese Komponenten von verschiedenen Herstellern produziert werden oder inwiefern sie von sich aus schon in der Lage sind, mit anderen Geräten zu kommunizieren. Es werden nur sehr wenige Einschränkungen und Regeln definiert, denen Komponenten genügen müssen, um innerhalb des Frameworks arbeiten zu können. Die Ziele hinter dem MMI-Framework können wie folgt formuliert werden: Kapselung: Die Architektur soll keine Annahmen über den internen Aufbau der angschlossenen Komponenten treffen. Verteiltheit: Die Architektur soll auch verteilte Implementierungen ermöglichen. Erweiterbarkeit: Die Integration neuer Modalitäten und Komponenten soll 37 4.6 W3C MMI einfach durchführbar sein. Rekursivität: Es soll möglich sein, eine Instanz dieses Frameworks in ein anderes Framework einzubetten, um dort als einzelne Komponente zu erscheinen. Modularität: Die Architektur soll Daten-, Kontroll- und Präsentationsschicht getrennt halten. Im Rahmen des MMI-Frameworks bilden XML-basierte Dokumente unterschiedlicher XML-Namensräume den Kern einer jeden Applikation. Je nach Modalität kommen unterschiedliche Sprachen zum Einsatz, wobei eine Sprache durchaus für mehrere Modalitäten anwendbar sein und eine Modalität auch mittels mehrer Sprachen beschrieben werden kann. Es existiert ein ganz bestimmtes Wurzeldokument, welches im Zentrum des Frameworks steht und die generellen Abläufe und Funktionen beschreibt. Innerhalb der diversen Komponenten werden diese Beschreibungen zur Laufzeit abgearbeitet und bestimmen ihr Verhalten. Ein wesentlicher Teil des Frameworks beschreibt und regelt die Kommunikation zwischen den Komponenten. Diese sind lose gekoppelt und kommunizieren ausschießlich mittels wohldefinierter asynchroner Nachrichten, so genannter MMI-Lifecycle-Events, untereinander, auf die nachfolgend noch näher eingegangen wird. Abbildung 4.8 zeigt die MMI-Architektur in einem groben Überblick [58]. Wie in der Abbildung zu sehen ist, besteht die Architektur aus fünf Teilbereichen: Abb. 4.8: MMI-Architektur. Angelehnt an den W3C Working Draft [58] Laufzeitumgebung: Sie stellt die grundlegende Infrastruktur zur Verfügung, um die Kommunikation zwischen den Komponenten zu ermöglichen. Sie initialisiert und startet zu Beginn lokale Komponenten und baut Verbin- 38 4.6 W3C MMI dungen zu entfernten Komponenten auf. Vereinfacht gesagt, bildet sie die grundlegende Struktur, in der die übrigen Komponenten agieren können. Interaktionsmanager: Er kümmert sich um die Abarbeitung aller Events, welche zur Laufzeit generiert und versendet werden. Dazu bedient er sich der Beschreibungen im zentralen Wurzeldokument, welche ihm diesbezüglich Instruktionen über die Vorgehensweise liefern. Auf welcher Basis, also in welchem Format dieses Dokument verfasst ist, ist nicht eingeschränkt und kann beliebig gewählt werden. Vorgeschlagen wird jedoch die Verwendung von SCXML, welche nachfolgend noch genauer erläutert wird. Der Interaktionsmanager ist weiters verantwortlich für die Synchronisierung der Daten und des Informationsflusses über mehrere Modalitäten hinweg, für die Haltung applikationsspezifischer Informationen und ebenso für die Kommunikation mit dem Backend oder externen Komponenten. Kontextkomponente: Die delivery context component stellt einen Zugangspunkt zum aktuell vorhandenen Kontext dar. Über diese Komponente können Abfragen getätigt werden, um Informationen beispielsweise über Nutzerpräferenzen oder Gerätekonfigurationen zu erlangen. Natürlich ist es außerdem auch möglich, Änderungen im Kontext durchzuführen. Datenkomponente: Diese dem Runtime Framework untergeordnete Komponente kümmert sich um die Haltung der applikationsspezifischen Daten und um die Kommunikation mit dem Backend. Während es für den Interaktionsmanager einfach möglich sein soll, auf diese Komponente zuzugreifen, sollen andere Komponenten, insbesondere angeschlossene Modalitäten, nicht dazu in der Lage sein. Dies aus dem einfachen Grund, dass eine Konsistenz innerhalb des Frameworks nur dann gegeben ist, wenn der Interaktionsmanager in den Informationsfluss miteinbezogen wird und er sich damit auch um die Synchronisierung kümmern kann. Welche Sprache zur Kommunikation mit dem Backend Verwendung finden soll, ist im Entwurf des W3C nicht genauer spezifiziert und bleibt den jeweiligen Implementierungen überlassen. Modalitätskomponenten: Diese dienen dazu, unterschiedliche Ein- und Ausgabemodalitäten auf einem oder mehreren Geräten zu steuern. Sämtliche Interaktion mit dem Endanwender fällt also in diesen Bereich. Da das MMI Framework diese Komponenten als so genannte Black Boxes“ betrachtet, ” spielt deren innere Umsetzung und Funktionalität absolut keine Rolle. Einzig und allein die Art der Kommunikation nach außen, hin zum Runtime Framework, ist definiert und muss eingehalten werden. Das eben erwähnte Interface zwischen Modalitäten und dem Runtime Framework stellt die zentrale und wichtigste Schnittstelle innerhalb des Frameworks dar. Wie bereits erwähnt, erfolgt die Kommunikation asynchron, 39 4.6 W3C MMI mittels definierter Events. Die Komponenten müssen also dementsprechend in der Lage sein, solche Events zu empfangen, zu senden und zu verarbeiten. Wichtig dabei ist weiters, dass die sendenden Komponenten, sowohl auf der Anwender- als auch auf der Systemseite, keine Ziele für die von ihnen versendeten Events vorgeben. Darum kümmert sich das Runtime Framework und hier insbesondere der Interaktionsmanager. Der genaue Vorgang der Übertragung von Events ist im Entwurf auch nicht weiter geregelt, abgesehen von zwei Einschränkungen. Alle Events müssen zuverlässig übertragen werden bzw. muss im Fehlerfall eine Nachricht an den Absender zurückgehen und die Events müssen in der Reihenfolge beim Empfänger ankommen, in der sie vom Sender abgeschickt wurden. Dies bezieht sich wohlgemerkt nur auf einen konkreten Absender. Generieren zwei unterschiedliche Quellen ein Event, ist die Reihenfolge des Eintreffens beim Ziel nicht vordefiniert und zufällig [58]. Der Entwurf des W3C beinhaltet in der aktuellen Version 18 unterschiedlichen Eventtypen. Diese dienen großteils zur Koordinierung der Multimodalität und aller betroffenen Komponenten, nur ein kleiner Teil befasst sich mit der Übermittlung anwendungsspezifischer Informationen. Die Events selber sind wiederum nichts anderes als XML-Dokumente in einem vordefinierten Schema. In der Folge werden die wichtigsten Eventtypen herausgefasst und näher erläutert. Eine umfassende Auflistung aller Life-Cycle-Events ist im Anhang zu finden. NewContextRequest: Dieses Event wird von einer Modalitätskomponente an das Runtime Framework gesendet. Damit fordert diese einen neuen Kontext an, in dem sie agieren kann. Der Begriff Kontext wird in diesem Rahmen allerdings anders gehandhabt, als es in den bisher besprochenen Projekten der Fall war. Ein Kontext im MMI-Framework bezeichnet den Zeitraum, in dem eine einzelne andauernde Interaktion des Systems mit dem Benutzer stattfindet. Dies kann im einfachsten Fall eine kurze unimodale Kommunikation über eine grafische Schnittstelle sein. Ein Kontext kann sich allerdings auch über längere Zeit und über mehrere Modalitäten hinweg erstrecken, wenn während der Verwendung der grafischen Schnittstelle beispielsweise auch eine Sprachsteuerung mit ins Spiel kommt. Es spielt dabei keine Rolle, ob Modalitäten der Interaktion beitreten oder diese verlassen, solange es sich im Prinzip um einen gemeinsamen Vorgang handelt. Gerade im Bereich der Webanwendungen könnte man den hier verwendeten Kontextbegriff auch recht treffend als Session bezeichnen. Der Aufbau eines Life-Cycle-Events sei beispielgebend für alle übrigen anhand des NewContextRequest-Events in Abbildung 4.9 dargestellt. Prinzipiell beinhaltet dieses Event lediglich eine Quellenangabe im source 40 4.6 W3C MMI Attribut, eine laufende Nummerierung innerhalb des requestID Attributes (beide in Zeile zwei ersichtlich) und verschiedene Medientypen (Zeilen drei und vier), welche von der aussendenden Komponente unterstützt und verstanden werden. Weiters existiert noch ein allgemeiner Datenbereich (Zeile fünf bis neun), der in sämtlichen Eventtypen vorhanden ist und implementierungsspezifische Daten enthalten kann, welche in diesem Entwurf nicht näher spezifiziert werden. Abb. 4.9: NewContextRequest MMI Life-Cycle-Event [58] NewContextResponse: Zu beinahe allen Eventtypen existieren zugehörige Bestätigungsevents, die an den Aussender retourniert werden. Zum Einen wird dadurch eine erfolgreiche Übertragung sichergestellt, zum Anderen werden zusätzliche Informationen zurückgesendet. War die Generierung eines neuen Kontexts erfolgreich, so werden in diesem Event sowohl eine Erfolgsmeldung als auch eine Id des neuen Kontexts zurückgesendet. War die Kontexterstellung nicht erfolgreich, so enthält das Event eine Statusmeldung und auch eine genaue Problembeschreibung. Weiters enthalten sind auch hier wieder die unterstützten Medientypen, die nun allerdings auch hinsichtlich des Frameworks eingeschränkt wurden und nur noch diejenigen Typen beinhalten, die von beiden Partnern unterstützt werden. StartRequest: Dieses Event wird vom Runtime Framework zu den Modalitäten gesendet und beinhaltet die Aufforderung, eine bestimmte Interaktion zu beginnen. Diesbezügliche Informationen sind entweder in XMLDokumentform selbst in dem Event vorhanden oder es existiert eine URL, welche auf das entsprechende Dokument verweist. Im Anschluss daran muss die empfangende Komponente ein StartResponse-Event zurücksenden. ExtensionNotification: Dieses Event hebt sich von allen anderen ab und besitzt weiters auch als einziges kein entsprechendes Bestätigungsevent. Es dient dazu, applikationsspezifische Informationen zu kapseln und zu übertragen. Da dieser Informationsfluss in beide Richtungen erfolgen kann, sind sowohl das Runtime Framework als auch die Modalitätskomponenten in 41 4.6 W3C MMI der Lage es zu generieren, zu senden und zu empfangen. Die anwendungsbezogenen Daten werden hierbei innerhalb des Datensegments des Events platziert. In diesem Entwurf wird weiters, wenn auch nur kurz, auf Sicherheitsaspekte eingegangen. Es existiert auch hier keinerlei Einschränkung in Bezug auf das zu verwendende Sicherheitssystem, es werden jedoch jene Eigenschaften beschrieben, welche absolut notwendig sind, um ein Mindestmaß an Sicherheit zu gewährleisten. Diese sind neben Authentifizierung, Autorisierung und Integrität auch die Gewährleistung der privaten Natur der übertragenen Daten und die Sicherstellung, dass eine Duplizierung der Daten nicht möglich ist. Der Sender soll dementsprechend nicht in der Lage sein, eine einmalig abgeschickte Nachricht nochmals exakt gleich zu generieren und auch der Empfänger soll eine empfangene Nachricht nicht vervielfältigen oder weiterleiten können [58]. Zusammenfassend kann zu dem Entwurf des W3C folgendes gesagt werden: Im Kontrast zu den zuvor beschriebenen Projekten veranschaulicht dieser das Vorgehen bei einer möglichen Implementierung eines multimodalen Frameworks um einiges plastischer. Dies hat natürlich den Grund, dass bei dem W3C-Framework genau diese Beschreibung der Vorgehensweise im Fokus liegt und auch keine eigene Implementierung angestrebt wird. Die anderen erwähnten Forschungsgruppen hatten demgegenüber ja einen funktionstüchtigen Prototyp im Auge. Neben den zitierten Veröffentlichungen existieren im Bereich des W3C MMI Frameworks noch eine Reihe weiterer Dokumente, welche sich mit konkreten Teilbereichen des Frameworks und dortigen Umsetzungsmöglichkeiten befassen. Auf diese wird im weiteren Verlauf der Arbeit auch noch teilweise Bezug genommen. Ein positiver Punkt betrifft hier wieder den Entwicklungsstatus. Die MMI-Arbeitsgruppe ist schon seit geraumer Zeit im multimodalen Bereich aktiv und das Framework insofern auf einem sehr fundierten und aktuellen Stand. Durch die tatkräftige Weiterentwicklung kann man auch davon ausgehen, dass sich die Anwendbarkeit und der Nutzen des Frameworks in der Zukunft gewiss noch steigern wird. Genau hier kann man allerdings auch einen Nachteil erkennen. Gründet man ein Projekt auf Basis dieses Entwurfes, so kann es möglicherweise dazu kommen, dass sich der Entwurf in der Zukunft in eine Richtung entwickelt, der man innerhalb des laufenden Projektes nicht so einfach folgen kann. Aufgrund der Tatsache, dass es sich beim Urheber dieses Frameworks um das World Wide Web Consortium handelt, liegt der Fokus natürlich klarerweise im Bereich der Webanwendungen. Als physische Ausprägung von Mo- 42 4.7 Bewertung dalitätskomponenten werden aus diesem Grund Clientsysteme beschrieben, auf denen MMI-Applikationen in einem Webbrowser laufen. Gewissermaßen könnte man diesen Entwurf also auch als eine Weiterentwicklung des X+VAnsatzes verstehen, bei dem die enge Kopplung der Inhalte aufgelöst und eine eher serverseitige Abhandlung der Multimodalität gegeben ist. Aufgrund der abstrakten und allgemein anwendbaren Konzepte spricht hier aber nichts gegen eine Ausdehnung des Anwendungsbereiches über Webanwendungen hinaus. Rich-Client-Applikationen können aufgrund des Blackbox-Konzeptes der Modalitäten ebenfalls einfach in das Framework integriert werden, sofern sie die entsprechende Eventschnittstelle unterstützen. Als Übertragungsprotokoll kann neben HTTP auch auf andere Technologien zurückgegriffen werden etc. 4.7 Bewertung Betrachtet man sich nun sämtliche vorgestellten Frameworks und Projekte, so kann man diese in ihrer Gesamtheit wie folgt bewerten: Ein Großteil der Projekte bedient sich einer sehr ähnlichen grundlegenden Struktur beim Aufbau der verwendeten Architektur. Konkret kann man bei EMBASSI, AMIGO und MONA sehr gut erkennen, dass sie allesamt ähnliche Komponenten verwenden und diese auf ähnliche Art und Weise miteinander verküpfen. So fällt einem aufmerksamen Betrachter beispielsweise das Vorhandensein einer zentralen Steuerungskomponente ins Auge, welche zumeist als Interaktionsmanager betitelt wird und sich mit der Koordinierung der Multimodalität innerhalb der entsprechenden Projekte befasst. Natürlich ist die innere Funktionsweise unterschiedlich, aber ihre Aufgabe nach außen hin ist vergleichbar. Auch die Wichtigkeit des Zustandes der aktuellen Umgebung wird allgemein gewürdigt und anerkannt, was sich in unterschiedlichen Ausführungen von diversen Kontextmanagern äußert. Betrachtet man dazu den Entwurf des W3C, ist es auch sehr schön zu sehen, wie dieser die Entwicklung von multimodalen Systemen vereinfachen und vereinheitlichen will, indem auch er dazu sehr viele Elemente aus diesen Projekten heranzieht und auf einen gemeinsamen Nenner bringt. Aufgrund der Parallelität der Projekte und des W3C MMI Frameworks ist es schwierig zu sagen, wer hier wen in welchen Bereichen beeinflusst hat; dass es eine Beeinflussung gab, ist jedenfalls unumstritten. Dies lässt sich zum Beispiel am MONA-Projekt erkennen, welches sich teilweise an das MMI-Framework anlehnt und darauf aufbaut [66]. Man kann also durchaus sagen, dass es sich bei dem W3C MMI Framework um eine Zusammenfassung der grundlegenden und ähnlichen Konzepte vieler Projekte handelt, welche sich erfolgreich mit 43 4.7 Bewertung Multimodalität befassen und befassten. Betrachtet man die Tatsache, dass diese Projekte zum Einen, wie im Fall AMIGO, keinen öffentlich verfügbaren Sourcecode anbieten und zum Anderen von ihrem Aufbau eher ungeeignet für eine Weiterentwicklung sind - führt man sich beispielsweise die monolithische Architektur von EMBASSI vor Augen - so kann man die Vorzüge der W3C-Variante erkennen. Diese bietet zwar ebenfalls keine implementierten Komponenten, aber vereint die Vorteile der einzelnen Projekte zu einem Entwurf, auf dessen Basis man relativ einfach ein funktionierendes System entwickeln könnte. Dem gegenüber steht der Ansatz, der sich im SerCHo-MASP Projekt wiederfindet. Auch hier sind die grundlegenden Komponenten dieselben, jedoch wird die Verbindung auf eine etwas andere Art und Weise realisiert. Durch die Verwendung von Mappings als Synchronisierungsmechanismen zwischen den vorhandenen Modellen kommt es zu mehreren Abstraktionsstufen und zu einer längeren Kette unterschiedlich abstrakter Modelle, der auf Seiten der übrigen Projekte eine einfachere Gliederung gegenübersteht. Der Ansatz besticht vor allem durch seine Flexibilität und die Möglichkeit, Änderungen zur Laufzeit durchführen zu können. Allerdings beschreitet ein weit größerer Teil der Forschungsarbeiten im multimodalen Bereich den Weg, den auch der W3C-Entwurf vorgibt. Dieser scheint zur Erreichung der in der vorliegenden Arbeit definierten Ziele doch einfacher, überschaubarer und besser geeignet zu sein. Die anfangs beschriebene XHTML+Voice-Kombination alleine ist aufgrund ihrer doch sehr engen Kopplung der Modalitäten als Grundlage nicht geeignet, zumal sie, wie gesagt, im W3C-Ansatz auch teilweise wiederzufinden und dort auch besser umgesetzt ist. 44 5 Beschreibungssprachen im multimodalen Bereich Wie bei der Durchsicht der existierenden Frameworks und Projekte sehr schnell klar wird, existiert bereits eine Reihe von Auszeichnungssprachen, um verschiedene Aspekte der multimodalen Interaktion abzubilden und beschreiben zu können. Sei es der Dialogfluss, der UI-Aufbau oder die Übermittlung von Daten zwischen Komponenten eines Frameworks - es können in allen Bereichen unterschiedlichste Sprachtypen zum Einsatz kommen. Aus diesem Grund befasst sich dieses Kapitel damit, eine Übersicht und Klassifizierung eben dieser Beschreibungssprachen zu geben. 5.1 5.1.1 Dialogbeschreibungen CCXML Die unter der Bezeichnung Call Control eXtensible Markup Language bekannte Auszeichnungssprache wurde vom W3C entwickelt. Sie ist in ihrer Form, ähnlich dem zuvor erläuterten MMI-Framework, als Entwurf zu betrachten, welcher sich nach wie vor in Bearbeitung befindet. Die erste Version wurde im Jahr 2002 veröffentlicht, auf die eine Reihe weiterer Publikationen folgte und schließlich in der Version von 2007 die bisher aktuellste Ausgabe darstellt. Es existiert zudem bereits eine große Anzahl an Umsetzungen in Telefonapplikationen diverser Unternehmen [62, 61]. Das ursprüngliche Ziel dieses Entwurfs war die Entwicklung einer deklarativen Auszeichnungssprache um den Kontrollfluss innerhalb von Telefonanwendungen angeben und steuern zu können. Die bisher verwendete Sprache VXML, welche bereits im vorherigen Kapitel XHTML+Voice angesprochen wurde, dient für sich genommen im Grunde ebenfalls zur Dialogmodellierung, allerdings in einer eingeschränkten Form und auf Sprachanwendungen 5.1 Dialogbeschreibungen beschränkt. Des Weiteren hat der Dialogfluss innerhalb solcher Sprachanwendungen eher linearen Charakter, und eine Unterstützung für Ereignisse, die zu einem beliebigen Zeitpunkt auftreten können, ist begrenzt. Durch die Einführung von CCXML ist nun eine Steuerung übergreifend über mehrere solcher Telefonanwendungen möglich. Unter Anderem können damit Telefonkonferenzen verwaltet oder Informationen mit externen Systemen ausgetauscht werden. Auch eine asynchronere Form der Dialogmodellierung wird dadurch ermöglicht [48]. In ihrer aktuellen Form ist diese Auszeichnungssprache aber nicht nur auf das Anwendungsfeld der Telefonie beschränkt, sondern eigenet sich grundsätzlich sehr gut zur Modellierung der Steuerung aller Arten von Dialogsystemen. Dies ergibt sich nicht zuletzt aus der Tatsache, dass CCXML zwar unter dem Gedanken der Erweiterung von VXML-Funktionalität entwickelt wurde, diese beiden Sprachen aber dennoch voneinander unabhängig und auch für sich alleine lauffähig und anwendbar sind. Eine CCXML-Applikation besteht nun aus einer Reihe von CCXMLDokumenten, welche einen Interpreter steuern. Hierzu werden bei Bedarf einzelne Sessions generiert, welche im Prinzip dieselben CCXML-Beschreibungen als Grundlage heranziehen und für sich abarbeiten. Hierbei können durchaus mehrere Sessions dieselbe Beschreibung zur gleichen Zeit verwenden und diese parallel und getrennt voneinander bearbeiten. Eine Session befindet sich zu einem konkreten Zeitpunkt in einem bestimmten Zustand, welcher durch diverse Ereignisse in einen anderen übergeführt werden kann. Weiters existiert eine Reihe von Verbindungen hin zur Außenwelt, welche den einzelnen Sessions zugeordnet sind und zwischen diesen ausgetauscht werden können. Für diese Dialoge kommen wiederum Sprachen wie VXML zu Anwendung, welche die konkrete Interaktion mit dem Benutzer durchführen können und eventuelle Eingaben an die CCXML-Session retournieren. Die Kommunikation erfolgt hierbei großteils mittels Events, welche Informationen zwischen den CCXML-Sessions und den Dialogen zur Benutzerinteraktion übermitteln und anhand derer der Dialogfluss gesteuert wird [62]. 5.1.2 SCXML 2005 wurde, ebenfalls vom W3C, mit der Spezifizierung einer weiteren Auszeichnungssprache begonnen, welche in der aktuellen Version vom Mai 2008 vorliegt. Diese basiert zum Teil auf den Erkenntnissen und Erfahrungen von CCXML und versucht, dessen etwas rudimentäreres Zustandsautomatenkonzept durch die Verwendung von Harel State Charts zu erweitern. Durch die 46 5.1 Dialogbeschreibungen von David Harel eingeführte Methodik, Zustandsautomaten zu beschreiben wurden die Modellierungsmöglichkeiten diesbezüglich umfassend erweitert. Die von ihm vorgeschlagene Notation wurde aus diesem Grund auch in die Unified Modeling Language (UML) übernommen. Die Darstellung in UML erfolgt allerdings in einer grafischen Form, weshalb im Rahmen von SXCML versucht wird, eine XML-basierte Repräsentation zu entwickeln. Durch die interessanten und sehenswerten bisherigen Ergebnisse wird unter anderem auch darüber nachgedacht, die Erkenntnisse von SCXML bei der Erweiterung von CCXML einzubringen und das dortige Zustandsautomatenkonzept in Zukunft auf Basis von SCXML zu fußen [60, 59]. Ein Beispieldokument, welches eine Stoppuhr modelliert, ist in Abbildung 5.1 und 5.2 ersichtlich [45]. Hier ist sehr schön zu erkennen, wie die Zustände und Zustandsübergänge ausgehend von der grafischen Modellierung in XMLForm übergeführt werden können und dort state und transition Tags bilden. Ausgeführt wird solch ein Zustandsübergang durch das Auftreten des dort spezifizierten Events. Abb. 5.1: Stoppuhr-Diagramm (UML Annotation) [45] Es ist klar, dass es sich hier um ein recht einfaches Beispiel handelt. Durch die Verwendung von Harel State Charts können weitaus komplexere Vorgänge beschrieben werden. Einzelne Zustände können zum Beispiel durch eine Reihe von Unterzuständen beschrieben werden. Dies kann sogar so weit gehen, dass innerhalb eines Zustandes ein weiterer SCXML-Interpreter angestoßen wird und sich ein anderer Zustandsautomat um die Abbarbeitung eines Dokumentes kümmert, das quasi die Unterzustände des Aufrufers beinhaltet. Auf diese Weise können gewisse Teilbereiche sehr schön modularisiert werden, was einer Entwicklung in hohem Maße entgegenkommt. Es ist weiters möglich, einen nebenläufigen Zustand zu definieren. Bestimmte darin ent- 47 5.1 Dialogbeschreibungen Abb. 5.2: Stoppuhr-SCXML [45] haltene Unterzustände werden als Startpunkte definiert, was zur Folge hat, dass sich der Automat bei Erreichen dieses parallelen Zustandes in sämtlichen so markierten Unterzuständen gleichzeitig befindet. Diese können nun wiederum beliebige Übergänge zu anderen dort enthaltenen Zuständen definieren. Der Automat verlässt diese Parallelität erst wieder, wenn einer dieser Übergänge auf einen externen Zustand verweist [60]. Es ist außerdem möglich, innerhalb eines SCXML-Interpreters ein Datenmodell zu halten, welches anwendungsspezifische Informationen enthalten kann. Dieses Datenmodell kann in der Folge durch bestimmte Events verändert werden und selbst auch Einfluss auf die Zustandsübergänge des Automaten nehmen, da ein Zustandsübergang nicht nur, wie erwähnt, an das Auftreten eines bestimmten Events, sondern weiters noch an konkrete Bedingungen gekoppelt werden kann. Mittels spezieller Tags wie send und invoke ist es möglich, mit externen Komponenten zu interagieren und in Abhängigkeit des Zustandsautomaten Aktionen im Backend zu triggern oder umgekehrt durch Aktionen im Backend eine Zustandsänderung des Automaten herbeizuführen [60]. Für die Abarbeitung von SCXML-Dokumenten existieren bereits, wie auch bei CCXML, eine Reihe von entsprechenden Interpretern. Zu erwähnen seien hierbei unter anderem eine Implementierung unter C++ mit der Bezeichnung Qt SCXML Engine sowie eine Umsetzung für Java im Rahmen 48 5.2 Generische UI-Beschreibungen des Apache Commons Projektes. Obwohl es sich auch bei SCXML um einen Entwurf handelt, welcher in der Zukunft gewiss noch Änderungen durchlaufen wird, kann durch das Verwenden dieser grundlegenden Plattformen zumindest teilweise sichergestellt werden, dass sich Änderungen am SCXMLEntwurf nicht so gravierend auf ein laufendes Projekt auswirken, da diese ja im verwendeten Interpreter durch das betreuende Projektteam entsprechend berücksichtigt und nachgezogen werden. Abschließend gesagt sei hier nun, dass sich ein Großteil der betrachteten Projekte bei der Modellierung der Dialogsteuerung auf diverse Beschreibungssprachen stützt, die Entwürfe des W3C allerdings gewiss eine sehr gute Grundlage für eine eigene Umsetzung bilden würden. Hier insbesondere die Auszeichnungssprache SCXML, da diese in gewisser Weise eine Weiterentwicklung von CCXML darstellt, schon mit dem Fokus auf multimodale Applikationen entwickelt wurde und eine größere Funktionsvielfalt mit sich bringt. Ein Nachteil sei hier allerdings ebenfalls noch erwähnt: Zum aktuellen Zeitpunkt existieren keine ausreichenden Werkzeuge um SCXML-Dialoge einfach und übersichtlich auf einer grafischen Basis entwickeln zu können. Die einzige Möglichkeit besteht zur Zeit darin, eine im Rational Software Architect erstellte UML-Darstellung mittels eines Plugins in SCXML-Form überzuführen. 5.2 Generische UI-Beschreibungen Ein recht großer Teil der Anwendungsentwicklung befasst sich mit der Formulierung und Implementierung von diversen Benutzungsschnittstellen. Obgleich der Aufwand im unimodalen Bereich schon nicht zu unterschätzen ist, potenziert sich das Problem, sobald man den Bereich multimodaler Applikationen betritt. Hier muss nun nicht nur auf eine Art von UI Rücksicht genommen und darauf hin entwickelt werden, sondern man muss sich mit vielen verschiedenen Schnittstellenarten befassen. Jede verwendete Modalität benötigt dazu aber eine jeweils eigene Form der Beschreibungssprache, mittels derer ihre Inhalte definiert werden können. Grafische Ausprägungen werden beispielsweise mittels HTML-Dokumenten oder Java Swing Objekten und Codezeilen beschrieben, wärend für sprachliche Modalitäten etwa VXML zum Einsatz kommen kann. Aufgrund dieser Tatsachen wurde relativ rasch ersichtlich, dass es eine enorme Vereinfachung bei der Applikationsentwicklung darstellen würde, hätte man eine einzige generische UI-Beschreibungssprache zur Verfügung, die von allen Modalitäten verstanden und zur Erstellung von konkreten 49 5.2 Generische UI-Beschreibungen Schnittstellen jeglicher Modalität herangezogen werden kann. Es existieren zum aktuell mehrere solcher generischer UI-Beschreibungssprachen, auf welche in der Folge näher eingegangen wird. Das grundlegende Konzept liegt jedoch den meisten, und sämtlichen hier beschriebenen, Sprachen zugrunde. Sie stellen selbst keine konkrete Schnittstellenbeschreibung zur Verfügung, welche von den unterschiedlichen Modalitäten verstanden werden muss, sondern formulieren diese in einer abstrakten Form. Diese Beschreibungen werden mittels unterschiedlichster Mechanismen zu konkreten modalitätsbezogenen Ausführungen übergeführt, womit in der Folge eine Darstellung überhaupt erst ermöglicht wird. 5.2.1 XIML Der Begriff XIML steht für Extensible Interface Markup Language. Diese Auszeichnungssprache wurde von RedWhale Software mit dem Start im Jahr 1998 entwickelt, um genau die eben beschriebenen Probleme zu lösen. Die Entwicklung erfolgte bis 2001 unternehmensintern, daran anknüpfend wurde das XIML-Forum gegründet, um die Sprache auf öffentlicher Basis unter der Mitwirkung von Wirtschaft und Wissenschaft weiterzuentwickeln, anzupassen und in weiterer Folge schließlich zu einem Standard zu etablieren [38]. Konkret ging es bei der Entwicklung von XIML darum, eine entstandene Lücke in der Softwareentwicklung zu schließen, bei der Interoparabilität zwar ein sehr großer Begriff war und angestrebt wurde, der Fokus jedoch zumeist nur auf dem standardisierten Austausch von Applikationsdaten lag. Die Übermittlung von Interaktionsdaten blieb dabei zumeist ausgeklammert. Unter Interaktionsdaten versteht man in diesem Zusammenhang Informationen, welche den Aufbau von Benutzungsschnittstellen angeben, die zu verwendenden Schnittstellenelemente definieren und das Zusammenspiel dieser Elemente beschreiben [37]. Zur Formulierung der Benutzerinteraktion definiert XIML fünf unterschiedliche Schnittstellenkomponenten, wovon drei auf einer abstrakten Ebene zu liegen kommen, während die zwei weiteren konkretere Komponenten darstellen [37]. Aufgabenkomponente: Hier werden Aufgaben und Prozesse abgebildet, welche von der Benutzungsschnittstelle unterstützt werden sollen. Relevant ist hierbei aber einzig und allein der Anteil der Aufgaben, welche eine Benutzerinteraktion voraussetzen. Diese Komponente soll also nicht dazu dienen, die Applikationslogik zu erfassen, sondern lediglich eine Beschreibung des Interaktionskontexts liefern. 50 5.2 Generische UI-Beschreibungen Domänenkomponente: Diese beinhaltet Objekte, welche für eine Benutzerinteraktion relevant sind und diesbezügliche Daten enthalten. Benutzerkomponente: Diese beinhalten Informationen über die in die Interaktion involvierten Benutzer. Es werden beispielsweise relevante Personendaten hinterlegt. Präsentationskomponente: Hier werden relevante Interaktionselemente definiert, welche später zu konkreten Objekten innerhalb der generierten Schnittstellen werden. Beispiele wären hier Eingabefelder für konkrete Werte oder die Eingabemöglichkeit von Werten innerhalb eines bestimmten Bereichs, was in der Folge möglicherweise als Schieberegler in einer Schnittstelle umgesetzt werden könnte. Es geht hier also darum, die Interaktionselemente möglichst abstrakt zu halten, damit diese später je nach aktueller Modalität unterschiedlich in konkrete Ausprägungen überführt werden können. Dialogkomponente: Die Möglichkeiten, welche dem Benutzer zur Verfügung stehen, um Einfluss auf die Schnittstelle nehmen zu können, werden hier definiert und hinterlegt. Weiters wird hier auch der Dialogfluss beschrieben, welcher die Navigationsmöglichkeiten innerhalb der Schnittstelle regelt. Diese Komponenten alleine ergeben allerdings noch keine komplette UIBeschreibung. Dazu sind weiters noch Relationen erforderlich, welche zwei oder mehrere Elemente miteinander verknüpfen. Dies kann innerhalb einer Komponente geschehen oder auch komponentenübergreifend. Mittels dieser Relationen kann beispielsweise ein bestimmtes Datenobjekt der Domänenkomponente mit einem Element der Präsentationskomponente verknüpft werden. Die Menge der Relationen spiegelt also gewissermaßen das Design der Benutzungsschnittstelle wider, Abläufe innerhalb der Schnittstelle zur Laufzeit sind nichts anderes als Manipulationen dieser Relationen. Neben Komponenten und Relationen spielen außerdem noch Attribute eine Rolle. Elemente innerhalb von XIML können dadurch bestimmte Werte annehmen, wobei hier einfache Datentypen, aber auch andere Elemente zugewiesen werden können. Ein Element kann also mehrere Eigenschaften besitzen, welche sich als Attribut-Wert-Paare daarstellen. Verknüpfungen durch Relationen können neben der Elementebene zudem auch zwischen Attributen realisiert werden [37]. Verwendet man nun also XIML, um multimodale oder auch nur plattformübergreifende Schnittstellen zu generieren, so erhält man am Ende eine einzige XIML-Definition, welche die notwendigen Daten, den Navigationsfluss und eine Beschreibung der durchzuführenden Aufgaben beinhaltet. Im 51 5.2 Generische UI-Beschreibungen ersten Schritt kann man nun geräte- und modalitätsspezifische Präsentationselemente definieren, aus denen über spezielle Konverter konkrete Schnittstellenbeschreibungen generiert werden können. Um zu der angestrebten Abstraktion zu gelangen, definiert man in der Folge zwischengeschaltete Präsentationselemente, welche von Interfacedesignern zur UI-Definition verwendet werden können und die über vordefinierte Relationen auf die entsprechenden konkreten Präsentationselemente verweisen. Abbildung 5.3 verdeutlicht diesen Vorgang [37]. Abb. 5.3: UI-Generierung auf mehrere Zielplattformen [37] XIML stellt in seiner Form einen sehr interessanten, allgemeinen und umfassenden Ansatz dar, Schnittstellenbeschreibungen allgemein definieren zu können. Das Problem an diesem Ansatz ist das Fehlen von Werkzeugen, welche Entwicklern den Umgang mit dieser Sprache erleichtern könnten. Weiters wurde bei der Entwicklung von XIML ein Hauptaugenmerk auf den WebBereich gelegt, was zur Folge hatte, dass öffentlich verfügbare Konverter von XIML hin zu Zielsprachen nur für den Webbereich entwickelt wurden, wie zum Beispiel der flashbasierte Ansatz von [49]. 5.2.2 UIML Im Jahr 1997 begann die Arbeit an einer weiteren Auszeichnungssprache, deren Anwendungsbereich in der UI-Beschreibung lag. Die Firma Harmonia entwickelte neben einigen weiteren Unternehmen die User Interface Markup Language bis zu einer vorläufigen Endversion im Jahr 2004 in der Version 3.0. In der Folge wurde im Rahmen von OASIS (Organization for the Advancement of Structured Information Standards) ein UIML-Kommitee gegründet, welches die Weiterführung der Spezifikation und die Standardisierung übernahm [52]. Aufgrund der bisherigen Bemühungen dieses Kommitees exisitert heute ein Entwurf über die UIML-4.0-Spezifizierung. Die letzte aktuelle Version dieses Entwurfes datiert auf Jänner 2008, kann und wird sich aber, ebenso 52 5.2 Generische UI-Beschreibungen wie der SCXML-Entwurf des W3C, in der Zukunft noch weiterentwickeln und ändern. Bei der User Interface Markup Language handelt es sich um eine deklarative herstellerunabhängige kanonische XML-basierte Metasprache zur Schnittstellendefinition. Zur Umsetzung der konkreten UI´s kann auch hier wiederum entweder eine Übersetzung in die jeweilige Zielsprache erfolgen oder auch eine direkte Interpretierung durch das zugrundeliegende Endgerät stattfinden. Die Sprache geht in ihrer Intention allerdings nicht ganz so weit wie zum Beispiel XIML, bei der ja aus einer generellen Beschreibung heraus entsprechende Schnittstellen im Idealfall automatisch generiert werden können, sondern befasst sich mehr mit der Aufgabe, die unterschiedlichen Beschreibungen dieser Schnittstellen zusammenzufassen und in einheitlicher Art und Weise in einem einzelnen Dokument zu vereinen. Anders formuliert bedeutet das, dass UIML den Anwendungsentwicklern nicht die Arbeit abnimmt, konkrete Benutzungsschnittstellen zu entwickeln, ihnen aber ein einheitliches Schema vorgibt, mit dessen Hilfe sie die Struktur der erarbeiteten UI´s formulieren und abbilden können [53]. Weiters beschränkt sich UIML auf die Formulierung der UI-Beschreibungen selbst und klammert Aufgaben und Dialogkonzepte anders als in XIML oder dem nachfolgend erläuterten UsiXml weitestgehend aus bzw. beschäftigt sich damit auf einem sehr konkreten Abstraktionsniveau [40]. Bereits während der Entwicklung von UIML wurde großer Wert darauf gelegt, entsprechende Werkzeuge zu implementieren, welche zum Einen die Arbeit damit erleichtern und zum Anderen die Überführung in möglichst viele Zielsprachen ermöglichen. So wurden von der Firma Harmonie im Rahmen ihrer Tätigkeit Renderer geschrieben, die Überführungen nach HTML, Java oder VoiceXML durchführen konnten. Der Support für diese Tools ist heutzutage leider nicht mehr gegeben, auch die Verlinkungen auf der Webseite von UIML [52] sind leider nicht mehr aktuell. Es gibt allerdings Nachfolgeprodukte wie LiquidApps und darin inbegriffen LiquidUI, welches eine diesbezügliche Funktionalität zu Verfügung stellt. Nach Anfrage bei Harmonie selber kann aber ein Großteil dieser Renderer immer noch von Harmonie bezogen werden [53]. Die Beschreibung eines UI´s in UIML erfolgt nach dem in Abbildung 5.4 gezeigten Schema. Die Schnittstelle selbst definiert sich nach vier Eigenschaften. Die Struktur spiegelt wider, welche Elemente in welcher Anordnung enthalten sind, die Ausführungsform beschreibt, wie sich die Schnittstelle darzustellen hat, sei es durch die Schriftart, verwendete Farben oder Ähnliches. Ein wichtiger Punkt betrifft natürlich auch den Inhalt der Schnittstelle insgesamt und den der einzelnen Elemente. Zu guter Letzt ist auch noch das 53 5.2 Generische UI-Beschreibungen Abb. 5.4: UIML-Modell. Angelehnt an UIML Version 4.0: Committee Draft [53] Verhalten relevant, welches die einzelnen UI-Komponenten an den Tag legen, wenn eine Interaktion stattfindet. Neben diesen Eigenschaften, welche die Schnittstelle selbst beschreiben, gibt es die Logik dahinter, welche die Verbindung zu Anwendungen und Datenquellen beschreibt und Präsentationen, die das Mapping auf konkrete Geräte und Plattformen angeben [53]. 5.2.3 UsiXML Die Abkürzung UsiXML steht für USer Interface eXtensible Markup Language und befasst sich im Wesentlichen ebenfalls mit der geräte-, plattformund modalitätsunabhängigen Darstellung von Benutzungsschnittstellen. Wie bereits erwähnt, findet UsiXML neben diversen anderen Frameworks auch im SerCHo-MASP-Projekt erfolgreich Anwendung. Auch hier geht es, wie schon bei den bereits beschriebenen Sprachen XIML und UIML, nicht um die Einführung einer neuen Schnittstellenbeschreibungssprache, anhand derer konkrete Implementierungen erfolgen können, sondern um die Generierung abstrakter Beschreibungen, welche erst durch weiteres Rendering in bereits etablierte Formate wie XHTML oder VXML übergeführt werden müssen. Auch sollen bei Weitem nicht alle denkbaren Ausprägungen von UI-Elementen unterstützt werden, da dies viel zu weit führen würde, sondern lediglich eine definierte Teilmenge davon [54]. Im Gegensatz zu UIML existieren in UsiXML vier unterschiedliche Abstraktionsebenen, nämlich das Aufgabenmodell, das abstrakte UI, das konkrete UI und schließlich das finale UI. Reiht man UIML in diese Kategorisierung ein, so werden lediglich die Ebenen des konkreten und finalen UI´s davon abgedeckt. Hier ist auch sehr schön zu erkennen, warum UsiXML im SerCHo-MASP-Projekt Anwendung findet. Auch dort werden diese Abstraktionsstufen entsprechend definiert und stimmen überein [67]. 54 5.2 Generische UI-Beschreibungen Das Aufgabenmodell beschreibt die verschiedenen interaktiven Aufgaben, welche vom Benutzer des Systems durchgeführt werden müssen, sowie die Domänenobjekte, welche im Zuge des Interaktionsvorganges manipuliert werden. Die Darstellung der Modelle erfolgt auch hier wiederum mittels Concurrent Task Trees (CTT). Das abstrakte UI definiert Schnittstellen nun absolut modalitätsunabhängig. Es beinhaltet abstrakte Container, abstrakte indivduelle Komponenten und Verknüpfungen zwischen beiden. Diese Komponenten repräsentieren unterschiedliche Aspekte wie Eingabe, Ausgabe oder Navigation und sind Abstrahierungen diverser grafischer und sprachlicher Toolkits. Da sich auf dieser Ebene noch kein Modalitätsbezug herstellen lässt, ist es hier noch nicht möglich festzustellen, wie die Komponenten konkret aussehen werden. Das konkrete UI geht nun genau diesen Schritt weiter und führt die abstrakten Beschreibungen auf die jeweiligen Modalitäten über, allerdings noch auf einer allgemeinen Basis, auf der die Schnittstellen noch geräte- plattform- und toolkitunabhängig formuliert werden. Dies ist, wie man sehen kann, auch die Ebene, auf der UIML Schnittstellen beschreibt. Das finale UI spiegelt dementsprechend die Benutzungsschnittstellen wider, die auf konkreten Plattformen und Geräten laufen [40]. Weiters existieren Transformationsregeln, welche angeben, wie Elemente von einer Ebene auf eine andere überführt werden können. Mittels dieser Regeln können Schnittstellen auf allen Ebenen ausgehend von Aufgabenmodellen teilweise automatisch generiert werden. Weiters ist es bei jedem Übergang möglich, manuell auf die Transformation einzuwirken und das Ergebnis nach Wunsch anzupassen bzw. zu ergänzen [40]. Zu erwähnen sei in diesem Zusammenhang auch die exzellente Werkzeugunterstützung, welche für UsiXml existiert. Es stehen grafische Werkzeuge für jede Ebene zur Verfügung und erleichtern die Arbeit sehr stark. Aufgabenmodelle können beispielsweise einfach mit IdealXML erstellt und modifiziert werden, Transformationen werden grafisch mit TransformiXML bearbeitet und so weiter [54]. Zusammenfassend kann nun Folgendes gesagt werden: Es existiert eine Vielzahl von Auszeichnungssprachen zur Beschreibung von Benutzungsschnittstellen. In dieser Arbeit wurden drei der interessantesten vorgestellt und erläutert. UIML stellt in dieser Konstellation die elementarste dar, da sie das Hauptaugenmerk wirklich darauf legt, mittels einer einheitlichen Sprache eine Vielzahl von Benutzungsschnittstellen formulieren zu können. Weniger im Fokus steht hier jedoch das Generieren von Schnittstellen aus abstrakten Beschreibungen heraus. Mit dieser Problematik beschäftigen sich XIML und 55 5.3 Datenaustauschformat (EMMA) UsiXML, wobei wohl Letzterer der Vorzug gegeben werden sollte, da hier die Unterstützung durch diverse Werkzeuge wirklich eine Erleichterung bei der Entwicklung darstellt, auf die bei XIML leider verzichtet werden muss. 5.3 Datenaustauschformat (EMMA) Bei der Verwendung mehrerer Modalitäten im Rahmen einer Interaktion werden, wie bereits in Kapitel 3 erläutert, häufig Eingaben über mehrere Kanäle getätigt, die semantisch in Zusammenhang stehen und erst durch eine geeignete Zusammenführung die Benutzerintention erkennen lassen. Um diese Fusionsvorgänge ermöglichen bzw. erleichtern zu können, wurde eine entsprechende Sprache entwickelt, mit der Eingaben auf semantischer Ebene erfasst und übermittelt werden können. Diese Extensible MultiModal Annotation markup language (EMMA) basiert wie die bereits beschriebenen Sprachen ebenfalls auf XML und stellt eine einfache Syntax zur Verfügung, mit der Eingaben oder vielmehr deren Interpretationen erfasst werden können. Es steht eine Reihe von EMMA-Tags zur Verfügung, um mit Unsicherheiten, unterschiedlichen Interpretationsmöglichkeiten und weiteren im multimodalen Bereich auftretenden Besonderheiten umgehen zu können [46]. Abb. 5.5: Beispiel des möglichen Aufbaus eines EMMA-Dokumentes [46] Abbildung 5.5 illustriert den Aufbau eines EMMA-Dokumentes am Beispiel einer Spracheingabe, für die im System zwei unterschiedliche Interpretationen möglich wären. Zu sehen ist in diesem Beispiel insbesondere die Verwendung eines one-of -Tags in Zeile drei, der wiederum zwei unterschiedliche 56 5.3 Datenaustauschformat (EMMA) Interpretationen (Zeile 5-15 und 16-20) der erfolgten Benutzereingabe beinhaltet. Schön zu erkennen sind hier auch die verwendeten emma:confidenceAttribute, welche angeben, mit welcher Wahrscheinlichkeit die entsprechenden Interpretationen zutreffend sind. Eine Übersicht der definierten EMMATags sowie deren Attribute findet sich auf der W3C-Webseite [46]. 57 6 Konzeptioneller Entwurf Nach der Aufarbeitung der existierenden multimodalen Frameworks und deren Grundlagen im theoretischen Teil dieser Arbeit, soll nun nachfolgend ein Konzept erarbeitet werden, auf dem ein konkretes multimodales Framework implementiert und umgesetzt werden kann. Dieses soll, aufbauend auf der Arbeit von Felsing [15], die Steuerung eines Smart Homes ermöglichen. 6.1 Statische Aspekte Ausgehend von Kapitel 4, in dem eine Reihe von Forschungsprojekten und Frameworks betrachtet und verglichen worden ist, scheint der vielversprechendste Ansatz für die Umsetzung eines multimodalen Frameworks darin zu liegen, den Empfehlungen vom W3C zu folgen. Wie sich herausgestellt hat, bedienen sich sehr viele Projekte in diesem Bereich derselben grundlegenden Konzepte, die von der W3C Multimodal Interaction Working Group in ihrem Multimodal Interaction Framework quasi zusammengefasst und vereinheitlicht wurden. Durch die Wahl des W3C-Vorschlages ergibt sich eine Reihe von Vorteilen bei der Implementierung. Zum Einen existieren bereits viele Technologien, die für die Umsetzung der verschiedenen Komponenten herangezogen werden können. Welche davon konkret zum Einsatz kommen, wird im nachfolgenden Kapitel ersichtlich. Zum Anderen können die einzelnen Komponenten gewissermaßen inkrementell“ implementiert werden. In einer ersten ” Version erfolgt die Umsetzung also auf einer einfachen, überschaubaren Ebene, um sicherzustellen, dass das gesamte Framework im Rahmen einer Diplomarbeit umgesetzt werden kann und lauffähig ist. Spätere Erweiterungen 6.1 Statische Aspekte können dementsprechend leicht durchgeführt werden, indem die Implementierung einer jeweiligen Komponente ersetzt wird, um so zu einer erweiterten Funktionalität zu gelangen. Zur Illustration sei hier auf die Beispiele der Eingrenzung des Themenbereichs in Kapitel 2 verwiesen. Es werden also in der ersten Version zum Beispiel keine generischen Schnittstellenbeschreibungen Anwendung finden. Es müssen für eine Schnittstelle mehrere Dokumente bereitgestellt werden, sofern diese auf mehreren Plattformen bzw. Modalitäten gerendert werden soll. Eine etwaige multimodale Fusion bzw. Fission wird ebenfalls nur rudimentär behandelt und erfolgt allenfalls nach Variante 3.2c aus Kapitel 3. Es wird nachfolgend aber jedenfalls noch erläutert, an welcher Stelle der Architektur eine Erweiterung der fehlenden Funktionalität vorgenommen werden kann. Als Grundlage für die Umsetzung erweist sich des Weiteren eine serviceorientierte Architektur, wie sie auch im AMIGO-Projekt vorgeschlagen wird, als vorteilhaft. Durch die Verwendung dieses Architekturprinzips wird weitgehend sichergestellt, dass die einzelnen Komponenten einfach ausgetauscht und Erweiterungen bzw. Änderungen rasch durchgeführt werden können. Dies kann sogar zur Laufzeit erfolgen und bietet damit sehr gute Möglichkeiten bei der Anwendungsentwicklung. Neue Servicekomponenten können über das Internet eingespielt werden, was es einfacher macht, mehrere verteilte Standorte mit den jeweiligen aktuellen Komponenten zu versorgen. Im Hinblick darauf, dass dieses Framework zu Forschungszwecken eingesetzt werden wird, ist diese Flexibilität natürlich noch entscheidender und zu begrüßen. In Abbildung 6.1 ist nun eine Architektur zu sehen, die auf den Vorschlägen des W3C aufbaut, dessen Konzepte in einen serviceorientierten Rahmen bringt und um diverse Funktionalitäten erweitert, um am Ende ein kohärentes, funktionierendes und implementierbares Konzept zu erhalten. Darüberhinaus muss aber wie gesagt auch sichergestellt werden, dass die hier entwickelte Architektur mit der aus [15] kompatibel ist, bzw. darauf aufsetzen kann. Aus eben diesem Grund finden hier dieselben Ebenen Verwendung wie auch in [15]. Der rechte Teil der Abbildung, namentlich das Kontextservice und diverse Systemservicekomponenten, veranschaulicht die Anknüpfungspunkte an diese zugrunde liegende Plattform und stellt somit keinen Bereich dar, der im Zuge der vorliegenden Diplomarbeit umgesetzt wurde. Ein Großteil der Architektur befindet sich, wie man sehen kann, in der Middlewareschicht und stellt den Kern dar, auf dem sämtliche umgesetzten UI Anwendungen aufsetzen. Auf der Anwendungsschicht befinden sich 59 6.1 Statische Aspekte 60 Abb. 6.1: Architekturmodell Services, die die verschiedenen umgesetzten UI Anwendungen darstellen. In der physikalischen Schicht sind die Modalitäten abgebildet, die auf diversen Endgeräten laufen und über die der Benutzer seine tatsächlichen Eingaben tätigen und Systemausgaben erhalten kann. In Der Arbeit von Felsing [15] existiert weiters noch eine Sensor-Plattform-Schicht, die im Rahmen dieser Arbeit allerdings nicht ins Gewicht fällt und aus Gründen der Übersichtlichkeit nicht dargestellt wird. Hier könnten eventuell Netzwerkproxies umgesetzt werden, über die weitere Modalitäten über andere Kanäle, wie zum Beispiel UPNP, angebunden werden können. Nachfolgend werden nun die einzelnen Servicekomponenten erläutert und ihr Zusammenspiel dargelegt. 6.1 Statische Aspekte 6.1.1 Interaktionsmanager Die wichtigste Komponente dieser Architektur stellt der Interaktionsmanager dar, der sich in der Middlewareschicht befindet. Ihm obliegt die zentrale Aufgabe, sämtlichen Datenverkehr von und zu den Modalitäten zu steuern. Weiters verwaltet er den Dialogfluss aller aktiven multimodalen Anwendungen. Im W3C-Draft wird zur Dialogsteuerung die Verwendung von SCXML vorgeschlagen. Aus dem Grund wird auch in der der vorliegenden Arbeit zugrunde liegenden Architektur SCXML als Auszeichnungssprache des Interaktionsmanagers verwendet. Durch die Serviceorientierung der Architektur findet die Ausführung der Dialogsteuerung allerdings nicht direkt im IM statt, sondern in explizit dafür vorgesehenen weiteren Dialogservices. Der IM seinerseits verwaltet diese Dialogservices und stellt ihnen die zur Ausführung notwendigen Dokumente und Ressourcen zur Verfügung. Durch diese Aufteilung geht man hier allerdings auch einen Schritt weiter als im W3C-Entwurf selbst. Dieser definiert den Interaktionsmanager mit seiner Dialogführung als quasi monolithisches Objekt, das eine dedizierte Methodik zur Dialogsteuerung, SCXML, verwendet. In der Architektur der vorliegenden Arbeit ist es aber ohne weiteres denkbar, neben SCXML-Dialogservices beliebige andere zu verwenden, solange die Schnittstellen nach außen hin die gleichen bleiben. So ist es hier also möglich, beispielsweise CCXML als Dialogsprache zu verwenden oder den Dialogfluss innerhalb der Dialogservices mittels eines logik-basierten Ansatzes zu formulieren, wie dies auch in EMBASSI [13] gehandhabt wird. Solch eine Flexibilität wird im W3C-Entwurf zwar für eventuelle nachfolgende Entwurfsversionen kurz angerissen, ist in der aktuellen Version aber wie gesagt nicht vorhanden. Durch dieses Konzept ist der Interaktionsmanager natürlich auch in der Lage, die Dialogsteuerung für beliebig viele parallel laufende Anwendungen zu übernehmen, indem für jede Applikation jeweils ein eigenes Dialogservice erzeugt wird. Diese Servicegenerierung findet wiederum in einer Dialogservice Factory statt. Im Diagramm zu sehen ist hier, neben den n Dialogservices für die einzelnen Applikationen, noch ein weiteres. Das hat die Aufgabe, das Verhalten des IM selbst zu beschreiben, um diesen nicht hardcodiert ausführen zu müssen und auch hier flexibel bleiben zu können. 6.1.2 Modalitäts- und Benutzermanager Diese Komponente dient dazu, Geräte und Benutzerprofile zu verwalten. Hierzu bedient sie sich des Kontext-Services, mit dem sie mittels Queries kommuniziert. Verbindet sich ein Benutzer mit dem System, werden über 61 6.1 Statische Aspekte dieses Service gerätespezifische Informationen in den Kontext eingefügt, die im späteren Verlauf dazu dienen, angepasste Benutzungsschnittstellen zur Verfügung stellen zu können. Weiters können Benutzerpräferenzen angefordert werden, die ebenfalls den Aufbau und die Gliederung der bereitgestellten UI´s beeinflussen können. Ein Beispiel hierfür könnte eine Einstellung sein, bei der ein Benutzer es bevorzugt, das Menü immer nur auf dem PDA zu sehen, sofern er mit einem verbunden ist, um den PC-Monitor für die übrige Darstellung freizuhalten. Vergleicht man diesen Part mit den Ausführungen des W3C, so ergibt sich eine teilweise Überschneidung der Funktionalität. Der im W3C-Entwurf ausgeführten Kontextkomponente obliegt die Verwaltung des gesamten Kontextes, sowohl der Benutzer und modalitätsbezogenen Bereiche, als auch aller übrigen Kontextdaten. In dieser Architektur würde das wiederum eher auf das Kontext-Service zutreffen, das ja den gesamten Smart Home Kontext verwaltet. Der Modalitäts- und Benutzermanager hingegen kümmert sich unter Zuhilfenahme des Kontext-Services lediglich um benutzer- und modalitätsbezogene Informationen und ermöglicht einen einheitlichen Zugriff auf diese Daten. Des Weiteren werden auch Authentifizierungs- und Autorisierungsmechanismen von diesem Service bereitgestellt. 6.1.3 Modalitätskomponenten Diese Komponenten befinden sich außerhalb der SOA-Plattform auf den verwendeten Geräten selbst, die die Benutzungsschnittstellen darstellen. Diese können unterschiedlichste Ausprägungen haben und über verschiedene Protokolle angebunden sein. Hier sind sowohl browserbasierte Lösungen als auch Rich-Client-Anwendungen möglich. Bei der Umsetzung im Rahmen der Diplomarbeit wird der Schwerpunkt allerdings auf erstere Möglichkeit gelegt, da sich dadurch auf einfache Art und Weise eine gewisse Plattformunabhängigkeit erreichen lässt. Zu beachten ist hier außerdem, dass es sich bei einer Modalitätskomponente nicht um ein Gerät selbst handelt, sondern um eine Modalität, die auf einem Gerät verfügbar ist. Hat man über einen einzelnen PC Zugriff über ein GUI und eine Sprachsteuerung, so wird dies hier mit zwei unterschiedlichen Komponenten erfasst. Die Komponenten stellen die Benutzungsschnittstellen lediglich dar, ohne vom zugrundeliegenden Interaktionsmodell zu wissen. Weiters sind sie als Blackboxes konzipiert, was bedeutet, dass sie Informationen über den Status und Änderungen des Modells erhalten, aber ihre Reaktion darauf bzw. die innere Umsetzung nach außen hin nicht ersichtlich ist. 62 6.1 Statische Aspekte 6.1.4 HTTP-Service Die Verbindung mit den externen Geräten wird hier mittels eines HTTPServices möglich gemacht. Selbstverständlich kann durch die Einführung weiterer Verbindungsservices die Bandbreite an möglichen und unterstützten Kommunikationsprotokollen beliebig erweitert werden. Durch die Fokussierung auf eine browserbasierte Umsetzung der Modalitätskomponenten stellt HTTP jedoch die naheliegendste Option dar. Bei diesem Protokoll existiert jedoch keine Möglichkeit, Daten direkt vom Server zu den einzelnen Clients zu übermitteln. Diese müssen zuerst eine Abfrage stellen und Daten explizit anfordern. Im MONA-Projekt wurde zur Lösung des Problems ein Browserplugin verwendet. Im Rahmen dieser Arbeit wird allerdings ein clientseitiges Polling Anwendung finden, sprich, die Clients werden in festgelegten Intervallen Daten vom Server abrufen. Dies zum Einen, um jeden Browser ohne weiteren Installationsaufwand verwenden zu können, und zum Anderen aufgrund der begrenzten Zahl an Clients, die im Rahmen der Forschungsaktivitäten hier zeitgleich aktiv sind. Eine Änderung dieses Verfahrens, sollte sie notwendig werden, ist jedenfalls einfach möglich. 6.1.5 Applikationsservices Jedes dieser Services beinhaltet die Logik einer eigenen multimodalen Anwendung. Wie bereits erwähnt, benötigt der Interaktionsmanager zur Abarbeitung der Dialogsteuerung Dokumente, die diesen Dialog beschreiben. Die Applikationsservices stellen dementsprechend ein für ihre jeweilige Aufgabe formuliertes Dokument zur Verfügung. In der nachfolgenden Implementierung wird es sich dabei um das SCXML-Format handeln. Es steht jedem Service frei, andere Formate zu verwenden, sofern eine entsprechende Service Factory existiert, die Dialogservices auf Basis dieses anderen Dokumentenformates generieren kann. Weiters liegt es in der Verantwortung dieser Services, Beschreibungen für sämtliche Benutzungsschnittstellen zu liefern, die für die jeweilige Anwendung benötigt werden. Dies stellt leider zurzeit einen gewissen Aufwand dar, der in der Zukunft allerdings durch die Verwendung genereller UI-Beschreibungssprachen abgefedert werden könnte. Die Applikationsservices haben weiterhin die Möglichkeit, auf den Smart Home Kontext zuzugreifen. Benutzer- oder modalitätsbezogene Informationen werden vorrangig über den Benutzer- und Modalitätsmanager bezogen. Allgemeiner Kontext kann direkt über den Kontextmanager akquiriert werden. Diese Informationen können anwendungsintern verwendet werden, aber auch bereits bei der Generierung der Dialog- oder UI-Beschreibungen. Beispielsweise könnte eine Anwendung über die Benutzerpräferenzen erkennen, 63 6.1 Statische Aspekte dass es sich im aktuellen Fall um einen blinden Anwender handelt und dementsprechend nur sprachliche Modalitäten in die Interaktion miteinbeziehen. Eine weitere wichtige Funktion der Applikationsservices besteht darin, mit dem Smart Home selbst zu interagieren. Wenn über die multimodale Schnittstelle ein Steuerungsbefehl eingeht, also zum Beispiel das Licht in einem Raum eingeschaltet werden soll, so muss dies auch in irgendeiner Form umgesetzt werden. Diese Umsetzung geschieht dadurch, dass ausgehend vom verantwortlichen Applikationsservice die für den Schaltvorgang notwendigen Geräteservices gesucht werden, die auf der zugrundeliegenden Plattform von Felsing [15] existieren und die entsprechenden Endgeräte repräsentieren. Über diese Geräteservices können die Schaltvorgänge anschließend einfach durchgeführt werden. Das Ergebnis, in diesem Fall also das Einschalten sämtlicher Lampen in einem Raum, wird über den Kontext wieder ersichtlich und kann, da die Applikation ja Zugang zu diesem Kontext hat, wieder auf den Benutzungsschnittstellen dargestellt werden. Einen Spezialfall stellt in diesem Zusammenhang das Administrationsservice dar. Im eigentlichen Sinne handelt es sich hierbei ebenfalls um eine Applikation im multimodalen Kontext, jedoch mit einer festgelegten Funktion. Dieses Service kümmert sich um die Verwaltung der aktuell mit dem System verbundenen Modalitäten. Es regelt, welche Modalität welcher Anwendung zugewiesen ist und welche Modalitäten sich zusammen in einer Gruppe, einer Session befinden. Im Rahmen des W3C verwendet man hierfür wie gesagt auch den Begriff des gemeinsamen Kontextes. Dieser darf allerdings nicht mit dem Smart Home Kontext verwechselt werden. Er beschreibt vielmehr, welche Modalitäten gerade zusammen in einer Benutzerinteraktion tätig sind. Obwohl sich das Konzept auf den Entwurf des W3C stützt, wird die vorliegende Arbeit im weiteren Verlauf im Sinne der Eindeutigkeit hierfür im Weiteren den Begriff Session verwenden. Die Basis, aufgrund derer diesbezügliche Entscheidungen vom Administrationsservice getroffen werden, kann unterschiedlich sein. Eine Ausprägung, die auch innerhalb der ersten Implementierung umgesetzt wird, überlässt dem Benutzer selbst diese Entscheidungskraft. Dem Benutzer wird also angezeigt, welche Modalitäten gerade aktiv sind, ob und an welche Anwendung sie gerade angebunden sind und wie ihre Gruppierung untereinander aussieht. Der Benutzer selbst kann die Modalitäten anschließend umgruppieren und für einzelne Modalitäten oder Modalitätsgruppen Anwendungen starten. 64 6.2 Dynamische Aspekte Es wären natürlich auch andere Ausprägungen möglich, die zum Beispiel mittels Kontext und Reasoning eine Gruppierung bzw. Umgruppierung der Modalitäten vornehmen und Anwendungen starten. Hätte man Kontextdaten über die genaue Position von Menschen und Geräten zur Verfügung, so könnte man auf dieser Grundlage beispielsweise ein Administrationsservice entwerfen, das immer diejenigen Modalitäten eines Benutzers zusammenfasst, die sich gerade im selben Raum befinden und diese Gruppierung ändert wenn der Benutzer den Raum wechselt. Dadurch wäre es möglich, ein so genanntes follow-me-Szenario umzusetzen, bei dem eine Anwendung den Hausbewohnern über die Displays mehrerer Räume hinweg folgt, sofern sie diese durchqueren. Selbstverständlich würde solch ein Administrationsservice dementsprechend auch Benutzerpräferenzen auswerten, die unter anderem angeben, für welche Benutzer und/oder Anwendungen dieses Verhalten überhaupt erwünscht ist. Anzumerken sei weiterhin, dass für eine umfassende Funktionalität des Frameworks zumindest ein solches Service existieren muss, durchaus aber mehrere zeitgleich existieren können. 6.2 6.2.1 Dynamische Aspekte Interaktion Der Informationsaustausch innerhalb der SOA-Plattform erfolgt zum Einen gemäß des serviceorientierten Prinzips über die angebotenen Funktionen der an der Interaktion beteiligten Services selbst. Zum Anderen existiert ein Nachrichtenbus, der unter anderem zur Übermittlung von Steuerungssignalen zwischen den Applikationsservices und den Geräteservices verwendet wird. Dementsprechend wird solch ein Steuerungssignal nicht direkt an ein spezifisches Geräteservice geschickt, sondern es wird eine Nachricht mit einem entsprechenden Topic versendet, die von sämtlichen Geräteservices empfangen wird. Nur diejenigen, die sich in der Folge für diese Nachricht verantwortlich sehen, verarbeiten sie und führen diverse Funktionen aus. Zwischen der SOA-Plattform und den externen Modalitäten selbst findet eine andere Form des Datenaustausches statt, der vom W3C spezifiziert und im entsprechenden Kapitel theoretisch andiskutiert wurde. Es handelt sich um die MMI-Lifecycle-Event-API. Wie bereits erwähnt, existiert eine Reihe von 18 unterschiedlichen Eventtypen, die bei der Steuerung der Modalitäten Verwendung findet. Diese kann man in der Art ihrer Funktion grob in zwei Klassen einteilen. Zum Einen existieren Typen wie das NewContextRequest- 65 6.2 Dynamische Aspekte , ClearContextRequest- oder das StatusRequest Event mit ihren zugehörigen Antwort-Events, über die anwendungsunabhängig die Ankopplung und Verwaltung von Modalitäten koordiniert werden kann. Events dieser Typen werden also vorranging vom Interaktionsmanager selbst versendet bzw. empfangen, unabhängig von der Applikation, die hier im Hintergrund eine Rolle spielt. Zum Anderen werden Eventtypen wie zum Beispiel das ExtensionNotification Event nur anwendungsintern verwendet und deshalb auch nur von den Dialogservices der Applikationen selbst verarbeitet. Als das Datenformat, mit dem die Informationen innerhalb der Nachrichten gekapselt werden, findet EMMA Verwendung 6.2.2 Sessionmanagement Der Lebenszyklus einer Modalitätskomponente erstreckt sich über die drei Phasen des Verbindungsaufbaus, der Interaktion zwischen Benutzer und diversen multimodalen Applikationen und des Verbindungsabbaus. Der genaue Ablauf dieser Abschnitte wird nun durch die folgenden Sequenzdiagramme dargestellt. Abb. 6.2: Sequenzdiagramm - Login fehlgeschlagen Zum Verbindungsaufbau sei ergänzend erwähnt, dass innerhalb des W3CEntwurfes nicht genau spezifiziert wird, wie die Authentifizierung bzw. Autorisierung durchzuführen ist. Auch existieren innerhalb der MMI-LifecycleEvents keine diesbezüglichen Properties. Aus diesem Grund wird dieser Part in der Konzeption wie folgt umgesetzt. Die erste Nachricht, die das Framework von einer neuen Modalitätskomponente erhält, ist das NewContextRequest-Event. Weiters besitzen alle Eventtypen laut W3C-Spezifikation einen 66 6.2 Dynamische Aspekte Abb. 6.3: Sequenzdiagramm - Login erfolgreich allgemeinen Datenbereich, in dem implementierungsspezifische Informationen übermittelt werden können. Für die korrekte Anmeldung der Modalität im System ist es hier nun zwingend notwendig, dass innerhalb des Datenbereichs des ersten NewContextRequest-Events die Authentifizierungsinformationen, wie Benutzername und Passwort, enthalten sind. Auch optionale Benutzer oder Modalitätseigenschaften können darüberhinaus noch enthalten sein. In den Abbildungen 6.2 und 6.3 ist nun der Login-Vorgang im negativen und positiven Fall ersichtlich. Das initiale Event von der Modalität zum Interaktionsmanager ist wie erwähnt ein NewContextRequest-Event, das alle notwendigen benutzer- und modalitätsspezifischen Daten enthält. Der Interaktionsmanager stellt damit eine Authentifizierungsanfrage an den Modalitäts- und Benutzermanager, der seinerseits eine Anfrage an das Kontext-Service richtet, um an die entsprechenden Benutzerdaten zu gelangen. Sind diese verfügbar, erfolgt der Authentifizierungsvorgang. Ist dieser nicht erfolgreich, kommt es zu einer entsprechenden Rückantwort an den Interaktionsmanager, der seinerseits ein NewContextResponse-Event generiert, das eine negative Antwort sowie eine Problembeschreibung beinhaltet. Dieses Event wird danach an die Modalitätskomponente gesendet. Ist die Benutzerauthentifizierung jedoch erfolgreich, so werden im Datenmodell des Interaktionsmanagers die relevanten Informationen der Modalität und des Benutzers für die spätere Verwendung hinterlegt und ein NewContextResponse-Event erzeugt, das eine positive Statusmeldung und die der 67 6.2 Dynamische Aspekte Modalität nun zugewiesene ContextId (SessionId) beinhaltet. Abb. 6.4: Sequenzdiagramm - Zuweisung einer Applikation zu einer Session Einer Session können im Laufe ihrer Existenz mehrere multimodale Applikationen zugewiesen werden. Die Abläufe bei so einer Zuweisung sind in Abbildung 6.4 zu sehen. Hierfür erzeugt der Interaktionsmanager ein neues Dialogservice, das den Dialog zu einer dedizierten Anwendung abarbeiten soll. Dazu muss dieses neue Service eine Anfrage an das entsprechende Anwendungsservice stellen, das daraufhin, in Abhängigkeit von diversen Benutzerpräferenzen, ein SCXML-Dokument generiert und retourniert. Mit Hilfe dieser Dialogbeschreibung kann das Dialogservice nun den Dialog starten und dem Interaktionsmanager diesen erfolgreichen Start mitteilen. Dieser aktualisiert daraufhin sein internes Datenmodell und hält fest, dass diese Session nun genau diese Anwendung bearbeitet. Die weiteren Schritte hängen nun natürlich von der jeweiligen Anwendung ab. Im Allgemeinen ergibt sich jedoch ein relativ einheitlicher Startvorgang. Es erfolgt eine Anforderung der Inhaltsbeschreibungen an den Anwendungsservice, der diese Inhalte entsprechend den Modalitätspräferenzen aufbereitet und zurückgibt. Daraufhin werden diese innerhalb eines StartRequest-Events an die Modalitäten übermittelt, was diese dazu veranlasst, ihre Darstellung anhand der UI-Beschreibungen neu aufzubauen und mit einem StartResponse-Event zu bestätigen. Sämtliche weiteren Abläufe sind nun applikationsspezifisch und lassen sich nicht verallgemeinern. Beispiele dazu finden sich in Kapitel 9, wo 68 6.2 Dynamische Aspekte im Rahmen eines Szenarios einige Abläufe illustriert werden. Abb. 6.5: Sequenzdiagramm - Verbindungstrennung Während eine Modalität aktiv und mit dem Framework verbunden ist, werden kontinuierlich Statusinformationen hin und her gesendet wie das in Abbildung 6.5 gezeigt wird. Kommt es hierbei zu einem Timeout, so ist die Modalität nicht mehr länger aktiv und muss dementsprechend entfernt werden. Eine Modalität kann durch ein StatusResponse-Event auch explizit mitteilen, dass sie nun offline geht, indem das Statusfeld des Events einen entsprechenden Eintrag enthält. Das Entfernen selbst geschieht über den Modalitäts- und Benutzermanager. Nachdem die Modalität entfernt wurde, überprüft der Interaktionsmanager des Weiteren, ob es sich hierbei um das letzte Mitglied in der jeweiligen Session gehandelt hat. Ist dies der Fall, so beendet er das zugehörige Dialogservice ebenfalls. Existieren noch weitere Modalitäten, so informiert er das Dialogservice lediglich über das Fehlen der Modalität, damit dieser in der Folge darauf reagieren kann, sofern dies notwendig sein sollte. 69 7 Implementierung In diesem Kapitel wird nun ausgehend von dem zuvor erstellten Konzept die konkrete Umsetzung erläutert und veranschaulicht. Zu diesem Zweck werden zunächst die wichtigsten verwendeten Technologien herausgegriffen und in aller Kürze vorgestellt. Anschließend werden die Anknüpfungspunkte an die zugrunde liegende Plattform der parallelen Diplomarbeit [15] dargestellt, sowohl was die Kontextakquirierung als auch was den Zugriff auf die unterschiedlichen Smart Home Komponenten betrifft, um eine Grundlage zu bilden, auf der die konkrete Implementierung geschildert werden kann. 7.1 7.1.1 Verwendete Technologien OSGI Die OSGI (Open Services Gateway Initiative) Allianz wurde im Jahr 1999 gegründet und setzte sich als Ziel die Entwicklung einer Spezifikation für die Umsetzung einer offenen und einheitlichen Plattform, auf der serviceorientiert gearbeitet werden kann. Softwarekomponenten, gekapselt als einzelne Services, sollten einfach und koordiniert entwickelt, vertrieben und verwaltet werden können. Diese Spezifikation wurde ausgehend von ihrer Urform in Version 1.0 stetig weiterentwickelt und steht heute in der Version 4.1 zur Verfügung. Es existiert bereits eine Reihe von Java-basierten Umsetzungen dieser Spezifikation, sowohl auf kommerzieller als auch auf OpenSource-Basis. Bekannte Open-Source-OSGI-Frameworks wären unter anderem Knopflerfish, Apache Felix oder Equinox, wobei letzteres direkt innerhalb der Entwicklungsumgebung Eclipse integriert ist. Auch Eclipse selber basiert im Übrigen auf OSGI. Bei Equinox handelt es sich selbst auch um das Framework, das bei der Implementierung im Rahmen dieser Arbeit Verwendung findet [51]. 7.1 Verwendete Technologien Der Aufbau des OSGI-Frameworks ist sehr schön am Schichtenmodell in Abbildung 7.1 zu sehen. Über alle Ebenen hinweg erstreckt sich das OSGISicherheitsmodell, das auf der Java-2-Spezifikation aufsetzt und diese erweitert. Die Verwendung dieser Schicht ist optional, sie wird auch in der Implementierung im Rahmen der Diplomarbeit lediglich zur Benutzerauthentifizierung eingesetzt. Abb. 7.1: OSGI Schichtenmodell, angelehnt an die OSGi Service Platform Core Specification [33] Auf der Modulebene werden Softwarekomponenten als sogenannte Bundles beschrieben. Konkret handelt es sich bei einem Bundle um eine JARDatei, die Java-Klassen, OSGI-spezifische Informationen und zusätzliche Ressourcen beinhaltet, die zusammen eine bestimmte Funktionalität bereitstellen. Innerhalb einer OSGI-Plattform stellen diese Bundles die einzige Möglichkeit dar, Java basierte Anwendungen zu entwickeln. Sie können auch sehr einfach an eine andere OSGI-Plattform übermittelt und dort zur Laufzeit integriert werden [33]. Die einzelnen Bundles unterliegen außerdem einem definierten Lebenszyklus, den sie durchlaufen. Sie befinden sich zu einem bestimmten Zeitpunkt immer in einem gewissen Status. Nach der erfolgreichen Integration eines Bundles in das Framework befindet sich dieses im installed -Zustand. Sind alle Ressourcen verfügbar, die das Bundle benötigt, um lauffähig zu sein, so geht es in den resolved -Status über. Nun kann es jederzeit gestartet werden. Ist dies der Fall, so wechselt es in den starting-Zustand, in dem initiale Funktionen ausgeführt werden, die im Bundle selbst definiert wurden. Anschließend befindet es sich im active-Status und die Funktionalität des Bundles steht im Framework zur Verfügung. Beim Deaktivieren geht das Bundle in den stopping-Zustand über, in dem angegebene Finalisierungsmethoden angestoßen werden. Nach der Deinstallation befindet es sich im uninstalled -Zustand und 71 7.1 Verwendete Technologien kann nicht mehr verwendet oder gestartet werden [33]. Bundles stellen ihre Funktionalität wiederum als Services zur Verfügung. Ein Service ist in diesem Fall ein Java-Objekt, das vom jeweiligen Bundle, wenn es aktiv wird, über ein oder mehrere Java-Interfaces in einem gemeinsamen Serviceregister eingetragen wird. Ein Bundle kann dabei eine Vielzahl von Services beinhalten und registrieren. Durch diese Eintragung sind wieder andere Bundles in der Lage, die entsprechenden Services zu finden, für sich zu binden und in weiterer Folge auch zu verwenden. Wird ein Bundle gestoppt, so werden auch die von ihm bereitgestellten Services aus dem Register entfernt und alle davon abhängigen Services benachrichtigt [33]. Auf dieser Grundlage ist es nun sehr komfortabel möglich, Service orientiert zu entwickeln. Die im Framework verfügbaren Services lassen sich einfach suchen und verwenden, neue Services können leicht integriert werden. Bestehende Services können ohne großen Aufwand durch andere ersetzt werden. Die Open-Source-Implementierungen sind inzwischen sehr ausgereift. Es existiert eine große Zahl an bereits verfügbaren Services, auf die man im Rahmen einer Softwareentwicklung zurückgreifen kann und nicht erst selbst implementieren muss. Alle diese Punkte und auch die Tatsache, dass OSGI in sehr vielen Projekten erfolgreich eingesetzt wird (z.B. im AMIGO-Projekt [44]), sprechen für eine Verwendung dieser Technologie als Basis für die Implementierung im Zuge dieser Arbeit. 7.1.2 Commons SCXML Ausgehend von der Spezifikation der Dialogbeschreibungssprache SCXML, die in Kapitel 7 bereits beschrieben wurde, gibt es eine Reihe von Implementierungen, welche darauf basierende Zustandsautomaten realisieren. Eine solche Implementierung findet im Rahmen des Apache-Commons-Projektes statt und trägt die Bezeichnung Commons SCXML. Commons SCXML ist aktuell in der Version 0.9 verfügbar und stellt eine umfassende Umsetzung des W3C-Entwurfes dar. Aufgrund der Tatsache, dass sich der zugrunde liegende Entwurf stetig verändert und weiterentwickelt, wird auch die Implementierung ständig den neuen Anforderungen angepasst. Den Kern der Commons SCXML API kann man dennoch als stabil bezeichnen, da hier auch der Entwurf relativ final zu sein scheint. Andere Bereiche, wie die Beschreibung des Datenmodells oder Elemente wie das invoke-Tag, mit dem man innerhalb eines Zustandsautomaten einen weiteren instanziieren kann, werden sich in Zukunft sehr wahrscheinlich noch ändern, um der W3C-Spezifikation genügen zu können [45]. 72 7.1 Verwendete Technologien Für die Verwendung dieser Technologie als Laufzeitumgebung der Zustandsautomaten im praktischen Teil dieser Arbeit sprechen neben der guten und weitreichenden Umsetzung der Spezifikation noch weitere Punkte: Commons SCXML basiert auf der Programmiersprache Java, die auch hauptsächlich zur Implementierung des praktischen Teils herangezogen wird, nicht zuletzt durch die Verwendung der Equinox-OSGI-Plattform als Ausgangsbasis, die ja gleichfalls in Java implementiert wurde. Des Weiteren existiert eine sehr große und auch sehr aktive Community, die zur Weiterentwicklung von Commons SCXML beiträgt und auftretende Fragen beantworten kann [45]. Hinzu kommt noch die Tatsache, dass es kein großes Problem darstellt, auf dieser Technologie basierende Zustandsautomaten als Services innerhalb von OSGI verfügbar zu machen. Auch frameworkspezifische Erweiterungen sind ohne großen Aufwand zu integrieren, wie beispielsweise die Generierung von MMI-Lifecycle-Events durch ein Tag innerhalb eines SCXML-Dokumentes. 7.1.3 CMU Sphinx Das Sphinx-Spracherkennungssystem wurde an der Carnegie Mellon University entwickelt und liegt aktuell in der Version 4 vor. Es basiert wie die bereits erwähnten Technologien ebenfalls auf Java und ist als Open Source frei verfügbar. Bei der Entwicklung waren neben dem CMU auch noch Firmen wie Sun Microsystems und Mitsubishi beteiligt. Die Architektur von Sphinx-4 ist in Abbildung 7.2 ersichtlich. Sie kann grob in drei größere Module unterteilt werden, wobei jedes dieser Module von Applikationen angesteuert werden kann, die Sphinx zur Spracherkennung verwenden. Weiters ist der Aufbau auch innerhalb dieser Komponenten sehr stark modularisiert, wodurch das ganze Framework sehr flexibel wird, betrachtet man im Vergleich andere Spracherkennungsprogramme oder auch Vorgängerversionen von Sphinx 4. Das Frontend ist dafür verantwortlich, Sprachsignale zu empfangen und in bearbeitbare Blöcke zu unterteilen, sowie den Beginn und das Ende einer Spracheingabe festzustellen. Hierbei werden unterschiedliche Modi wie clickto-talk oder push-to-talk unterstützt. Bei Ersterem gibt der Benutzer durch eine Eingabe den Start der Spracheingabe bekannt und das System ermittelt das Ende. Bei Letzterem wird sowohl der Start- als auch der Endpunkt vom Benutzer festgelegt [25]. Der Linguist enthält eine zur Dekodierung erforderliche Wissensbasis in 73 7.1 Verwendete Technologien Abb. 7.2: Sphinx-4 Architektur, angelehnt an Walker et al. [42] Form von Sprach- und Akustikmodellen sowie auch ein Aussprachewörterbuch. Die Aufgabe dieser Komponente ist die Generierung eines Suchgraphen, mit dessen Hilfe der Dekodierer in der Folge eine Spracherkennung durchführen kann. Wie alle Teile der Architektur ist auch dieser Part austauschbar und ermöglicht somit die Verwendung einer auf die jeweilige Situation angepassten Wissensbasis. Bei einfachen Implementierungen, die nur einige unterschiedliche Wörter in den Spracheingaben zu erwarten haben, kann eine sehr einfache und schnelle Umsetzung eingesetzt werden. Bei einem umfangreicheren Vokabular kann man sich für eine komplexere Wissensbasis entscheiden. Das Sprachmodell beinhaltet hierbei die Struktur der Sprache, also welche Wörter in welcher Reihenfolge und Wahrscheinlichkeit auftreten können. Das Akustikmodell dient zum Mapping der eingegangenen Sprachlaute über das Frontend auf bearbeitbare Eingaben und Wortfragmente. Das Aussprachewörterbuch stellt für sämtliche Wörter des Sprachmodells dar, wie diese ausgesprochen werden. Diese Aussprache bricht die Wörter in kleinere Unterteilungen und Wortfragmente, die ihrerseits im Akustikmodell zu finden sind [42]. Im Dekoder-Modul erfolgt anschließend die eigentliche Spracherkennung. Auf der einen Seite erfolgt der Input der im Frontend ermittelten Sprachfragmente, auf der anderen Seite bekommt er vom Linguisten einen entsprechenden Suchgraphen übermittelt. Es handelt sich dabei um einen gerichteten Graphen, dessen Knotenpunkte Zwischenzustände einer Spracherkennung darstellen. Hierbei kann man differenzieren zwischen Knoten, die die Sprachfragmente anhand des Akustikmodells identifizieren und sozusagen auf 74 7.1 Verwendete Technologien der untersten Ebene direkt mit den eingegangenen Sprachinformationen arbeiten, und Knoten, die eine Ebene darüber anhand des Wörterbuches und Sprachmodells darauf aufbauend Wortteile und Wörter bilden können. Die Übergänge zwischen den Zuständen sind durch Wahrscheinlichkeiten gewichtet. Mit Hilfe dieses Suchgraphen werden nun aus den erhaltenen Eingaben Hypothesen generiert und Ergebnisobjekte gebildet, die alle Pfade durch den Suchgraphen enthalten, die zu einem Endzustand geführt haben. Weiters werden noch die Wahrscheinlichkeiten aller Wege festgehalten. Dieses Ergebnisobjekt wird dann anschließend an die Applikation retourniert. Die Anwendungen, die Sphinx-4 zur Spracherkennung verwenden, haben darüberhinaus noch die Möglichkeit, kontrollierend auf diesen Dekodierungsvorgang einzuwirken und so selbst ein Teil des Spracherkennungsvorganges zu werden [42]. 7.1.4 FreeTTS Sphinx-4 findet also Verwendung bei der Erkennung und Verarbeitung von Spracheingaben. Als Gegenpart dazu eignet sich das von Sun entwickelte FreeTTS (text-to-speech) System. Es wurde, wie die übrigen vorgestellten Technologien, ebenfalls in Java umgesetzt und basiert auf zwei früher entwickelten Systemen. Zum Einen auf flite, das wie auch Sphinx an der Carnegie Mellon University in C implementiert wurde, zum Anderen auf Festival unter C++, für das Sun Microsystems verantwortlich zeichnet. FreeTTS versucht nun, die Vorteile von flite, die vor allem in der guten Performance zu finden waren, und die Flexibilität von Festival in einer gemeinsamen Implementierung zu vereinen [47]. Um von einem geschriebenen Text zu einer gesprochenen Ausgabe zu gelangen, sind eine Reihe von Schritten notwendig, die FreeTTS durchlaufen muss [41]: Textnormalisierung: Hier wird der zu verarbeitende Text in eine Reihe von Wörtern umgewandelt. Auch Spezialfälle wie Zahlen, Zeiten oder Datumsangaben werden hier in entsprechende Wörter überführt. Linguistische Analyse: Im Rahmen dieser Analyse werden semantische Informationen wie die Phrasierung der einzelnen Wörter extrahiert. Lexikalische Analyse: In diesem Schritt werden die einzelnen Silben der Wörter ermittelt und ihre Betonung festgelegt. Dies geschieht anhand eines Wörterbuches oder, wenn kein passender Eintrag gefunden werden kann, auch auf Basis einfacher Mappings von Buchstaben zu Lauten. Prosodiegenerierung: Es genügt nicht, einfach die eben ermittelten Silben nacheinander wiederzugeben. Bei der Aussprache sind noch weitere Fak- 75 7.2 Umsetzung toren zu berücksichtigen, wie zum Beispiel Tonhöhen- oder Lautstärkeunterschiede, Dauer einer Aussprache und auftretende Pausen. Solche Sprachinformationen werden in diesem Schritt hinzugefügt. Sprachsynthese: Hier findet die eigentliche Generierung von Audiosignalen statt, basierend auf den zuvor ermittelten Informationen. Dieser Schritt ist der arbeitsintensivste, da hier eine Reihe von Gleitkommaoperationen durchgeführt werden müssen. Durch die Verwendung von Java mit einem sehr gut optimierenden Compiler als Grundlage und durch die Vereinigung der positiven Charakteristiken der beiden anderen erwähnten text-to-speech-Technologien konnte eine signifikante Verbesserung der Leistungsfähigkeit erzielt werden, was ebenfalls sehr für die Verwendung von FreeTTS als text-to-speech-Software spricht [41]. 7.2 Umsetzung Die Umsetzung der im vorangegangenen Kapitel vorgestellten Architektur erfolgt nun mittels der eben erläuterten Technologien. Als Grundlage dient die serviceorientierte OSGI-Plattform, auf der die einzelnen Komponenten als Bundles registriert werden und deren Funktionalität als Services im OSGIFramework verfügbar gemacht wird. Da solche Services innerhalb von OSGI über ihre Schnittstellen definiert und registriert werden, ist deren Definition und Strukturierung hier von zentraler Bedeutung. Nachfolgend werden Implementierungsdetails aller im Konzept vorgestellten Komponenten gegeben, und es wird insbesondere auf deren Schnittstellen zu anderen Services hin Bezug genommen. Abbildung 7.3 zeigt dazu ein entsprechendes Komponentenmodell. 7.2.1 Interaktionsmanager Der Interaktionsmanager stellt, wie bereits erwähnt, die zentrale Komponente in dieser Architektur dar. Aus diesem Grund exportiert er eine Reihe von Services mit den entsprechenden Schnittstellen, um den übrigen Komponenten eine Kommunikation mit ihm zu ermöglichen. Erwähnt sei hierbei nochmals, dass die Steuerung selbst nicht innerhalb dieser Komponente erfolgt, sondern als eigener SCXML-Dialog ausgelagert ist. Das führt zu einer größeren Flexibilität. Diese Auslagerung betrifft auch sämtliche Dialoge aller laufenden Applikationen. Die Servicefactory, die sich um die Generierung der einzelnen Dialogservices kümmert, ist aus Gründen der Übersichtlichkeit nicht in dem Diagramm aufgeführt. Die exportierten Schnittstellen ergeben sich hierbei wie folgt: 76 7.2 Umsetzung 77 Abb. 7.3: Komponenten und Schnittstellen IDialogEngineConnector: Über die hier enthaltenen Methoden erfolgt eine Kommunikation der Dialogkomponenten mit dem Interaktionsmanager. Über die Methode receiveInternalEvent werden Ereignisse, welche in dem Dialog ausgelöst werden, der den Interaktionsmanager steuert, übermittelt. In der Folge können intern im Interaktionsmanager Funktionsaufrufe erfolgen und dem Ereignis entsprechende Aktionen gesetzt werden. Über receiveApplicationInputEvent werden applikationsspezifische Ereignisse von den Dialogkomponenten entgegengenommen und an die zugehörige Applikationskomponente weitergeleitet. Komplementär dazu werden über receiveOutboundMMIEvent Dialogereignisse empfangen, die zur Aussendung von MMI-Lifecycle-Events führen, um mit den angeschlossenen Modalitäten zu kommunizieren. Über dialogFinished wird dem Interaktionsmanager mitgeteilt, dass der entsprechende Dialog in einem Endzustand angekommen ist und beendet wurde. IModalityConnector: Über diese Schnittstelle und ihre einzige Methode receiveInboundMMIEvent werden eingehende MMI-Lifecycle-Events empfangen. IMMIApplicationConnector: Diese Schnittstelle dient wie die zuvor erläuterte zum Empfang von Ereignissen, diesmal jedoch auf der Anwendungsseite mittels receiveApplicationOutputEvent. 7.2 Umsetzung Schnittstelle IDialogEngineConnector Methode reveiveInternalEvent receiveApplicationInputEvent receiveOutboundMMIEvent dialogFinished IModalityConnector receiveInboundMMIEvent IMMIApplicationConnector receiveApplicationOutputEvent IMMIAdministrationConnector startApplication moveModality getContextListing Tab. 7.1: Schnittstellenübersicht Interaktionsmanager IMMIAdministrationConnector: Einen Sonderfall der Anwendungen stellen die erwähnten Administrationsapplikationen dar. Diese verfügen neben der Funktionalität normaler Anwendungen über die Möglichkeit, steuernd in die Verwaltung von Modalitäten einzugreifen, die an das Framework angebunden sind. Dazu bedienen sie sich der folgenden Methoden innerhalb dieses Interfaces: Mittels getContextListing kann eine Übersicht aller momentan aktiven Sessions und Modalitäten angefordert werden. Über startApplication kann einer laufenden Session und somit aller zugeteilten Modalitäten innerhalb dieser Session, eine andere MMI-Applikation zugewiesen werden. Die bereits aktive Anwendung wird hierbei beendet. Mittels moveModality ist es möglich, eine Modalität von einer Session in eine andere zu verschieben. Dazu muss allerdings noch Folgendes gesagt werden: Eine Modalität aus einer Session zu entfernen, kann die laufende Session gefährden. Existierten Interaktionsmöglichkeiten nur über diese eine Modalität, so sind sie nach deren Entfernung natürlich nicht mehr verfügbar. Aus diesem Grund müssen Anwendungen, die komplementäre Modalitäten verwenden, auch Maßnahmen treffen, die verhindern, dass eine Session unbrauchbar werden kann. Auch das Einbringen einer Modalität in eine bereits laufende Session ist mit Schwierigkeiten verbunden, da der Status, in dem sich die Anwendung der Session gerade befindet, übermittelt werden muss. Weitere Details hierzu finden sich in der Folge bei der Beschreibung der Applikationskomponenten. 7.2.2 Dialogservices Die Dialogservices basieren in der aktuellen Implementierung auf SCXMLBeschreibungen und bieten ihrerseits ein Interface, über das der Interaktionsmanager auf die Funktionen dieser Services Zugriff nehmen kann. Es ist auch 78 7.2 Umsetzung 79 ohne weiteres möglich, das System um einen zusätzlichen Dialogservicetyp zu erweitern, der eine andere Form der Dialogbeschreibung verwendet und versteht. Die hier verwendete Schnittstelle trägt die Bezeichnung IDialogEngine. Über die Methoden start und stop kann die Abarbeitung des jeweiligen Dialogs begonnen oder beendet werden. Mittels isRunning kann der diesbezügliche Status auch abgefragt werden. Es existiert keine eigene Methode, über die dem Service eine Dialogbeschreibung übermittelt werden kann, da dies bereits bei der Initialisierung des Dialogservices durch die Servicefactory festgelegt wird. Sehr wohl gibt es aber natürlich Möglichkeiten, auf den internen Dialogablauf Einfluss zu nehmen: Schnittstelle Methode IDialogEngine start stop isRunning receiveMMIEvent receiveApplicationEvent Tab. 7.2: Schnittstellenübersicht Dialogservices Mittels receiveMMIEvent werden MMI-Lifecycle-Events vom Service empfangen, die von den angeschlossenen Modalitäten eingehen und die für diesen Dialog bestimmt sind, also quasi Eingaben von Benutzerseite darstellen. Die Methode receiveApplicationEvent dient zur Übermittlung von Informationen von der Anwendungsseite her. Hierbei ist zu beachten, dass ein solches Applikationsereignis durchaus nicht nur auf den Ablauf eines einzelnen Dialogservices Einfluss nehmen muss. Es können zu einem beliebigen Zeitpunkt mehrere Dialoge im Rahmen einer einzelnen Anwendung laufen, wenn mehrere Sessions dazu aktiv sind. Ein applikationsseitiges Event, wie zum Beispiel die Änderung des Status einer Lampe von AN auf AUS, kann und muss in sämtlichen multimodalen Sessions bearbeitet werden, die diese Lampe zu einem bestimmten Zeitpunkt abbilden. 7.2.3 Modalitätsadapter Zur Kommunikation mit den angeschlossenen Modalitäten außerhalb des Frameworks dienen die so genannten Modalitätsadapter. Diese sind in der Lage, die MMI-Lifecycle-Events über unterschiedliche Protokolle zu versenden und zu empfangen. In Rahmen der Implementierung wird ein konkreter Modalitätsadapter umgesetzt, mit dessen Hilfe über HTTP kommuniziert wer- 7.2 Umsetzung 80 den kann. Daraus resultiert auch die Bezeichnung des Services als HTTPAdapter. Es ist ohne weiteres möglich, zusätzliche Adapterservices hinzuzufügen, um weitere Protokolle zu unterstützen. Der Interaktionsmanager integriert neu gefundene Services durch die Unterstützung der zugrunde liegenden SOA-Plattform automatisch in die Kommunikationsvorgänge. Die Verwendung von HTTP sollte im Zuge der ersten Realisierung durchaus ausreichend sein, da dieses Protokoll sehr verbreitet ist und bereits die Einbindung vieler Geräte auf einfachem Wege erlaubt. Das Interface eines Modalitätsadapters, IModalityAdapter, stellt folgende Funktionalität zur Verfügung: Schnittstelle Methode IModalityAdapter establishConnection rearangeConnection closeConnection sendMMIEvent Tab. 7.3: Schnittstellenübersicht Modalitätsadapter Die Methode establishConnection dient dazu, Informationen über eine Modalität, wie die aktuelle Session in der sie sich befindet, zu hinterlegen, bzw. eine Modalität im HTTP-Adapter zu registrieren. Dies geschieht, nachdem die Modalität im System erfolgreich eingeloggt wurde. Mittels rearangeConnection wird eine eventuelle Änderung der Zugehörigkeit bearbeitet, also der Transfer einer Modalität von einer Session in eine andere. Über closeConnection wird mitgeteilt, dass eine bestimmte Modalität nicht mehr aktiv ist, sei es auf Grund eines Timeouts oder durch ein Logout, und deren Informationen gelöscht werden sollen. Die eben beschriebenen Methoden sind im Prinzip nicht für sämtliche Modalitätsadapter interessant und notwendig. Im Falle von HTTP als Kommunikationsprotokoll sind sie es aber. Hier ist es nicht möglich, Informationen auf direktem Weg an die Clients zu übermitteln, da HTTP ein solches Vorgehen nicht unterstützt. Ein Informationsaustausch kann jeweils nur von der Clientseite initiiert werden. Aus diesem Grund müssen vom Framework ausgehende Nachrichten in einem Puffer zwischengespeichert werden, ehe sie im Zuge eines kontinuierlichen Pollingverfahrens vom Client abgeholt werden. Dies macht es notwendig, Informationen über die Modalitäten an den Puffer zu knüpfen um sicherzustellen, dass sämtliche Modalitäten auch alle notwendigen Nachrichten erhalten. Die wichtigste Funktionalität wird über sendMMIEvent bereitgestellt, nämlich das Versenden von MMI-Lifecycle-Events. Solch ein Vorgang würde sich im Falle dieses speziellen HTTP-Services in Form des Ablegens eines Events in 7.2 Umsetzung 81 den entsprechenden Modalitätspuffer darstellen. 7.2.4 Modalitäts- und Benutzermanager Dieses Service dient, wie bereits erwähnt, zur Verwaltung von Benutzer- und Modalitätsinformationen. Dementsprechende Funktionalität wird durch die Methoden der IUserModalityManagerService-Schnittstelle bereitgestellt. Eine der wichtigsten Methoden ist hierbei attachModality, die bei einem Verbindungsaufbau mit einer neuen Modalität Verwendung findet. Hier wird auf das Kontextservice zurückgegriffen, um den über eine bestimmte Modalität zugreifenden Benutzer zu authentifizieren. Bei einem Erfolg werden weitere Parameter sowohl aus den initialen Informationen beim Verbindungsaufbau als auch aus dem Kontextservice extrahiert und ins System übermittelt. Der Interaktionsmanager kann in weiterer Folge eine Registrierung der neuen Modalität vornehmen. Weitere Methoden wie isUser, isAdministrator oder hasRole liefern Informationen bezüglich der Benutzerrollen. Diese sind relevant dafür, welche Anwendungen der Benutzer ausführen kann und auch, inwiefern er Rechte innerhalb bestimmter Applikationen besitzt. Schnittstelle Methode IUserModalityManagerService attachModality isUser isAdministrator hasRole addNewUser updateUser deleteUser getUser registerUserListener unregisterUserListener savePersistent Tab. 7.4: Schnittstellenübersicht UMM Die übrige Funktionalität, die diese Schnittstelle anbietet, zeigt sich verantwortlich für die Benutzerverwaltung. Es können neue Benutzer angelegt und bestehende gelöscht oder bearbeitet werden. Hier ist außerdem zu beachten, dass im Zuge der prototypischen Entwicklung kein besonderes Augenmerk auf die Sicherheitsaspekte gelegt worden ist. Zurzeit ist es nach diesem Schema jedem Service innerhalb des Frameworks möglich, Benutzerinformationen zu ändern, was in einem Produktivsystem selbstverständlich nicht der 7.2 Umsetzung Fall sein dürfte. Die zugrunde liegende OSGI-Plattform stellt allerdings eine Reihe von Werkzeugen zur Verfügung, mittels derer ein ausreichendes Sicherheitskonzept umgesetzt werden kann. So könnte damit der Zugriff auf diese administrativen Methoden eingeschränkt und nur speziellen autorisierten Services gestattet werden. 7.2.5 Applikationen Die bisher beschriebenen Komponenten stellen von einem konzeptionellen Gesichtspunkt her eher den statischen Teil des Frameworks dar, der sich in Zukunft nicht ändern muss, sofern man mit der gegebenen Funktionalität wie zum Beispiel SCXML als Dialogbeschreibungssprache oder HTTP als Kommunikationsprotokoll zufrieden ist. Im Gegensatz dazu stehen die Applikationsservices. Diese enthalten jeweils die Funktionalität einer bestimmten multimodalen Anwendung. Geht es also darum, das System um einen konkreten Anwendungsfall zu erweitern, geschieht dies dadurch, dass ein neues Applikationsservice in das Framework eingebunden und dadurch eine neue Funktionalität für den Benutzer verfügbar gemacht wird. Die Funktionalitäten aller aktiven Applikationsservices summieren sich im Endeffekt zum kompletten Funktionsumfang des multimodalen Interaktionsframeworks. Die Anzahl, Art und Vielfalt der im System aktuellen Applikationsservices kann, von diesem Standpunkt aus gesehen, durchaus als dynamisch bezeichnet werden. Vor allem auch dadurch, dass die Services zur Laufzeit hinzugefügt, geändert oder entfernt werden können. Sämtliche Informationen, die für eine multimodale Anwendung von Belang sind, werden über die IMMIApplication-Schnittstelle bereitgestellt. Darunter fallen grundlegende Daten wie Anwendungsname oder eine Kurzbeschreibung der Funktionalität, die über die Methoden getName und getInformation bezogen werden können. Ebenso interessant ist natürlich der Dialogtyp der Anwendung, also welche Art der Dialogbeschreibung hier Verwendung findet. Im Normalfall wird es sich dabei um SCXML-Dokumente handeln. Mittels getDialogDescriptionSource kann eine URI zur jeweiligen Dialogbeschreibung bezogen werden. Diese wird vom Interaktionsmanager bei der Initiierung eines neuen Dialogservices für diese Anwendung benutzt, um eine entsprechende Beschreibung zu akquirieren. Die Beschreibung der Inhalte und des Aufbaus der Benutzungsschnittstellen selbst hängt von den Modalitäten ab, die die Anwendung unterstützt. Nach dem Entwurf des W3C können diese Inhalte entweder innerhalb eines MMI-Lifecycle-Events direkt übermittelt werden, oder es wird lediglich eine URI mitgesendet, anhand derer die Inhalte bezogen werden können. Die erste Möglichkeit ei- 82 7.2 Umsetzung Schnittstelle IMMIApplication Methode getApplicationId getName getInformation getDialogDescriptionSource getDialogDescriptionType receiveEvent getAuthorizationRoles supportsModalityShift IMMIAdministrationApplication addContext removeContext addModality removeModality changeModalityContext Tab. 7.5: Schnittstellenübersicht Applikationen ner inline-Übermittlung ist vom Anwendungsstandpunkt her recht einfach, da die MMI-Lifecycle-Events mitsamt ihrem Inhalt entweder direkt in einer Applikationsfunktion generiert werden können oder der Inhalt im Zuge der Dialogbeschreibungsgenerierung in diese eingebettet wird. Wird im Gegensatz dazu nur eine URI übermittelt, muss jedoch sichergestellt werden, dass die Inhalte am definierten Ort auch abrufbar sind. Wie das erfolgen kann, hängt sehr von dem verwendeten Übertragungsverfahren ab. In der aktuellen Umsetzung, die stark webbasiert arbeitet, läuft dieser Vorgang wie folgt ab, Erweiterungen können in der Zukunft analog dazu erfolgen: Die Anwendungskomponenten veröffentlichen neben dem Anwendungsservice selbst noch zusätzliche Services mit anderen Schnittstellen, über die die Inhalte abgerufen werden können. Modalitätsadapter halten in der Serviceregistrierung Ausschau nach solchen Services und veröffentlichen anschließend den über sie erhaltenen Inhalt für die an sie angeschlossenen Modalitäten. Im nachfolgenden Kapitel wird dieser Vorgang anhand eines Beispiels noch etwas anschaulicher erläutert. Über die Methode getAuthorizationRoles werden die Rollen definiert, die autorisiert sind, diese Anwendung zu verwenden. Wie bereits erwähnt, ist es außerdem wichtig festzustellen, ob eine Anwendung mit dem Hinzufügen neuer Modalitäten zur Laufzeit umgehen kann. Es handelt sich hierbei meist nicht um Trivialfälle, sondern es muss ein erhöhter Aufwand getrieben werden, um die Synchronität aller Modalitäten innerhalb einer Session sicherzu- 83 7.2 Umsetzung stellen. Über die Methode supportsModalityShift kann nun geprüft werden, ob die Anwendung damit umgehen kann und Events, die das Eintreten einer neuen Modalität in die Session ankündigen, bearbeitet werden. Ist dies nicht der Fall, so darf ein Wechsel einer Modalität in eine laufende Session dieser Anwendung nicht stattfinden. Der gegenteilige Fall, also das Ausscheiden einer Modalität aus einer laufenden Session, muss allerdings von jeder Anwendung unterstützt werden, da die Verbindung zu einer Modalität jederzeit abbrechen kann. Insbesondere Anwendungen mit komplementären Modalitäten müssen sich mit diesem Problem befassen und Events, die das Ausscheiden einer Modalität ankündigen, verarbeiten. Die zentrale Methode dieser Schnittstelle stellt aber sicherlich receiveEvent dar, mittels derer Ereignisse innerhalb eines laufenden Dialoges dieser Anwendung empfangen und notwendige Funktionen, wie zum Beispiel das Ansteuern von Aktoren im Smart Home, ausgeführt werden können. Einen erwähnten Spezialfall stellen Applikationen dar, deren Funktion die Administration der angeschlossenen Modalitäten ist. Dazu stellen diese über eine zusätzliche Schnittstelle IMMIAdministrationApplication eine Kommunikationsmöglichkeit mit dem Interaktionsmanager zur Verfügung, um administrative Informationen empfangen zu können. Über die Methode addContext wird die Existenz einer neuen Session mitgeteilt und mit removeContext wird über die Entfernung einer bestehenden Session berichtet. Dasselbe geschieht auf der Modalitätsseite durch addModality und removeModality. Über eine letzte und wichtige Methode changeModalityContext wird der Wechsel einer Modalität von einer Session in eine andere angezeigt. Mithilfe dieser Methoden und der bereits erläuterten in der IMMIAdministrationConnector Schnittstelle auf Interaktionsmanagerseite kann eine Anwendung die Verteilung der verfügbaren Modalitäten überwachen und auch steuern. Da es sich hierbei ebenfalls um eine multimodale Anwendung handelt, kann diese Steuerung vom Benutzer ausgehen oder aber auch ohne Benutzerinteraktion im Hintergrund laufen und anhand des aktuellen Smart-Home-Kontexts agieren. 7.2.6 Modalitäten Innerhalb des multimodalen Frameworks existiert eine Reihe von unterstützenden Services zur Generierung von MMI-Lifecycle-Events. Modalitätsadapter kümmern sich um das Versenden und Empfangen dieser Nachrichten. Diese Funktionalität muss nun natürlich auch clientseitig verfügbar sein, wenn sich nicht jede Anwendung selbst darum kümmern soll. Zu diesem Zweck 84 7.3 Anwendung wurden im Laufe der vorliegenden Arbeit zwei Bibliotheken implementiert, welche die clientseitige Kommunikation über das HTTP-Protokoll, das Polling und die MMI-Lifecycle-Event-Generierung vereinfachen. Es handelt sich hierbei zum einen um eine JavaScript-Bibliothek für webbasierte Clientsysteme, die im Besonderen für die verbreiteten Browser Internet Explorer, Firefox und Opera optimiert wurde und lediglich in den HTML-Code inkludiert werden muss. Der Empfang von MMI-Lifecycle-Events kann von Scripts innerhalb der HTML-Seiten anschließend über eine definierte Funktion stattfinden. Framework-spezifische Aufgaben, wie zum Beispiel das Senden von keep-alive-Nachrichten, laufen im Hintergrund automatisch ab und bedürfen keiner weiteren Aufmerksamkeit von Seiten der Entwickler. Zum anderen wurde eine entsprechende Funktionalität auch als Java-Bibliothek umgesetzt, die von Java-Anwendungen genutzt werden kann, um mit dem multimodalen Framework zu kommunizieren. 7.3 Anwendung Die Aufgabenstellung dieser Arbeit umfasst aber nicht nur die Erstellung eines multimodalen Frameworks, sondern fordert ebenso die Sicherstellung einer grundlegenden Funktionalität, um mit dem Smart Home und allen enthaltenen Komponenten interagieren zu können. Zu diesem Zweck wurde eine Reihe von Szenarios definiert und umgesetzt, die in der Folge kurz beschrieben werden. Ein weiterer Vorteil bei der Umsetzung solcher Szenarien durch multimodale Applikationen ist überdies die Verifizierung der Anwendbarkeit des Frameworks selbst. Zum Einen geht es nun also darum, das Smart Home und die darin befindlichen Komponenten zu steuern bzw. deren aktuellen Status abfragen zu können. Zu diesem Zweck befasst sich eine Applikation damit, diese Steuerung über mehrere unterschiedliche Geräte und Modalitäten hinweg zu ermöglichen. Auf der visuellen Seite werden browserbasierte graphische Schnittstellen angeboten, die sich in Abhängigkeit der Geräteeigenschaften wie beispielsweise der Bildschirmgröße anpassen. Eine Unterteilung ist in zwei Kategorien vorgesehen: in mobile Geräte auf der einen und Standgeräte auf der anderen Seite. Diese erhalten jeweils eine unterschiedliche Schnittstellenbeschreibung. Erstere visualisieren die Informationen mittels einer einfacheren und graphisch weniger aufwändigen Listenansicht der Räume, der darin befindlichen Geräte sowie deren aktuellen Status. Letztere stellen den Zustand des Smart Homes auf einem Grundriss dar, einer graphischen Wiederspiegelung des Hausgrundrisses, in dem die Geräte mittels entsprechender Symbole repräsentiert sind. Auf der sprachlichen Seite wird die beschriebene 85 7.3 Anwendung Shinx-4-Technologie zur Spracheingabe und -erkennung, sowie FreeTTS zur Sprachausgabe verwendet, um Informationen während des Navigierens durch die Anwendung auszugeben. Zum Anderen darf auch der wichtige Punkt des Administrierens des Smart Homes nicht aus den Augen gelassen werden. Es muss eine Möglichkeit der Benutzerverwaltung gegeben sein. Benutzer müssen neu angelegt, gelöscht und bearbeitet werden können. Darüber hinaus soll es auch möglich sein, benutzerspezifisch Rollen zu vergeben, um deren Status und Verantwortlichkeiten festlegen zu können. Andere Applikationen können anschließend über den Benutzer und Modalitätsmanager auf diese Rollen Zugriff nehmen und ihre angebotenen Funktionen auf dieser Grundlage anpassen. Um eine Steuerung der Komponenten überhaupt erst durchführen zu können, müssen diese zuallererst natürlich konfiguriert werden. Dem System muss bekannt sein, das es sich bei Gerät A zum Beispiel um eine dimmbare Lampe handelt, die sich innerhalb des Wohnzimmers befindet. Solche Informationen werden neben anderen im Smart Home Kontext verwaltet und müssen über den Kontextmanager bekanntgemacht werden. Die Administrierung selbst funktioniert ebenfalls auf Basis eines Grundrisses, auf dem zu Beginn sämtliche Orte innerhalb des Smart Homes definiert werden können. Neben der Ortsbezeichnung werden auch deren Umrisse auf dem Grundriss angegeben. Auf diese Weise gelangt man am Ende zu einem kompletten Schema, das zeigt, welche Bereiche des Grundrisses welchen Ort des Smart Homes spezifizieren. Weiters werden sämtliche noch nicht konfigurierten Komponenten aufgelistet und können auf dem Grundriss positioniert werden. Eine weitere implementierte Anwendung wurde bereits einige Male im Zuge der Arbeit erwähnt. Es handelt sich hierbei um diejenige, mit deren Hilfe die bestehenden Sessions und angebundenen Modalitäten verwaltet werden können und die bislang als MMI-Administrations-Applikation bezeichnet wurde. Auch diese ist wie alle anderen im Grunde eine multimodale Anwendung, mit einer in diese Richtung erweiterten Funktionalität. Zur Implementierung dieser Applikationen sei noch zu sagen, dass im administrativen Bereich der multimodale Faktor eher im Hintergrund stand. So ist die Konfiguration der Smart-Home-Komponenten nur graphisch auf einem Standgerät möglich. Dies aus dem einfachen Grund, weil die administrativen Tätigkeiten zwar äußerst wichtig sind, aber nicht so häufig ausgeführt werden müssen. Außerdem ist eine Konfiguration auch sehr mühsam, wenn sie beispielsweise auf einem mobilen Endgerät mit beschränkten In- 86 7.3 Anwendung teraktionsmöglichkeiten, wie einem kleinen Bildschirm, durchgeführt werden soll. Anders bei den Applikationen, die tagtäglich und zur Steuerung des Smart Homes verwendet werden. Hier kann eine mögliche Multimodalität große Vorteile bringen, weshalb auch bei der Umsetzung der Steuerungsanwendung großer Wert auf die Einbindung mehrerer Modalitäten gelegt wurde. Ausgehend von den Umsetzungen dieser Anwendungen soll nun in der Folge die Herangehensweise beim Entwickeln von multimodalen Applikationen auf Basis dieses Frameworks erläutert werden. Im Konkreten wird dies anhand des Beispiels der Steuerungsanwendung geschehen, da es sich hier um diejenige handelt, welche den größten Fokus auf die Einbindung unterschiedlicher Modalitäten legt. 7.3.1 Dialogbeschreibung Der erste Schritt bei der Erstellung einer multimodalen Applikation umfasst die Erstellung einer Dialogbeschreibung, welche das vorgesehene Szenario in ausreichender Weise beschreibt. Zum aktuellen Zeitpunkt wird es sich dabei um ein SCXML-Dokument handeln, dessen URI dem Interaktionsmanager über die definierte Schnittstelle bekanntgemacht wird und die dieser heranzieht, um ein neues Dialogservice zu initialisieren, sollte diese Anwendung innerhalb einer Session gestartet werden. Hier sei nochmals verdeutlicht, dass es sich dabei nur um die Beschreibung des Dialoges handelt. Die Ausführung geschieht in den Dialogservices für die unterschiedlichen Sessions, was bedeutet, dass eine Anwendung zur gleichen Zeit durchaus parallel innerhalb mehrerer Sessions aktiv sein kann. In Abbildung 7.4 ist das Zustandsdiagramm zu sehen, welches den Dialog für die Steuerungsanwendung widerspiegelt, allerdings zur Veranschaulichung auf einer etwas einfacheren Ebene. Der grundlegende Ablauf ist darauf ersichtlich und soll im Nachfolgenden erläutert werden. Der Start der Anwendung ist geprägt durch Initialisierungsvorgänge. Hier geht es vor allem darum, den zugehörigen Modalitäten den Beginn einer neuen Anwendung mitzuteilen. Es werden also diverse StartRequest-MMILifecycle-Events gesendet, welche ihrerseits Informationen über den Schnittstellenaufbau beinhalten oder zumindest auf entsprechende Dokumente verweisen. Auf diese Weise wird sichergestellt, dass die entsprechenden Modalitäten auf dem neuesten Stand sind und nachfolgende Events auch entsprechend verarbeiten können. Bei dieser konkreten Anwendung werden drei unterschiedliche StartRequest-Events generiert und gesendet. Eines initialisiert 87 7.3 Anwendung Abb. 7.4: Zustandsdiagramm der Beispielapplikation die grafischen Modalitäten auf mobilen Endgeräten, ein zweites diejenigen von Standgeräten und das dritte ist schließlich an sprachliche Modalitäten gerichtet. Im Anschluss an diese Initialisierungsphase werden nun zwei parallele Abläufe angestoßen, der Zustandsautomat befindet sich also zu einem Zeitpunkt in zwei verschiedenen Zuständen. Einerseits wird auf Meldungen gewartet, welche vom Applikationsservice generiert werden. Ändert sich beispielsweise der Zustand eines Gerätes im Smart Home, wird das Anwendungsservice davon in Kenntnis gesetzt und übermittelt diese Information nun an alle aktiven Dialogservices, die gerade unter dieser Applikation laufen. Wird die Meldung dort empfangen, erfolgt eine entsprechende Bearbeitung. Im Normalfall handelt es sich dabei um die Generierung und Versendung von MMI-Lifecycle-Events, die den Modalitäten über die Statusänderung berichten. Die Verarbeitung dieser Information innerhalb der Modalitäten erfolgt unterschiedlich und ist für das Framework selbst aufgrund des black-boxParadigmas irrelevant. Ist die Bearbeitung beendet, geht der Automat wieder auf den Wartezustand zurück und ist bereit für den Empfang der nächsten Applikationsnachricht. 88 7.3 Anwendung Auf der anderen Seite wird der aktuelle Zustand der Anwendung festgehalten. Nach der Initialisierung und beim Start wurde noch keinerlei Auswahl von der Benutzerseite her getroffen, was sich im Startzustand widerspiegelt. Interagiert der Benutzer nun über eine der angeschlossenen Modalitäten, so wird seine Aktion mittels eines MMI-Lifecycle-Events übermittelt und der Automat geht in einen entsprechenden anderen Zustand über. Im konkreten Fall wählt der Benutzer also entweder einen Ort oder ein Gerät aus und es erfolgt ein Zustandsübergang nach Ort ausgewählt bzw. nach Gerät ausgewählt. Innerhalb dieser Zustände erfolgt wiederum eine Abfolge von Tätigkeiten. Es werden Events an alle Modalitäten gesendet, um diese Änderung zu publizieren. Die Modalitäten verarbeiten diese Information und aktualisieren ihre Anzeige. Im Grundriss würde bei einer Ortsauswahl der aktuelle Ort beispielsweise hervorgehoben, sprachliche Modalitäten würden diese Änderung durch eine Sprachausgabe kundtun. Zwischen diesen drei Zuständen kann beliebig hin und her gewechselt werden. Kommt es nun zu einer Eingabe, die die Statusänderung einer Komponente zum Ziel hat, so wird dies im Zustand Gerätestatus ändern behandelt. Hier werden Nachrichten an das Applikationsservice gesendet, die dort die entsprechenden Vorgänge auslösen. Zu beachten ist hier im Besonderen, dass zu diesem Zeitpunkt keine Informationen an die anderen Modalitäten gesendet werden, sondern nur eine Kommunikation mit dem Backend vorliegt. Wenn die entsprechenden Aktionen vom Applikationsservice ausgeführt worden sind, so sendet es eine Nachricht an das Dialogservice, welches diese, wie bereits erwähnt, bearbeitet. Erst dort werden Informationen an die Modalitäten ausgesendet. Die Vorgehensweise ist vor allem deshalb notwendig, weil ja mehrere Dialogservices zu einer Applikation in mehreren Sessions zeitgleich laufen können. Auf diese Weise wird sichergestellt, dass eine Änderung des Systems, die in einer Session angestoßen wurde, auch an alle übrigen Sessions und deren Modalitäten übermittelt wird. Wird zu einem beliebigen Zeitpunkt ein MMI-Lifecycle-Event empfangen, in welchem das Ende der Anwendung gefordert wird, so geht der Automat einfach in den Endzustand über. Es ist hier nicht notwendig, weitere Informationen an die Modalitäten oder an das Applikationsservice zu übermitteln. Durch das Beenden des Automaten erkennt das Framework selbstständig das Ende der Anwendung innerhalb der Session, stoppt das beendete Dialogservice und generiert ein neues, welches die Standardanwendung beinhaltet, die läuft, solange keine andere Anwendung aktiv ist. Durch den Start dieser Anwendung werden wiederum Events an alle betreffenden Modalitäten gesendet und deren Status wird dadurch automatisch aktualisiert. 89 7.3 Anwendung 7.3.2 Schnittstellenbeschreibungen In der Initialisierungsphase werden also Schnittstellenbeschreibungen an die angebundenen Modalitäten gesendet. Es handelt sich dabei um Dokumente unterschiedlichen Typs, die innerhalb des Applikationsservices generiert werden. Hier können alle möglichen Auszeichnungssprachen Verwendung finden. Auf der visuellen Seite wird in der konkreten Umsetzung HTML verwendet, welches dynamisch aus JSP generiert wird. Zur Anbindung an das Framework existiert die erwähnte JavaScript-Bibliothek, die einfach in die HTMLBeschreibung eingebunden werden kann. Der Audiobereich wird durch eine relativ unkomplizierte Beschreibung des darzustellenden Inhaltes abgedeckt, in der die auszugebenden Sätze als Texte annotiert und die möglichen Benutzereingaben darauf mittels JSGF-Grammatiken [55] definiert werden. Die Modalitäten geben bei der Registrierung im System diejenigen Dokumenttypen bekannt, die von ihnen unterstützt werden. Mittels dieser Information entscheidet der Interaktionsmanager, welche MMI-Lifecycle-Events an welche Modalitäten gesendet werden sollen. Innerhalb der Applikation bzw. in der Dialogbeschreibung wird bei der Eventgenerierung lediglich der entsprechende Typ angegeben. Ist ein Event für alle Typen zulässig, so wird einfach kein Typ spezifiziert. Die Übermittlung der UI-Beschreibungen kann direkt innerhalb der MMILifecycle-Events im Datenbereich erfolgen. In diesem Fall muss der Inhalt lediglich generiert und in den Nachrichten verpackt werden. Der zweite Fall stellt sich etwas aufwändiger dar. Hier wird lediglich eine URI an die Modalitäten versendet, anhand derer die Inhalte zuerst bezogen werden müssen. Das setzt natürlich voraus, dass diese unter der angegebenen URI auch hinterlegt wurden. Das Verfahren hierzu erklärt sich wie folgt: Neben dem Applikationsservice selbst registriert die Applikationskomponente noch weitere Services in der Service Registry, über deren Schnittstellen typbezogen Inhalte in unterschiedlichen Auszeichnungssprachen akquiriert werden können. Die entsprechenden Modalitätsadapter suchen in der Service Registry nach solchen Services und veröffentlichen deren Inhalte unter der spezifizierten URI. Im konkreten Fall registriert die Applikationskomponente also Services unter den Schnittstellen IMMIJSPApplication und IMMIServletApplication. Ersteres Service ermöglicht es dem Modalitätsadapter, über die Methode getResourcePath die zu veröffentlichenden Dokumente zu finden, bei denen es sich in diesem Fall um JSP-Dateien handelt, und über getBeans auch die dazu notwendigen Java-Beans zu beziehen. Damit können nun die visuellen Modalitäten über die angegebene URI auf die Inhalte Zugriff nehmen. Das zweite Service dient zur Bereitstellung von Servlets, die über die Metho- 90 7.3 Anwendung de getApplicationServlets vom Modalitätsadapter bezogen und veröffentlicht werden. Auf diesem Wege beziehen in der Folge die sprachlichen Modalitäten ihre Inhaltsbeschreibungen. Einer Erweiterung dieser Serviceklassen, um Inhalte vielfältiger publizierbar zu machen, steht hier nichts im Wege. Der Nachteil, der sich im UI-Bereich offenbart, wurde bereits früher in der Arbeit erwähnt. Es müssen für jeden unterstützten Modalitätstyp unterschiedliche Beschreibungen generiert werden, was durch die Verwendung generischer UI-Beschreibungssprachen wie UIML, XIML, USIXml oder ähnliche sicherlich verbessert werden kann. Für den ersten Prototyp ist dies allerdings noch nicht notwendig, eine Erweiterung ist jedoch möglich, führt man sich das eben erläuterte Konzept vor Augen. Ein zusätzliches Rendering Service könnte beispielsweise nach Applikationsservices Ausschau halten, die solche generischen UI Beschreibungen publizieren. Diese könnten anschließend in die unterschiedlichsten Formate umgewandelt und auf demselben Wege, wie es zur Zeit die Applikationskomponenten durchführen, den Modalitätsadaptern wieder zur Verfügung gestellt werden. Natürlich kann diese Konvertierung auch in den Modalitätsadaptern selber geschehen. Es sind also sicherlich mehrere Wege dazu denk- und umsetzbar. 7.3.3 Applikationslogik Im Zuge der Dialogführung einer multimodalen Anwendung kommt es selbstverständlich zu Einflussnahmen auf die Komponenten innerhalb des Smart Homes. Umgekehrt kann sich eine Änderung des Smart-Home-Kontexts auf laufende Applikationen auswirken. Als einfaches Beispiel sei hier das Einschalten einer Lampe genannt. Über eine Benutzungsschnittstelle wird ein diesbezüglicher Wunsch empfangen und im Dialogservice bearbeitet. Dieses sendet eine Nachricht an das Anwendungsservice und stößt dadurch Funktionen an, die das Einschalten der Lampe als Ergebnis haben. Nachdem sich der Status der Lampe und somit der Kontext geändert hat, wird wiederum das Anwendungsservice darüber in Kenntnis gesetzt. Dieses reagiert darauf entsprechend und sendet ein Aktualisierungsevent an die laufenden Dialoge, die daraufhin alle angeschlossenen Modalitäten benachrichtigen. Die dazu notwendigen Abläufe innerhalb des Anwendungsservices müssen selbstverständlich definiert und implementiert werden. Die Applikationslogik stellt sozusagen das Bindeglied zwischen dem multimodalen Framework und der darunterliegenden Smart-Home-Plattform dar. 91 7.3 Anwendung 7.3.4 Exemplarischer Ablauf Nachfolgend soll nun anhand eines konkreten Beispiels der genaue Ablauf im Zuge einer multimodalen Sitzung geschildert werden. Der zugrunde liegende Anwendungsfall bildet hierzu folgende Aktionen ab: Es erfolgt zu Beginn ein Login über eine graphische Modalität A, welche darauf hin sämtliche zur Verfügung stehenden Applikationen aufzeigt. Über das Navigationsmenü erfolgt der Wechsel hin zur Modalitätsübersicht, auf der zu diesem Zeitpunkt lediglich diese eine aktive Modalität gelistet wird. Nun registriert sich eine weitere, diesmal jedoch sprachliche, Modalität B am System. Dieser Vorgang ist über Modalität A nachvollziehbar, da in diesem Augenblick die Darstellung erweitert und die Liste um B ergänzt wird. Mittels einer, in der Folge über Modalität A gestarteten Anwendung zur Grundrissübersicht, kann nun eine Lampe innerhalb des Smart Homes eingeschaltet werden. Eine solche Aktivität hat zu dem Zeitpunkt keine Auswirkung auf Modalität B, da dort noch keine Applikation gestartet wurde und dementsprechend keine Aktualisierungen nötig sind bzw. durchgeführt werden. Nach Beenden der Anwendung zur Grundrissübersicht erfolgt wiederum die Navigation zur Modalitätsübersicht, wo nun die beiden aktiven Modalitäten verbunden und in eine gemeinsame Gruppe verschoben werden. Ein erneuter Start der Grundriss-Übersicht zeigt nun deutlich, dass beide Modalitäten aktiv und synchron laufen, visueller Output über die graphische Oberfläche von A und akustische Ausgaben über die sprachliche Modalität B übermittelt werden. Um die zuvor eingeschaltete Lampe wieder auszuschalten, wird sie graphisch über A selektiert und sprachlich über B deaktiviert. Nach der Navigation auf die Anmeldeseite des Frameworks mittels eines Browsers erfolgt die Eingabe der Benutzerdaten. Nach der Eingabe werden diese innerhalb eines, in Abbildung 7.5 dargestellten, MMI-Lifecycle-Events (Zeile 6-9)verpackt und zusätzlich mit weiteren modalitätsbezogenen Informationen (Zeile 10-17) an den, im Framework befindlichen, Interaktionsmanager versendet. Über den Interaktionsmanager wird nach Empfang dieses Events der UserModalityManagerService bemüht, um den neuen Benutzer zu authentifizieren. Im Erfolgsfall wird ein neuer Kontext für diese Modalität generiert, darin modalitätsspezifische Informationen hinterlegt und die grundsätzliche Administrationsanwendung gestartet. Mit dem Retournieren des zugehörigen NewContextResponse-Events (Abbildung 7.6) wird die Modalität über ihre Identifikation (Zeile 2, target-Attibut) sowie den zugeordneten Kontext (Zeile 3, context-Attribut) informiert und der Login-Vorgang beendet. 92 7.3 Anwendung 93 Abb. 7.5: Initiales NewContextRequest-Event Im Zuge des Startens der Administrationsanwendung werden StartRequest-Events an alle existierenden Modalitäten innerhalb des entsprechenden Kontextes gesendet. Konkret befindet sich natürlich nur die eben registrierte Modalität innerhalb dieses Kontextes. Das an sie gerichtete MMI-LifecycleEvent ist in Abbildung 7.7 zu sehen. Welcher Inhalt übermittelt (Zeile 3, mmi:contentURL Bereich) wird, hängt von den spezifizierten Parametern der Applikation ab. In diesem Fall muss der Medientyp übereinstimmen und eine entsprechende Bildschirmauflösung zugrunde liegen. Abb. 7.6: NewContextResponse-Event Abb. 7.7: StartRequest-Event der Administrationsanwendung 7.3 Anwendung Mit dem Empfang dieses Events beginnt die Modalität damit, den übermittelten Inhalt darzustellen und auf Benutzereingaben bzw. weitere MMILifecycle-Events zu warten. Im vorliegenden Anwendungsfall findet nun ein Wechsel auf die Modalitätsübersicht statt. Dieser erfolgt durch eine benutzerseitige Eingabe, worauf hin ein applikationsinternes ExtensionNotification-Event, wie in Abbildung 7.8, generiert und übertragen wird. In diesem Fall reicht zur Identifizierung des Events der Bezeicher innerhalb des NameTags aus (Zeile 3). Serverseitig geschieht der Zustandsübergang im SCXMLAutomaten der zugehörigen Applikation, der in der Folge wieder die Aussendung von ExtensionNotification-Events an die Modalitäten triggert, um diese über den Wechsel der Ansicht in Kenntnis zu setzen. In der nun dargestellten Übersicht ist zur Zeit natürlich nur eine aktive Modalität abgebildet. Registriert sich nun die zweite, sprachgesteuerte Modalität B, so wird diese Änderung ebenfalls durch ExtensionNotification-Events publiziert und die Darstellung an den angeschlossenen Modalitäten angepasst. Ein Wechsel zurück zur Anwendungsübersicht erfolgt analog zur vorhergehenden Beschreibung. Abb. 7.8: ExtensionNotification-Event zum Wechsel zur Modalitätsübersicht Im nächsten Schritt startet die Anwendung zur Grundrissübersicht. Hier wird wiederum ein ExtensionNotification-Event generiert, welches am Server den Anwendungswechsel auslöst. Dazu wird ein neuer SCXML-Automat instanziert, welchem die SCXML-Beschreibung der Anwendung zur Grundrissübersicht zu Grunde liegt. Durch dessen Start werden wie schon bei der Administrationsapplikation StartRequest-Events ausgesendet, welche die angebundenen Modalitäten innerhalb des Kontextes aktualisieren. Dieser initiale Zustand ist in Abbildung 7.9 zu ersehen. In den Zeilen 8-16 wird ein MMI-Lifecycle-Event zur Initialisierung aller mobilen Geräte generiert (Zeile 10-12) und versendet (Zeile 13). Die Zeilen 18-26 sowie 28-35 erledigen die selbe Aufgabe für normale bzw. sprachgesteuerte Modalitäten. Auf dem nun dargestellten Grundriss kann die Lampe selektiert und aktiviert werden, was wiederum über anwendungsinterne ExtensionNotification-Events mit dem Server synchronisiert wird. An diesem Punkt sei die Verwendung vom EMMA-Beschreibungen erwähnt, welche verwendet werden um solche Benutzereingaben semantisch zu erfassen. Das gesamte MMI-Lifecycle- 94 7.3 Anwendung Abb. 7.9: Startzustand des SCXML Automaten der Grundrissübersicht Event zur Lampenselektion ist in Abbildung 7.10 ersichtlich. Die Zeilen 6 bis 12 umfassen den EMMA-Bereich, in dem sich Informationen des ausgewählten Aktors befinden (Zeile 8,9). Der Schaltvorgang selbst wird serverseitig über die API der Arbeit von Felsing [15] durchgeführt. Die zweite Modalität empfängt in dieser Zeit kein MMI-Lifecycle-Event, da sie sich in einem anderen Kontext als Modalität A befindet und keine Anwendung läuft, welche auf Aktorzustände Einfluss nehmen könnte. Bei Beenden der Anwendung geht der zugehörige SCXML-Automat in den Endzustand über. Der Interaktionsmanager erkennt dies und startet in der Folge einen neuen SCXML-Service, welcher die Standardanwendung beinhaltet. Über die dadurch erzeugten StartRequest-Events wird auch Mo- 95 7.3 Anwendung Abb. 7.10: ExtensionNotification-Event zur Lampenselektion inklusive EMMA-Beschreibungen dalität A auf den neusten Stand gebracht. Anschließend erfolgt in der Modalitätsübersicht eine Zusammenführung der beiden am System registrierten Modalitäten A und B in die selbe Gruppe bzw. den selben Kontext. Hierzu findet die, in der Schnittstelle zwischen Administrationsanwendung und Interaktionsmanager definierte, Methode moveModality Verwendung. Diese triggert den frameworkinternen Vorgang der Neuzuteilung von Modalität B in die Gruppe der Modalität A. Wie bereits erwähnt, ist dieser Vorgang nicht immer möglich. Die in der Zielgruppe laufende Anwendung muss diesen Modalitätswechsel auch unterstützen. Im Falle der gerade laufenden Standardanwendung ist dies der Fall. Der Beitritt einer neuen Modalität ist hier insofern geregelt, als das nach dem Eintritt des Neuzuganges die Ansicht auf die Anwendungsübersicht zurückgesetzt wird, und alle Modalitäten, also auch die Neue, mit StartRequest-Events bedacht werden. Beide Modalitäten laufen zu diesem Zeitpunkt synchron. Events, die durch Benutzereingaben ausgelöst werden, werden wie bereits gezeigt an das Framework versendet. Die dort angestoßenen Vorgänge können wiederum Events auslösen, die die Darstellung in allen beiden Modalitäten aktualisieren. Erfolgt nun ein erneuter Start der Anwendung zur Grundrissübersicht, so wird die visuelle Darstellung durch Audiokommentare ergänzt und Spracheingaben zur Steuerung sind möglich. Selbstverständlich gestalten sich die ausgetauschten Nachrichten je nach Inhaltstyp der Zielmodalität anders. Die graphische Modalität A wird nicht die selben Nachrichten empfangen wie die sprachliche Modalität B. In der aktuellen Umsetzung der Anwendung zur Grundrissübersicht werden auf graphischer Ebene Zustandsänderungen mittels ExtensionNotification-Events übermittelt. Sprachliche Modalitäten 96 7.3 Anwendung erhalten im Gegensatz dazu bei jeder Änderung ein StartRequest-Event mit den entsprechenden Inhalten. Erstere halten also einen Status aufrecht, welcher durch neue Events aktualisiert wird, wohingegen Letztere immer von Neuem initialisiert werden. Dies stellt natürlich nur eine mögliche Umsetzungsvariante dar, weitere sind vorstellbar. Als finalen Schritt innerhalb des definierten exemplarischen Ablaufes folgt nun noch die Selektion der Lampe über Modalität A, was über ein ExtensionNotification-Event übertragen wird sowie das Ausschalten der Lampe, was durch die Verwendung der StartRequests im Sprachbereich mittels des zugehörigen DoneNotification-Events an das Framework kommuniziert wird. 97 8 Diskussion In der vorliegenden Arbeit wurde ein Framework konzipiert und in der Folge auch implementiert, mit dem multimodale Applikationen zum Zwecke wissenschaftlicher Forschungsarbeit erstellt werden können. Nach der Definition der Anforderungen an das System wurde eine Reihe von bestehenden Frameworks und Projekten mit ähnlicher Zielsetzung gesucht und begutachtet. Die daraus gewonnenen Erkenntnisse waren bei der anschließenden Konzeptionierung von zentraler Bedeutung. Die Entscheidung, den Vorschlag des W3C als Grundlage zu nehmen, erwies sich als durchaus zielführend. Da bei dem Vergleich der bestehenden Projekte auch gewisse Ähnlichkeiten in den jeweils verwendeten Konzepten zu erkennen war und diese ebenfalls im W3C Entwurf grob abgebildet wurden, ergab sich dadurch eine solide Basis für das der vorliegenden Arbeit zugrundeliegende Konzept. Im Verlauf der Implementierung wurde ebenfalls die Anwendbarkeit der zugrunde liegenden Plattform von [15] getestet und die Steuerung der SmartHome-Komponenten sowie der Zugriff auf den Smart-Home-Kontext als ausreichend empfunden. Im Zuge der Implementierung, speziell der multimodalen Applikationen zeigte sich, dass anhand der bereitgestellten Schnittstellen sämtliche notwendigen Tätigkeiten ausgeführt werden konnten. Dank der Verwendung von OSGI als serviceorientierte Basis für die Implementierung wurde eine ausreichend hohe Flexibilität des Frameworks sichergestellt, was insbesondere im Hinblick auf den wissenschaftlichen Anwendungsbereich des Frameworks eine große Rolle spielt. Die Nachteile, die durch diese Lösung erkauft wurden, wirken sich im Gegenzug dazu nicht bzw. nur in sehr geringem Maße aus. Es muss gesagt werden, dass es sich bei der hier implementierten Lösung um ein zentrales System handelt. Sowohl was die 99 Steuerung der Smart-Home-Komponenten als auch die Verwaltung der angebundenen Geräte und Modalitäten zur Benutzerinteraktion betrifft. Kommt es zu einer Störung dieses Systems, so ist man unter Umständen nicht mehr in der Lage, auf seine Umgebung Einfluss zu nehmen und beispielsweise Lichter ein- und auszuschalten. Sollte das System in der Zukunft produktiv in einem Zuhause eingesetzt werden, so muss man sich zuvor Gedanken über die Ausfallsicherheit und eine Verteilung bzw. Redundanz innerhalb des Systems machen. OSGI bietet hier gewiss auch Lösungsmöglichkeiten an, auf die man in solch einem Fall zurückgreifen könnte. Im Bereich von wissenschaftlichen Forschungsprojekten, wie beispielsweise Usabilitystudien diverse multimodale UI´s betreffend, ist es allerdings vorteilhafter, ein einfaches und leicht erweiter- und veränderbares System zur Verfügung zu haben, um rasch neue Prototypanwendungen realisieren zu können. Während der Umsetzung der unterschiedlichen multimodalen Anwendungen gab es allerdings auch Anlass zur Kritik genau diesen Punkt betreffend. Die Verwendung von SCXML als Beschreibungssprache zur Abbildung der Abläufe innerhalb der Applikation führt zwar zu einer großen Flexibilität, die sich allerdings durch eine fehlende Werkzeugunterstützung schwierig handhaben lässt. Es gibt zur Zeit fast keine Programme, mit denen SCXMLBeschreibungen auf einfache Art und Weise, vielleicht grafisch, erstellt werden können. Es ist lediglich ein Plugin für den Rational Software Architect verfügbar, das UML-Diagramme in eine SCXML-Darstellung exportieren kann. Eine andere Möglichkeit wäre es, UML-Zustandsdiagramme mittels XSLT in SCXML-Dokumente überzuführen. Diese Lösungen sind allerdings nicht wirklich umfassend oder zufriedenstellend und in dieser Hinsicht gibt es sicher noch einen Entwicklungsbedarf. Die in der vorliegenden Arbeit verwendeten SCXML-Dokumente wurden mit einem Texteditor erstellt, was insbesondere bei umfangreicheren Anwendungen bald zu einem Problem werden könnte. In den vorhergehenden Kapiteln wurde an einigen Stellen darauf hingewiesen, dass für die Beschreibung der einzelnen Schnittstellen jeweils eigene dafür geeignete Beschreibungssprachen zum Einsatz kommen. Auch wurden Möglichkeiten dargelegt, durch die Verwendung von universellen UIBeschreibungssprachen wie z.B. XIML [49] oder UIML [52] eine Vereinfachung bei der Implementierung multimodaler Anwendungen zu erzielen. Dies geschah allerdings nur auf theroetischer Ebene, die Umsetzung im Rahmen der vorliegenden Arbeit stützte sich dennoch auf verbreitete Sprachen für spezielle UI-Bereiche wie XHTML oder VXML. Ein Grund hierfür war die einfachere Umsetzung des Frameworks, um den Aufwand der Implementie- 100 rung im Rahmen einer Diplomarbeit zu halten, wobei eine Erweiterung in der Zukunft durchaus angedacht wurde. Ein weiterer Grund hierfür waren allerdings auch die Problematiken, die solche generischen Schnittstellen mit sich bringen. Durch die automatische Generierung vieler UI´s aus einer Beschreibung heraus verliert man zum Teil die Kontrolle über das Aussehen der finalen Schnittstellen. Projekte, die sich damit befassen, versuchen diese Probleme auf unterschiedliche Weise zu lösen. Im MONA [4] Projekt arbeitet man ja beispielsweise mit einem entsprechenden Editor, der das Aussehen der UI´s in Echtzeit berechnet und darstellt. Eine zufrieden stellende endgültige Lösung ist hier allerdings noch nicht zu sehen, was entsprechende Forschungsarbeit in diesem Bereich notwendig macht. Ein sehr großer Vorteil des implementierten Frameworks ist in der Plattformunabhängigkeit zu sehen. Durch die Verwendung von Java als Grundlage ist man an keine konkrete Plattform gebunden. Da sämtlicher Datenaustausch zwischen diesem Java-basiertem Framework und den Modalitätskomponenten mittels eines XML-basierten Nachrichtenformates geschieht, ergeben sich überdies noch weitere Freiheiten bei der Umsetzung der Modalitätskomponenten. So müssen diese nicht ebenfalls in Java implementiert werden, auch viele andere Programmiersprachen wie z.B. C++ sind ohne weiteres denkbar, solange sie nur die definierte MMI-Event-API unterstützen. Bei der Implementierung im Zuge der vorliegenden Arbeit wurde neben Javabasierten Sprachmodalitäten wie erwähnt auch browserbasierte graphische Modalitäten erstellt. Dadurch ergibt sich eine sehr große Vielfalt an Geräten, die in der Lage sind, mit dem Framework zu interagieren, solange sie über einen entsprechenden Browser verfügen, mithilfe dessen die Nachrichten des Frameworks interpretiert werden können. Gerade in diesem Bereich gab es zwar einige Komplikationen, da unterschiedliche Browser identische Inhalte nicht unbedingt identisch verarbeiten. Diese wurden aber im Zuge der Implementierung einer Javascript-Bibliothek überwunden, vor Allem durch die Beschränkung auf die verbreiteten Browser Internet Explorer, Firefox und Opera. Durch die Verwendung all dieser Mechanismen wurde mit überschaubarem Aufwand ein großer Anwendungsbereich geschaffen. Zusammenfassend kann gesagt werden, dass die in der Zielsetzung definierten Anforderungen an das System durch die implementierte Umsetzung erreicht wurden. Die Interaktion mit den Smart-Home-Komponenten ist dadurch über verschiedene Modalitäten hinweg möglich. Beispielapplikationen wurden sowohl für visuelle als auch für sprachliche Modalitäten entwickelt und ermöglichen eine umfangreiche Einflussnahme der Bewohner auf ihre Umgebung. Anhand des verfügbaren Kontexts können Anpassungen erfol- 101 gen, sowohl das Aussehen der Schnittstellen als auch die Administration der Modalitäten betreffend. Die Anforderung, die im Rahmen der vorliegenden Arbeit noch nicht gänzlich erfüllt werden konnte, ist die Einfachheit der Entwicklung neuer multimodaler Anwendungen. Dies im Hinblick auf die fehlende Werkzeugunterstützung bei der Dialogbearbeitung und die Verwendung von schnittstellenspezifischen Beschreibungssprachen anstelle einer generischen Variante. 9 Ausblick Betrachtet man sich die Entwicklungen der letzten Jahre und die aktuelle Situation, wird schnell klar, dass im Smart-Home-Bereich ein großer Handlungs- und Forschungsbedarf existiert. Die realisierbaren Möglichkeiten vergrößern sich von Tag zu Tag, wohingegen die Bewohner dieser intelligenten Umgebungen unfähig sind, diese auch vollständig auszuschöpfen, vielmehr noch, sie durch die Funktionsvielfalt überwältigt und erdrückt werden. Mittels der Implementierung, die im Zuge von [15] und der hier vorliegenden Arbeit realisiert wurde, ist es möglich, auf diesem Gebiet Forschungsarbeit zu leisten und weiterführende Studien zu betreiben, um diese Probleme zu dämpfen und zu beseitigen. Aufgrund des Rahmens einer Diplomarbeit war es selbstverständlich nicht möglich, in jedem Bereich zu einer gänzlich zufriedenstellenden Lösung zu gelangen. Die deshalb notwendigen Einschränkungen wurden aber bereits zu Beginn der Arbeit formuliert und stellen gleichzeitig weiterführende Tätigkeiten dar, welche in zukünftigen Projekten aufgegriffen und umgesetzt werden können. Dazu zählen sicherlich die eben erwähnten Probleme der fehlenden Werkzeugunterstützung bei der Dialogentwicklung sowie die Tatsache, dass bisher keine generischen UI-Beschreibungen Verwendung finden. Hierzu sei auch noch Folgendes zu sagen: Einige der erwähnten generischen Schnittstellenbeschreibungssprachen, UsiXML sei hier als Beispiel genannt, arbeiten mit unterschiedlich abstrakten Modellen die ausgehend vom einem Aufgabenmodell über mehrere Schritte hin zu einem finalen UI und auch einer Dialogbeschreibung führen. Auch die SerCHo-MASP fußt auf solch einem Konzept. Demgegenüber steht die manuelle Erstellung von Dialogbeschreibungen in der der vorliegenden Arbeit zugrundeliegenden Implementierung. Eine Kombination dieser beiden Konzepte kann sich in weiterführenden Arbeiten je- 103 doch sicher als zielführend erweisen. Ausgehend von den Erkenntnissen in [67] ist dies jedenfalls durchführbar. Die automatische Generierung von UI- und Dialogbeschreibungen kann aus einem anfänglichem Aufgabenmodell heraus geschehen. Die dadurch erhaltenen Dokumente können in der Folge manuell nachbearbeitet und danach wieder auf die nächste Modellebene übergeführt werden, wo sich dieser Vorgang wiederholt. Bei einer Erweiterung des Frameworks um generische Schnittstellenbeschreibungen ist dieser Punkt sicherlich ebenfalls ins Auge zu fassen und verspricht interessante Ergebnisse. Ein Augenmerk sollte des Weiteren auch auf die Prinzipien der multimodalen Fusion und Fission gelegt werden, welche in der vorliegenden Arbeit zwar theoretisch behandelt, in der praktischen Umsetzung allerdings ausgeklammert wurden. Durch einen Ausbau des Frameworks in diese Richtung kann sicherlich eine große Erweiterung der multimodalen Interaktionsmöglichkeiten erzielt werden. Soll das Framework in Zukunft auch in einem produktiven Umfeld erfolgreich eingesetzt werden, so muss man sich überdies noch mit den Sicherheitsaspekten auseinandersetzen. Sicherheit zum Einen im Hinblick auf potenzielle Angriffe von außerhalb. Die aktuelle Implementierung beinhaltet wie gesagt nur sehr rudimentäte Authentifizierungs- und Autorisierungsmechanismen, welche relativ einfach überwunden werden können und jedenfalls verbessert werden sollten. In diesem Zuge sollte man sich übrigens auch mit den unteren Architekturebenen befassen, da das aktuell verwendete FHZ-System zur Gebäudesteuerung die Daten unverschlüsselt überträgt und ebenfalls einen sehr guten Angriffspunkt darstellt. Zum Anderen geht es hier noch um die Ausfallsicherheit des Systems. Da es sich um eine zentrale Lösung handelt, kann eine Störung merkbare Konsequenzen nach sich ziehen, welche sich auf die Bewohner des Smart Homes negativ auswirken können, falls sie beispielsweise nicht mehr in der Lage sind, Lichter ein oder aus zu schalten. Den größten Bereich zukünftiger Arbeiten stellen natürlich die multimodalen Anwendungen selbst dar, welche auf Basis dieses Frameworks realisiert werden können. Die Möglichkeiten sind hierbei sehr vielfältig. Unterschiedlichste Schnittstellenvariationen können auf unterschiedlichen Modalitäten erzeugt und in Usabilitystudien analysiert werden, es ist möglich, verschiedene Kombinationen von Modalitäten zu erproben und zu verfeinern, diverse Smart-Home-Szenarien können abgebildet und getestet werden etc. 104 Zusammenfassend kann gesagt werden, dass das implementierte und im Rahmen der vorliegenden Arbeit diskutierte Framework eine Grundlage bildet, auf der Forschung im multimodalen Bereich möglich ist, und welches sich in der Zukunft auf vielfältige Weise erweitern, verbessern und den Anforderungen anpassen lässt. A MMI-Lifecycle-Events Nachfolgend findet sich eine Auflistung der MMI-Lifecxcle-Events, wie sie vom W3C spezifiziert wurden und in der vorliegenden Arbeit Verwendung finden. newContextRequest (Modalitätskomponenten → Interaktionsmanager): <mmi:mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:newContextRequest source="someURI" requestID="request-1"> <media id="mediaID1>media1</media> <media id="mediaID2">media2</media> <mmi:data> <user> </name> </password> </user> <device> </properties> </device> </mmi:data> </mmi:newContextRequest> </mmi:mmi> newContextResponse (Interaktionsmanager → Modalitätskomponenten): <mmi:mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:newContextResponse target="someURI" requestID="request-1" status="success" context="URI-1"> <media>media1</media> <media>media2</media> </mmi:newContextResponse> </mmi:mmi> prepareRequest (Interaktionsmanager → Modalitätskomponenten, URI mit Verweis auf externe Schnittstellenbeschreibung): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:prepareRequest source="someURI" context="URI-1" requestID="request-1"> <mmi:contentURL href="someContentURI" max-age="" fetchtimeout="1s"/> </mmi:prepareRequest> </mmi> 106 prepareRequest(Interaktionsmanager → Modalitätskomponenten, Schnittstellenbeschreibung innerhalb des Events): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:prepareRequest source="someURI" context="URI-1" requestID="request-1" > <mmi:content> <vxml:vxml version="2.0"> <vxml:form> <vxml:block>Hello World!</vxml:block> </vxml:form> </vxml:vxml> </mmi:content> </mmi:prepareRequest> </mmi:mmi> prepareResponse (Modalitätskomponenten → Interaktionsmanager, Erfolgsfall): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:prepareResponse source="someURI" context="someURI" requestID="request-1" status="success"/> </mmi:mmi> prepareResponse (Modalitätskomponenten → Interaktionsmanager, Fehlerfall): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:prepareResponse source="someURI" context="someURI" requestID="request-1" status="failure"> <mmi:statusInfo> NotAuthorized </mmi:statusInfo> </mmi:prepareResponse> </mmi:mmi> startRequest (Interaktionsmanager → Modalitätskomponenten, URI mit Verweis auf externe Schnittstellenbeschreibung): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:startRequest source="someURI" context="URI-1" requestID="request-1"> <mmi:contentURL href="someContentURI" max-age="" fetchtimeout="1s"> </mmi:startRequest> </mmi> startResponse (Modalitätskomponenten → Interaktionsmanager): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:startResponse source="someURI" context="someURI" requestID="request-1" status="failure"> <mmi:statusInfo> NotAuthorized </mmi:statusInfo> </mmi:startResponse> </mmi:mmi> doneNotification (Modalitätskomponenten → Interaktionsmanager): <mmi:mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:doneNotification source="someURI" context="someURI" status="success" requestID="request-1" > <mmi:data> ... </mmi:data> </mmi:doneNotification> </mmi:mmi> cancelRequest (Interaktionsmanager → Modalitätskomponenten): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:cancelRequest context="someURI" source="someURI" immediate="true" requestID="request-1"> </mmi:cancelRequest> </mmi> 107 cancelResponse (Modalitätskomponenten → Interaktionsmanager): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:cancelResponse source="someURI" context="someURI" requestID="request-1" status="success"/> </mmi:cancelResponse> </mmi:mmi> pauseRequest (Interaktionsmanager → Modalitätskomponenten): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:pauseRequest context="someURI" source="someURI" immediate="true" requestID="request-1"/> </mmi> pauseResponse (Modalitätskomponenten → Interaktionsmanager): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:cancelResponse source="someURI" context="someURI" requestID="request-1" status="success"/> </mmi:mmi> resumeRequest (Interaktionsmanager → Modalitätskomponenten): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:resumeRequest context="someURI" source="someURI" requestID="request-1"/> </mmi> resumeResponse (Modalitätskomponenten → Interaktionsmanager): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:resumelResponse source="someURI" context="someURI" requestID="request-2" status="success"/> </mmi:mmi> extensionNotification (Applikationsspezifisches Event, beide Richtungen sind möglich): <mmi:mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:extensionNotification name="appEvent" source="someURI" context="someURI" requestID="request-1" > <applicationdata/> </mmi:extensionNotification> </mmi:mmi> clearContextRequest (Interaktionsmanager → Modalitätskomponenten): <mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:clearContextRequest source="someURI" context="someURI" requestID="request-2"/> </mmi:mmi> statusRequest (Interaktionsmanager → Modalitätskomponenten): <mmi:mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:statusRequest requestAutomaticUpdate="true" source="someURI" requestID="request-3"/> </mmi:mmi> statusResponse (Modalitätskomponenten → Interaktionsmanager): <mmi:mmi xmlns="http://www.w3.org/2008/04/mmi-arch" version="1.0"> <mmi:statusResponse automaticUpdate="true" status="alive" source="someURI" requestID="request-3"/> </mmi:mmi> Abbildungsverzeichnis 3.1 3.2 Überblick über multimodale Interaktion. Angelehnt an Jaimes und Sebe [22] . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Fusion mehrerer Modalitäten [36] . . . . . . . . . . . . . . . . 17 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 Einfaches XHTML+Voice Dokument [65] . . . . . . . . . . . . EMBASSI Architektur. Angelehnt an Elting et al. [13] . . . . AMIGO-Architektur (vgl. [43]) . . . . . . . . . . . . . . . . . AMIGO UIS Architektur (vgl. [29]) . . . . . . . . . . . . . . . MONA-Architektur [4] . . . . . . . . . . . . . . . . . . . . . . MASP-Modellstruktur. Angelehnt an Blumendorf et al. [8] . . Concurrent Task Tree. Angelehnt an De Boeck et al. [11] . . . MMI-Architektur. Angelehnt an den W3C Working Draft [58] NewContextRequest MMI Life-Cycle-Event [58] . . . . . . . . 22 25 28 29 32 34 35 38 41 5.1 5.2 5.3 5.4 47 48 52 5.5 Stoppuhr-Diagramm (UML Annotation) [45] . . . . . . . . . . Stoppuhr-SCXML [45] . . . . . . . . . . . . . . . . . . . . . . UI-Generierung auf mehrere Zielplattformen [37] . . . . . . . . UIML-Modell. Angelehnt an UIML Version 4.0: Committee Draft [53] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Beispiel des möglichen Aufbaus eines EMMA-Dokumentes [46] 6.1 6.2 6.3 6.4 6.5 Architekturmodell . . . . . . . . . . . . . . . . . . . . . . . . . Sequenzdiagramm - Login fehlgeschlagen . . . . . . . . . . . . Sequenzdiagramm - Login erfolgreich . . . . . . . . . . . . . . Sequenzdiagramm - Zuweisung einer Applikation zu einer Session Sequenzdiagramm - Verbindungstrennung . . . . . . . . . . . 60 66 67 68 69 7.1 OSGI Schichtenmodell, angelehnt an die OSGi Service form Core Specification [33] . . . . . . . . . . . . . . . Sphinx-4 Architektur, angelehnt an Walker et al. [42] . Komponenten und Schnittstellen . . . . . . . . . . . . Zustandsdiagramm der Beispielapplikation . . . . . . . 71 74 77 88 7.2 7.3 7.4 Plat. . . . . . . . . . . . . . . . 54 56 109 7.5 7.6 7.7 7.8 Initiales NewContextRequest-Event . . . . . . . . . . . . . . . 93 NewContextResponse-Event . . . . . . . . . . . . . . . . . . . 93 StartRequest-Event der Administrationsanwendung . . . . . . 93 ExtensionNotification-Event zum Wechsel zur Modalitätsübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 7.9 Startzustand des SCXML Automaten der Grundrissübersicht . 95 7.10 ExtensionNotification-Event zur Lampenselektion inklusive EMMABeschreibungen . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Tabellenverzeichnis 7.1 7.2 7.3 7.4 7.5 Schnittstellenübersicht Schnittstellenübersicht Schnittstellenübersicht Schnittstellenübersicht Schnittstellenübersicht Interaktionsmanager Dialogservices . . . . Modalitätsadapter . UMM . . . . . . . . Applikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 79 80 81 83 Literaturverzeichnis [1] 1ST Amigo Project Deliverable D4.7 Intelligent User Services User Modeling and Profiling Service Software Developers Guide. Techn. Ber., http://www.hitech-projects.com/euprojects/amigo/ deliverables/amigo_3_d4.7_final.pdf, 2008. [2] André, E.: The Generation of Multimedia Presentations. In: R. Dale, H. M. und H. Somers (Hrsg.): A Handbook of Natural Language Processing: techniques and applications for the processing of language as text, S. 305–327. Marcel Dekker Inc., 2000. [3] Augusto, J. C. und P. J. McCullagh: Ambient Intelligence: Concepts and Applications.. Comput. Sci. Inf. Syst., 4(1):1–27, 2007. [4] Baillie, L., R. Schatz, R. Simon, H. Anegg, F. Wegscheider, G. Niklfeld und A. Gassner: Designing Mona: User Interactions with Multimodal Mobile Applications. HCI International 2005, 11th International Conference on Human-Computer Interaction, 2005. [5] Balfanz, D., M. Klein, A. Schmidt und M. Santi: Partizipative Entwicklung einer Middleware für AAL-Lösungen. GMS Medizinische Informatik, Biometrie und Epidemiologie, 4(3), 2008. [6] Beaudouin-Lafon, M.: Instrumental interaction: an interaction model for designing post-WIMP user interfaces. In: CHI ’00: Proceedings of the SIGCHI conference on Human factors in computing systems, S. 446–453, New York, NY, USA, 2000. ACM. [7] Blumendorf, M., S. Feuerstack und S. Albayrak: Multimodal user interfaces for smart environments: the multi-access service platform. In: AVI ’08: Proceedings of the working conference on Advanced visual interfaces, S. 478–479, New York, NY, USA, 2008. ACM. Literaturverzeichnis [8] Blumendorf, M., G. Lehmann, S. Feuerstack und S. Albayrak: Executable Models for Human-Computer Interaction. In: Proc. of DSVIS 2008 , 2008. [9] Bolt, R. A.: “Put-that-there”: Voice and gesture at the graphics interface. In: SIGGRAPH ’80: Proceedings of the 7th annual conference on Computer graphics and interactive techniques, S. 262–270, New York, NY, USA, 1980. ACM. [10] Davidoff, S., M. K. Lee, C. Yiu, J. Zimmerman und A. K. Dey: Principles of Smart Home Control . In: Ubicomp, S. 19–34, 2006. [11] De Boeck, J., C. Raymaekers, E. Cuppens, T. De Weyer und K. Coninx: Task-based Abstraction of Haptic and Multisensory Applications. In: Proceedings of EuroHaptics 2004 , S. 174–181, Munchen, DE, June 2004. [12] Elting, C. und G. Möhler: Modeling Output in the EMBASSI Multimodal Dialog System. Multimodal Interfaces, IEEE International Conference on, 0:111, 2002. [13] Elting, C., S. Rapp, G. Möhler und M. Strube: Architecture and implementation of multimodal plug and play. In: ICMI ’03: Proceedings of the 5th international conference on Multimodal interfaces, S. 93–100, New York, NY, USA, 2003. ACM. [14] Englert, R. und G. Glass: Architecture for Multimodal Mobile Applications. In: 20th International Symposium on Human Factors in Telecommunication, 2006. [15] Felsing, D.: Eine erweiterbare Smart Home Plattform auf Basis des FS20 Systems. Diplomarbeit, Alpe-Adria Universität Klagenfurt, 2009. [16] Fisk, A. D. und W. A. Rogers: Psychology and Aging: Enhancing the Lives of an Aging Population. Current Directions in Psychological Science, 11:107–110(4), June 2002. [17] Foster, M. E.: State of the art review: multimodal fission. Techn. Ber., Public deliverable 6.1, COMIC project, 2002. [18] Herfet, T., T. Kirste und M. Schnaider: EMBASSI multimodal assistance for infotainment and service infrastructures. Computers and Graphics, 25(4):581–592, 2001. 112 Literaturverzeichnis [19] Honkala, M. und M. Pohja: Multimodal interaction with xforms. In: ICWE ’06: Proceedings of the 6th international conference on Web engineering, S. 201–208, New York, NY, USA, 2006. ACM. [20] Honkala, M. und M. Pohja: Multimodal interaction with xforms. In: ICWE ’06: Proceedings of the 6th international conference on Web engineering, S. 201–208, New York, NY, USA, 2006. ACM. [21] Intille, S. S.: Designing a Home of the Future. IEEE Pervasive Computing, 1(2):76–82, 2002. [22] Jaimes, A. und N. Sebe: Multimodal Human Computer Interaction: A Survey. Computer Vision and Image Understanding, 108(1-2):116–134, October 2007. [23] Kidd, C. D., R. Orr, G. D. Abowd, C. G. Atkeson, I. A. Essa, B. MacIntyre, E. D. Mynatt, T. Starner und W. Newstetter: The Aware Home: A Living Laboratory for Ubiquitous Computing Research. In: CoBuild ’99: Proceedings of the Second International Workshop on Cooperative Buildings, Integrating Information, Organization, and Architecture, S. 191–198, London, UK, 1999. Springer-Verlag. [24] Kontogiannis, K., G. A. Lewis und D. B. Smith: A research agenda for service-oriented architecture. In: SDSOA ’08: Proceedings of the 2nd international workshop on Systems development in SOA environments, S. 1–6, New York, NY, USA, 2008. ACM. [25] Lamere, P., P. Kwok, W. Walker, E. Gouva, R. Singh, B. Raj und P. Wolf: Design of the CMU Sphinx-4 Decoder . In: In 8th European Conf. on Speech Communication and Technology (EUROSPEECH), 2003. [26] Leitner, G., D. Ahlstroem und M. Hitz: Usability Key Factor of Future Smart Home Systems. Home Informatics and Telematics: ICT for The Next Billion, 241:269–278, 2007. [27] Leitner, G., M. Hitz und D. Ahlstrom: Applicability and Usability of Off-the-Shelf Smart Appliances in Tele-Care. In: AINAW ’07: Proceedings of the 21st International Conference on Advanced Information Networking and Applications Workshops, S. 881–886, Washington, DC, USA, 2007. IEEE Computer Society. 113 Literaturverzeichnis [28] Loesch, K. und S. Albayrak: SerCHo - ein ganzheitlicher Lösungsansatz mit innovativen Plattformen und Diensten zur Erschließung von wirtschaftlichen Potenzialen im Zukunftsmarkt Heimvernetzung. http://130.149.154.94/fileadmin/files/SERCHO_ Whitepaper.pdf, 2006. [29] Magerkurth, C., R. Etter, M. Janse, J. Kela, O. Kocsis und F. Ramparany: An intelligent user service architecture for networked home environments. IET Conference Publications, 2006(CP518):v1– 361–v1–361, 2006. [30] Marco Blumendorf, S. F. und S. Albayrak: Multimodal User Interaction in Smart Environments: Delivering Distributed User Interfaces. In: European Conference on Ambient Intelligence: Workshop on Model Driven Software Engineering for Ambient Intelligence Applications, 2007. [31] Nigay, L. und J. Coutaz: A design space for multimodal systems: concurrent processing and data fusion. In: CHI ’93: Proceedings of the INTERACT ’93 and CHI ’93 conference on Human factors in computing systems, S. 172–178, New York, NY, USA, 1993. ACM. [32] Niklfeld, G., H. Anegg, A. Gassner, M. Jank, G. Pospischil, M. Pucher, R. Schatz, R. Simon und F. Wegscheider: Device independent mobile multimodal user interfaces with the MONA Multimodal Presentation Server . In: Proccedings of the Eurescom summit 2005 on Ubiquitous Services and Applications, 2005. [33] osgi.org: OSGi Service Platform Core Specification. 2007. [34] Oviatt, S.: Ten myths of multimodal interaction. Commun. ACM, 42(11):74–81, 1999. [35] Oviatt, S.: Taming recognition errors with a multimodal interface. Commun. ACM, 43(9):45–51, 2000. [36] Pantic, M. und L. Rothkrantz: Toward an affect-sensitive multimodal human-computer interaction. 91(9):1370–1390, September 2003. [37] Puerta, A. und J. Eisenstein: XIML: A Universal Language for User Interfaces. http://www.ximl.org/documents/XimlWhitePaper. pdf, 2001. 114 Literaturverzeichnis [38] Puerta, A. und J. Eisenstein: XIML: a common representation for interaction data. In: IUI ’02: Proceedings of the 7th international conference on Intelligent user interfaces, S. 214–215, New York, NY, USA, 2002. ACM. [39] Ringbauer, B., D. F. Heidmann und J. Biesterfeldt: When a house controls its master. Universal design for smart living environments. In: Proceedings of 10th Int. Conf. on Human-Computer Interaction, Crete, Greece, 2003. [40] Stanciulescu, A., Q. Limbourg, J. Vanderdonckt, B. Michotte und F. Montero: A transformational approach for multimodal web user interfaces based on UsiXML. In: ICMI ’05: Proceedings of the 7th international conference on Multimodal interfaces, S. 259–266, New York, NY, USA, 2005. ACM. [41] Walker, W., P. Lamere und P. Kwok: FreeTTS - A Performance Case Study [TR-2002-114 ] . Techn. Ber., Sun microsystems, 2002. [42] Walker, W., P. Lamere, P. Kwok, B. Raj, R. Singh, E. Gouvea, P. Wolf und J. Woelfel: Sphinx-4: A Flexible Open Source Framework for Speech Recognition [TR-2004-139 ] . Techn. Ber., Sun microsystems, 2004. [43] Webseite: AMIGO Architecture - http: // www. hitech-projects. com/ euprojects/ amigo/ software. htm , zuletzt besucht: Juli 2009. [44] Webseite: AMIGO Introduction - http: // www. hitech-projects. com/ euprojects/ amigo/ amigo. htm , zuletzt besucht: Juli 2009. [45] Webseite: Commons SCXML - http: // commons. apache. org/ scxml/ , zuletzt besucht: Juli 2009. [46] Webseite: EMMA: Extensible MultiModal Annotation markup language - http: // www. w3. org/ TR/ emma/ , zuletzt besucht: Juli 2009. [47] Webseite: FreeTTS 1.2: A speech synthesizer written entirely in the JavaTM programming language - http: // freetts. sourceforge. net/ docs/ index. php , zuletzt besucht: Juli 2009. [48] Webseite: Introduction to CCXML - http: // www. voxeo. com/ library/ ccxml. jsp , zuletzt besucht: Juli 2009. [49] Webseite: Kisla Interactive - http: // ximl. com/ , zuletzt besucht: Juli 2009. 115 Literaturverzeichnis [50] Webseite: Multimodal Interaction Activity - http: // www. w3. org/ 2002/ mmi/ , zuletzt besucht: Juli 2009. [51] Webseite: OSGi Alliance - http: // www. osgi. org/ , zuletzt besucht: Juli 2009. [52] Webseite: UIML.org - http: // www. uiml. org/ , zuletzt besucht: Juli 2009. [53] Webseite: User Interface Markup Language (UIML) Version 4.0: Committee Draft - http: // www. uiml. org/ , zuletzt besucht: Juli 2009. [54] Webseite: UsiXml.org -http: // www. usixml. org , zuletzt besucht: Juli 2009. [55] Webseite: W3C: JSpeech Grammar Format - http: // www. w3. org/ TR/ jsgf/ , zuletzt besucht: Juli 2009. [56] Webseite: W3C: Multimodal Interaction Requirements - http: // www. w3. org/ TR/ mmi-reqs/ , zuletzt besucht: Juli 2009. [57] Webseite: W3C: Voice Extensible Markup Language (VoiceXML) Version 2.0 - http: // www. w3. org/ TR/ voicexml20/ , zuletzt besucht: Juli 2009. [58] Webseite: W3C Working Draft: Multimodal Architecture and Interfaces - http: // www. w3. org/ TR/ 2008/ WD-mmi-arch-20081016/ , zuletzt besucht: Juli 2009. [59] Webseite: W3C Working Draft: State Chart XML (SCXML) State Machine Notation for Control Abstraction 1.0 - http: // www. w3. org/ TR/ 2005/ WD-scxml-20050705/ , zuletzt besucht: Juli 2009. [60] Webseite: W3C Working Draft: State Chart XML (SCXML) State Machine Notation for Control Abstraction 1.0 - http: // www. w3. org/ TR/ scxml/ , zuletzt besucht: Juli 2009. [61] Webseite: W3C Working Draft: Voice Browser Call Control CCXML Version 1.0 - http: // www. w3. org/ TR/ 2002/ WD-ccxml-20020221/ , zuletzt besucht: Juli 2009. [62] Webseite: W3C Working Draft: Voice Browser Call Control CCXML Version 1.0 - http: // www. w3. org/ TR/ ccxml/ , zuletzt besucht: Juli 2009. 116 Literaturverzeichnis [63] Webseite: W3C XHTML Modularization 1.1 - http: // www. w3. org/ TR/ 2006/ WD-xhtml-modularization-20060705/ , zuletzt besucht: Juli 2009. [64] Webseite: XHTML 1.0 The Extensible HyperText Markup Language (Second Edition) - http: // www. w3. org/ TR/ 2002/ REC-xhtml1-20020801/ , zuletzt besucht: Juli 2009. [65] Webseite: XHTML+Voice Profile 1.2 - http: // www. voicexml. org/ specs/ multimodal/ x+ v/ 12/ , zuletzt besucht: März 2009. [66] Wegscheider, F., T. Dangl, M. Jank und R. Simon: A multimodal interaction manager for device independent mobile applications. In: WWW Alt. ’04: Proceedings of the 13th international World Wide Web conference on Alternate track papers & posters, S. 272–273, New York, NY, USA, 2004. ACM. [67] Winckler, M., J. Vanderdonckt, A. Stanciulescu und F. Trindade: Cascading Dialog Modeling with UsiXML. S. 121–135, 2008. 117