paper
Transcription
paper
TU Wien Business Informatics Group Institut für Softwaretechnik und Interaktive Systeme Ubiquitäre Web-Anwendungen Entwicklung endgeräteunabhängiger Lösungsansätze Magisterarbeit zur Erlangung des akademischen Grades eines Magister der Sozial- und Wirtschaftswissenschaften (Mag. rer. soc. oec.) eingereicht bei o. Univ.-Prof. Mag. Dipl.-Ing. Dr. Gerti Kappel Mitbetreuung: Mag. Andrea Schauerhuber Rudolf Mayer Wien, 2. Februar 2007 Eidesstattliche Erklärung Ich erkläre an Eides statt, dass ich die vorliegende Arbeit selbständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benützt und die den benutzten Quellen wörtlich oder inhaltlich entnommenen Stellen als solche kenntlich gemacht habe. Wien, 2. Februar 2007 ii Danksagung Ich danke meinen Eltern Inge und Rudolf Mayer dafür, dass sie mir durch ihre finanzielle und moralische Unterstützung mein Studium ermöglicht haben. Für die gute Betreuung und die nützlichen Anregungen bei der Erstellung dieser Magisterarbeit möchte ich mich bei Mag. Andrea Schauerhuber und o. Univ.-Prof. Mag. Dipl.-Ing. Dr. Gerti Kappel bedanken. Ein ganz besonderes Dankeschön geht an Arnold Weissensteiner und Petra Brosch für die gute Zusammenarbeit während der gesamten Studienzeit und speziell während dieser Magisterarbeit. iii Kurzfassung Ubiquitäre Web-Anwendungen haben das anytime/anywhere/anymedia Paradigma zugrunde liegen, und sollen dem Anwender, egal wann, wo und mit welchem Gerät er diese nutzt, einen individuell abgestimmten und auf die Rahmenbedingungen des Benutzers angepassten Inhalt bieten. Im Rahmen einer Kooperation von drei Magisterarbeiten, [Bros06,Weis06] und der vorliegenden Arbeit, wurde ein ubiquitäres Tourismusinformationssystem entwickelt. Das Ziel dieses umfangreichen Projekts war die Konzeption, Modellierung und Implementierung einer Web-Anwendung mit Customizationunterstützung, dh. einer Web-Anwendung, die aufgrund mehrerer Kontextfaktoren wie Benutzer, Zeit, Ort, Gerät, etc., mit der Adaptierung ihrer Dienste reagiert. Die Implementierung der Customizationfunktionalität ist allerdings komplex, da sie an vielen Stellen der Web-Anwendung Berücksichtigung finden muss und sich quer durch den Code des Systems zieht. Separation of Concerns ist daher im Sinne der Wartbarkeit, Erweiterbarkeit und Änderbarkeit eines Systems anzustreben. Im speziellen Fokus dieser Arbeit stand der anymedia Aspekt von ubiquitären Web-Anwendungen. Die Anpassung der Web-Anwendung an die technischen Kontextfaktoren des Endgeräts unter besonderer Berücksichtigung der verschiedenen Techniken zur Erkennung der Eigenschaften des Endgeräts, wurde untersucht. Anschließend wurden die Adaptierungstechniken für die Anpassung der Inhalte evaluiert und im Rahmen eines praktischen Prototyps umgesetzt. Die Adaptierung an das Endgerät ist Teil der Customization der ubiquitären Web-Anwendung und zieht sich somit als Crosscutting Concern durch die gesamte Anwendung. Speziell im Hinblick auf die Endgerätunabhängigkeit gilt es schon von Beginn an genau festzulegen, welche Inhalte wie granular und mit welchen Metainformationen gespeichert werden. Weiters ist es wichtig, im Hinblick auf die nötigen Adaptierungstechniken festzulegen, welche Authoring Methode zum Einsatz kommt. Ebenso notwendig für die Adaptierung ist die Erkennung der Geräteeigenschaften, denn in Abhängigkeit dieser erfolgt die eigentliche Selektion und Aggregation der Inhalte und anschließend die Transformation der Darstellung an die Einschränkungen des Endgeräts. iv Abstract Ubiquitous web applications adhering to the anytime/anywhere/anymedia paradigm are required to yield a customized service in respect of the user’s context. As a cooperation of three master theses, [Bros06,Weis06] an my own thesis, we have developed a ubiquitous tourism information system. Our intention was to design and implement a ubiquitous web application with customization support, i.e., a web application which adapts its services according to several context properties such as user, time, location, device, etc. However implementation of customization support is complex. Customization has to be considered at many places throughout the web application and thus, is scattered across the code of the whole system. To reach better maintainability, extensibility and changeability of the system, one should thus aspire separation of concerns. The main focus of this work was the anymedia aspect of ubiquitous web applications, including the adaptation of the web application’s services according to several technical context properties. In this respect, techniques for detecting the distinguishing capabilities of mobile devices as well as the evaluation and implementation of an appropriate combination of several adaptation techniques have been considered. Adaptation of a web application’s services with respect to the device used to access the web application is part of the customization process, which is a so-called crosscutting concern, meaning it can’t be encapsulated by conventional methods of modularization. Due to this fact it is necessary to determine the level of granularity in the data model and what metainformation is required in the beginning of the development process. Focusing on the need of appropriate adaptation techniques, it is also essential to choose a proper authoring method. Furthermore detecting the device context is the most essential issue and represents the basis of the adaptation process. Depending on the device context at runtime, the selection and aggregation of content takes place, as well as the following selection of a proper layout or presentation template and the concluding transformation of content. v 1 Inhaltsverzeichnis 1 Einleitung 1.1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Ziel der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Web Engineering 2.1 Historische Entwicklung von Web-Anwendungen 2.1.1 Generationen von Web-Anwendungen . . 2.2 Ubiquitäre Web-Anwendungen . . . . . . . . . . 2.2.1 Customization . . . . . . . . . . . . . . . 2.2.2 Kontext . . . . . . . . . . . . . . . . . . 2.2.3 Adaptierung . . . . . . . . . . . . . . . . 2.2.4 Mapping - Customizationregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 7 8 8 9 10 15 19 19 3 Endgeräteunabhängige Lösungsansätze 21 3.1 Methoden zur Erkennung der Geräteeigenschaften von Endgeräten 22 3.1.1 HTTP Request Header . . . . . . . . . . . . . . . . . . . . 23 3.1.2 Composite Capabilities/Preferences Profile . . . . . . . . . 25 3.1.3 User Agent Profile . . . . . . . . . . . . . . . . . . . . . . 27 3.2 Techniken zur Erstellung von Inhalten für ubiquitäre WebAnwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3 Adaptierungsansätze für Endgerätunabängigkeit von ubiquitären Web-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.1 Ort der Adaptierung . . . . . . . . . . . . . . . . . . . . . 32 3.3.2 Adaptierungstechniken . . . . . . . . . . . . . . . . . . . . 34 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 4.1 Allgemeine Beschreibung . . . . . . . . . . . . . . . . . . . . . . . 4.2 Basisfunktionalität . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Funktionen für den Endbenutzer (Frontend) . . . . . . . . 4.2.2 Funktionen für die Redaktion (Backend) . . . . . . . . . . 4.3 Evaluierung der Customizationfunktionalität . . . . . . . . . . . . 40 40 41 41 44 46 Inhaltsverzeichnis . . . . . . 46 50 55 55 56 59 . . . . . . . . . . . 63 63 68 70 70 72 73 75 75 78 83 85 6 Conclusio 6.1 Erfahrungsbericht . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 87 88 A Sourcecode Statistik 90 B Ant Build Konfiguration 91 C Screenshots Frontend 94 D Screenshots Backend 97 4.4 4.5 4.3.1 Charakteristik des Kontext . . . . . . 4.3.2 Charakteristik der Adaptierung . . . Architektur . . . . . . . . . . . . . . . . . . 4.4.1 Schichten-Architektur der realisierten 4.4.2 Datenbank-Schema . . . . . . . . . . Adaptierungsszenario . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Web-Anwendung . . . . . . . . . . . . . . . . . . . . 5 Implementierung 5.1 Verwendete Technologien . . . . . . . . . . . . . . . . . . . 5.2 Allgemeine Beschreibung . . . . . . . . . . . . . . . . . . . 5.3 Adaptierung hinsichtlich des Endgeräts . . . . . . . . . . . 5.3.1 Erkennung der Kontextfaktoren . . . . . . . . . . . 5.3.2 Aggregation und Selektion von Inhalten und Layout 5.3.3 Transformation . . . . . . . . . . . . . . . . . . . . 5.4 Implementierung der Adaptierung mit Hilfe von Aspekten 5.4.1 Kontextaspekt . . . . . . . . . . . . . . . . . . . . . 5.4.2 Adaptierung des Inhalts . . . . . . . . . . . . . . . 5.4.3 Transformationsaspekt . . . . . . . . . . . . . . . . 5.5 Kritische Würdigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E Relevante MIME-Typen 101 F UAProf Profil des Nokia 6230i 102 Tabellenverzeichnis 110 Listings 111 Abbildungsverzeichnis 112 Inhaltsverzeichnis Literaturverzeichnis 3 114 4 Kapitel 1 Einleitung Die immer weiter steigende Verbreitung des World Wide Web bringt ständig neue Herausforderungen mit sich. War es früher das Ziel mit einer umfassenden Web-Anwendung die Anforderungen möglichst vieler Benutzer auf einmal abzudecken, so versucht man heute vermehrt, jedem Benutzer seine eigene, speziell auf ihn abgestimmte, Web-Anwendung zu liefern. Diese Art von Web-Anwendungen nennt man ubiquitäre Web-Anwendungen, ihnen liegt das anytime/anywhere/anymedia Paradigma zugrunde. Während die permanente Verfügbarkeit (anytime) in der Natur des Webs liegt und nichts Neues ist, werden ubiquitäre WebAnwendungen durch die Charakteristika anywhere und anymedia geprägt. Diese Arbeit beschäftig sich vor allem mit dem anymedia Aspekt von ubiquitären WebAnwendungen. Die Anpassung einer Web-Anwendung an ihren Nutzungskontext heißt Customization. Customization beinhaltet die Akquisition und Aufbereitung des aktuellen Kontext, sowie die Adaptierung, also die eigentliche Anpassung. Diese Adaptierung erfolgt mit Hilfe eines Regelsystems, in dem sinnvolle Anpassungen der Web-Anwendung aufgrund verschiedener Kontextfaktoren definiert sind. 1.1 Problem Die Entwicklung von ubiquitären Web-Anwendungen ist komplex. Das liegt daran, dass Customization an jeder Stelle der Web-Anwendung denkbar ist. Bei der Entwicklung ubiquitärer Web-Anwendungen muss daher nach [FSK+ 02,SSK+ 06], im Vergleich zum herkömmlichen“ Web-Engineering, zusätzlich zu den be” kannten Dimensionen Levels (dh. Content-, Hypertext-, und PräsentationsLevels von Web-Anwendungen), Features (dh. Struktur und Verhalten von WebAnwendungen) und Phases (dh. die Entwicklungsphasen von Web-Anwendungen) die Customization als eigene Dimension berücksichtigt werden. 1 Einleitung 5 Customization zieht sich durch die gesamte Web-Anwendung. Beginnend mit der Erkennung des Nutzungskontext, der Auswertung der relevanten Kontextfaktoren, Selektion der passenden Inhalte und Adaptierung der Darstellung an das jeweilige Endgerät. Gerade die Adaptierung an das Endgerät des Benutzers stellt eine besondere Herausforderung dar. Denn die Vielfalt an möglichen Endgeräten nimmt ein immer größeres Maß an. Die Erkennung der Eigenschaften des Endgeräts ist somit eine wichtige Grundvoraussetzung für die Customization, denn in Abhängigkeit von den erkannten Eigenschaften des Geräts sollen Struktur, Inhalt und Darstellung entsprechend adaptiert werden. 1.2 Ziel der Arbeit In dieser Arbeit werden verschiedene Ansätze zur Endgerätunabhängigkeit von Web-Anwendungen evaluiert. Endgerätunabhängige Lösungsansätze für ubiquitäre Web-Anwendungen sind ein Teil der Customization und ziehen sich somit durch die ganze Web-Anwendung. Die schon erwähnte Erkennung der Geräteeigenschaften ist ein wichtiger Teil davon. Dennoch besteht der Prozess der Adaptierung einer ubiquitären WebAnwendung an die Eigenschaften des Endgeräts aus mehreren mindestens ebenso wichtigen Schritten. Das umfasst auch Entscheidungen die schon bei der Konzeption und dem Design der Web-Anwendung getroffen werden müssen. Dabei ist es vor allem wichtig wie die Inhalte für die Web-Anwendung erstellt werden. In weiterer Folge ist es aber auch nötig zu wissen welche verschiedenen Arten von Inhalten existieren, um die richtigen Adaptierungstechniken zu wählen, welche für die Transformation der Darstellung verantwortlich sind. Dennoch ist die Adaptierung an das Endgerät nur ein Teil der Customization einer ubiquitären Web-Anwendung in der neben dem technischen Kontext des Endgeräts auch der soziale Kontext des Benutzers und der natürliche Kontext der Nutzungsumgebung eine zentrale Rolle spielen. Im Zuge dieser Arbeit wurde ein ubiquitäres Tourismusinformationssystem konzipiert und implementiert. Die Entwicklung des Tourismusinformationssystems geschah in Zusammenarbeit mit Petra Brosch [Bros06] und Arnold Weissensteiner [Weis06]1 . Bevor das Tourismusinformationssystem und seine Funktionalitäten vorgestellt werden (Kapitel 4), gibt diese Arbeit eine Einführung in die theoretischen Grundlagen von ubiquitären Web-Anwendungen (Kapitel 2) und eine Vorstellung der 1 Aus dieser Zusammenarbeit resultieren zudem teilweise ähnliche bzw. idente Texte, deshalb findet sich eine genaue Zuordnung von Textpassagen zum jeweiligen Autor in Tabelle B.1. 1 Einleitung 6 möglichen Ansätze zur Adaptierung des Tourismusinformationssystems an die Engeräte der Benutzer (Kapitel 3). Die Implementierungsdetails zur Customization und im Speziellen der Adaptierung des Tourismusinformationssystems an die Engeräte sind Gegenstand von (Kapitel 5). In Kapitel 6 werden die gewonnen Erkenntnisse bezüglich der Endgerätunabhängigkeit von ubiquitären WebAnwendungen abschließend zusammengefasst. 7 Kapitel 2 Web Engineering Das Internet, im Speziellen das World Wide Web (WWW), ist aus unserem Alltag kaum mehr wegzudenken. Das WWW ist bereits in nahezu allen Bereichen unseres Lebens ein fester Bestandteil, ganz gleich ob in Beruf oder Freizeit. Es hat nicht nur unsere Gesellschaft nachhaltig beeinflusst, sondern hat auch eine neue Ära der Informatikdisziplin eingeleitet. Zu Beginn stellte das WWW ein dokumentenzentriertes read-only“ Informationsmedium mit statischen Inhalten dar. Heute ” wird das Web immer mehr für vollwertige, komplexe Anwendungen genutzt, die interaktive, datenintensive und personalisierbare Dienste zur Verfügung stellen und über verschiedene Endgeräte erreicht werden können. Web-Anwendungen unterscheiden sich von herkömmlichen Softwaresystemen in erster Linie durch ihren Einsatz im Web. In [KPRR04] wird der Begriff Web-Anwendung wie folgt definiert: Eine Web-Anwendung ist ein Softwaresystem, das auf Spezifikationen des World Wide Web Consortium (W3C) beruht und Webspezifische Ressourcen, wie Inhalte und Dienste bereitstellt, die über eine Benutzerschnittstelle, den Web-Browser, verwendet werden. Eine Web-Anwendung ist somit ein Softwaresystem, das von Beginn an für den Einsatz im WWW entwickelt wird und somit den Hypermedia Aspekt1 , also die Kombination von Hypertext, Multimedia und Anwendungslogik, mit einbezieht. Eine Menge von Web-Seiten sind erst dann eine Web-Anwendung, wenn sie über das klassische Request-Response Paradigma hinausgehen und zustandsbasiert sind, also den Einsatz einer Session erfordern [FSK+ 02]. 1 In diesem Kapitel wird der Aspekt-Begriff im herkömmlichen Sinn und nicht im Sinne der Aspektorientierung verwendet. 2 Web Engineering 8 2.1 Historische Entwicklung von Web-Anwendungen Web-Anwendungen werden aufgrund ihres Komplexitätsgrades und der Entwicklungshistorie in verschiedene Kategorien gegliedert, denen eindeutige Beispiele zugeordnet werden können. Wie Abbildung 2.1 aus [KPRR04] veranschaulicht, steigt der Komplexitätsgrad mit der zeitlichen Entwicklung, dh. höhere Entwicklungsstufen bauen auf den ihnen vorangegangenen auf. Abbildung 2.1: Kategorien von Web-Anwendungen 2.1.1 Generationen von Web-Anwendungen Generell können diese Kategorien in drei Generationen von Web-Anwendungen eingeteilt werden, die sich vor allem durch die verwendete Technologie und den angebotenen Services voneinander abheben [HKRS02]. Die erste Generation umfasst read-only“ Web-Seiten, die anonymen Benutzern der Informationsgewin” nung dienen. Die zweite Generation sind bereits laut obiger Definition echte“ ” 2 Web Engineering 9 Web-Anwendungen, also zustandsbasierte Softwaresysteme mit zugrunde liegender Datenbank, die Dienste mit Benutzertransaktionen zur Verfügung stellen. Hierzu gehören auch E-Commerce Anwendungen, die durch personalisierte Services, also auf den jeweiligen Benutzer angepasste Dienste, diese Generation besonders geprägt haben. Derzeit aktuell ist die dritte Generation, welche durch ubiquitäre Web-Anwendungen charakterisiert ist. Ubiquitäre Web-Anwendungen gehen einen Schritt weiter als Web-Anwendungen der zweiten Generation und bieten kontextabhängige Dienste über jedes beliebige Endgerät an, wodurch der Zugriff allgegenwärtig wird. 2.2 Ubiquitäre Web-Anwendungen Ubiquitäre Web-Anwendungen sind spezielle Web-Anwendungen, die das anytime/anywhere/anymedia Paradigma umsetzen. Während die permanente Verfügbarkeit (anytime) in der Natur des Web liegt und nichts Neues ist, werden ubiquitäre Web-Anwendungen durch die Charakteristika anywhere und anymedia geprägt. Die Bezeichnung ubiquitär leitet sich vom lateinischen Wort ubique ab und bedeutet allgegenwärtig. Den Terminus Ubiquitous Computing hat Mark Weiser in seinem Artikel The Computer for the 21st Century“ geprägt [Weis91]. ” Darin betont Mark Weiser die automatische Anpassung des Verhaltens von Computern an den aktuellen Standort (anywhere). [...] We have found two issues of crucial importance: location and scale. Little is more basic to human perception than physical juxtaposition, and so ubiquitous computers must know where they are. (Today’s computers, in contrast, have no idea of their location and surroundings.) If a computer merely knows what room it is in, it can adapt its behavior in significant ways without requiring even a hint of artificial intelligence. [...] [Weis91] Bei ubiquitären Web-Anwendungen spielt der Standort eine zentrale Rolle. Allerdings steht im Gegensatz zur Theorie von Mark Weiser nicht der Standort des Web-Servers, auf dem die Web-Anwendung installiert ist, im Vordergrund, sondern der Standort des Benutzers, der die Web-Anwendung nutzt. Weiters beschreibt Mark Weiser seine Vision der totalen, unsichtbaren Vernetzung, in der jeder Gegenstand intelligent“ ist (anymedia). ” [...] When almost every object either contains a computer or can have a tab attached to it, obtaining information will be trivial: Who ” 2 Web Engineering 10 made that dress? Are there any more in the store? What was the name of the designer of that suit I liked last week?“ The computing environment knows the suit you looked at for a long time last week because it knows both of your locations, and, it can retroactively find the designer’s name even if it did not interest you at the time. [...] [Weis91] Ubiquitäre Web-Anwendungen können über jedes beliebige Endgerät (Handies, PDAs, PCs, etc.) benutzt werden. Sie passen ihre Darstellung und ihr Verhalten an die zur Verfügung stehenden Ressourcen der unterschiedlichsten Zugriffsmedien an. Dazu gehören unter anderem die Größe und Farbunterstützung des Displays, die Möglichkeiten zur Dateneingabe, Netzwerkverbindung und lokaler Speicherplatz. Ubiquitäre Web-Anwendungen bieten neben der angepassten Darstellung auch an den aktuellen Nutzungskontext angepasste Inhalte. Der Nutzungskontext enthält Faktoren wie Ort, Zeit, Benutzer, etc. Die Aquisition dieser Kontextfaktoren und die daraus resultierende Adaptierung der Web-Anwendung heißt Customization. 2.2.1 Customization Customization ist der Schlüssel für individuell auf den Benutzer abgestimmte Web-Anwendungen. Bei der Customization wird, basierend auf dem aktuellen Nutzungskontext (siehe 2.2.2), mittels einem Regelsystem (Mapping) (siehe 2.2.4) die Web-Anwendung spezifisch auf den jeweiligen Benutzer und seinen bekannten Kontext abgestimmt. Der Umfang der Customization kann hierbei sehr stark variieren. So ist von einer einfachen Anpassung der Darstellung der Web-Anwendung an das entsprechende Gerät des Benutzers bis hin zu einer kompletten Adaptierung von Content-, Hypertext- und Präsentations-Levels der Web-Anwendung alles möglich. Ursprung der Customization Historisch gesehen wurde der Begriff der Customization vor allem von der Personalisierung und dem Mobile-Computing beeinflusst [KPRS03]. In Folge wird auf einzelne Bereiche aus Abbildung 2.2 in Anlehnung an [KPRS03] eingegangen. Personalisierung. Die Personalisierung war eine der ersten Customizationsaktionen die angedacht und umgesetzt worden ist und hat ihre Ursprünge 2 Web Engineering 11 Abbildung 2.2: Ursprünge der Customization [KPRS03] in den früheren Achtzigern. Hierbei stand zuerst die Anpassung des UserInterfaces im Mittelpunkt des Interesses. Das Ziel war, die Interfaces der Anwendungen an die Fähigkeiten, Aufgaben und Wünsche des Benutzers anzupassen [GoWJ84] beziehungsweise das Interface für den Benutzer anpassbar zu machen. Danach folgten im Bereich der Personalisierung intelligente Lehr- und Hilfssysteme, welche ihre Funktion und Lehrstrategien auf die individuellen Bedürfnisse der Benutzer, je nach Wissensstand und Lernfortschritt, automatisch abstimmen. Weiters kommen von der Personalisierungsseite die für die Customization immens wichtigen Bereiche der Informationsfilterung [AvZe97,LoTe92] und Adaptive Hypermedia [BrMa02]. Das finale Ziel dieser beiden Bereiche ist es, aus dem umfassenden Pool an Daten einer Web-Anwendung einerseits genau jene Informationen zu liefern, welche für den Benutzer interessant sind und diese andererseits auch benutzerspezifisch aufzubereiten und darzustellen. Mobile-Computing. Das Mobile-Computing kann als zweites großes Standbein der Customization gesehen werden. Hierbei wurden die ersten Ansätze in den frühen Neunzigern gemacht, wobei zu Beginn alles im Zeichen von ortsabhängigen Diensten gestanden ist [WaSc01]. Dies ist naheliegend, da sich hierfür eine Fülle von Anwendungsgebieten geboten haben und noch immer bieten. 2 Web Engineering 12 Ortsbasierte Dienste. Das Ergebnis dieser Entwicklung zeigt sich heute in der Vielzahl von ortsbasierten Diensten. Solche sind zum Beispiel im Outdoorbereich Flottenmanagementsysteme, Verkehrskontroll-, Leitund Notrufsysteme sowie im Indoorbereich elektronische Museumsführer. Weitere Beispiele zu ortsbasierten Diensten findet man in [ChKo00,EPS+ 01, KPRS03, KDJ+ 04]. Für die Ermittlung der benötigten Ortsdaten stehen eine Reihe von Technologien zur Verfügung, welche sich je nach Anwendungsfall unterschiedlich gut eignen, wobei hier vor allem zwischen der Erfassung der Ortsdaten im Freien oder innerhalb von Gebäuden differenziert werden muss. Als Auswahl können hier GPS, Mobilfunkanlangen, Kameras, RFID, Magnetkarten und Barcodesysteme genannt werden [BaDR06]. Multi Channel Delivery. Ein weiterer wichtiger Bereich von Mobile Computing ist das so genannte Multi Channel Delivery. Hiermit wird es ermöglicht, die Web-Anwendung auf unterschiedlichsten (mobilen) Endgeräten nutzen zu können. Dabei müssen die verschiedenen Spezifikationen der Endgeräte auf Hardware- und auf Softwareseite erfasst und berücksichtigt werden, um eine angemessene Adaptierung der Web-Anwendung in Bezug auf die grafischen Benutzeroberfläche, Interaktionsmöglichkeiten für den Benutzer und den Inhalt an sich durchführen zu können. Solche Spezifikationen umfassen beispielsweise die Display-Größe und Auflösung, die Farbtiefe, die Speichergröße und Rechenleistung sowie das Betriebssystem und den verwendeten Browser des Endgerätes. Um den Aufwand für die Erkennung der entsprechenden technischen Daten und Funktionen nicht ausufern zu lassen, haben schon sehr früh Standardisierungsbemühungen eingesetzt. Das The World Wide Web Consortium (W3C)2 bietet mit seinen Device Independence Aktivitäten eine Reihe von Standardisierungsansätzen [W3C003], wobei hier speziell das Composite Capability/Preference Profile (CC/PP) [W3C004b] hervorzuheben ist, welches standardisierte Profile für Endgerätespezifikationen und Benutzerpräferenzen darstellt. Für die Profilerstellung wird das Ressource Description Framework (RDF)3 benutzt. Hierfür existiert bereits ein umfangreiches Vokabular für die Spezifikation der einzelnen Eigenschaften der Geräte. Network Adaptation. Nachdem Mobile-Computing mit drahtloser Datenübertragung einhergeht, bei welcher verschiedene Netzwerkbedingun2 3 http://www.w3.org/ http://www.w3.org/RDF/ 2 Web Engineering 13 gen zu berücksichtigen sind, liegt es nahe, dass auch diese bei der Customization mit berücksichtigt werden. Dieser immer bedeutender werdende Forschungsbereich nennt sich Network Adaptation. Hierbei waren die ersten Ansätze darauf ausgelegt die Web-Anwendungen und Dienste so robust zu machen, dass diese mit unerwarteten Verbindungsabbrüchen umgehen und sich an diese anpassen können. Solche Abbrüche können bewusst durch den Benutzer herbeigeführt werden, in dem dieser zum Beispiel einfach die Anwendung beendet oder das Endgerät ausschaltet, oder aber auch durch einen leeren Akku oder einem Verbindungsabbruch im Netzwerk auftreten. Darüber hinaus muss man davon ausgehen, dass die Bandbreiten der Datenübertragung zu unterschiedlichen Endgeräten verschieden hoch sind und auch fortwährenden Schwankungen unterliegen [BFK+ 00]. Darum soll man auch dieses Faktum bei der Customization mit einbeziehen und den Inhalt, welcher übertragen werden soll, entsprechend anpassen. Dies kann einerseits durch verschiedene Kompressionsmechanismen erreicht werden oder aber auch durch eine Filterung des Inhalts an sich. So kann man bei einer niedrigen Bandbreite zum Beispiel auf multimediale Inhalte komplett verzichten. Wie man hier sieht, hat Customization in gewissem Maße in einzelnen Bereichen der Informatik schon lange fußgefasst. Der Punkt hierbei ist jedoch dass in Forschungsarbeiten genauso wie im Einsatz in der Produktivumgebung meist nur Teilgebiete der Customization umgesetzt werden. Hier bietet die Customization noch ein großes Potential für zukünftige Anwendungen. Definition des verwendeten Customization Begriffes In dieser Arbeit wird der Customization Begriff verwendet, wie er in [KaRS00] definiert worden ist: [...] In our terms, customization specializes a web application called core web application towards the particular circumstances of consumption called context. The result of the customization process represents a customized web application. [...] Aus dieser Definition geht bereits hervor, wie umfassend sich der Einbezug von Customization auf die Entwicklung einer Web-Anwendung auswirken kann. In Abbildung 2.3 wird dies noch deutlicher gezeigt. Hierbei wird klar, dass sich die 2 Web Engineering 14 Abbildung 2.3: Umfang der Customization anhand der Modellierungsdimensionen von Web-Anwendungen [KaRS00] Customization über alle bekannten Dimensionen bei der Entwicklung von WebAnwendungen erstreckt. Die Customization muss also für alle Levels, Features und Phases einer Web-Anwendung mitberücksichtigt werden. Daher ist es nur sinnvoll, die Customization als eigene Dimension in die Entwicklung von WebAnwendungen einzuführen [KaRS00]. Customization wird, wie in Abbildung 2.4 dargestellt, im Prinzip durch zwei Hauptcharakteristika bestimmt. Einerseits durch die Umstände der Verwendung der Web-Anwendung, was dem Nutzungskontext, auch kurz Kontext genannt, entspricht und andererseits durch die möglichen Änderungen an der Web-Anwendung an sich, der so genannten Adaptierung [KaRS00]. Beide Charakteristika können entweder statisch oder dynamisch sein, was sich direkt auf den Grad der Anpassbarkeit auswirkt. Web-Anwendungen, welche nur statischen Kontext und/oder statische Adaptierung unterstützen werden oft als adaptable bezeichnet wobei hingegen Anwendungen mit dynamischem Kontext/Adaptierung als adaptive bezeichnet werden [FiKS97]. Kontext und Adaptierung bestimmen gemeinsam das Ergebnis der Customization, wobei diese das Mapping zwischen den beiden Bereichen abbildet. 2 Web Engineering 15 Abbildung 2.4: Customization 2.2.2 Kontext Das anytime/anywhere/anymedia Paradigma von ubiquitären WebAnwendungen und die damit verbundene Anpassung an den Kontext (Customization) stellt eine bei weitem größere Herausforderung dar, als die reine Personalisierung einer Web-Anwendung. Während bei der Personalisierung nur auf den Benutzer bzw. auf sein Verhalten Rücksicht genommen wird, bieten ubiquitäre Web-Anwendungen auch zeitabhängige, ortsabhängige, netzwerkabhängige und endgeräteunabhängige Services an [KPRS03], welche in Summe eine nach allen technisch machbaren Faktoren adaptierte und personalisierte Web-Anwendung ergeben. Für die Adaptierung ist es somit wichtig zu wissen unter welchen Umständen die Anwendung verwendet wird. Diese Umstände (zB mit welchen Browser, auf welchem Gerät, zu welcher Zeit) werden im Folgenden als Kontext bezeichnet. Prinzipiell kann jede nur irgendwie verfügbare Information für die Adaptierung benutzt werden, aber natürlich sind nicht alle Informationen relevant. Es gilt somit zuerst herauszufinden, welche Kontextfaktoren relevant sind und wie sie für die Customization der Anwendung verwendet werden können [KaRS00]. Im Folgenden werden die allgemein für ubiquitäre Web-Anwendungen interessanten Kontextfaktoren in Anlehnung an [KRK+ 02] kurz dargestellt, wobei grundsätzlich zwischen dem physischen Kontext und dem daraus abgeleiteten logischen Kontext unterschieden wird. Physischer Kontext Der physische Kontext ist prinzipiell nicht modifizierbar und wird nicht von der Anwendung kontrolliert. Er bezieht sich auf die Umgebung und die Umstände un- 2 Web Engineering 16 ter denen die Anwendung verwendet wird, welche sich natürlich in unregelmäßigen Abständen ändern können. Da die physischen Kontextfaktoren großteils anwendungsunabhängig bzw. generisch sind, können die für die Anwendung relevanten Faktoren je nach Art und Zweck der Anwendung unterschiedlich sein. Natürlicher Kontext Der natürliche Kontext besteht aus den natürlichen Gegebenheiten, wie Ort oder Zeit, unter denen die Web-Anwendung verwendet wird. Ort. Informationen über den Standort des Benutzers, von welchem aus er die Anwendung verwendet. Die Kenntnis über diesen Standort ist für ’Location Based Services’ unabdingbar. Diese Informationen werden in der Regel nicht vom Endgerät selbst zur Verfügung gestellt, sondern werden von so genannten ’Location Server’ abgefragt. Dazu kann einerseits die IPAdresse oder bei mobilen Endgeräten, die über das GSM oder UMTS Netz eine Verbindung zum Internet herstellen, auch die ’CellId’ ihrer Mobilfunkzelle verwendet werden. Zeit. Der Kontextfaktor Zeit ermöglicht die Customization der Anwendung in Abhängigkeit bestimmter zeitlicher Einschränkungen, wie zum Beispiel die Öffnungszeiten von Geschäften oder die Fahrpläne von öffentlichen Verkehrsmitteln. Dabei ist zu beachten, dass sich der Benutzer der Anwendung durchaus in einer anderen Zeitzone befinden kann und somit die ’Serverzeit’ nur bedingt verwendet werden kann. Sprache. Informationen über die bevorzugte Sprache des Benutzers. Mit Hilfe dieser Informationen kann die Sprache der Anwendung an die des Benutzers angepasst werden. Die vom Benutzer bevorzugte Sprache hat er entweder selbst bekannt gegeben (siehe sozialer Kontext) oder wurde über den Browser automatisch festgestellt (siehe technischer Kontext). Wetter. Das derzeitige Wetter, sowie die Vorhersage für eine bestimmte Anzahl an Tagen, für den Standort, an dem sich der Benutzer befindet. Diese Informationen, die in Abhängigkeit des Kontextfaktors Ort von einem ’Wetterserver’ abgefragt werden, sind besonders für Tourismus und Freizeitportale interessant, denn damit kann das dem Benutzer präsentierte Angebot detaillierter angepasst werden. Technischer Kontext Der technische Kontext besteht aus Informationen über den verwendeten Browser, das Endgerät, Netzwerk und die Anwendung selbst. 2 Web Engineering 17 Endgerät. Wie bereits zuvor erwähnt, ist dieser Kontextfaktor besonders für mobile Endgeräte wichtig, denn diese verfügen oft nur über sehr beschränkte Ressourcen (zB Bildschirmgröße, Tastatur, etc.) für die Darstellung von Webseiten. Speziell Mobiltelefone, sind in der Regel nicht für die Dartstellung bzw. Eingabe längerer Texte geeignet. Somit ist es notwendig die Web-Anwendung jeweils speziell für diese, aber auch andere mögliche Endgeräte anzupassen. Browser. Um dem anymedia-Anspruch von ubiquitären WebAnwendungen gerecht zu werden, ist es notwendig, auch Informationen über das verwendete Endgerät (siehe Kontextfaktor Endgerät) und den Browser für die Customization auszuwerten. So können gerade Browser auf mobilen Endgeräten, wie Mobiltelefone oder Handheld-Computer, nicht immer Frames darstellen oder verfügen nur über einen geringen Speicher für die Darstellung von Webseiten. Netzwerk. Dieser Kontextfaktor enthält Informationen über die Bandbreite der Netzwerkverbindung mit der die Anwendung verwendet wird. Gerade bei mobilen Endgeräten aber auch bei Computern, die eine Modemverbindung verwenden, spielt dies eine wichtige Rolle. So kann bei der Customization für Endgeräte mit geringer Bandbreite auf speicherintensive Elemente wie Videos oder Bilder nach Möglichkeit verzichtet werden. Anwendung. Geben die bisherigen Kontextfaktoren nur Aufschluss über die Umgebung der Anwendung, so ist es für die Customization auch wichtig, Informationen über die Anwendung selbst zu haben. Beispielsweise über die derzeitige Server- oder Datenbankauslastung oder ob alle Komponenten der Anwendung fehlerfrei arbeiten. Sozialer Kontext Der Soziale Kontext umfasst alle Informationen über den Benutzer, beziehungsweise welche den Benutzer direkt betreffen. Diese können sowohl von ihm selbst zur Verfügung gestellt als auch, bis zu einem gewissen Grad, automatisch von der Anwendung abgeleitet worden sein. Sie werden unter dem Kontextfaktor Benutzer zusammengefasst. Benutzer. Für die Personalisierung der Anwendung ist es notwendig den Benutzer der Anwendung zu identifizieren. Dies kann je nach dem verwendeten Endgerät über eine Vielzahl von Techniken geschehen. Bei Mobiltelefonen über die Telefonnummer, bei normalen Computern über die IP-Adresse oder ein Cookie. Diese Methoden sind allerdings nicht hundertprozentig zuverlässig. Somit wird der Benutzer in der Regel durch einen 2 Web Engineering 18 Benutzernamen und ein Passwort, die er beide selbst eingeben muss, identifiziert. Unabhängig davon wie der Benutzer identifiziert wird, müssen der Anwendung natürlich seine Daten bekannt sein. Diese werden in einem Benutzerprofil gespeichert, welches in der Regel selbst vom Benutzer angelegt wird und neben seinen Zugangsdaten auch Informationen über seine persönlichen Präferenzen bezüglich der Sprache der Anwendung, seine Interessensgebiete oder demographische Daten über ihn beinhalten. Mit Hilfe dieser Daten ist je nach Zweck der Anwendung und Qualität der Angaben im Benutzerprofil eine Adaptierung möglich. Logischer Kontext Wie bereits erwähnt, wird der logische Kontext aus dem physischen abgeleitet, um abstraktere Informationen für die Customization der Web-Anwendung zu erhalten. Beispielsweise ist die IP-Adresse des Benutzers als solche nicht besonders aussagekräftig. Kann man die IP-Adresse jedoch einem Ort bzw. einer Addresse zuordnen so kann dies für die Adaptierung durchaus sehr nützlich sein. Der logische Kontext kann auf verschiedene Arten abstrahiert werden. Ist es möglich mehrere IP-Adressen einem Ort zuzuordnen, so wäre dies ein Beispiel für eine Aggregation. Auch die Fusion verschiedener Kontextfaktoren ist möglich. ’Wien bei Nacht’ ist ein Beispiel für die Fusion der Kontextfaktoren Ort und Zeit. Weiters wird beim logischen Kontext zwischen dem anwendungsspezifischen Teil und dem anwendungsunabhängigen Teil unterschieden, welcher generisch ist und meist von externen Dienstleistern zur Verfügung gestellt wird (zB die Zuordnung von IP-Adressen zu Orten). So wie die physischen Kontextfaktoren hauptsächlich automatisch aus den Umgebungsbedingungen der Anwendung gewonnen werden, sollte auch der logische Kontext automatisch abgleitet werden. In den zuvor angeführten Beispielen war dies immer möglich. Aber nicht immer sind alle Kontextinformationen vollständig vorhanden. Zum Beispiel wenn eine IP-Adresse nicht eindeutig einem Ort zugeordnet werden kann oder wenn ein Benutzer die Anwendung zum ersten Mal besucht und noch kein Benutzerprofil mit seinen Präferenzen angelegt hat. Für diesen Fall ist es notwendig allgemeine Default-Werte für die fehlenden Kontextinformationen bereit zu halten oder den Benutzer dazu aufzufordern die fehlenden Informationen zu ergänzen. Dennoch darf man nicht außer Acht lassen, dass gerade ubiquitäre Web-Anwendungen hochgradig dynamisch sind [KPRS03] und daher auch die Akquisition der Kontextinformationen dynamisch erfolgen sollte. Denn auch der Nutzungskontext eines der Anwendung bereits bekannten Nutzers kann sich ’unvorhergesehen’ ändern. Zusätzlich hat sich auch gezeigt, dass es 2 Web Engineering 19 nützlich ist nicht nur aktuelle Kontextinformationen zu speichern sondern auch ’historische’ um Veränderungen im Nutzungsverhalten besser nachvollziehen zu können, aber auch um Vorhersagen bezüglich einzelner Kontextfaktoren (zB der Bandbreite) treffen zu können. 2.2.3 Adaptierung Wie schon für die Customization im Allgemeinen, gilt auch für die Adaptierung, dass diese sich über alle Dimensionen der Web-Anwendungsentwicklung erstreckt. Als Beispiel kann hier die Anpassung des User Interfaces auf Präsentationsebene oder die Anpassung der Linkstruktur auf Hypertextebene genannt werden. Wie bereits angesprochen, kann die Adaptierung statisch oder dynamisch ausfallen. Bei einer statischen Adaptierung wird lediglich aus einem Set an vorgefertigten Versionen der Web-Anwendung, beziehungsweise des zu adaptierenden Teils, eine passende gewählt. So können für unterschiedliche Endgeräte jeweils passende Templates für das User Interface vorliegen, wobei bei der Adaptierung lediglich das für das Endgerät zutreffende Template gewählt wird. Im Gegensatz dazu wird bei einer dynamischen Adaptierung die angepasste Web-Anwendung zur Laufzeit generiert. So werden hier Bilder entsprechend verkleinert oder ausgeblendet, Inhalte ausgewählt, Linkstrukturen angepasst, etc., und das Alles genau abgestimmt auf den aktuellen Nutzungskontext des Benutzers. Eine weitere Stufe bei der Adaptierung ist die “lernende Adaption“, auch Adaption of Adaption genannt [KaRS00]. Hierbei soll die Adaptierung die Customization selbst automatisch an sich ändernde Rahmenbedingungen anpassen. Das kann von einer Anpassung der Adaptierungsregeln an sich, also zum Beispiel deaktivieren, aktivieren oder ändern der Parametern von Regeln, bis hin zur Änderung der Gewichtung der, für die Customization wichtigen, Kontextfaktoren gehen. 2.2.4 Mapping - Customizationregeln Wie bereits angesprochen, bietet das Customization ein Mapping zwischen Kontextfaktoren und entsprechenden Customizationregeln. Ein möglicher Ansatz dazu ist basierend auf [KaRe98, FSK+ 02], so genannte Event/Condition/Action Regeln zu verwenden (siehe Abbildung 2.5). Hierbei drückt der Event mit der Condition den Kontext aus und die Action führt die Adaptierung durch. Als Beispiel kann der Event einfach der Aufruf einer Website durch einen Benutzer sein, die Condition ist zum Beispiel die aktuelle Tageszeit und die Action führt die Anpassung an sich durch, wobei in diesem Fall ein, auf die Tageszeit 2 Web Engineering 20 Abbildung 2.5: event/condition/action [FSK+ 02] abgestimmter Content geliefert wird. Customization wird in dieser Arbeit sehr umfassend gesehen, wie auch in [FSK+ 02]. Wie dort beschrieben muss Customization Personalisation und Context-Aware Computing gleichermaßen beinhalten. Personalisation liefert jedem Benutzer einen individuell abgestimmten Inhalt und bietet ihm somit einen erheblichen Mehrwert. Darüber hinaus liefert aber die Customization dem Benutzer das Angebot auch auf diverse total verschiedene Endgeräte. Hier kann zwar die Darstellung aufgrund der technischen Gegebenheiten unterschiedlich ausfallen, aber der Punkt ist, dass der Inhalt und der durch die Customization gebotene Mehrwert bei jedem Endgerät gleich ist und nicht verloren geht. 21 Kapitel 3 Endgeräteunabhängige Lösungsansätze Die meisten traditionellen Web-Anwendungen werden (zurecht) primär für normale PCs entwickelt und anfangs auch nur auf solchen getestet. Bei der Entwicklung einer ubiquitären Web-Anwendung ist aber schon von Beginn an klar, dass diese auch auf mobilen Endgeräten zumindest den Großteil der Funktionen der PC-Version aufweisen muss. Die wesentlichen Unterschiede von PCs und mobilen Endgeräten im Bezug auf die Verwendung von Web-Anwendungen sind [Noki04]: • Mobile Endgeräte haben kleinere Displays und eine größere Vielfalt an verschiedenen Auflösungen. • Seit einigen Jahren werden mobile Geräte nur mehr mit Farbdisplays angeboten, dennoch können diese nur 4.096 (12 bit) oder 65.536 (16 bit) Farben darstellen, wohingegen Desktop Monitore über 16 Millionen 32 bit Farben darstellen können. • Die Texteingabe mit Telefontastaturen oder Touchscreentastaturen ist mühsamer als mit einer normalen Tastatur • Mobile Geräte haben in der Regel keine Maus, was die Aktivierung von Objekten wie Links schwieriger macht. • Manche Browser, speziell für Mobiltelefone, unterstützen nur in der vertikalen Achse Scrollbalken. • Anstelle einer Maus werden Softkeys (in der Regel die Tasten direkt unter dem Display) für die Aktivierung von Objekten verwendet. Die Anzahl und Funktion dieser Tasten kann je nach Hersteller stark variieren, was die Entwicklung einheitlicher User-Interfaces starkt einschränkt bzw. erschwert. 3 Endgeräteunabhängige Lösungsansätze 22 • Die Übertragungsraten der Internet-Verbindung zum Server sind in der Regel geringer als bei einer fixen Anbindung. • Es steht nur wenig Platz zum Speichern von Cookies zur Verfügung. • Die Internet-Verbindung wird meist nach der Menge an übertragenen Daten verrechnet, wobei die Kosten pro Megabyte um ein Vielfaches höher sind, als bei festen Leitungen. Die Unterschiede zeigen größtenteils Besonderheiten der mobilen Endgeräte auf, dennoch werden Web-Anwendungen für unterwegs immer beliebter. Derzeit verfügen ca. 80% der Österreicher über ein Mobiltelefon und nur ca. 2% benutzen das Web bzw. Web-Anwendungen am Mobiltelefon. Auch wenn dies nur ein sehr geringer Anteil ist, wird davon ausgegangen, dass sich die Nutzung des Internets am Mobiltelefon in Zukunft weiter verstärkt. Die Fähigkeiten der Endgeräte werden immer besser und die Datentarife immer günstiger, was ein weiterer Grund ist, die Entwicklung von ubiquitären Webanwendungen zu forcieren [STAT05]. Dieses Kapitel beschäftigt sich mit dem anymedia Aspekt von ubiquitären Web-Anwendungen und der damit verbundenen Adaptierung der Anwendung für mobile Endgeräte. Für die Adaptierung ist es zuerst wichtig die Eigenschaften des jeweiligen Endgeräts zu kennen (siehe 3.1). Weiters muss man wissen bzw. festlegen wie die Inhalte erstellt werden (siehe 3.2) um dann eine oder mehrere Adaptierungstechniken (siehe 3.3) zu implementieren. 3.1 Methoden zur Erkennung der Geräteeigenschaften von Endgeräten Das wohl größte Problem bei der Entwicklung von ubiquitären WebAnwendungen für mobile Endgeräte ist die Vielfalt der möglichen Endgeräte und die unterschiedlichen Eigenschaften dieser Geräte. Gerade bei Mobiltelefonen gibt es im Vergleich zu anderen mobilen Endgeräten wie zB PDAs eine Vielzahl an verwendeten Browsern und auch meist sehr unterschiedliche Bildschirmauflösungen. Dieser Abschnitt beschäftigt sich mit der Erkennung dieser Geräteeigenschaften. Hierzu gibt es mehrere Möglichkeiten von denen im Folgenden die drei gängigsten vorgestellt werden. 3 Endgeräteunabhängige Lösungsansätze 23 3.1.1 HTTP Request Header Die Analyse der Header-Felder des HTTP-Requests ist die einfachste und beliebteste Methode um Informationen über das verwendete Endgerät bzw. den Browser zu erfahren. Die möglichen Header-Felder des HTTP 1.1. Protokolls sind in [RFC2] definiert. Für die Identifikation der Geräteeigenschaften sind folgende Felder nützlich. Accept Dieses Feld enthält eine Liste von MIME-Typen [RFC2] die vom Browser akzeptiert werden. Mit ihrer Hilfe kann man feststellen, welche Arten von Dateien das Endgerät unterstützt. Bei einem Request auf eine XHTML Datei könnte der Accept-Header zum Beispiel folgende Werte enthalten: application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */* Daraus kann man nun erkennen, dass der Browser des Endgeräts WML, XHTML-, HTML-Dateien usw. unterstützt. Bei einem Request auf eine Grafikdatei könnte der Accept-Header folgendermaßen aussehen: image/vnd.wap.wbmp, image/gif, image/jpg, image/jpeg, image/png, image/bmp, image/x-bmp Somit weiß der Server nun welche Arten von Bildern der Browser unterstützt. Da es eine Vielzahl an verschiedenen MIME-Typen gibt, findet sich eine Liste aller für mobile Endgeräte interessanten MIME-Typen in Anhang E. User-Agent Dieses Feld kann dazu verwendet werden den Browser und das Endgerät selbst zu identifizieren. Meist finden sich darin Informationen über den Hersteller, das Modell und das Betriebssystem. Folgend zwei Beispiele, einmal der User-Agent-Header des Nokia 6600 Mobiltelefons: Nokia6600/1.0 (4.03.24) SymbianOS/6.1 Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0 und des Internet Explorers 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) 3 Endgeräteunabhängige Lösungsansätze 24 Wie man aus den beiden Beispielen bereits erkennen kann gibt es keinen einheitlichen Standard bezüglich des Inhalts dieses Feldes. Da die Angaben je nach Hersteller sehr stark variieren, ist es nicht immer einfach die Informationen für Browser, Modell, Hersteller und Betriebssystem zuverlässig festzustellen, was vor allem daran liegt, dass es keine einheitliche Formatierung dieses Felds gibt. Beim ersten Beispiel kann man als Mensch leicht erkennen, dass es sich um ein Nokia 6600 mit Symbian OS Serie 60 2nd Edition handelt, beim zweiten Beispiel ist der Browser der Microsoft Internet Explorer am Betriebssystem Windows XP. Für die Adaptierung währen diese Informationen grundsätzlich ausreichend, allerdings sind sie auf Grund der vielen möglichen Ausprägungen des Header-Felds nur sehr schwer zu erkennen. Accept-Charset Das Accept-Charset Feld gibt an welcher Zeichensatz für die Response bevorzugt wird, was vor allem für Inhalte mit Sonderzeichen (wie zum zB Ä,Ö,Ü,ß) wichtig ist. Das Accept-Charset-Header Feld könnte zB so aussehen: ISO-8859-1, UTF-8; q=0.8, ISO-10646-UCS-2; q=0.6 Die verschiedenen Charsets sind, wie auch die verschiedenen Sprachen in der Regel in der Reihe der Präferenzen des Benutzers geordnet. Diese kann der Benutzer im Browser konfigurieren. Zusätzlich wird noch ein Qualitäts” Wert“ (zB q=0.8) angegeben, wobei der Default Wert 1 ist. Im obigen Beispiel bevorzugt der Benutzer also den Zeichensatz ISO-8859-1 mit einer Qualität von 1, vor dem Zeichensatz UTF-8 mit einer Qualität von 0.8 usw. Das gleiche System gilt analog für die Angabe der bevorzugten Sprache im Accept-Language Header-Feld. Accept-Language Dieses Feld gibt die bevorzugte Sprache für die Response an. Vor allem für mehrsprachige Webseiten ist dieses Feld von besonderem Interesse, da anhand der Angaben automatisch entschieden werden kann, in welcher Sprache die Seite angezeigt wird. Ein Beispiel für das AcceptLanguage-Header Feld: de, en-us; q=0.8, en; q=0.6 3 Endgeräteunabhängige Lösungsansätze 25 Aus den HTTP Header-Feldern kann man zwar einige für die Adaptierung nützliche Informationen erfahren, aber über die tatsächlichen Eigenschaften des Endgeräts erfährt man leider nur wenig. Aus diesem Grund haben einige Hersteller eigene Header-Erweiterungen eingeführt. Dabei handelt es sich um nicht standardisierte Felder, die je nach Hersteller unterschiedlich benannt sein können oder unter dem gleichen Namen unterschiedliche Werte enthalten können. Microsoft hat zB beim Pocket Internet Explorer [Msdn06] solche Header-Erweiterungen eingeführt. Listing 3.1 zeigt einen Auszug aus dem Request-Header des Pocket Internet Explorers. Neben den bereits vorgestellten Feldern finden sich die folgenden proprietären Felder: UA-OS Gibt das Betriebssystem des Endgeräts an. UA-color Gibt die unterstützte Farbtiefe des Displays an. UA-pixels Gibt die Auflösung des Displays an. UA-UPU Gibt den verwendeten Prozessor an. UA-Language Gibt an, welche Skriptsprachen der Browser unterstützt. Listing 3.1: Request Header Pocket Internet Explorer 1 2 3 4 5 6 7 8 9 GET http: // localhost:8080 / tip / main . do HTTP /1.1 Accept: */* UA - OS: Windows CE ( POCKET PC ) - Version 3.0 UA - color: color16 UA - pixels: 240 x320 UA - CPU: ARM SA1110 UA - Language: JavaScript User - Agent: Mozilla /2.0 ( compatible ; MSIE 3.02; Windows CE ; 240 x320 ) 3.1.2 Composite Capabilities/Preferences Profile Wie bereits zuvor erwähnt, bieten die Request Header nur sehr beschränkte Möglichkeiten zur Erkennung der Geräteeigenschaften. Darum hat das World Wide Web Consortium (W3C) 2004 den auf RDF [RDF04] basierenden Standard Composite Capabilities/Preferences Profile (CC/PP) [W3C004b] verabschiedet. Ein CC/PP Profil enthält die Geräteeigenschaften und eventuelle Benutzerpräferenzen mit deren Hilfe sowohl die geräteabhängige, als auch die inhaltliche Adaptierung vereinfacht wird. Es besteht aus verschiedenen Komponenten, in denen eine beliebige Anzahl an Attributen und Werten von einem Vokabular definiert werden. Der Vorteil besteht darin, dass diese Vokabularien beliebig definiert werden können, man ist somit bei der Beschreibung der Geräteeigenschaften nicht auf 3 Endgeräteunabhängige Lösungsansätze 26 eine fixe Anzahl an vielleicht nicht zutreffender Attribute beschränkt. Listing 3.2 zeigt ein Beispiel für ein CC/PP Profil. Es besteht aus Komponenten (im Beispiel die Komponente HardwarePlatform) die wiederum Attribute (zB displayWidth) und deren Werte (zB 320) enthalten. Ein Profil muss mindestens eine Komponente mit einem Attribut enthalten [W3C004b]. Das Beispiel zeigt die Komponente HardwarePlatfom in der die Eigenschaften des Geräts wie zB Auflösung des Bildschirms definiert werden und danach jene des Betriebssystems und des Browsers. In Abschnitt 3.1.3 werden die möglichen Komponenten ausführlicher dargestellt. Listing 3.2: Request Beispiel eines CC/PP Profils 1 2 3 4 <? xml version = " 1.0 " ? > < rdf:RDF xmlns:rdf = " http: // www . w3 . org /1999/02/22 - rdf - syntax - ns # " xmlns:ccpp = " http: // www . w3 . org /2002/11/08 - ccpp - schema # " xmlns:ex = " http: // www . example . com / schema # " > 5 6 7 < rdf:Description rdf:about = " http: // www . example . com / profile # MyProfile " > 8 9 10 11 12 13 14 15 16 17 < ccpp:component > < rdf:Description rdf:about = " http: // www . example . com / profile # T e r m i n a l H a r d w a r e " > < rdf:type rdf:resource = " http: // www . example . com / schema # H a r d w a r e P l a t f o r m " / > < ex:displayWidth > 320 </ e x : d i sp l a y W i d t h > < ex:d isp layH eigh t > 200 </ e x : d i s p l a y H e i g h t > </ rdf:Description > </ ccpp:component > 18 19 20 21 22 23 24 25 26 27 28 < ccpp:component > < rdf:Description rdf:about = " http: // www . example . com / profile # T e r m i n a l S o f t w a r e " > < rdf:type rdf:resource = " http: // www . example . com / schema # S o f t w a r e P l a t f o r m " / > < ex:name > EPOC </ ex:name > < ex:version > 2.0 </ ex:version > < ex:vendor > Symbian </ ex:vendor > </ rdf:Description > </ ccpp:component > 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 < ccpp:component > < rdf:Description rdf:about = " http: // www . example . com / profile # T e r mi n a l B r o ws e r " > < rdf:type rdf:resource = " http: // www . example . com / schema # BrowserUA " / > < ex:name > Mozilla </ ex:name > < ex:version > 5.0 </ ex:version > < ex:vendor > Symbian </ ex:vendor > < ex:htmlVersionsSupported > < rdf:Bag > < rdf:li > 3.2 </ rdf:li > < rdf:li > 4.0 </ rdf:li > </ rdf:Bag > </ e x : h t m l V e r s i o n s S u p p o r t e d > </ rdf:Description > 3 Endgeräteunabhängige Lösungsansätze 45 27 </ ccpp:component > 46 47 48 </ rdf:Description > </ rdf:RDF > 3.1.3 User Agent Profile Der User Agent Profile (UAProf) Standard wurde von der Open Mobile Alliance basierend auf dem CC/PP Framework entwickelt. UAProf definiert unter anderem ein fixes Vokabularium für mobile Endgeräte und kann somit als Implementierung von CC/PP gesehen werden [OMA006]. Nahezu alle Mobiltelefonhersteller und auch ein Großteil der PDA Hersteller stellen mittlerweile UAProf-Profile für ihre Geräte zur Verfügung. Diese werden in einem Repository gespeichert, das meist auch vom jeweiligen Hersteller betrieben wird. Die URL zu dem jeweiligen Profil findet sich im Header des HTTP-Requests in dem Feld x-wap-profile. Hier ein Beispiel für das Nokia 6230 Mobiltelefon. x-wap-profile: "http://nds1.nds.nokia.com/uaprof/N6230ir200.xml" Wie das CC/PP Profil besteht das UAProf Profil auch aus Komponenten mit Attributen und Werten. Diese sind jedoch vorgegeben um sicherzustellen, dass die Hersteller nicht verschiedene Komponenten und Attribute für den selben Wert definieren. Im Folgenden wird ein Teil der möglichen Komponenten und Attribute kurz beschrieben. Listing 3.3 zeigt einen Auszug aus dem UAProf Profil des Nokia 6230i. Das vollständige Profil findet sich in Anhang F. Listing 3.3: Request Beispiel eines CC/PP Profils 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 < rdf:RDF xmlns:rdf = " http: // www . w3 . org /1999/02/22 - rdf - syntax - ns # " xmlns:prf = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# " xmlns:mms = " http: // www . wapforum . org / profiles / MMS / ccppschema -20010111# " > < rdf:Description rdf:ID = " Profile " > < prf:component > < rdf:Description rdf:ID = " H a r d w a r e P l a t f o r m " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# H a r d w a r e P l a t f o r m " / > < prf:BluetoothProfile > < rdf:Bag > < rdf:li > Headset Profile </ rdf:li > < rdf:li > Handsfree Profile </ rdf:li > < rdf:li > SIM Access Profile </ rdf:li > < rdf:li > Dial - up Networking Profile </ rdf:li > < rdf:li > Object Push Profile </ rdf:li > < rdf:li > File Transfer Profile </ rdf:li > < rdf:li > Generic Access Profile </ rdf:li > < rdf:li > Serial Port Profile </ rdf:li > < rdf:li > General Object Exchange Profile </ rdf:li > </ rdf:Bag > 3 Endgeräteunabhängige Lösungsansätze 28 </ p r f : B l u e t o o t h P r o f i l e > < prf: Bit sPer Pixe l > 16 </ p r f : B i t s P e r P i x e l > < prf: Col orCa pabl e > Yes </ p r f : C o l o r C a p a b l e > < prf: Ima geCa pabl e > Yes </ p r f : I m a g e C a p a b l e > < prf: Inp utCh arSe t > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > </ rdf:Bag > </ pr f:I nput Char S e t > < prf:Keyboard > PhoneKeyPad </ prf:Keyboard > < prf:Model > 6230 i </ prf:Model > < p r f : N u m b e r O f S o f t K e y s >3 </ p r f : N u m b e r O f S o f t K e y s > < p rf : Ou tp u tC ha r S e t > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > </ rdf:Bag > </ pr f: O ut pu t Ch a r S e t > < p r f : P i x e l A s p e c t R a t i o >1 x1 </ p r f : P i x e l A s p e c t R a t i o > < prf:ScreenSize > 208 x208 </ p rf :S cre en Si ze > < p r f : S c r e e n S iz e C h a r > 18 x5 </ p r f : S c r e e n S i z e C h a r > < p r f : S t a n d a r d F o n t P r o p o r t i o n a l > Yes </ p r f : S t a n d a r d F o n t P r o p o r t i o n a l > < p r f : S o u n d O u t p u t C a p a b l e > Yes </ p r f : S o u n d O u t p u t C a p a b l e > < p r f : T e x t I n p u t C a p a b l e > Yes </ p r f : T e x t I n p u t C a p a b l e > < prf:Vendor > Nokia </ prf:Vendor > < p r f : V o i c e I n p u t C a p a b l e > Yes </ p r f : V o i c e I n p u t C a p a b l e > </ rdf:Description > </ prf:component > 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 HardwarePlatform Beinhaltet die Beschreibung der Hardwareeigenschaften des mobilen Endgeräts. Zum Beispiel Bildschirmauflösung, Bezeichnung des Geräts, Name des Herstellers und Informationen über Tastaur, Farb- und Bilddarstellung. SoftwarePlatform Diese Komponente enthält Informationen über die Softwareeigenschaften des Geräts, wie zB Name und Version des Betriebssystems, Java-Unterstützung, die akzeptierten MIME Typen und Schriftsätze. NetworkCharacteristics Gibt Auskunft über die Netzwerkfähigkeiten des Geräts, wie zB die möglichen Übertragungsarten (GPRS1 , CSD2 , EGPRS3 , HSCSD4 , WLAN5 , EDGE6 ,...) und die unterstützten Verschlüsselungsme1 General Packet Radio Service Circuit Switched Data 3 Enhanced General Packet Radio Service 4 High Speed Circuit Switched Data 5 Wireless Local Area Network 6 Enhanced Data Rates for GSM Evolution 2 3 Endgeräteunabhängige Lösungsansätze 29 thoden (SSL7 , TSL8 , WTSL9 ,...). BrowserUA Enthält Informationen über die Fähigkeiten des verwendeten Browsers. Zum Beispiel Name und Version des Browsers, unterstütze HTML und XHTML Version, sowie Informationen zu den JavaScript-Fähigkeiten. WapCharacteristics Enthält Informationen über die unterstützten WAP-Fähigkeiten des Geräts, zB die WAP Version und die unterstützten WML Script Libraries, sowie die DRM10 -Fähigkeiten. Neben den vorgestellten Ansätzen, die mehr oder weniger auf Standards des W3C beruhen, gibt es noch das Open Source Projekt WURFL. WURFL steht für Wireless Universal Resource FilLe und ist eine Datenbank, die die Eigenschaften von derzeit ca. 4500 mobilen Endgeräten enthält [wurf06]. Da WURFL ein Open Source Projekt ist, kann jeder die Informationen zu den jeweiligen Endgeräten selbst bearbeiten und ergänzen. Die Datenbank liegt im XML-Format vor, die jeweiligen Endgeräte werden darin anhand ihres User-Agent Felds aus dem Request eindeutig identifiziert. 3.2 Techniken zur Erstellung von Inhalten für ubiquitäre Web-Anwendungen Nachdem der technische Kontext bekannt ist, gilt es für die ubiquitäre WebAnwendung nun, die sich daraus ergebenden Einschränkungen auf die Inhalte und Darstellung dieser anzuwenden. Dieser Vorgang der Adaptierung steht in engem Zusammenhang mit der angewandten Authoring-Technik. Unter Authoring wird die Erstellung von Inhalten für Webseiten verstanden [W3C004a]. Generell kann man sagen, dass es für die Entwicklung von ubiquitären Web-Anwendungen im Bezug auf die Endgerätunabhängigkeit zwei Authoring-Ansätze gibt: Multiple Authoring mit kontextabhängiger Selektion und Single Authoring mit kontextabhängiger Adaptierung. Diese beiden Ansätze stellen sozusagen die Extreme dar. Denn die Verantwortung für die Endgerätunabhängigkeit liegt entweder ausschließlich beim Autor oder der Anwendung. Bei einfachen Anwendungsfällen mag dies durchaus sinnvoll und nützlich sein, dennoch wäre eine flexible Kombination der beiden Ansätze im Sinne eines Flexible Authoring wünschenswert. 7 Secure Sockets Layer Transport Layer Security 9 Wireless Transport Layer Security 10 Digital Rights Management 8 3 Endgeräteunabhängige Lösungsansätze 30 Multi Authoring Dabei werden die Inhalte für mögliche Klassen von Endgeräten (zB PCs, PDAs, Mobiltelefone) jeweils eigens erstellt. Es existieren also mehrere Versionen des gleichen Inhalts. Da es natürlich nicht möglich ist verschiedene Versionen für alle Endgeräte zu erstellen, besteht die Möglichkeit, dass Geräte, die nicht einer vorhandenen Klasse zugeordnet werden können, nicht alle Inhalte korrekt darstellen können. Weiters ist die Wartung der Inhalte mit größerem Aufwand verbunden, da die Daten der verschiedenen Versionen untereinander konsistent gehalten werden müssen. Allerdings ist die Implementierung bzw. Erstellung der Web-Anwendung mit relativ geringem Aufwand verbunden, da keine komplizierten Adaptierungsmechanismen notwendig sind. Vorteile hat Multi Authoring vor allem bei Webseiten mit einem großen Anteil an Multimedia-Inhalten, wie zum Beispiel Videos die in verschiedenen Größen und Qualitätsstufen zur Verfügung gestellt werden. Die eigentliche Adaptierung beschränkt sich auf die Auswahl einer der verschiedenen Versionen. Single Authoring Beim Single Authoring wird im Gegensatz zum Multi Authoring nur eine Version des Inhalts erstellt. Mit Hilfe von verschiedenen Adaptierungstechniken wird dieser dann für die jeweiligen Endgeräte angepasst. Um dies zu ermöglichen ist es in der Regel notwendig, dass der Autor auch noch zusätzliche Metainformation bei der Erstellung des Inhalts angibt. Dies können beispielsweise spezielle Tags oder Kommentare im Inhalts sein, die wichtige Stellen oder Absätze markieren, die auf jeden Fall nach der Adaptierung noch vorhanden sein müssen. Der Aufwand, sowohl bei der Erstellung der Inhalte als auch bei der Implementierung der Anwendung, ist bei Single Authoring in der Regel größer als beim Multi Authoring. Die Vorteile bestehen daher in der relativ einfachen Erweiterbarkeit der Anwendung im Hinblick auf neue Endgeräte und der unkomplizierten Wartung der Inhalte. Flexible Authoring Beim Flexible Authoring hat der Autor die Möglichkeit Single und Multi Authoring Techniken zu kombinieren. So kann er zum Beispiel Inhalte wie reine Texte nur einmalig erstellen, welche dann für das jeweilige Endgerät adaptiert werden, oder er kann zum Beispiel bei Mutlimedia Inhalten verschiedene Versionen für die jeweiligen Endgeräte erstellen. Vor allem bei größeren Portalen kommt Flexible Authoring zum Einsatz, denn dort werden die Inhalte für eine Seite aus vielen Teilen (zB Schlagtexten von Artikeln und Bildern) zusammengestellt. 3 Endgeräteunabhängige Lösungsansätze 31 Flexible Authoring soll somit die Vorteile aus den beiden Extremen vereinen. Für die Entwicklung eines Authoring Ansatzes, der alle Vorteile des Multi und Flexible Authorings vereint und somit auch gleichzeitig die bestmögliche Lösung für eine ubiquitäre Web-Anwendung darstellt, ist es notwendig alle Aspekte des Authoring zu kennen. Im Folgenden werden die teilweise überlappenden Aspekte des Authoring [W3C004a] definiert. Style Die optische Darstellung des Texts (zB Schriftart oder Farbe), sowie die Ausrichtung oder Einrückung. Layout Das Aussehen und die optische Beziehung zwischen den einzelnen Elementen der Seite. Content Der eigentliche Text bzw. andere Ressourcen wie Bilder Videos und Dateien. Structure Beziehungen zwischen den verschiedenen Inhalten, zB Reihenfolge von Bildern oder Artikel in einer Übersicht usw. Navigation Sollte dem Benutzer die Möglichkeit bieten mit dem geringstmöglichen Aufwand die verschiedenen Inhalte zu finden. Application Interaction Die Art, wie der Benutzer mit der Anwendung interagiert, zB nur über Links oder über Formulare, in denen er mehrere Informationen eingibt, und wie die Anwendung darauf reagieren soll. Für jeden dieser Aspekte gibt es verschiedene Möglichkeiten der Adaptierung. In Abschnitt 3.3.2 werden verschiedene Adpatierungsansätze vorgestellt, mit deren Hilfe die Adaptierung all dieser Aspekte möglich ist. 3 Endgeräteunabhängige Lösungsansätze 32 3.3 Adaptierungsansätze für Endgerätunabängigkeit von ubiquitären Web-Anwendungen 3.3.1 Ort der Adaptierung Die eigentliche Adaptierung auf das Endgerät kann, wie bereits erwähnt mit Hilfe von verschiedenen Techniken erfolgen. Welche Techniken zum Einsatz kommen hängt nicht nur von der eingesetzten Authoring Methode ab, sondern auch davon wo die Adaptierung stattfindet. Abbildung 3.1: Intermediate Adaptation Intermediate Adaptation Wird hauptsächlich für die Adaptierung von bereits vorhandenen Anwendungen eingesetzt und wenn man Änderungen an der Anwendung generell vermeiden möchte [BGGW02]. Für die Adaptierung werden der Request des Clients und der Response des Webserver über einen Proxy Server geleitet (siehe Abbildung 3.3.1). Generell ist dabei nur eine eingeschränkte Art der Adaptierung möglich weil der Proxy Server in der Regel keine Informationen über die Inhalte hat. So kann der Proxy Bilder ohne Probleme in ihrer Auflösung verändern oder teilweise auch HTML in zB Compact HTML (cHTML) transformieren, jedoch nur bedingt für mobile Endgeräte unwichtige Teile des Inhalts entfernen oder die Navigation an die Anforderungen für mobile Endgeräte anpassen. Dies wäre nur möglich, wenn der Proxy in die Entwicklung der Anwendung logisch miteinbezogen würde und somit eventuelle Metainformationen über den Inhalt kennt und auch verarbeiten kann. In diesem Fall hätte eine Proxy Architektur durchaus Sinn, da sie den Server bzw. Client entlasten würde. 3 Endgeräteunabhängige Lösungsansätze 33 Abbildung 3.2: Client Side Adaptation Client Side Adaptation Hier findet die Adaptierung direkt am Endgerät bzw. meistens direkt im Webbrowser statt (siehe Abblidung 3.3.1). Der Vorteil besteht darin, dass der Client in der Regel seine Fähigkeiten kennt und daher eine aufwändige Erkennung der Geräteeigenschaften durch den Web Server oder Proxy Server entfällt [BGGW02]. Der Nachteil ist, dass möglicherweise eine große Menge an Daten an den Client gesendet wird von denen er aber nur einen Teil darstellen kann. Gerade bei Mobiltelefonen, bei denen die Bandbreite in der Regel nicht besonders hoch ist und nach Datenvolumen abgerechnet wird, kann dies problematisch werden. Die Adaptierung am Client erfolgt in der Regel durch verschiedene CSS Stile [CSS] die abhängig von den CSS Media Typs angewendet werden (siehe Listing 3.4). Im Gegensatz zur Adaptierung am Proxy Server hat der Autor einfach die Möglichkeit die Adaptierung durch die Definition eines Styles zu beeinflussen. Dabei ist zu beachten, dass Inhalt und Layout streng von einander getrennt werden. Listing 3.4: CSS Stil mit Styledefinitionen für die verschiedenen Endgeräte 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* media - dependent foreground / background colours */ @media screen , print , handheld { body { color: black ; background - color: white } } @media projection , tv { body { color: white ; background - color: blue } } /* media - dependent font family */ @media screen , handheld , tv , projection { body { font - family: helvetica , sans - serif } } @media print { body { font - family: times , serif } } /* media - dependent text appearance */ @media screen , print { body { font - size: 12 pt } } @media handheld { body { font - size: 10 pt ; line - height: 80% } } @media projection , tv { body { font - size: 16 pt ; font - weight: bold } } /* increase width of borders on tv to avoid flicker */ @media tv { body { border - width: thick } } 3 Endgeräteunabhängige Lösungsansätze 34 Abbildung 3.3: Server Side Adaptation Server Side Adaptation Hierbei hat man fast alle nur denkbaren Möglichkeiten zur Adaptierung, die nur durch den Implementierungsaufwand (Kosten/Nutzen) eingeschränkt werden. Die Adaptierungsmethoden sind in der Regel speziell für die Anwendung entwickelt und man muß nur wenige Kompromisse in Kauf nehmen. Nur bei der serverseitigen Adaptierung ist es möglich eine speziell für den Client angepasste Version unter Berücksichtigung aller Kontextfaktoren, zur Verfügung zu stellen. Für ubiquitäre WebAnwendungen ist Server Side Adaptation daher die einzig praktikable Vorgehensweise. Da bei der Entwicklung einer ubiquitären Web-Anwendung schon von Beginn an klar ist, dass die Inhalte auch mobilen Endgeräten in großen Umfang zugänglich gemacht werden müssen, ist in diesem Fall die serverseitige Adaption die beste Lösung. Aus diesem Grund wird im Folgenden speziell auf die Adaptierungstechniken für serverseitige Adaptierung eingegangen. Auch bei dem entwickelten Prototyp wurden ausschließlich serverseitige Adaptierungstechniken eingesetzt (siehe Kapitel 5). 3.3.2 Adaptierungstechniken Im folgenden Abschnitt werden einige Adaptierungstechniken für die Endgerätunabhängigkeit von ubiquitären Web-Anwendungen bei serverseitiger Adaptierung vorgestellt. Jede dieser Techniken kann entweder einzeln zum Einsatz kommen oder in Kombination mit anderen Techniken. Aggregation Bei der Aggregation werden mehrere Inhalte von verschiedenen Quellen zu einer Seite zusammengestellt. Dabei wird davon ausgegangen, dass die Inhalte einer 3 Endgeräteunabhängige Lösungsansätze 35 Seite (zB der Artikel eines Redaktionsystems) sich aus verschiedenen Komponenten zusammensetzen und diese Komponenten wieder in verschiedenen Versionen für die jeweiligen Endgeräte existieren. Je nach Fähigkeiten des Endgeräts werden nur die vom Endgerät unterstützten Komponenten ausgewählt und so der eigentliche Inhalt der Seite erstellt. Dabei ist natürlich zu beachten, dass der Sinn des Inhalts nicht verloren geht. Aggregation kann auch gut mit den anderen im Folgenden vorgestellten Adaptierungstechniken kombiniert werden. Dekomposition Unter Dekomposition wird die Aufteilung der Inhalte eine Seite in kleinere dem Endgerät angepasste Einheiten verstanden [W3C004a]. Da mobile Endgeräte in der Regel über kleinere Bildschirme verfügen, ist es sinnvoll die Darstellung einer Seite die für eine normale Auflösung entwickelt wurden, in kleinere Einheiten zu unterteilen. Dadurch werden einerseits die Ladezeiten verkürzt und lange unangenehme Scrollbalken vermieden. Für die Implementierung der Dekomposition gibt es eine Vielzahl an Ansätzen. So kann man den Text zB automatisch nach einer beliebigen Anzahl an Sätzen abbrechen, was aber unter Umständen dazu führen kann, dass der Sinn des Inhalts oder der Lesefluss beeinträchtigt werden. Um dies zu vermeiden kann man Techniken einführen die es dem Autor erlauben auf die Dekomposition Einfluss zu nehmen. Drei mögliche Ansätze, d.h. Kommentare mit Page Breaks, Absätze bzw. Sektionen und Regions, werden im Folgenden kurz vorgestellt. Kommentare mit Page Breaks Dies ist der gängigste Ansatz. Der Autor fügt an der Stelle im Text an der die Seite umbrechen soll (zB nach einem Absatz) einen vordefinierten Kommentar oder ein anders vordefiniertes Zeichen ein. Bei der Adaptierung wird die Seite dann genau an dieser Stelle umgebrochen. Abbildung 3.3.2 veranschaulicht dieses Konzept. Abbildung 3.4: Dekomposition mit Hilfe von Kommentaren 3 Endgeräteunabhängige Lösungsansätze 36 Absätze bzw. Sektionen Dabei werden die Seiten nach den HTML Überschrift Tags <hn> über jedem Absatz aufgeteilt (siehe Abbildung 3.3.2). Somit kann auch gleich automatisch anhand der Überschriften ein (hierarchisches) Inhaltsverzeichnis erstellt werden. Dieses Konzept kann auch auf die in XHTML 2.0 neu eingeführten Sektionen (siehe Listing 3.5) angewandt werden. Abbildung 3.5: Dekomposition mit Hilfe von Überschriften Listing 3.5: Überschriften vs. Sektionen in XHTML 2.0 1 2 3 HTML / XHTML < h1 > Überschrift 1 </ h1 > < h2 > Überschrift 2 </ h2 > 4 5 6 7 8 9 10 11 XHTML 2.0 < section > <h > Titel </ h > < section > <h > Titel </ h > </ section > </ section > Regions Regions sind Teile im Text, die durch ein Beginn und ein Endzeichen markiert sind. Dies können entweder proprietäre Zeichen wie spezielle Kommentare sein oder HTML Tags wie <span> oder <div>, die auch durch ihr ID Attribut eindeutig identifiziert werden können. Abbildung 3.3.2 veranschaulicht dieses Konzept mit proprietären Anweisungen. Transcoding Unter Transcoding versteht man die Veränderung des HTML-Codes an die Anforderung des jeweiligen Endgeräts. So könnte man zB HTML in cHTML transformieren. cHTML ist eine kleinere Teilmenge von HTML bei der auf komplizierte und unflexible Präsentationsstrukturen wie zB Tabellen verzichtet wird. Generell ist das Transcoding der mit Abstand komplizierteste Vorgang im gesamten 3 Endgeräteunabhängige Lösungsansätze 37 Abbildung 3.6: Dekomposition mit Hilfe von Regions Prozess der endgerätunabhängigen Adaptierung. Um ein zufriedenstellendes Ergebnis zu erhalten sind genaue Regeln notwendig, die angeben wie die einzelnen Codefragmente transformiert werden sollen und dennoch müssen sie auch eine gewisse Fehlertoleranz zulassen. Im Folgenden werden zwei verschiedene Transcodingansätze vorgestellt. XSLT XSLT steht für Extensible Stylesheet Laguage Transformation [W3CX99] und ist eine Sprache zur Transformation von XML Dokumenten. Dabei werden Templates, die Transformationsregeln enthalten, auf die Knoten des XML-Dokuments angewandt. Die Knoten werden mit Hilfe von Patterns selektiert, die auf XPath basieren. Die Ausgabe eines solchen XSLTStylesheets kann wieder XML sein aber auch (X)HTML, RDF, CSV, oder jedes andere Textformat. Listing 3.6: XHTML Dokument vor der Transformation 1 2 3 4 5 6 7 8 9 10 11 <? xml version = " 1.0 " ? > <! DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.1// EN " " http: // www . w3 . org / TR / xhtml11 / DTD / xhtml11 . dtd " > < html xmlns = " http: // www . w3 . org /1999/ xhtml " xml:lang = " en " > < head > < title > Test document </ title > </ head > < body > < h1 > Test document </ h1 > <p > This paragraph indicates the rest of the document . </ p > </ body > </ html > Listing 3.7: XSLT Dokument 1 2 3 4 5 <? xml version = " 1.0 " ? > < xsl:stylesheet version = " 2.0 " xmlns:xhtml = " http: // www . w3 . org /1999/ xhtml " xmlns = " http: // www . w3 . org /1999/ xhtml " xmlns:xsl = " http: // www . w3 . org /1999/ XSL / Transform " 3 Endgeräteunabhängige Lösungsansätze 6 7 8 9 10 38 xmlns:xs = " http: // www . w3 . org /2001/ XMLSchema " xmlns:fn = " http: // www . w3 . org /2005/02/ xpath - functions " xmlns:xdt = " http: // www . w3 . org /2005/02/ xpath - datatypes " exclude - result - prefixes = " xhtml xsl fn xs xdt " > < xsl:output method = " xml " version = " 1.0 " encoding = " UTF -8 " doctype - public = " -// W3C // DTD XHTML 1.1// EN " doctype - system = " http: // www . w3 . org / TR / xhtml11 / DTD / xhtml11 . dtd " indent = " yes " / > 11 12 13 14 15 16 17 <! -- the identity template -- > < xsl:template match = " @ *| node () " > < xsl:copy > < xsl:apply - templates select = " @ *| node () " / > </ xsl:copy > </ xsl:template > 18 19 20 21 22 23 24 < xsl:template match = " xhtml:head " > < xsl:copy > < link rel = " StyleSheet " href = " xhtml_test . css " type = " text / css " / > < xsl:apply - templates select = " @ *| node () " / > </ xsl:copy > </ xsl:template > 25 26 27 28 29 30 31 32 33 34 < xsl:template match = " xhtml:body " > < xsl:copy > < div class = " menu " > <p > <a href = " home " > Homepage </ a > & gt ; < strong > Test document </ strong > </ p > </ div > < xsl:apply - templates select = " @ *| node () " / > </ xsl:copy > </ xsl:template > </ xsl:stylesheet > Listing 3.8: XHTML Dokument nach der Transformation 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <? xml version = " 1.0 " ? > <! DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.1// EN " " http: // www . w3 . org / TR / xhtml11 / DTD / xhtml11 . dtd " > < html xmlns = " http: // www . w3 . org /1999/ xhtml " xml:lang = " en " > < head > < link rel = " StyleSheet " href = " xhtml_test . css " type = " text / css " / > < title > Test document </ title > </ head > < body > < div class = " menu " > <p > <a href = " home " > Homepage </ a > & gt ; < strong > Test document </ strong > </ p > </ div > < h1 > Test document </ h1 > <p > This paragraph indicates the rest of the document . </ p > </ body > </ html > Transcoding mit Annotationen Dabei wird das HTML Dokument mit Hilfe von Annotationen, also Anmerkungen transformiert [IBM06]. Die Annotationen enthalten dabei Informationen zur Transformation. Diese können aber 3 Endgeräteunabhängige Lösungsansätze 39 nicht im HTML Dokument stehen, da sie dort den HTML-Standard verletzen würden. Darum werden die Annotationen in einer RDF [RDF04] Datei gespeichert. Die Verbindung zwischen den Annotationen und dem zu transformierenden Dokument bzw. Knoten im Dokument wird mit Hilfe von XPointer [XPTR02] hergestellt. XPointer ist eine Weiterentwicklung von XPath [XPAT99] um einzelne Elemente in HTML Dokumenten zu selektieren. Medienadaptierung Medienressourcen wie Bilder oder Videos werden bei der Medienadaptierung auf die jeweiligen Anforderungen bzw. Einschränkungen des Endgeräts angepasst. Die Adaptierung von Bildern ist in der Regel relativ einfach möglich. Dabei werden Auflösung, Kompression (Dateigröße) und Farbtiefe angepasst, aber auch die Umwandlung in ein anderes Format (zB JPEG in WBMP) ist möglich. Die Umwandlung der Bilder in ein bestimmtes Format erfolgt normalerweise nur einmal, wenn das Bild das erste Mal vom Server abgerufen wird, dann wird es aus Performance Gründen zwischengespeichert. Ähnlich verhält es sich bei der Adaptierung von Videos, nur ist da die Umwandlung in verschiedene Größen noch rechenaufwändiger und es werden meist spezielle Programme dazu benötig. Aus diesem Grund werden Videos selten direkt von der Web-Anwendung umgewandelt, sondern der Autor stellt mehrere Versionen zur Verfügung aus denen dann die passende selektiert wird. In diesem Kapitel wurden eine Vielzahl von verschiedenen Ansätzen für die Adaptierung von Web-Anwendungen auf die Anforderungen von mobilen Endgeräten vorgestellt. Welche Kombination aus den verschiedenen Ansätzen die beste ist, hängt in der Regel stark von den Services ab, die die Anwendung den Benutzern zur Verfügung stellt und natürlich auch von dem Aufwand den man bei der Entwicklung betreiben will. Wir haben uns für serverseitige Adaptierung in Verbindung mit Flexible Authoring, und einer Kombination aus mehreren Adatierungstechniken die abhängig vom Nutzungskontext zum Einsatz kommen, entschieden. Diese Lösung für das Tourismusinformationssystem, das im Zuge dieser Arbeit entwickelt wurde, wird in Abschnitt 5.3 vorgestellt. 40 Kapitel 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems Im Zuge dieser Arbeit wurde eine praxisnahe, ubiquitäre Web-Anwendung entwickelt. Um möglichst viele Beispiele zur Customization zu zeigen, entschlossen wir uns, als Forschungsprototyp ein Tourismusinformationssystem zu implementieren. Gerade die Bedürfnisse eines Urlaubsgasts sind ein Paradebeispiel für die Notwendigkeit des anytime/anywhere/anymedia Paradigma von ubiquitären WebAnwendungen. Dieser hat den Wunsch, sich im Urlaub überall mit seinem Handy/PDA oder über einen beliebigen Internetzugang über Freizeitangebote und aktuelle Angebote in seiner Urlaubsregion zu informieren. Die ubiquitäre WebAnwendung passt sich dabei immer an die momentane Situation des Benutzers an und liefert ihm zusätzlich noch die für ihn interessantesten Informationen direkt auf der Startseite. 4.1 Allgemeine Beschreibung Die Grundidee besteht darin, ein Tourismusinformationssystem zu entwickeln, das dem Benutzer objektive und tagesaktuelle Informationen zu den verschiedenen Urlaubsorten liefert. Es soll eine Plattform geboten werden, die dem Benutzer einerseits vor dem Urlaub eine Entscheidungshilfe, wo er seinen Urlaub verbringen möchte, und andererseits während des Urlaubs ein ständiger Begleiter und Ratgeber ist. Darin liegt auch der große Unterschied zu bereits vorhandenen Tourismusinformationssystemen, da der Gast mit dem System umfangreiche und tagesaktuelle Informationen zu allen möglichen Freizeitaktivitäten, dem Wetter, 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 41 der Schneelage, Events, Lokale, usw. einer Region seiner Wahl geliefert bekommt und somit auch während seinem Aufenthalt eine ständige und zuverlässige zentrale Informationsquelle zur Verfügung hat. Gerade im Vergleich mit anderen Tourismusinformationssystemen12 wird sofort klar, dass diese großteils nur ’Presales’-Informationen zur Verfügung stellen. Bereits auf der Startseite finden sich eine Vielzahl an Preisen und Buchungsmöglichkeiten. Das erklärte Ziel der Anwendungen ist, den Benutzer auf Urlaub in Österreich zu schicken, aber man hat immer den Eindruck es soll primär ein bestimmtes Angebot verkauft werden. Für detaillierte Informationen über einzelne Regionen und deren Angebote wird meist auf die Seite des lokalen Tourismusverbands verwiesen. Das von uns entwickelte System sollte sich genau dieser Problematik annehmen und die Angebote abseits der Hotelzimmer zentral und objektiv präsentieren. Mit Zusatzfunktionalitäten für registrierte Benutzer soll eine ’Community’ geschaffen werden, welche auch die Möglichkeit hat, einzelne Angebote zu bewerten und zu kommentieren. Gerade der Kontrast von den aufdringlichen Angeboten auf den bereits vorhandenen Anwendungen zu den eher unauffälligen Möglichkeiten der gezielten Information bei einer ubiquitären Web-Anwendung macht den Reiz an der Entwicklung eines solchen Systems aus. 4.2 Basisfunktionalität Die Web-Anwendung teilt sich in zwei getrennte Anwendungsgebiete, die ContentErstellung (Backend ) und die Content-Nutzung (Frontend ). Das Frontend dient primär dazu, dem Endbenutzer Informationen anzuzeigen, die im Backend von Redakteuren und anderen Content-Erstellern eingegeben und gepflegt werden. Der Funktionsumfang der Web-Anwendung wird im Folgenden anhand von UML Use Case Diagrammen näher beschrieben. 4.2.1 Funktionen für den Endbenutzer (Frontend) Abbildung 4.1 zeigt die möglichen Anwendungsfälle für Benutzer des Frontend. Dieser Funktionsumfang steht im System angemeldeten Usern zur Verfügung. Anonyme Benutzer können die Hauptfunktionalität - Content browsen, nach Informationen suchen, Sprache einstellen und Newsletter abonnieren - ausführen, sowie sich als Benutzer anmelden um auch Ratings abgeben und den Reisekoffer nutzen zu können. 1 2 http://www.tiscover.at/ http://www.austria.info/ 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 42 Abbildung 4.1: Frontend Use Case Content browsen. Content browsen ist die Grundfunktion im Frontend. Hier kann der Benutzer nach Regionen oder Urlaubs- und Aktivitätsthemen gegliedert die verschiedenen Informationen durchstöbern. Die Informationen werden in Form von Artikeln dargestellt und bestehen aus Text und optionalen Bildern. Die Artikel werden in einer an den Benutzer angepassten Reihenfolge geliefert, dh. Artikel, die den Benutzer mehr interessieren könnten, werden in der Liste zuerst angezeigt. Reisekoffer anzeigen. Angemeldete Benutzer können sich interessante Artikel in ihrem persönlichen Reisekoffer“, ähnlich einem Warenkorb in bekannten ” E-Commerce Anwendungen, speichern um später einfacher auf die Information zugreifen zu können. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 43 Artikel drucken. Die Artikel können gedruckt werden. Artikel löschen. Die Artikel im Reisekoffer können wieder gelöscht werden. Erinnerung aktivieren. Darüber hinaus können zu bestimmten Artikeln im Reisekoffer Erinnerungen aktiviert werden, wodurch der Benutzer wahlweise per E-Mail oder SMS, rechtzeitig vor Beginn des Events, der Aktivität, etc. informiert wird. Kommentar abgeben. Angemeldete Benutzer können zu einem Artikel ein Kommentar und eine Empfehlung für verschiedene Urlaubstypen“ abge” ben. Urlaubstypen sind beispielsweise Familie mit Kindern“, Ältere Ur” ” lauber“ oder Extremsportler“. ” Artikel suchen. Der Benutzer kann eine Volltextsuche in allen Artikeln durchführen. Benutzer Anmelden. Um die Web-Anwendung noch besser auf seine persönlichen Anforderungen anzupassen und auch Ratings abgeben und den Reisekoffer nutzen zu können, kann sich der Benutzer im System anmelden. Vor der ersten Anmeldung ist eine Registrierung notwendig. Benutzer registrieren. Bei der Registrierung kann der Benutzer eine bevorzugte Sprache und einen Urlaubstyp“ wählen, der auf ihn zutrifft. ” Profil aktualisieren. Die gespeicherten Informationen können jederzeit wieder bearbeitet werden. Newsletter abonnieren. Jeder Benutzer hat die Möglichkeit, sich zu einem Newsletter an- und abzumelden. Basierend auf den erfassten Daten des Benutzer und anderen Faktoren, wie zum Beispiel die aktuelle Jahreszeit, spezielle Events, ... werden die Newsletter für den einzelnen Benutzer individuell vom System angepasst und in regelmäßigen Abständen versandt. Sprache einstellen. Der Benutzer kann zwischen verschiedenen Sprachen wählen, in denen die Web-Anwendung angezeigt wird. Dabei kann er entweder direkt in der Weboberfläche umschalten. Wenn der Benutzer angemeldet ist, kann er in seinem Profil die gewünschte Sprache speichern. Beim Start der Web-Anwendung wird bei angemeldeten Benutzern die im Profil eingestellte Sprache gewählt und bei nicht angemeldeten Benutzern wird die Sprache aus dem Request Header erkannt. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 44 Geplante Funktionen Folgende Frontend-Funktionen sind für spätere Versionen der Web-Anwendung geplant: User-Page. Die User-Page ist eine Möglichkeit für den angemeldeten Benutzer, seine Urlaubserfahrungen mit anderen zu teilen. Hier kann eine Liste der Lieblings-Artikel veröffentlicht werden, Urlaubsberichte und Bildergalerien erstellt werden, etc. Wo kann ich ... Die Funktion Wo kann ich ...“ erweitert die Volltextsuche ” und erlaubt eine spezielle Suche nach Orten und Regionen, in denen vom Benutzer bevorzugte Aktivitäten möglich sind. 4.2.2 Funktionen für die Redaktion (Backend) Das Backend stellt die Funktionalität zur Content-Erstellung bereit. Hier werden zwei Rollen unterschieden, Redakteur“ und Tourismusverband“ (TVB). Die ” ” Rolle Redakteur ist ein systeminterner Mitarbeiter und für die Administration der Web-Anwendung zuständig. Der Redakteur verwaltet Kategorien, Benutzer der Rolle TVB und kann das Layout und die Struktur der Web-Anwendung für verschiedene Endgeräte anpassen. Benutzer mit der Rolle TVB können für ihre Region Inhalte erstellen und verwalten. In Abbildung 4.2 sind alle Anwendungsfälle dargestellt. Artikel bearbeiten. Dies ist die Hauptfunktion des Backend und die einzige, die ein Benutzer mit der Rolle TVB durchführen kann. Es können Artikel zu bestimmten Orten und Kategorien (zB Wintersport, Kultur, etc.) in verschiedenen Sprachen angelegt, bearbeitet und gelöscht werden. Die Informationen können durch verschiedene Contentparts strukturiert und mit Hilfe eines in der Anwendung integrierten HTML WYSIWYG3 -Editors formatiert werden. Contentparts sind Teile eines Artikels und können derzeit Text und Bild enthalten. Contentparts mit Multimediainhalten sind ebenso denkbar. Die Bilder, die zu den Artikel gespeichert werden können, werden automatisch in der Größe und im Corporate Design der Weboberfläche (Rahmen, Schlagschatten, leichte Drehung) angepasst. Auf Wunsch wird ein kurzer Titel auf das Bild geschrieben. Zu jedem Artikel kann die Kommentar-Funktion ein- oder ausgeschaltet werden und der Artikel als unsichtbar markiert werden. Weiters kann eine Tageszeit angegeben werden, zu der der Artikel besonders interessant ist. 3 What You See Is What You Get 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 45 Abbildung 4.2: Backend Use Case Artikelpositionen festlegen. Der Redakteur kann für bestimmte Artikel die an den Benutzer angepasste Reihenfolge ausschalten und fix an die oberste Stelle in der Artikelliste platzieren. Dies ist beispielsweise für bezahlte Inhalte (Werbung) nützlich. Kategorien bearbeiten. Der Redakteur kann in verschiedenen Sprachen Kategorien anlegen, bearbeiten und löschen. Kategorien werden zu Saisonen (Sommer/Winter) zugeordnet und gliedern Urlaubs- und Aktivitätsthemen, zu denen die Artikel angelegt werden können. Kategorien sind zB Schifahren, Kultur oder Wellness. Layout ändern. Der Redakteur kann das Layout, also die Struktur der WebAnwendung für verschiedene Endgeräten verändern. Die Struktur gibt die Reihenfolge und Position der einzelnen Elemente der Web-Anwendung an. TVB bearbeiten. Der Redakteur kann Benutzer der Rolle TVB anlegen, bearbeiten bzw. löschen und ihre Berechtigungen verwalten. Frontend Benutzer löschen. Der Redakteur kann Benutzer des Frontends löschen. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 46 Anwendungsfälle, die keinen Einfluss auf die Customization haben, wurden zwar in der Datenbank berücksichtigt, aber nicht implementiert. Nicht implementierte Use Cases im Frontend sind Artikel suchen, Newsletter abonnieren und Erinnerung aktivieren, im Backend wurde auf die Anwendungsfälle TVB bearbeiten, Frontend Benutzer löschen und Layout ändern verzichtet. 4.3 Evaluierung der Customizationfunktionalität In diesem Kapitel wird der Umfang der Customizationfunktionalität des entwickelten Forschungsprototypen anhand des Evaluation-Frameworks für ubiquitäre Web-Anwendungen aus [KPRS03] analysiert. Prinzipiell umfasst dieses Framework die beiden Dimensionen der Customization, namentlich den Kontext und die Adaptierung, wobei diese anhand eines umfangreichen Kritierenkatalogs für die jeweilige Web-Anwendung erfasst werden. Aus diesen Kriterien kann in Folge der Umfang der Customization und allfällige Stärken und Schwächen abgeleitet werden. Diese sind hierbei so gewählt, dass einerseits Anforderungen, welche bei der Entwicklung von ubiquitären Web-Anwendungen umgesetzt werden sollten, erfasst werden. Anderseits sind aber auch Kriterien aufgeführt, welche notwendig sind, damit bestehende Ansätze in diesem Framework mit berücksichtigt werden können und somit eine gemeinsame Basis für die Charakterisierung von WebAnwendungen unter dem Gesichtspunkt der Ubiquität möglich ist. In Folge wird nun auf den Kontext, die Adaptierung und ihre Kriterien nach [KPRS03] im Detail eingegangen und der Forschungsprototyp anhand dieser charakterisiert. In den Tabellen 4.1 und 4.2 werden die Ergebnisse übersichtlich zusammengefasst gezeigt. 4.3.1 Charakteristik des Kontext Hierbei werden die Umstände der Benutzung der Web-Anwendung erfasst und anhand von, im Framewerk vorgegebenen, Kriterien analysiert. Eine Beschreibung des Kontextes von ubiquitären Web-Anwendungen ist bereits in Kapitel 2.2.2 erfolgt. In dem Framework erfolgt eine Verdichtung des Gesamtkontextes auf bestimmte Eigenschaften, welche die Umgebung der Anwendung und diese selbst beschreiben und den Umfang der Customization bestimmen. Des Weiteren werden die Kontext-bezogenen Kriterien anhand ihres Umfanges, ihrer Repräsentation, ihrer Akquisition und ihrer Zugriffsmechanismen unterteilt. In Tabelle 4.1 sind die Ergebnisse der Evaluierung des Forschungsprototypen hinsichtlich der Kontextkriterien zusammengefasst. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 47 Kontext Umfang Dieser umfasst nicht nur die unterschiedlichen Kontext Eigenschaften, welche vom System bei der Customization unterstützt werden und die damit verbundene Erweiterbarkeit, sondern auch die Zeitdimension des Kontext in Bezug auf die Chronologie und Gültigkeit. Kontextfaktor Die relevanten Kontext Eigenschaften sind natürlich sehr stark von der zu entwickelnden Web-Anwendung abhängig, jedoch haben sich in der einschlägigen Literatur Standardfaktoren für ubiquitäre WebAnwendung herauskristallisiert, nämlich die Ort, Zeit, Gerät, Netzwerk, Benutzer und die Anwendung. (Für eine Erläuterung dieser Faktoren siehe 2.2.2.) Andere Diese Kategorie existiert im Framework nicht. Um aber den Kontextfaktor Wetter, welchem im Forschungsprototypen eine entscheidende Bedeutung zu kommt, abbilden zu können, wurde diese Kategorie eingeführt. Mit Ausnahme der Anwendung“ werden alle hier aufgezählten ” Kontextfaktoren von der entwickelten Web-Anwendung berücksichtigt. Erweiterbarkeit Dieses Kriterium wird dem Anspruch gerecht, dass zusätzliche Kontextfaktoren, welche nicht zu den genannten Standardfaktoren zählen, bei bestimmten Anwendungen mit berücksichtigt werden müssen. Nachdem nicht vorhergesehen werden kann, welche Faktoren das eventuell sein könnten, muss es möglich sein das bestehende System mit zusätzlichen Kontextfaktoren zu erweitern. So können zum Beispiel die Schneelage oder die Wassertemperatur für gewisse Anwendungen durchaus als wichtige Kontextfaktoren in Betracht kommen. Eine Erweiterung der Kontextfaktoren bei dem Forschungsprototypen ist durch den Einsatz von aspektorientierter Programmierung welche die Kontextdetektoren in das System einbindet und in Kombination mit dem erweiterbar gestalteten Datenbankschema einfach möglich. In diesem Zusammenhang ist natürlich auch die Einbindung von externen Datenquellen möglich. Chronologie Die Erfahrung hat gezeigt, dass nicht nur der aktuelle Kontext sondern auch der historische Kontext für die Customization eine entscheidende Rolle spielt. So macht es Sinn, die Bandbreite der Verbindung des Benutzers über die Zeit zu verfolgen, um eine Durchschnittsbandbreite ermitteln und somit die Anwendung darauf abstimmen zu können. So kann man gegebenfalls Bilder verkleinern oder multimedia Inhalte ausblenden, um den Benutzer bei niedriger Bandbreite trotzdem eine schnelle Benutzung der 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 48 Web-Anwendung zu ermöglichen. Aber nicht nur der historische sondern auch der zukünftige Kontext kann für bestimmte Anwendungen sehr wertvoll sein. So ist es beim Videostreaming neben der durchschnittlichen vergangenen Bandbreite genauso wichtig abzuschätzen wie sich diese in der Zukunft entwickelt, um das Video so anzupassen, dass es zu keiner Unterbrechung und zu einer konstanten Übertragung kommt. Auch das historische Benutzerverhalten liefert wichtige Daten für die Customization. So werden im Rahmen des Forschungsprototpyen die Artikel, welche der Benutzer über die Zeit aufgerufen oder in seinem Reisekoffer gegeben hat, gespeichert um daraus ein Interessensprofil für die Adaptierung des Inhaltes ableiten zu können. Die Chronologie der Endgerätnutzung wird jedoch nicht erfasst, genausowenig wie die Vorhersage von zukünftigem Kontext implementiert ist. Gültigkeit Kontextfaktoren sind nicht immer unendlich gültig und können auf eine ganz bestimmte Zeitspanne beschränkt sein. Im mobilen Bereich wäre hierfür ein Beispiel, dass, wenn sich der Standort des Gerätes innerhalb einer bestimmten Zeitspanne nicht ändert, dieses vielleicht nicht mehr online und somit die Ortsinformation nicht mehr gültig ist. Auch geänderte Öffnungszeiten zu verschiedenen Jahreszeiten stellen eine Einschränkung der Gültigkeit dieser Information dar und führen dazu, dass für einzelne Kontextfaktoren Zeitperioden, innerhalb welcher diese valide sind, spezifiziert und berücksichtigt werden müssen. Dieses Kriterium wird beim Forschungsprototypen bei dem logischen Kontextfaktor der Saison und tageszeitlich eingeschränkten Artikel berücksichtigt. Kontext Repräsentation Die Repräsentation des Kontext verbindet zwei wichtige Themen, nämlich Mechanismen für die Verbesserung der Wiederverwendung der Kontextrepräsentation und das Abstraktionsniveau des Kontexts. Wiederverwendbarkeit Hierbei soll der Kontext explizit im System aufgeführt sein und nicht nur vermischt mit der Adaptierung an sich vorliegen. Dies hat den Vorteil, dass der Kontext in anderen Systemen einfach wiederverwendet werden kann. Auch soll der Kontext, der durch den Customization Ansatz geliefert wird, generisch sein, also anwendungsunabhängig, wobei ein solcher Kontext auch von externen Anbietern geliefert werden kann. So kann hier zum Beispiel auf externe GIS4 Daten zurückgegriffen werden. Bei dem 4 Geografisches-Informationssystem 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 49 entwickelten Forschungsprototypen wurde hierfür auf Aspektorientierung gesetzt, womit untersucht wurde, ob die angesprochene Trennung des Kontextes von der Programmlogik an sich mit AOP sinnvoll durchzuführen ist. Mit diesem Ansatz ist auch die Wiederverwendung in anderen ubiquitären Web-Anwendungen relativ einfach möglich. Abstraktion Hierunter fallen die Unterscheidung und Behandlung von logischen und physischen Kontext. Siehe hierzu 2.2.2. Als Beispiel im Forschungsprototypen kann hier einerseits für den physischen Kontext die IP, das Datum und die angesehenen Artikel aufgezählt werden. Der logische Kontext umfasst unter anderem den aktuellen Standort in Form einer Adresse, die Saison und das Wetter. Kontext Akquisition Hier wird der Grad der Automation und der Grad der Dynamizität der Kontext Akquisition behandelt. Automation Hierbei unterscheidet man wer für die Sammlung des Kontext verantwortlich ist. Ist es ein Mensch, so spricht man von manueller Akquisition, ist es ein System, dann ist es die automatische Akquisition. Im Falle einer Kombination von beiden nennt man es halbautomatische Akquisition. Prinzipiell ist es bei ubiquitären Web-Anwendungen erstrebenswert soviel wie möglich an Information automatisch zu generieren, um die Benutzerinteraktion in diesem Bereich gering zu halten. Physischer Kontext kann großteils automatisch von der Umgebung erfasst und der daraus resultierende logische Kontext vom System abgeleitet werden. Aber natürlich funktioniert das nicht überall und so ist es oft nötig, die Kontextfaktoren halbautomatisch zu erfassen. Dabei wird zum Beispiel vom Benutzer sein Profil ausgefüllt, woraus das System den logischen Benutzer-Kontext ermittelt (zum Beispiel eine Benutzerkategorie) oder fehlende Daten zu ergänzen versucht. In der realisierten Web-Anwendung werden zum Beispiel Benutzerdaten teilweise manuell erfasst, das heißt der Benutzer gibt Daten zu seiner Person selbst ein wie zum Beispiel seinen Namen, sein Geburtsdatum oder seinen Heimatort. Darüber hinaus wird zum Beispiel die Userkategorie halbautomatisch, die Endgeräteeigenschaften und die maximale Auflösung, automatisch erfasst. Natürlich können wichtige Daten auch fehlen, wenn zum Beispiel der Benutzer zum ersten Mal die Web-Anwendung aufruft. Aus diesem Grund muss das System so ausgelegt sein, dass es auch mit diesem Fall umgehen kann. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 50 Ein Standardansatz hierbei ist es, einen im System definierten DefaultKontext zu benutzen, was auch beim Forschungsprototypen so umgesetzt wurde. Dynamizität Ein weiterer wichtiger Punkt ist, wann der Kontext erfasst wird. Der statische Kontext wird nur einmal erfasst - also zum Beispiel beim Start der Anwendung - und in Folge nicht mehr verändert, was zum Beispiel bei der Ermittlung des Gerätes mit dem die Anwendung benutzt wird, ausreichend ist. Ist der Kontext dynamisch, so wird bei jeder Änderung während der Laufzeit auch der Content angepasst, wobei hier wieder die Bandbreite ein gutes Beispiel ist. Im Prinzip ist bei ubiquitären Web-Anwendungen eine dynamische Kontextermittlung nötig, jedoch ist aufgrund von Performanzüberlegungen auch statischer Kontext in gewissem Maße sinnvoll. Hierbei wird in der Anwendung wiederum beides erfüllt. So wird zum Beispiel das Gerät nur beim Start der Benutzersession ermittelt, wobei hingegen das Wetter bei jedem Request dynamisch erfasst wird. Kontext Zugriff Zugriffsmechanismus Hierbei wird die Art der Veranlassung der Adaptierung auf Basis eines geänderten Kontextes betrachtet. Dies kann durch den push- oder pull -Ansatz realisiert werden. Bei dem push-Ansatz werden die betreffenden “Clients“ im Falle einer Änderung des spezifizierten Kontextes sofort automatisch verständigt. Beim pull-Ansatz hingegen muss der aktuelle Kontext von dem Adaptierungsmechanisums selbst angefordert werden, wenn dieser benötigt wird. Aus Gründen der Flexibilität sind hier Systeme die beide Ansätze unterstützen, die bessere Wahl. Beim Forschungsprototpyen wurde hier nur der pull-Ansatz verwirklicht. Dies hat auch zur Folge, dass eine Customization nur auf einen Request vom Benutzer hin erfolgt und nicht automatisch wenn sich ein Kontextfaktor ändert. So müssen zum Beispiel bei einer einfachen Customization nach einem Ort, einem Benutzer und einer Saison sämtliche benötigten Daten von der Adaptierung geholt“ ” werden. 4.3.2 Charakteristik der Adaptierung In der zweiten Dimension des Evaluation-Frameworks von [KPRS03] wird die Art der Adaptierung, also was für Operationen durchgeführt werden müssen, der Gegenstand der Adaptierung und wie das zu geschehen hat, im Prozess der Adaptierung behandelt. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 51 Tabelle 4.1: Evaluierung der Kontext-Charakteristiken nach [KPRS03] Art der Adaptierung In Tabelle 4.2 sind die Ergebnisse der Evaluierung des Forschungsprototypen hinsichtlich der Kontextkriterien zusammengefasst. Operation Ubiquitäre Web-Anwendungen sollen zumindest eine Bibliothek an Adaptierungsoperationen für die Behandlung der Standardkontextfaktoren bieten. Beispiele aus dem entwickelten Forschungsprototypen hierfür sind Contenfilterung, die Anpassung der Auflösung von Bildern oder die Anpassung der Navigation. Erweiterbarkeit Gleich wie bei den Kontextfaktoren sollen auch die eingebauten Adaptierungsvorgänge erweiterbar sein, um geänderten Anforderungen gerecht werden zu können. Dies wird in der Anwendung durch den Einsatz von aspektorientierter Programmierung und des entwickelten Regelsystems erreicht. Siehe 2.2.2 und 5.4.2. Effekt Mit Hilfe der Adaptierungsoperation sollen zumindest drei unterschiedliche Ergebnisse erreicht werden können. Einerseits soll es möglich sein, bestimmte Teile zur Anwendung hinzu zu fügen, die vorher nicht existent waren, wie zum Beispiel eine personalisierte Werbung. Des Weiteren sollen Teile entfernt werden können, wie zum Beispiel sämtlicher multimedialer Inhalt oder angepasst werden können, wie zum Beispiel die Bildgröße und Qualität an die Bandbreite der Verbindung des Benutzers. Dies Alles erfüllt 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 52 der Forschungsprototyp - es können zum Beispiel Contentparts hinzugefügt oder gelöscht und Bilder an das jeweilige Endgerät angepasst werden. Komplexität In der Customization sollen nicht nur einfache Adaptierungsoperationen, welche bei einem bestimmten Kontext greifen, möglich sein, sondern auch komplexe Operationen, welche mehrere Adaptierungsvorgänge auf das Selbe oder auch auf verschiedene Subjekte angewendet werden. Als Beispiel kann hierfür die Transformation von der Web-Anwendung auf ein mobiles Endgerät mit einer kleinen Bandbreite, wo die Navigation, die grafische Oberfläche und der Inhalt angepasst werden muss, genannt werden. Auch diese beiden Arten der Adaptierung sind mit dem Forschungsprototypen möglich. So kann eine Adaptierung definiert werden, welche sich nur den Ort als Kontext heranzieht und auf diese Basis die Anwendung anpasst oder aber genauso komplexe Adaptierungen, welche zum Beispiel die Artikel auf Basis vielen Kontextfaktoren, wie der Saision, dem Ort, dem Wetter, der Benutzerkategorie,... auswählen und auf Basis der Kontextfaktoren vom Gerät anpassen. Subjekt der Adaptierung Das betroffene Subjekt der Adaptierung wird in dem, dieser Analyse zugrunde liegenden, Framework charakterisiert durch den Level der Web-Anwendung, genauso wie durch konkrete Elemente und durch die Unterscheidung nach der Anzahl der betroffenen Elemente, der Granularität. Level Prinzipiell sollen alle Ebenen einer Web-Anwendung adaptierbar sein [BrMa02] [KaRS00]. Diese Forderung erfüllt auch der Forschungsprototyp. So wird auf der Inhaltsebene die Artikelauswahl, auf Hypertextebene die Linkstruktur und auf der Präsentationsebene die Darstellung je nach Kontext angepasst. Element Jede Ebene einer Web-Anwendung beinhaltet eine Menge an Anwendungselementen, wie zum Beispiel Seiten, Links, Eingabefelder, Listen und multimediale Inhalte. Jedes dieser Elemente sollte auch anpassbar sein. In den Bereich Andere fällt bei dem Forschungsprototypen das RatingElement. Granularity Gibt die Nummer der, durch eine Adaptierung, betroffenen Elemente einer Web-Anwendung an. Hier wird zwischen Mikroadaptierung, welche nur eines oder wenige Elemente betrifft (wie zum Beispiel das Ausblenden eines Links) und Makroadaptierung, wobei viele, verschiedene Teile der 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 53 Anwendung verändert werden, unterschieden. Als Beispiel für eine Makroadaptierung kann hier das Ändern sämtlicher Texte, auch in Bildern und der Navigation, auf der Website in eine andere Sprache herangezogen werden. Im Extremfall wäre eine Makroadaptierung auch die komplette Auswechslung einer Anwendung, wenn diese besser zu dem aktuellen Kontext passt. Hierbei würde es zum Beispiel ein Anwendung für Desktopbenutzer und ein eigene Anwendung für Benutzer von mobilen Geräten geben. Hier treffen auch wieder beide möglichen Ausprägungen auf die entwickelte Web-Anwendung zu. Einerseits werden zum Beispiel einzelne Contentparts oder Links ausgeblendet, was einer Mikroadaptierung entspricht, oder es wird die ganze Seite verändert, wenn der Benutzer eben mit einem mobilen Endgerät die Anwendung benutzt, was wiederum einer Makroadaptierung entspricht. Prozess der Adaptierung Aufgaben Der Adaptierungsprozess umfasst eine Reihe von Aufgaben, welche zum Zweck der gezielten Steuerung ihrer Automation und Dynamizität aufgeteilt werden sollen. Mit diesem Kriterium wird angegeben, ob die Adaptierung eine Unterteilung in Aufgaben vorsieht und unterstützt. Folgende Aufgaben werden in dem Framework aus [KPRS03] genannt: Die Initiierung, welche angibt wer oder was den Adaptierungsprozess auslöst. Der Adaptierunsvorschlag, also was für Möglichkeiten der Adaptierung bestehen, wie zum Beispiel drei unterschiedliche Bildervarianten (schwarzweiß, klein, groß). Dann die Vorschlagsselektion, welche aufgrund des aktuellen Kontextes einen Vorschlag auswählt, welcher in der Produktion entweder dynamisch zur Runtime erstellt oder statisch durch das Laden einer vorgefertigen Version durchgeführt wird. Dies wird in der Präsentation dem Benutzer angezeigt, welcher unter Umständen über die Revision die eben durchgeführte Änderung wieder rückgängig machen kann. Automation Vergleichbar mit der Automation bei dem Kontext wird auch hier zwischen manueller, halbautomatischer und automatischer Adaptierung unterschieden (siehe auch 2.2.1). Hierbei macht es zum Beispiel Sinn, dem Benutzer zwar eine angepasste Version seiner Startseite einer Web-Anwendung vorzuschlagen, diesem aber auch die Möglichkeit zu geben, diese nach seinem Willen zu verändern, was einer halbautomatischen Adaptierung entspricht. In dem Forschungsprototypen kann der Benutzer nur zum Teil eingreifen, rein manuell ist nicht möglich. So kann der Benutzer aber zum 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 54 Beispiel die Sprache oder eine Benutzerkategorie einstellen, was zu einer halbautomatischen Adaptierung führt. Große Teile der Adaptierung laufen jedoch vollkommen automatisch ab, als Beispiel sei hier die Anpassung an das jeweilige Endgerät genannt. Dynamizität Wie schon beim Kontext zwischen statisch und dynamisch unterschieden worden ist, so wird auch bei der Adaptierung zwischen statischer und dynamischer Adaptierung unterschieden. Statische Adaptierung bedeutet, dass diese abghänig von gewissen Kontextfaktoren fix vordefiniert ist und somit nicht geändert werden kann. Dynamische Adaptierung hingegen bedeutet, dass diese zur Runtime, abhängig von den gerade gegebenen Kontextfaktoren, durchgeführt wird. Ein Beispiel ist hier die Adaptierung von Bildern. Werden diese nur zum Beispiel in drei verschiedenen Größen zur Verfügung gestellt, so spricht man von statischer Adaptierung - wird die Bildgröße dynamisch, je nach aktueller Anforderung, erzeugt, ist es hingegen die erwähnte dynamische Adaptierung. In der entwickelten Web-Anwendung kommen beide Ansätze zum Einsatz. Einerseits werden hierbei zwei Grundlayouts für die Darstellung der Web-Anwendung geboten, welche je nach Endgerät gewählt werden und statisch vorgegeben sind. Andererseits wird der Inhalt, also die Auswahl der Artikel, aber auch die Darstellung dieser, im entsprechenden Layout dynamisch generiert. Adaptierungsschritte Die Adaptierung muss nicht jedesmal auf das Neue erfolgen. So kann das Ergebnis einer Adaptierung persistent gehalten werden und muss bei einer erneuten Anforderung nicht nochmal durchgeführt werden, was eine erhebliche Performanzsteigerung bewirken kann. Als Beispiel kann wieder die Kompression eines Videos genannt werden. Ansätze hierfür sind im Forschungsprototypen umgesetzt. So wird zum Beispiel die Linkstruktur der Kategorien und Orte entsprechend der Sprache und vorhandenen Artikel zwischengespeichert und nur im Bedarfsfall, zum Beispiel bei Änderungen im Backend, neu geladen und adaptiert. 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 55 Tabelle 4.2: Evaluierung der Adaptierungs-Charakteristiken nach [KPRS03] 4.4 Architektur 4.4.1 Schichten-Architektur der realisierten Web-Anwendung Der Forschungsprototyp wurde nach dem MVC5 -Model 4.3 designt und implementiert eine Schichten-Architektur, welche die wohl gebräuchlichste Methode ist, um komplexe Systeme in weniger komplexe Teile aufzuteilen. Der große Vorteil besteht darin, dass die eine Schicht immer nur mit der nächsten unter ihr kommuniziert, aber nichts von den Funktionen der darunterliegenden Schicht wissen muss. Das bedeutet, dass jede Schicht die Schichten unter ihr vor den darüberliegenden Schichten verbirgt. Dadurch werden die Abhängigkeiten unter den Schichten minimiert, jede Schicht ist ein in sich schlüssiges System und die Möglichkeiten zur unabhängigen Modellierung, Enwicklung und eventuell späteren Standardisierung werden vereinfacht [Demo06]. Im Folgenden werden die Schichten des verwendeten Fünf-Schichten-Modells kurz erläutert, siehe auch Abbildung 4.4. Presentation Layer Ist jene Schicht, mit der der Benutzer interagiert. Im konkreten Fall sind dies JSP Seiten die HTML-Code erzeugen, der im Browser des Benutzers dargestellt wird. Alle Eingaben und Aktionen werden vom Benutzer auf dieser Schicht getätigt und dann von den darunter liegenden Schichten ausgeführt bzw. bearbeitet. Controller Layer Alle Benutzereingaben werden hier validiert und in die jewei5 Model View Controller 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 56 Abbildung 4.3: MVC-Modell ligen Klassen der darunter liegenden Schicht, dem Business Layer weitergeleitet, danach entscheidet der Controller mit Hilfe der Informationen aus der darunter liegenden Schicht, welche Seiten und Inhalte angezeigt werden und in welcher Reihenfolge dies geschieht. Business Layer Dieser ist der komplexeste Teil, hier befindet sich der Großteil der Prozesslogik einer Anwendung. Alle Auswertungen finden auf dieser Schicht statt, zum Beispiel das Erfassen des physischen Kontextes und die darauf folgende Ableitung des logischen Kontextes. Data Mapper Layer Diese Schicht kapselt die CRUD6 -Funktionen einer Datenbank wie insert, update, select oder delete von den Objekten des Business Layers ab und stellt eigene Klassen zur Verfügung, die den Tabellen in der Datenbank entsprechen. Somit sind alle datenbankspezifischen Funktionen auf einer Schicht angesiedelt, ein nicht zu übertreffender Vorteil, wenn die Anwendung beispielsweise mit Datenbanken verschiedener Hersteller funktionieren soll. Data Layer Im Data Layer geschieht die eigentliche persistente Datenhaltung. Dies kann auf verschiedenste Arten geschehen zum Beispiel durch Datenbanken, XML Dateien oder andere Dateisysteme. 4.4.2 Datenbank-Schema Bei der Konzeption der Datenbank wurde speziell auf die Anforderungen eines Tourismusinformationsystems eingegangen, wobei dies von Beginn an unter dem Gesichtspunkt einer maximalen Customization erfolgt ist. Damit wurde sichergestellt, dass einerseits der von Anfang an geplante Kontext entsprechend gespeichert wird und so gestaltet ist, dass dieser auch im nach hinein einfach erweitert 6 Create Read Update Delete 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 57 Abbildung 4.4: Architektur werden kann. Mit eine Folge von dieser Herangehensweise war es, dass bei dem Entwurf des Datenbankschemas im Speziellen darauf geachtet wurde die Daten gekapselt und möglichst redundanzfrei zu speichern, um auch auf der Ebene der Datenbasis den Seperation of Concerns“ Gedanken umzusetzen. ” In der Abbildung 4.5 ist die Datenbankstruktur dargestellt, wobei aus Gründen der Übersichtlichkeit hierbei die Übersetzungstabellen für die einzelnen Entitäten nicht abgebildet sind. Mit Hilfe dieser Übersetzungstabellen ist es möglich, das System mit beliebig vielen Sprachen basierend auf beliebigen Zeichensätzen zu erweitern. Welche Tabellen eine eigene Übersetzungstabelle besitzen wird durch den Stereotyp dict angezeigt. Die Kerndaten des Systems sind die Artikeldaten. Diese werden hierbei verteilt auf mehrere Tabellen gespeichert, was den Vorteil hat, dass ein Artikel einfach aus unterschiedlichen Teilen bestehen und je nach Anforderung zusammengestellt werden kann. Das Grundgerüst eines Artikels ist der ArticleFrame, welcher auch jene Metadaten zu einem Artikel beinhaltet, die sprachübergreifend gelten und welche wiederum Einfluss auf die Customization haben. Ein Beispiel ist hier das Attribut IsOutdoor : Bezieht sich ein Artikel auf eine Aktivität im Freien, so ist dieses Attribut wahr - was bei schlechtem Wetter zur Folge hat, dass dieser Artikel 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems Abbildung 4.5: Datenbank-Schema 58 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 59 nicht oder zumindest nur nach Artikel, welche nicht im Freien sind, angezeigt wird. Der Inhalt eines Artikels an sich wird sprachspezifisch in der Article Tabelle gespeichert. Mit der Contentpart Tabelle und den damit verbundenen Tabellen ist es möglich, einerseits einen Artikel um einzelne, vorgegebene Teile zu erweitern, wie zum Beispiel einem Rating-Modul, oder aber auch einfach zusätzlich neue Module für die Artikelgestaltung im Nachhinein zur Web-Anwendung hinzuzufügen, wie zum Beispiel ein Galerie-Modul. Benutzerdaten werden genauso erfasst, wie auch ein Benutzer einer Kategorie zugewiesen wird, was wiederum, neben seinem aufgezeichnetem Interaktionsverhalten in der Web-Anwendung (angesehene Artikel, Artikel in seinem Reisekoffer, abgegebene Ratings), natürlich in die Customization einfließt. Hierbei spielen natürlich auch die Kategorien, die Jahreszeit und der Ort eine wichtige Rolle. 4.5 Adaptierungsszenario Im folgenden Abschnitt soll der Unterschied zwischen einer herkömmlichen und einer ubiquitären Web-Anwendung verdeutlicht werden. Hierzu wird dasselbe Szenario einmal mit und einmal ohne, den für die Customization nötigen Modulen und Daten, dargestellt. Abbildung 4.6 zeigt den Ablauf eines Requests ohne Customization. Dabei werden die ausgewählten Artikel nur nach den Navigationsparametern (wie zum Beispiel die Kategorie oder den Ort auf den der Benutzer gerade geklickt hat) und gespeicherten Userdaten (wie zum Beispiel Usertyp) ausgewählt. Um die Unterschiede besser darstellen zu können wird folgendes Szenario definiert. • Ein dem System bereits bekannter Benutzer loggt sich am Donnerstag, dem 9.3.2006 um 09:00 Uhr von einem PC aus in die Web-Anwendung ein. Die aktuelle Saison ist die Wintersaison, der Standort des Users ist Haus im Ennstal. Das aktuelle Wetter: -6◦ C und leichter Schneefall. Der Terminal verfügt über eine Internetverbindung mit hoher Bandbreite. Der User hat in seinem Profil folgende Daten bekannt gegeben: Alter: Heimatregion: Bevorzugte Sprache: Ich würde mich selbst Charakterisieren als: 24 Mödling, Niederösterreich Deutsch Jung und Aktiv 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 60 Abbildung 4.6: Requestablauf ohne Adaptierung Wird das definierte Szenario auf den Requestablauf in Abbildung 4.6 angewandt, so würden für eine Adaptierung nur die Benutzerdaten und jeweilige Navigationsparameter für die Artikelauswahl zur Verfügung stehen. Nach dem Login würde der Benutzer wahrscheinlich die gleiche Startseite wie alle anderen Benutzer seiner Region erhalten. Das beschriebene Szenario lässt aber darauf schließen, dass der Benutzer nicht auf der Suche nach, beispielsweise Wintersportangeboten in Niederösterreich ist, sondern sich bereits auf Urlaub in Haus im Ennstal befindet und eventuell gerne Informationen über die Pistenverhältnisse und Events in seinem Wintersportort hätte. Um das zu erreichen muss die Web-Anwendung bei der Artikelauswahl für die Startseite mehr Informationen berücksichtigen. Abbildung 4.7: Requestablauf mit Adaptierung 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 61 Abbildung 4.7 zeigt nun wie der Controller der Anwendung erweitert werden muss, um dies zu erreichen. Die zusätzlichen Module werden über aspektorientierte Programmierung in die Anwendung eingebunden. Bei Instanzierung der Session liest der Kontext Detector eventuelle CC/PP7 Informationen aus, diese betreffen größten teils das verwendete Endgerät also Beispielsweise: Hersteller und Typ des Geräts, Bildschirmauflösung und Art der Tastatur usw. Weiters liest der Kontext Detector alle wichtigen Informationen aus dem Request Header, also IP-Addresse, bevorzugte Sprache, Browsersprache usw. All diese Kontext Daten stehen die ganze Session über zur Verfügung. Zusätzlich zu den Kontextinformationen werden nun auch noch Daten aus dem Artikel-Benchmark und die Adaptierungsregeln für die Auswahl der Artikel berücksichtigt. Sie werden mit Aspekten direkt in den Content Selector eingebunden. Der Artikel-Benchmark errechnet sich Nutzungsdaten zB wie oft ein Artikel angesehen wurde, oder wie oft er zu einem Reisekoffer hinzugefügt wurde, und auch daraus wie die Benutzer den Artikel bewerten. Mit Hilfe der Adaptierungsregeln wird nun festgelegt wie all diese Informationen für die Artikelauswahl untereinander gewichtet sind. Sie sind sozusagen die Stellgrößen mit denen man die Auswahl zusätzlich manuell beeinflussen kann, um zB bestimmte bezahlte Artikel weiter nach oben zu reihen. Zuletzt kommt der Transformer zum Einsatz, er passt den ausgewählten Content an das Endgerät des Benutzers an, so werden zB Bilder verkleinert oder komplett entfernt oder große Tabellen umstrukturiert damit sie auf einen kleinen Bildschirm passen. Für das zuerst definiert Szenario bedeutet das, dass nun alle zur Verfügung stehenden Informationen in die Artikelauswahl mit einfließen. Somit kann mit Hilfe der IP-Addresse der Ort (Haus im Ennstal) festgestellt werden, damit kann bei einem externen Anbieter das Wetter abgefragt werden (-6◦ C und leichter Schneefall) und auf Grund der hohen Bandbreite und den Informationen aus dem Request Header (unterstützte Plugins) weiß die Anwendung, dass sie dem User auch Multimedia-Content anzeigen kann. Die somit am wahrscheinlichsten erstgereihten Artikel werden die aktuellen Pistenverhältnisse, die aktuelle Wettervorhersage und eine der Webcams vom Hauserkaibling beinhalten. Danach würden aufgrund des Alters (24) und der Benutzerkategorie (Jung und Aktiv) aktuelle Abendprogramme, wie zB spezielle Events in den lokalen Diskotheken, gereiht nach dem Artikel-Benchmark angezeigt. Dieses Beispiel zeigt, wie groß die Unterschiede zwischen einer adaptierten und einer nicht bzw. nur personalisierten Web-Anwendung sind. Ohne dass der Benutzer zusätzliche Informationen preisgegeben hat (es wurden nur sowieso vorhan7 Composite Capabilities/Preferences Profile 4 Technische Konzeption und Funktionsumfang des entwickelten Tourismusinformationssystems 62 dene Umgebungsfaktoren in die Artikelauswahl miteinbezogen), bekommt er den für interessantesten Inhalt. Dies war nur eines von einer Vielzahl an möglichen Adaptierungsszenarien, sofern die Anwendung über ausreichende Informationen über den Nutzungskontext verfügt, ist jedes nur erdenktliche Szenario möglich. 63 Kapitel 5 Implementierung In diesem Kapitel werden Details zur Implementierung des Forschungsprototypen aufgezeigt. Zuerst werden die verwendeten Technologien und Bibliotheken kurz vorgestellt (siehe Abschnitt 5.1). Es folgt eine Beschreibung der grundlegenden Elemente der Web-Anwendung in Abschnitt 5.2. Der Abschnitt 5.3 gibt einen Überblick über die eingesetzen Adaptierungstechniken zur Anpassung der Web-Anwendung an das Endgerät. Die entwickelten Adaptierungstechniken werden mit Hilfe von aspektorientierter Programmierung in das System eingebunden. In Abschnitt 5.4 werden die dazu notwendigen Aspekte vorgestellt. Das implementierte Regelsystem, das die Inhalte in Abhängigkeit der Einschränkungen des Endgeräts, des Orts und der Benutzerpräferenzen selektiert, wird in Abschnitt 5.4.2 vorgestellt. Zum Abschluss werden in Abschnitt 5.5 Vor- und Nachteile der Implementierung untersucht, insbesondere in Hinblick auf die entwickelte Adaptierungslösung für mobile Endgeräte. 5.1 Verwendete Technologien Die verwendeten Technologien und Bibliotheken werden im Folgenden kurz beschrieben. Abbildung 5.1 zeigt, in welchen Schichten unserer Architektur diese Technologien eingesetzt werden. Java. 1 Der Forschungsprototyp wurde mit Java (J2SE 5.0 JDK) entwickelt. Die Realisierung der Web-Schnittstelle basiert auf den Java Enterprise Technologien Servlet, JavaServer Pages (JSP) und Tag Libraries. MySQL. 2 Die persistente Speicherung der Artikel-, User-, Kategorie-, Regionsund Trackingdaten erfolgt mit Hilfe der relationalen Datenbank MySQL 5.0. 1 2 http://java.sun.com http://www.mysql.org 5 Implementierung 64 Abbildung 5.1: Eingesetzte Technologien Hibernate. 3 Für den Datenbankzugriff wird das objekt-relationale PersistenzFramework Hibernate verwendet. Dies ermöglicht eine leichtgewichtige und transparente Persistierung der Entitäten, die als Plain Old Java Objects (POJOs) implementiert sind. Somit kann mit einem objektorientierten Domänenmodell gearbeitet werden. Abfragen erfolgen entweder durch ein Query Object, das Hibernate Criteria Object, mit dem schrittweise durch Hinzufügen von Kriterien eine Abfrage zusammengebaut werden kann, oder mit der Hibernate Query Language (HQL), die eine objektorientierte Erweiterung von SQL darstellt. Bibliotheken. Folgende Third-Party Libraries kamen bei der Entwicklung des Forschungsprototyps zum Einsatz: FCKeditor.4 Die FCKeditor wird zum Anlegen/Bearbeiten von Artikel im Backend verwendet. Es stellt einen WYSIWYG5 oder einfachen Text Editor in Form eines HTML Input Forms zur Verfügung. 3 http://www.hibernate.org http://www.fckeditor.net 5 What You See Is What You Get 4 5 Implementierung 65 Apache Commons Fileupload.6 Diese Bibliothek kann Requests mit MultipartContent verarbeiten. Dies wird im Backend benötigt, um Bilder zu den Artikeln auf den Server zu laden. JH Labs Java Image Filters.7 Die Bilder zu den Artikeln werden automatisch mit einem Rahmen, einem Schlagschatten und einer leichten Drehung versehen. Der Schlagschatten wird mit Hilfe der Klasse ShadowFilter aus dem JH Labs Library realisiert. MaxMind GeoIP.8 Die MaxMind GeoIP Bibliothek wird dazu eingesetzt, um den Standort der Benutzer im Frontend auf Basis der IP Adresse zu erkennen. DELI: Delivery context library.9 Diese Bibliothek dient dazu, Composite Capabilities/Preferences Profiles (CC/PP) aus dem Request Header auszulesen. Dadurch kann das verwendete Endgerät des Benutzers erkannt, und in weiterer Folge ein dafür geeignetes Template geladen werden. AspectJ 5. Für die Entwicklung des Tourismusinformationssystems als Forschungsprototyp dieser Arbeit haben wir uns für AspectJ (Version 5) entschieden. AspectJ wurde ursprünglich bei Xerox PARC von Cristina Lopes und Gregor Kiczales, dem Vater der aspektorientierten Programmierung“, entwi” ckelt. Seit Ende 2002 wird AspectJ als Eclipse Projekt10 weiterentwickelt. AspectJ ist eine aspektorientierte Erweiterung für Java, ersetzt Java also nicht, sondern baut darauf auf. AspectJ Programme sind weitestgehend normale Java Programme mit Klassen, um Core Concerns zu strukturieren und Aspekten, um Crosscutting Concerns zu modularisieren. Core Concerns stellen in der Regel die Kernfunktionalität eines Systems dar. Crosscuttting Concerns, wie z.B. Logging oder in unserem Fall Customization, hingegen, kommen an vielen Stellen im Programm verstreut vor. Sie ziehen sich durch (crosscut) die gesamte Anwendung, sind im Code der Core Concerns verteilt und können mit den Konzepten der objektorientierten Programmierung (OOP), dh. innerhalb von Klassen, nicht gekapselt werden. AOP ermöglicht höhere Modularität durch Herausziehen der Crosscutting Concerns in ein neues Konzept, d.h. dem Aspekt, und automatischen 6 http://jakarta.apache.org/commons/fileupload http://www.jhlabs.com/ip/filters/index.html 8 http://www.maxmind.com/app/ip-location 9 http://www.hpl.hp.com/personal/marbut/deli 10 AspectJ Project, http://www.eclipse.org/aspectj/ 7 5 Implementierung 66 Einfügen dieser Funktionalitäten beim Kompilieren an die richtigen Stellen im System durch einen sogenannten Weaver. AspectJ erweitert Java daher um einige neue Konzepte. Die wesentlichsten Begriffe werden im Folgenden kurz erläutert. Aspekt. Aspekte sind eine Erweiterung des Klassen-Konzepts und dienen als Container“ für AOP Code, können aber auch OOP Code enthal” ten. Joinpoint. Joinpoints (Verbindungspunkte) sind bestimmte Ereignisse im Programmablauf, an denen der ursprüngliche Code - mit Hilfe von AOP - manipuliert werden kann. Solche Ereignisse können beispielsweise der Aufruf einer Methode oder der Zugriff auf eine Variable sein. Pointcut. Pointcuts (Schnittpunkte) selektieren beliebige Joinpoints, an denen der Programmablauf manipuliert werden soll. Advice. Advices (Empfehlungen) beschreiben die Manipulation am ursprünglichen Code, die bei einem, vom Pointcut selektierten, Joinpoint durchgeführt werden soll. Ein Advice kann entweder vor (before), nach (after ) oder statt bzw. rund um (around ) einen Joinpoint ausgeführt werden. Intertype Deklaration. Intertype Deklarationen ermöglichen die Erweiterung bestehender Klassen um Attribute, abstrakte oder konkrete Methoden und Konstruktoren. Weiters können dadurch DefaultImplementierungen für Interfaces in Aspekten hinterlegt werden. Weaving. Ein eigener Compiler, bzw. Pre-Processor, der Aspect Weaver, vereinigt den AOP Code mit dem OOP Code. Dieser Prozess wird in Abbildung 5.2 veranschaulicht und heißt Weaving. Das Weaving kann zu verschiedenen Zeitpunkten passieren: Compile-Time Weaving verbindet den Advice-Code bereits beim Kompilieren mit dem Byte-Code der (Java-)Klassen, Post-Compile-Time Weaving wird eingesetzt um bestehende Class- oder Jar-Dateien mit Aspekten anzureichern. Beim Load-Time Weaving geschieht die Integration erst durch den Classloader, damit können zB fremde Bibliotheken angepasst werden, ohne sie direkt zu verändern. Diese Ansätze werden als Static AOP“ bezeich” net. Run-Time Weaving bindet den AOP Code erst zur Laufzeit in der Virtual Machine ein und heißt Dynamic AOP“. Derzeit gibt es ” nur wenige Produkte, die umfangreiche Unterstützung für Run-Time Weaving bieten. 5 Implementierung 67 Abbildung 5.2: Weaving 5 Implementierung 68 Eine detaillierte Einführung in die Grundlagen der aspektorientierten Programmierung und ihrer Vor- und Nachteile findet sich in [Bros06]. 5.2 Allgemeine Beschreibung Abbildung 5.3 zeigt die Startseite des entwickelten Forschungsprototypen im Winterdesign. Die grundlegenden Elemente werden im Anschluss kurz beschrieben. Die Zahlen der folgenden Aufzählung entsprechen jenen aus Abbildung 5.3. Abbildung 5.3: Screenshot des Forschungsprototypen im Winterdesign 1. Hier wird die Übersicht eines besonders interessanten oder ev. bezahlten Artikel angezeigt. Der Text wird automatisch vom Transformer 5.3.3 auf eine passende Länge gekürzt. 2. Unter Regionen und Aktivitäten befinden sich JavaScript Menüs (in der Abbildung nicht sichtbar) in denen die Regionen, Orte usw. bzw. Akti- 5 Implementierung 69 vitäten, Sportarten usw., zu denen Angebote vorhanden sind angezeigt und ermöglichen eine schnelle Auswahl des gewünschten Angebots. 3. Das linke Menü dient zur Navigation durch die vorhandenen Artikel und zeigt immer die jeweilige Kategorie oder den jeweiligen Ort zu dem in der Mitte (Pkt. 6) angezeigten Inhalt an. 4. Registrierte Benutzer können sich hier mit ihrem Benutzernamen und Passwort anmelden oder registrieren, sie bleiben automatisch auch über die Session durch ein Cookie angemeldet, bis sie sich wieder abmelden. 5. Zeigt ein Beispiel für eine mögliche Werbeeinschaltung. Diese sind in den beiden äußeren Spalten an den meisten Stellen problemlos möglich. 6. In der mittleren Spalte wird immer eine Liste von Artikel angezeigt, außer der Benutzer wählt einen speziellen Artikel aus dann wird nur dieser angezeigt. Ein Artikel der Artikelliste besteht aus dem Schlagtext (bzw. der Einführung), einem Bild das automatisch an die erforderliche Größe angepasst, mit einem Rahmen, Schatten und einer leichten Drehung versehen wird, und der besten Durchschnittsbewertung anderer Benutzer. Weiters werden auch noch der Inhalt des Reisekoffers11 und die Benutzerregistrierung in dieser Spalte angezeigt. 7. Das Wetter für den aktuellen Tag und die Vorhersage für den nächsten Tag werden immer passend zu dem ausgewählten Artikel angezeigt oder bei einer Artikelliste passend zum ersten. 8. Hier besteht die Möglichkeit die Sprache zu wechseln. 9. Die Volltextsuche sucht in allen Artikel und zeigt die Treffer in der mittleren Spalte an. 10. Sowohl in der linken als auch in der rechten Spalte (in der Abbildung nur in der rechten Spalte) besteht die Möglichkeit unter den bereits beschriebenen Elementen eine Liste aus sehr kurzen Artikelvorschauen (mit/ohne Bild) anzuzeigen. 11 Der Benutzer hat die Möglichkeit Artikel die ihn interessieren in einen Reisekoffer, ähnlich dem Warenkorb bei einem Webshop, zu geben um sie später leichter wiederzufinden, auszudrucken oder an Freunde zu versenden. 5 Implementierung 70 5.3 Adaptierung hinsichtlich des Endgeräts Die Adaptierung hinsichtlich des technischen Kontext, also im wesentlichen die Adaptierung auf das jeweilige Endgerät, wird aus einer Kombination der in Kapitel 3 vorgestellten Technologien realisiert. Die Adaptierung der Weboberfläche an die möglichen Endgeräte findet im Wesentlichen automatisch in drei Schritten statt. Zuerst werden alle, das Gerät betreffenden, Informationen gesammelt und ausgewertet. Danach wird das Grundlayout an das Gerät angepasst bzw. ein passendes Layout aus den vorhandenen ausgewählt und die Inhalte geladen. Zuletzt werden die anzuzeigenden Artikel in ihrem Format an das gewählte Layout angepasst. Im Folgenden werden die verschiedenen Schritte der endgerätespezifischen Adaptierung beschrieben. 5.3.1 Erkennung der Kontextfaktoren Der wahrscheinlich wichtigste Teil bei der Adaptierung an verschiedene Endgeräte ist die Erkennung der Eigenschaften und Fähigkeiten des verwendeten Geräts. Beim Start der Session werden alle bekannten und relevanten Kontextfaktoren ausgewertet. Implementiert wird die Erkennung durch den Kontextaspekt 5.4.1, er ruft die jeweiligen Mehtoden auf. Dabei werden sowohl die Header Informationen als auch eventuelle CC/PP bzw. UAProf Profile erkannt und ausgewertet. Listing 5.1 zeigt am Beispiel des Accept-Language Header-Felds wie diese Auswertung geschieht. Dabei werden zuerst die nach Präferenzen geordneten Sprachen aus dem Header extrahiert und mit den in der Datenbank verfügbaren Sprachen abgeglichen. Dadurch erfolg automatisch die Adaptierung der Anwendung auf die vom Benutzer bevorzugte Sprache. Listing 5.1: Mehtode zum Erkennen der vom Benutzer bevorzugten Sprache 1 private long d o D e t e c t L a n g u a g e F r o m H e a d e r ( H t t p S e r v l e t R e q u e s t request ) { 2 3 4 5 6 // try to detect language from request header String l = request . getHeader ( " Accept - Language " ) ; // e . g . de - at , de ; q =0.8 , en ; q =0.7 , en - us ; q =0.5 , it - it ; q =0.3 , it ; q =0.2 l = l . replaceAll ( " [ q ][=]\\ d [.]\\ d [ ,]? " , " " ) ; 7 8 String [] acceptlang = l . split ( " ; " ) ; 9 10 11 12 13 tip . entity . Language langObj = null ; int i = 0; LanguageAction langAct = new L ang ua ge Ac tio n () ; String code = " " ; 14 15 16 17 while ( langObj == null && i < acceptlang . length ) { code = acceptlang [ i ]; if ( code . indexOf ( " -" ) > 0) 5 Implementierung 71 code = code . substring (0 , acceptlang [ i ]. indexOf ( " -" ) ) ; if ( code . indexOf ( " ," ) > 0) code = code . substring (0 , acceptlang [ i ]. indexOf ( " ," ) ) ; 18 19 20 21 i ++; langObj = langAct . getLanguage ( code ) ; 22 23 } // no suitable language available if ( langObj == null ) { code = " DE " ; langObj = langAct . getLanguage ( code ) ; } 24 25 26 27 28 29 30 return langObj . getId () ; 31 } 32 Für die Erkennung der eigentlichen Geräteeigenschaften wird wie schon erwähnt das UAProf Profil des Endgeräts ausgewertet. Für das parsen des Profils wird die Open Source Bibliothek DELI (Delivery Context Library For CC/PP and UAProf) 12 verwendet. DELI extrahiert automatisch die URL zum jeweiligen UAProf Profil aus dem Request und parst die Datei in ein Profil Objekt. Somit ist es nun einfach möglich auf die jeweiligen Attribute und Werte zuzugreifen (siehe Listing 5.2). Der Vorteil von DELI liegt aber auch darin, dass auch Geräte oder Browser, die kein UAProf Profil haben, unterstützt werden. Dazu kann man selbst Profile anlegen (zB für den Microsoft Internet Explorer). Anhand des User-Agent Felds im Header wird dann erkannt welches am Server gespeicherte Profil geladen werden soll. Somit kann man nach dem selben Schema, wie die Eigenschaften von mobilen Endgeräten erkannt werden, auch die verschiedenen Desktop Browser erkennen“, und bei der Adaptierung darauf Rücksicht nehmen. In dem entwi” ckelten Forschungsprototypen werden dann alle Kontextinformationen in einem ContextBean“, welches für die Geräteeigenschaften ein DeviceBean“ enthält ” ” (siehe auch Listing 5.2), gespeichert und stehen, nachdem sie bei der Instanzierung der Session eingelesen wurden, allen Anwendungsmodulen zur Verfügung. Listing 5.2: Ausschnitt aus der Methode zum Erkennen der Geräteeigenschaften mit Hilfe von DELI private DeviceBean /* doDetect Dev ic e */ do Pa rs ePr of il e ( H t t p S e r v l e t R e q u e s t request ) { Profile profile = new Profile ( request ) ; 1 2 3 DeviceBean deo = new DeviceBean () ; 4 5 try { System . out . println ( profile . getAttribute ( " ScreenSize " ) ) ; String screen = ( String ) ( profile . getAttribute ( " ScreenSize " ) ) . getValue () . elementAt (0) ; 6 7 8 9 12 http://delicon.sourceforge.net 5 Implementierung 72 String [] s = screen . split ( " x " ) ; int w = Integer . parseInt ( s [0]) ; int h = Integer . parseInt ( s [1]) ; deo . setScreenHeight ( h ) ; deo . setScreenWidth ( w ) ; } catch ( Exception e ) { deo . setScreenHeight (768) ; deo . setScreenWidth (1024) ; e . printStackTrace () ; } 10 11 12 13 14 15 16 17 18 19 20 //..... 21 22 return deo ; 23 24 } 5.3.2 Aggregation und Selektion von Inhalten und Layout Nachdem die Eigenschaften des Geräts bekannt sind wird ein dazu passendes Layout ausgewählt. Das Layout gibt die grobe Seitenstruktur vor und besteht aus JSP Seiten, die wiederum Tags enthalten, durch die dann die eigentlichen Inhalte erstellt werden. Für den entwickelten Forschungsprototypen wurden derzeit zwei Templates bereitgestellt. Eines für alle herkömmlichen Browser und Bildschirme mit einer Auflösung von mindestens 800px in der Breite, und eines für mobile Endgeräte oder Bildschirmauflösungen unter 800px Breite. Theoretisch wäre es möglich beliebig viele Templates zur Verfügung zu stellen, der praktische Nutzen sei jedoch dahingestellt. Die Kombination aus Templates und Tags macht es möglich das komplette Layout zu ändern, ohne in die Programmlogik der Anwendung eingreifen zu müssen, denn das Template gibt nur die Struktur und das Design vor. An den Stellen, an denen zB das Menü erscheinen soll, wird der dementsprechende Tag eingebunden, welcher wiederum ausschließlich designunabhängiges HTML erzeugt. Die Entscheidung für das entsprechende Template wird im Controller aufgrund der Informationen über das Endgerät und darauf angewendeten Regeln (zB Bildschirmbreite < 800px: Template für PDAs) getroffen (siehe dazu auch Abschnitt 5.4.1 und Listing 5.6). Nachdem die Seitenstruktur festgelegt, ist werden die Inhalte mit Hilfe des Adaptierungsaspekts geladen (siehe 5.4.2). Diese bestehen bei dem implementierten Prototyp aus Artikeln, welche im Backend angelegt wurden. Das Backend wurde grundsätzlich für Flexible Authoring (siehe 3.2) implementiert. Dazu besteht ein Artikel mindestens aus einem Titel und optional aus einem Schlagtext und einem Bild. Ist diese Grundstruktur angelegt, kann man den Artikel mit mehreren vorgefertigten Grundstrukturen (ContentParts) aufbauen. Diese können beliebig miteinander kombiniert werden. Abbildung D zeigt, wie ein Artikel mit mehre- 5 Implementierung 73 ren ContentParts im Backend aussieht. Die ContentParts sind ein wichtiger Teil der endgeräteabhängigen Adaptierung, denn aus der Definition des ContentParts weiß man, wie der Inhalt adaptiert werden soll. So kann es zB ContentParts für normalen Text, Text mit HTML, Text mit Bild, Tabellen, Linklisten, BildGalerien oder für Videos mit verschiedenen Qualitätsstufen geben. Beim Laden des Artikels können nun schon in Abhängigkeit der Geräteeigenschaften gewisse ContentParts wie zB Bild-Galerien weggelassen werden oder gleich die dem Endgerät entsprechende Version (zB bei Videos) selektiert werden. 5.3.3 Transformation Die Transformation ist der letzte Schritt in der Adaptierung für verschiedene Endgeräte. Die Transformation wird mit Hilfe des Adaptierungsaspekts eingebunden, dabei werden die aus der Datenbank geladenen Inhalte für das jeweilige Endgerät aufbereitet. Dies ist notwendig, da das Backend, aus Gründen der besseren Benutzbarkeit, nur die Möglichkeit bietet Inhalte in einer Formatierung (für herkömmliche Browser) zu speichern. Dabei steht im Backend ein WYSIWYGHTML-Editor zur Verfügung, mit dem der Benutzer die angelegten Artikel komfortabel und ohne HTML-Kenntnisse editieren kann. Die Formatierung, die der Autor des Artikels vornimmt, wie zum Beispiel große Tabellen oder Bilder, können aber nicht immer auf allen Endgeräten gleich angezeigt werden. Daher ist es notwendig diese in Abhängigkeit der Geräteeigenschaften zu transformieren. Nachdem die Inhalte aus der Datenbank geladen wurden, wird nun überprüft, ob sie Elemente enthalten, die für die Darstellung auf dem verwendeten Endgerät problematisch sind. Wird ein solches Element gefunden, zB ein Bild, wird es vom Transformator durch ein kleineres in der passenden Auflösung ersetzt. Dabei gilt es zu beachten, dass alle Bilder mit einem weißen Rahmen, sowie einem Schatten, einer leichten Drehung und optional mit einem Text im Rahmen unter dem Bild versehen sein können. All diese Optionen sind im Backend beim Anlegen eines Bildes konfigurierbar und werden vollautomatisch erstellt. Beim Verkleiner müssen diese logisch“ mit verkleinert werden. Das bedeutet, der Rahmen muss ” schmäler werden und ab einer bestimmten Größe die Schrift entfernt werden, da sie nicht mehr lesbar wäre. Videos werden bei dieser Transformation ignoriert, da diese ja schon bei der Selektion der Inhalte in der richtigen Größe geladen wurden, bzw. sowieso nicht geladen wurden. Der Transformator besitzt auch die Fähigkeit Texte logisch zu kürzen. Dies kommt vor allem bei der Artikelübersicht zum Tragen, wo nur die Schlagtexte zu den ersten 3-5 Artikeln angezeigt werden. Der Schlagtext, der die Einleitung des Artikels darstellt, besteht zwar in der Regel nur aus 100 bis 200 Wörtern, 5 Implementierung 74 was auf einem herkömmlichen Bildschirm kein Problem darstellt. Für ein Gerät mit einer Bildschirmhöhe von zum Beispiel nur 320 px ist dies, vor allem bei einer Übersicht, jedoch viel zu viel. Der Transformator kürzt den Schlagtext daher je nach Möglichkeit auf 20-50 Wörter ab. Alternativ dazu besteht die Möglichkeit, dass der Autor durch einen Kommentar (<!--BREAK-->) bestimmt, wo der Schlagtext in der Übersicht abgebrochen wird. Abbildung 5.4 zeigt das Ergebnis der endgerätespezifischen Adaption auf einem PDA. Abbildung 5.4: Screenshot der für einen PDA adaptierten Anwendung im Sommerdesign 5 Implementierung 75 5.4 Implementierung der Adaptierung mit Hilfe von Aspekten Bei der Entwicklung des Tourismusinformationssystems wurde großen Wert darauf gelegt die Customization der Web-Anwendung als Crosscutting Concern im Sinne der aspektorientierten Programmierung zu behandeln. Um Separation of Concerns zu erreichen, wird der Code, der zur Customization beiträgt und in nahezu allen Komponenten der Web-Anwendung verteilt ist, in Aspekte ausgelagert. Die objektorientierten Komponenten der Web-Anwendung beinhalten nur den Code, der zur grundlegenden Funktionalität nötig ist und in der Bestim” mung“ der Komponente liegt, dh. im Controller Servlet werden Parameter aus dem Request validiert und auf die entsprechende View weitergeleitet, in der JSP Seite werden ein CSS Stylesheet und Tag Libraries eingebunden und in den Tag Libraries werden die einzelnen Teile der HTML Seite erzeugt. Wenn die Customization in diesen Komponenten vermischt wäre, müsste das Controller Servlet Informationen zum Kontext extrahieren, die Tag Libraries müssten Fallunterscheidungen zu den verschiedenen Darstellungen auf den unterschiedlichen Endgeräten beinhalten, die Adaptierung des Inhalts wäre starr in den Klassen der Geschäftslogik verankert, usw. Änderungen und Erweiterungen wären dann nur sehr schwer durchzuführen. Unser Ansatz basiert auf den drei Aspekten Kontextaspekt, Transformationsaspekt und Adaptierungsaspekt um diese Bereiche zu kapseln. Abbildung 5.4 zeigt das Zusammenspiel der Aspekte mit den objektorientierten Komponenten anhand eines an das der UML-Notation angelehntes Sequenzdiagramms. Die Pfeile, die von den Aspekten ausgehen, zeigen, dass ein Advice an dieser Stelle ausgeführt wird. Interessante Teile daraus werden im Folgenden beschrieben. 5.4.1 Kontextaspekt Der Kontextaspekt hat die Aufgabe, relevante Kontextfaktoren zu erfassen. Diese Daten werden aus dem Request Header und der IP-Adresse des Benutzers extrahiert und umfassen derzeit das verwendete Endgerät und Browser, die verfügbare Bandbreite, die bevorzugte Sprache und den aktuellen Standort des Benutzers. Der Kontext wird beim Start der Session erfasst und in einem Objekt, dem ContextBean, gespeichert. Der Joinpoint befindet sich im Controller Servlet beim Aufruf des UserDetectors, der auch für die herkömmliche Web-Anwendung aufgerufen wird. Der UserDetector prüft, ob ein Cookie für die automatische Anmeldung 5 Implementierung 76 Abbildung 5.5: Requestablauf 5 Implementierung 77 vorhanden ist. Der Advice benötigt Zugriff auf den Request und auf das ContextBean. Dieses Ereignis wird durch den nachstehenden Pointcut detectContext selektiert. Durch args(ctx, request) werden die der Methode detectUser(ContextBean, HttpServletRequest) übergebenen Parameter für den Advice sichtbar gemacht. Listing 5.3: Pointcut detectContext 1 2 3 public pointcut detectContext ( ContextBean ctx , H t t p S e r v l e t R e q u e s t request ) : call ( ContextBean UserDetector . detectUser ( ContextBean , H t t p S e r v l e t R e q u e s t ) ) && ( args ( ctx , request ) ) ; Bei diesem Pointcut wird ein Around-Advice durchgeführt. Dadurch kann der Rückgabewert der Methode detectUser() nach der Ausführung der Methode, aber noch vor der tatsächlichen Rückgabe des Objekts und des Kontrollflusses, verändert werden. Es werden Daten zum Endgerät, der Bandbreite und dem Standort extrahiert und zusätzlich im ContextBean gespeichert. Wenn der Benutzer automatisch angemeldet werden kann, wird die im Profil gespeicherte Sprache für die Darstellung der Web-Anwendung verwendet. Wenn kein Cookie existiert, wird zusätzlich die Sprache aus dem Request Header gelesen. Passt keine Sprache aus dem Request Header mit den im System verfügbaren überein, wird die Web-Anwendung in Deutsch angezeigt. Listing 5.4: Advice detectContext 1 2 ContextBean around ( ContextBean ctx , H t t p S e r v l e t R e q u e s t request ) : detectContext ( ctx , request ) { 3 ctx = proceed ( ctx , request ) ; 4 5 if ( ctx . getUser () == null ) { long langId = d o D e t e c t L a n g u a g e F r o m H e a d e r ( request ) ; ctx . setLanguage ( langId ) ; } ctx . setDeviceBean ( doParse Pr of il e ( request ) ) ; // CC / PP Infos Parsen ctx . setDevice ( doDetectDev ice ( ctx . getDb () ) ) ; String ip = request . getRemoteAddr () ; ctx . setIp ( ip ) ; ctx . setBandwith ( doDe tec t B a n d w i t h ( ip ) ) ; ctx . setLocation ( doDe tec t L o c a t i o n ( ip ) ) ; 6 7 8 9 10 11 12 13 14 15 16 return ctx ; 17 18 } Abhängig vom erkannten Endgerät wird die Web-Anwendung in einem passenden Layout dargestellt. Für jedes Layout existiert eine eigene View, das ist eine JSP Seite, die HTML Code für das Design und Tag Libraries für dynamische Inhalte enthält. Das Controller Servlet muss den Request auf die richtige View weiterleiten. Um aber im Controller nicht die Concerns zu vermischen, wird die Entscheidung, welche View die richtige ist, im Kontextaspekt getroffen. 5 Implementierung 78 Der Pointcut doForward aktiviert dazu beim Aufruf der Methode getRequestDispatcher(), sofern sie innerhalb der Methode doGet() in der Klasse FrontendControllerServlet aufgerufen wird, einen Around-Advice. Listing 5.5: Pointcut doForward 1 2 3 4 public pointcut doForward ( H t t p S e r v l e t R e q u e s t request ) : call ( R eq ue s tD i sp at c he r H t t p S e r v l e t R e q u e s t . g e t R e q u e s t D i s p a t c h e r (*) ) && withincode ( protected void F r o n t e n d C o n t r o l l e r S e r v l e t . doGet (..) ) && ( target ( request ) ) ; Der Advice prüft, welcher Kategorie (groß/klein) das Gerät zugeordnet ist, und liefert ein passendes RequestDispatcher Objekt zurück. Listing 5.6: Advice doForward 1 R eq u es tD i sp at c he r around ( H t t p S e r v l e t R e q u e s t request ) : doForward ( request ) { 2 R eq ue s tD i sp at c he r dispatcher ; ContextBean ctx = ( ContextBean ) request . getSession () . getAttribute ( " ctxBean " ) ; 3 4 5 if ( ctx . getDevice () == GlobalValues . Device . MIDI ) { dispatcher = request . g e t R e q u e s t D i s p a t c h e r ( " index_mobile . jsp " ) ; } else { dispatcher = request . g e t R e q u e s t D i s p a t c h e r ( " index_front . jsp " ) ; } return dispatcher ; 6 7 8 9 10 11 12 13 } 5.4.2 Adaptierung des Inhalts Für die Auswahl und Reihung der Artikel im Forschungsprototypen wurde im Rahmen dieser Arbeit ein eigenes Customizationregelsystem entwickelt, welches in Abbildung 5.6 dargestellt ist und in Folge kurz erläutert wird. Das Customizationregelsystem nimmt bei der Auswahl der Artikel einerseits auf den technischen Kontext des Endgeräts als auch auf den natürlichen und sozialen Kontext Rücksicht. Selektion der Inhalte Bei der Entwicklung der ubiquitären Web-Anwendung war es das Ziel, möglichst viele Kontextfaktoren mit einzubeziehen und darüber hinaus das System so zu gestalten, dass es leicht erweiterbar ist und dass eine Konfiguration des Einflusses der Kontextfaktoren auf die Adaptierung von Außen“ möglich ist, also ohne ” Eingriff in den Programmcode. Mit diesem System wird die Artikelauswahl für die gesamte Web-Anwendung getroffen und bietet damit jedem Benutzer jederzeit ein speziell abgestimmtes 5 Implementierung 79 Angebot, wobei natürlich ein Navigieren durch alle Artikel über die Kategorienoder Ortsnavigation trotzdem weiterhin möglich ist. Dabei wird prinzipiell zwischen zwei unterschiedlichen Kontextfaktorengruppen hinsichtlich ihres Einflusses auf die Adaptierung unterschieden, nämlich den Knock-Out Faktoren und den Reihungsfaktoren. Abbildung 5.6: Schema Adaptierungsvorgang der Artikel basierend auf sozialen, natürlichen und logischen Kontext Knock-Out Faktoren Diese Kontextfaktoren entscheiden, welche Artikel überhaupt für eine Anzeige in Frage kommen. Es wird über diese Faktoren also eine Selektion von, auf den Kontext des Benutzers, passende Artikeln durchgeführt. Zu dieser Faktorgruppe zählen im Forschungsprototypen der Ort, die Saison, die Sprache und der Benutzertyp. Am Beispiel der Saison wird schon deutlich, warum dies ein Knock-Out Faktor ist: Im Winter wird ein Benutzer mit großer Wahrscheinlichkeit nicht an Sommerangeboten interessiert sein, darum soll er diese überflüssige Information auch gar 5 Implementierung 80 nicht angezeigt bekommen. Eine ausführlichere Erklärung in dieser Gruppe der Kontextfaktoren bedarf der Benutzertyp. Dieser gibt eine grobe Interessensausrichtung und Einstufung des Benutzers an. Mögliche Benutzertypen sind hierbei Jung&Aktiv“, Familien mit Kindern“, Romantik&Wellness“ ” ” ” oder Ähnliche. Diesen Typen wiederum sind passende Kategorien von Artikeln zugeordnet, wie zum Beispiel Jung&Aktiv die Kategorien Sport, Nightlife und Szene, Action und Fun umfasst. Die Erfassung und Einstufung eines Benutzers zu einem Benutzertypen erfolgt halbautomatisch, kann also über den Benutzer selbst oder über das System automatisch erfasst werden. Abhängig von der Einstellung der Gewichtung dieser Faktoren werden diese jedoch wiederum automatisch schrittweise zurückgenommen, wenn eine Berücksichtigung aller Faktoren keine oder nur eine unzureichende Treffermenge an Artikeln ergibt. Reihungsfaktoren Das durch die Knock-Out Faktoren vorgewählte Artikel-Set wird über diese Faktoren, wie der Name schon sagt, gereiht. So werden zum Beispiel bei schönem Wetter Outdoor Events nach vor, oder Artikel, welche zur Zeit nicht aktuell sind, weil diese an Events mit Öffnungszeiten gebunden sind, nach hinten gereiht. Ein besonderer Reihungsfaktor ist der Artikelbenchmark. Artikelbenchmark Hierbei werden Trackingdaten zu den einzelnen Artikeln über ein Benchmarksystem, welches die erfassten Daten normalisiert und gewichtet, bewertet. Mit in diese Bewertung fließt auch ein Neuigkeitsbonus“ für ” neu erstellte Artikel ein, damit diese prominent platziert und nicht unter Umständen vom Regelsystem übergangen werden. Der daraus erhaltene Benchmarkwert pro Artikel dient unter Berücksichtigung der anderen Reihungsfaktoren, je nach Konfiguration des Regelsystems, für die Reihung des vorgewählten Artikel-Sets. Technische Umsetzung als Regelsystem Das oben beschriebene System zur Adaptierung der Artikel besteht im Prinzip aus drei Komponenten. Einerseits aus einer erweiterbaren Gruppe an Regelklassen, einer Konfigurationsdatei für die Definition der Reihenfolge und Gewichtung der anzuwendenden Regeln und einem Adaptierungsaspekt. Regelklasse Je eine Regelklasse definiert für einen Kontextfaktor die, für die Adaptierung benötigten, HQL13 FROM, WHERE und ORDER BY 13 Hibernate Query Language 5 Implementierung 81 Fragmente. Diese Regelklassen werden vom Adaptierungsaspekt über Reflection14 aufgerufen, was zur Folge hat, dass neue Regeln ganz einfach, auch zur Runtime, hinzugefügt werden können. Einzige Bedingung hierfür ist, dass diese in der Konfigurationsdatei enthalten sein müssen, da ansonsten der Aspekt nichts von der neuen Regel weiß. Konfigurationsdatei In dieser XML15 -Datei sind die Regelklassen der Kontextfaktoren mit optionalen Gewichtungen enthalten. Über diese Datei erfährt der Adaptierungsaspekt, welche Regelklassen in welcher Reihenfolge und zu welcher Gewichtung anzuwenden sind. Adaptierungsaspekt Die in der Konfigurationsdatei aufgeführten Regelklassen werden von dem Adaptierungsaspekt ausgeführt und die erhaltenen HQLFragmente zu einem HQL-Statement zusammengeführt. Dieses wird in die entsprechende Stelle im Contentselector eingefügt und von diesem ausgeführt. Daraufhin wird vom Aspekt geprüft, ob das erhaltene Artikel-Set ausreichend groß ist um den Hauptcontent und die Side-Artikel zu befüllen. Ist dies nicht der Fall wird ein neues HQL-Statement erstellt, welches die am schwächsten gewichtete Regel verwirft und ein neues Artikel-Set liefert. Aufgrund dieses modularen Aufbaues kann das Regelsystem einfach erweitert werden, in dem man eine neue Regelklasse entsprechend den Vorgaben einfügt und diese auch im Konfigurationsfile berücksichtigt. Am Quellcode an sich sind somit keine Änderungen nötig. Ausführlich wird das Thema der Kontextbehandlung und speziell auch dieses hier vorgestellte System in [Weis06] behandelt. Einbindung mittels Adaptierungsaspekt Der Adaptierungsaspekt ist wie zuvor erwähnt das Bindeglied zwischen den Regeln der Customization bezüglich Inhalt und der Klasse ContentSelector, die für Artikelabfrage und -aufbereitung, Navigation, sowie Breadcrumb Menü zuständig ist. In diesem Aspekt existieren zwei einfache Pointcuts, doMainAdaptation() und doSideAdaptation() mit jeweiligem Before-Advice, die die entsprechenden Datenbank-Abfragen für die große Artikelliste in der mittleren Spalte und die kleinen seitlichen Artikellisten zusammen bauen. Der Pointcut selektiert die Ausführung der Methode getMainContent() in der Klasse ContentSelector. Zusätzlich zu den Parametern der Methode wird eine Referenz auf das ContentSelector Objekt dem Advice übergeben. 14 15 http://java.sun.com/docs/books/tutorial/reflect/index.html Extensible Markup Language 5 Implementierung 82 Listing 5.7: Pointcut doMainAdaptation 1 2 3 4 5 6 public pointcut do Mai nAda pta t i o n ( C on t e n t S e le c t o r cs , ContentBean cb , ContextBean ctx ) : execution ( private * tip . main . action . C o nt e n t S e l ec t o r . getMainContent ( ContentBean , ContextBean ) ) && ( this ( cs ) ) && ( args ( cb , ctx ) ) ; Der Before-Advice lädt mittels Dynamic Class Loading die Regelklassen, die in der Konfigurationsdatei angegeben sind. Die einzelnen Regelklassen sind von der abstrakten Klasse AbstractRule abgeleitet und implementieren somit alle die Methoden getHqlFrom(), getHqlWhere() und getHqlOrder(). Eine konkrete Instanz von AbstractRule ist zB LanguageRule, die als WHERE Klausel eine Einschränkung der Artikelsprache auf die vom Benutzer gewählte Sprache erzeugt. Der so zusammen gestellte Query String wird durch cs.hqlMain = hqlFrom + hqlWhere + hqlOrder; an die Variable hqlMain im ContentSelector Objekt weitergegeben. Listing 5.8: Advice doMainAdaptation 1 2 before ( ContentSelector cs , ContentBean cb , ContextBean ctx ) : do Main Adap tati on ( cs , cb , ctx ) { 3 hqlFrom = " SELECT DISTINCT articles FROM Article articles " ; hqlWhere = " WHERE " ; hqlOrder = " " ; 4 5 6 7 // load rule - config Properties prop = loadPr ope rt ie s () ; Enumeration enumProp = prop . propertyNames () ; 8 9 10 11 while ( enumProp . hasMoreEl e m e n t s () ) { try { Object ruleClass = Class . forName ( " tip . customization . adaptation . rule . " + ( String ) enumProp . nextElement () ) . newInstance () ; 12 13 14 15 // invoke methods for generating query string ... 16 17 } catch ( Exception ex ) { } 18 19 } 20 21 // set query string in C o nt e n t S e l ec t o r cs . hqlMain = hqlFrom + hqlWhere + hqlOrder ; 22 23 24 } Die Customization der seitlichen Artikellisten erfolgt analog dazu. 5 Implementierung 83 5.4.3 Transformationsaspekt Im Transformationsaspekt werden eventuell notwendige Änderungen zur Anpassung des Layouts für mobile Endgeräte vorgenommen. Der Transformationsaspekt befreit“ die Klassen der Tag Libraries von Entscheidungen zur Endgeräteanpas” sung. Wie bereits erwähnt sollen beispielsweise in der Artikelliste auf kleinen Endgeräten abhängig von der Bildschirmhöhe nur drei bis fünf Artikel angezeigt werden, diese sollen wiederum in der Vorschau auf drei bis fünf Sätze gekürzt werden. Listing 5.10 zeigt zB wie die Anzahl der Artikel in der Artikelübersicht auf drei verringert werden kann. Listing 5.9: Ponitcut doArticleCountTransformation 1 2 public pointcut d o A r t i c l e C o u n t T r a n s f o r m a t i o n ( Art ic le Lis tT ag alt ) : set ( int ArticleListTag . articleCount ) && ( this ( alt ) ) ; Listing 5.10: Advice doArticleCountTransformation 1 after ( ArticleListTag alt ) : d o A r t i c l e C o u n t T r a n s f o r m a t i o n ( alt ) { 2 Device d = alt . ub . getDevice () ; int screenH = alt . ub . getDb () . g e t S cr e e n H e i gh t () ; 3 4 5 if ( alt . articleCount > 3 && d == GlobalValues . Device . MIDI && screenH < 320) alt . articleCount = 3; 6 7 8 9 } Listing 5.12 zeigt beispielsweise wie mit Hilfe des Advice doTextTransformation der Schlagtext eines Artikels in der Artikelliste auf drei Sätze gekürzt werden kann. Listing 5.11: Pointcut doTextTransformation 1 2 3 4 5 public pointcut d o T e x t T r a n s f o r m a t i o n ( Article a , Ar ti cl eL ist Ta g alt ) : call ( String Article . getText () ) && ( withincode ( int ArticleL is tT ag . doStartTag () ) ) && ( target ( a ) ) && ( this ( alt ) ) ; Listing 5.12: Advice doTextTransformation 1 2 String around ( Article a , A rti cl eL ist Ta g alt ) : d o T e x t T r a n s f o r m a t i o n (a , alt ) { 3 4 5 6 String aText ; Device d = alt . ub . getDevice () ; int screenH = alt . ub . getDb () . g e t S cr e e n H e i gh t () ; 7 8 9 10 11 if ( d == GlobalValues . Device . MIDI && screenH < 320) { String text = Util . stripHtml ( a . getText () ) ; Se nten ceSp lit ter ss = new S e n t e n c e S p l i t t e r () ; aText = ss . split ( ss . mark ( text , " $ " ) ,3 , " \\$ " ) ; 5 Implementierung 84 } else { aText = a . getText () ; } 12 13 14 15 16 return aText ; 17 18 } In der Artikelliste sollen auf kleinen Endgeräten keine Contentparts angezeigt werden, die nur allgemeine Informationen beinhalten, wie zB die zusammengefasste Empfehlung aus den abgegebenen Ratings, für welchen Urlaubstyp ein Artikel geeignet ist. Der Pointcut doListSystemCPTransformation adressiert den Aufruf der Methode CPTag.performContentparts(), die das Rendering aller Contentparts für die Artikelliste veranlasst. Listing 5.13: Pointcut doListSystemCPTransformation 1 2 3 public pointcut d o L i s t S y s t e m C P T r a n s f o r m a t i o n ( Art ic le Lis tT ag alt ) : call ( String CPTag . p e r f o r m C o n t e n t p a r t s ( ArticleFrame , ..) ) && ( this ( alt ) ) ; Da auf mobilen Devices keiner der Contentparts in der Liste angezeigt werden soll, bricht der Around-Advice entweder mit einem Leerstring das Rendern der Contentparts ab, oder wenn es sich nicht um ein kleines Endgerät handelt, wird durch den Aufruf von proceed() der Vorgang ordnungsgemäß durchgeführt. Listing 5.14: Advice doListSystemCPTransformation 1 2 String around ( ArticleListT ag alt ) : d o L i s t S y s t e m C P T r a n s f o r m a t i o n ( alt ) { 3 Device d = alt . ctx . getDevice () ; 4 5 if ( d == GlobalValues . Device . MIDI ) return " " ; else return proceed ( alt ) ; 6 7 8 9 10 } In der Detailansicht eines Artikels werden alle abgegebenen Ratings inkl. Kommentar aufgelistet. Für kleine Endgeräte soll stattdessen ein Durchschnittsrating angezeigt werden. Der Pointcut doRating adressiert die Ausführung der Rating Rendering Methode innerhalb des Kontrollflusses des ArticleTag. Listing 5.15: Pointcut doRatingCPTransformation 1 2 3 4 public pointcut d o R a t i n g C P T r a n s f o r m a t i o n ( ArticleTag at , ContextBean ctx ) : execution ( String CPRating . p e r f o r m F u l l O u t p u t ( ContextBean ) ) && cflowbelow ( execution ( public int ArticleTag . doStartTag () ) && ( this ( at ) ) ) && ( args ( ctx ) ) ; Der Around-Advice bewirkt bei mobilen Endgeräten die Anzeige des durchschnittlichen Ratings statt der gesamten Liste. 5 Implementierung 85 Listing 5.16: Advice doRatingCPTransformation 1 2 3 String around ( ArticleTag at , ContextBean ctx ) : d o R a t i n g C P T r a n s f o r m a t i o n ( at , ctx ) { Device d = ctx . getDevice () ; 4 if ( d == GlobalValues . Device . MIDI ) { 5 6 Object [][] articles = at . cb . g e t M a in A r t i c l es () ; Article a = ( Article ) articles [0][0]; 7 8 9 RatingBean rb = new RatingBean () ; rb . loadAvgRating ( a . get A r t i c l eF r a m e () . getId () ) ; 10 11 12 RatingAction ra = new RatingAction () ; return ra . g e t A v g R a t i n g C a t e g o r i e s ( rb , ctx ) ; 13 14 } else return proceed ( at , ctx ) ; 15 16 17 18 } 5.5 Kritische Würdigung Die Bereiche der Customzation werden durch den Kontextaspekt, Adaptierungsaspekt und Transformationsaspekt vom Rest abgekapselt. Die großen Vorteile sind, dass der Code nicht vermischt ist, jede Komponente nur die Funktionalität beinhaltet, die auch in ihr vermutet wird und Änderungen an zentraler Stelle durchzuführen sind. Die Adaptierung an das Endgerät ist durch den Aufbau der Artikel aus verschiedenen Contentparts sehr flexibel. Das Hinzufügen neuer Contetparttypen zum System, ist durch den modularen Aufbau relativ einfach möglich. Für neue Contentparts muss nur eine Entität in der Datenbank und eine Hibernate-Mapping Klasse angelegt werden. Diese Mapping Klasse implementiert das Interface IContentpart mit den Methoden performListOutput() und performFullOutput() für das Rendering in der Artikelliste bzw. in der Vollansicht. Diese beiden Methoden dienen als Joinpoint. Eine Adaptierung für verschiedene Endgeräte erfolgt analog zu der Transformation des Ratings (siehe Listing 5.16), wobei je nach Contentparttyp zusätzlich noch andere Transformationen einfach und an zentraler Stelle hinzugefügt werden können. Die Adaptierung des Inhalts ist ebenfalls auf größtmögliche Flexibilität ausgelegt. Durch Hinzufügen neuer Regeln, beziehungsweise durch Ändern der Reihenfolge der Regeln in der Konfigurationsdatei, wird die Anpassung beeinflusst. Werden die Regeln in Zukunft so komplex, dass eine sequentielle Abarbeitung nicht mehr effizient ist und ein RETE-basierter Baumansatz nötig ist, kann lediglich durch Änderungen in den Advices doMainAdaptation und doSideAdaptation 5 Implementierung 86 eine professionelle Rule Engine, wie zB JBoss Rules16 , statt unserer Eigenentwicklung eingesetzt werden. Schwieriger gestaltet sich das Hinzufügen neuer Kontextfaktoren. Hier genügt es nicht, nur den Advice des Aspekts zu ändern, da die neuen Kontextfaktoren im ContextBean gespeichert werden und in weiterer Folge für die Adaptierung genutzt werden. Somit ist eine Erweiterung des ContextBeans und die Erstellung neuer Regeln notwendig. Die Erweiterung des ContextBeans um Attribute für die neuen Kontextfaktoren könnte entweder durch einen Aspekt instrumentiert werden oder direkt in der Klasse erfolgen. Änderungen bei der Extraktion der bestehenden Kontextfaktoren sind aber relativ einfach möglich. Hier sind nur Änderungen im Kontextaspekt nötig. So kann beispielsweise die Lokalisierung des Benutzers, die derzeit aufgrund der IPAdresse erfolgt, auch für die Verwendung von GSM oder GPS Informationen ausgebaut werden. 16 http://labs.jboss.com/portal/jbossrules 87 Kapitel 6 Conclusio Für die Adaptierung einer Web-Anwendung an das Endgerät gibt es eine Vielzahl an Techniken und Methoden. Die zweckmäßige Kombination dieser Techniken ist stark von der Art der Web-Anwendung und den angebotenen Services abhängig. Bei der Entwicklung einer ubiquitären Web-Anwendung ist es notwendig schon von Beginn an die verschiedenen Aspekte der Endgerätunabängigkeit zu berücksichtigen, denn es wird nicht nur die Präsentation an das Endgerät adaptiert, sondern auch die Inhalte speziell an den Kontext des Nutzers und somit auch den Kontext des Endgeräts angepasst. Unser Fokus bei der Entwicklung des ubiquitären Tourismusinformationssystems lag bei der Customization. Dazu wurde ein eigenes Content Management System entwickelt, das den speziellen Anforderungen der kontextabhängigen Customization entspricht. Schon bei der Konzeption das Datenbankmodells wurde darauf Rücksicht genommen, dass bestimmte Teile der Web-Anwendung nur in Abhängigkeit des Nutzungskontexts erstellt werden. Im Zuge der Implementierung wurde die Customization als eigene Dimension der Web-Anwendung betrachtet und auch im Programmcode durch den Einsatz der aspektorientierten Programmiersprache AspectJ separiert. Es wurden verschiedene Techniken zur Erkennung des Nutzungskontexts implementiert und ein eigenes Customizationregelsystem entwickelt mit dessen Hilfe die Inhalte in Abhängigkeit des Kontexts selektiert werden. Für die Adaptierung der Darstellung an das Endgerät wurden zusätzlich eine Kombination aus Templates und Transformationstechniken verwendet. 6.1 Erfahrungsbericht Bei der Entwicklung der Endgerätunabängigkeit stellten sich folgende Punkte als besonders wichtig dar: 6 Conclusio 88 • Einfaches modulares Konzept zur Erstellung und Speicherung der Inhalte • Zuverlässige Erkennung der Eigenschaften des Endgeräts • Selektion und Aggregation der Inhalte aufgrund des Nutzungskontexts • Templates für die Präsentation und Fein-Transformation der Inhalte in Abhängigkeit des Endgeräts Die Aufteilung der Artikel in verschiedene Contentparts, d.h. Artikelteile, hat sich als sehr einfaches und modulares Konzept herausgestellt, mit dessen Hilfe leicht der Flexible Authoring Ansatz implementiert werden konnte. Für die Erkennung der Eigenschaften konzentrierten wir uns speziell auf das Auslesen der UAProf und CC/PP Profile der Endgeräte, dabei hat sich das Open Source Library DELI1 als besonders nützlich erwiesen. Für die Auswahl der Inhalte wurde ein eigenes Regelsystem, entwickelt das einfach durch Textdateien zu konfigurieren ist. Auf der Präsentationsebene wurden JSP-Templates für das Layout und Design eingesetzt. Sie enthalten nur Tag-Libraries, die in Abhängikeit der Eigenschaften des Endgeräts den HTML-Code erzeugen und sind somit jederzeit einfach erweiter- oder ersetzbar. 6.2 Ausblick Mobile Endgeräte sind unumstreitbar weit verbreitet und nahezu jedes moderne Mobiltelefon verfügt schon über einen XHTML-fähigen Browser. Daraus ließe sich schließen, dass die Endgerätunabhängigkeit bei der Entwicklung von WebAnwendungen einen immer größer werdenden Stellenwert einnehmen müsste. Doch es gibt einige Argumente, warum dies nur bedingt der Fall sein könnte. Einerseits erfolgt die Weiterentwicklung der Endgeräte immer rasanter und die Funktionen werden immer umfangreicher. Nicht nur die Software wie Browser werden immer besser, sondern auch die Geräte selbst haben immer schnellere Prozessoren und größere Displays. Andererseits ist die Entwicklung eines durchgängigen Customization-Konzepts mit aufwändiger serverseitiger Adaptierung, wie von uns vorgestellt, nicht immer nötig. Bei den meisten herkömmlichen Web-Anwendungen reicht es aus, nur die Präsentation auf das Endgerät zu adaptieren was zB mit CSS Stilen mit Media-Type bei weitem einfacher erreicht werden kann. Bei ubiquitären Web-Anwendungen ist ein ganzheitlicher Ansatz mit serverseitiger Adaptierung jedoch unumgänglich. Somit wird die Entwicklung 1 http://delicon.sourceforge.net/ 6 Conclusio 89 neuer Ansätze für die Endgeräteunabhängigkeit auch stark davon abhängen, ob sich ubiquitäre Web-Anwendungen in den nächsten Jahren durchsetzen. 90 Anhang A Sourcecode Statistik Dateien Klassen Methoden Durchschnittliche Anzahl an Methoden pro Klasse Maximale Anzahl an Methoden in einer Klasse Minimale Anzahl an Methoden in einer Klasse Codezeilen Total Durchschnittliche Anzahl an Codezeilen pro Datei Maximale Anzahl an Codezeilen pro Datei Minimale Anzahl an Codezeilen pro Datei 132 128 1448 11 48 1 17624 135 883 7 Tabelle A.1: Statistik Java Dateien Dateien Zeilen Total Durchschnittliche Anzahl an Zeilen pro Datein Maximale Anzahl an Zeilen pro Datei Minimale Anzahl an Zeilen pro Datei 16 1313 82 200 7 Tabelle A.2: Statistik JSP Dateien Dateien Zeilen Total Durchschnittliche Anzahl an Zeilen pro Datein Maximale Anzahl an Zeilen pro Datei Minimale Anzahl an Zeilen pro Datei Tabelle A.3: Statistik XML Dateien 54 2613 48 186 14 91 Anhang B Ant Build Konfiguration Listing B.1: Ant Build Konfiguration 1 <? xml version = " 1.0 " ? > 2 3 4 5 6 7 8 9 10 < project name = " AntBuild " default = " compile " basedir = " . " > <! -- set global p r o p e r t i e s for this build -- > < property name = " src " location = " src " / > < property name = " ajsrc " location = " src / tip / customization " / > < property name = " build " location = " build / classes " / > < property name = " dist " location = " dist " / > < property name = " webcontent " location = " WebContent / " / > < property name = " tomcat . home " location = " path \ to \ apache - tomcat -5.5.17 " / > 11 12 13 14 <! -- TODO: update path -- > < property name = " aspectj . home " value = " path \ to \ AspectJ " / > < property name = " classpath " value = " path \ to \ TIP \ CODE \ WebContent \ WEB - INF \ lib " / > 15 16 17 18 19 20 < taskdef resource = " org / aspectj / tools / ant / taskdefs / a s p ec t j T a s k de f s . properties " > < classpath > < pathelement path = " ${ aspectj . home }/ lib / aspectjtools . jar " / > </ classpath > </ taskdef > 21 22 23 24 25 26 27 < target name = " init " > <! -- Create the time stamp -- > < tstamp / > <! -- Create the build d i r e c t o r y s t r u c t u r e used by compile -- > < mkdir dir = " ${ build } " / > </ target > 28 29 30 31 32 33 34 35 36 37 38 39 40 < target name = " compile " depends = " clean , init " description = " compile with ajc " > < iajc srcdir = " src " destdir = " ${ build } " source = " 1.5 " > < classpath > < pathelement path = " ${ aspectj . home }/ lib / aspectjrt . jar " / > < fileset dir = " ${ classpath } " > < include name = " *. jar " / > </ fileset > </ classpath > < inpath > < pathelement location = " ${ build } " / > </ inpath > </ iajc > B Ant Build Konfiguration 41 42 43 44 45 46 < copy todir = " ${ build } " > < fileset dir = " ${ src } " > < exclude name = " **/*. java " / > </ fileset > </ copy > </ target > 47 48 49 50 51 52 53 54 55 56 57 58 59 < target name = " war " depends = " compile " description = " generate the war file " > < mkdir dir = " ${ dist } " / > < war destfile = " ${ dist }/ tip . war " webxml = " ${ webcontent }/ WEB - INF / web . xml " > < fileset dir = " ${ webcontent } " / > < classes dir = " ${ build } " / > </ war > < copy todir = " ${ tomcat . home }/ webapps " > < fileset dir = " ${ dist } " > < include name = " tip . war " / > </ fileset > </ copy > </ target > 60 61 62 63 64 65 66 < target name = " clean " description = " clean up " > <! -- Delete the ${ build } and ${ dist } d i r e c t o r y trees -- > < delete dir = " ${ build }/*. class " / > < delete dir = " ${ dist } " / > </ target > </ project > 92 93 Kapitel und Autoren Kapitel Petra Brosch Rudolf Mayer Arnold Weissensteiner 1 X 2.1 X 2.2.1 X 2.2.2 X 2.2.3 X 2.2.4 X 3 X 4.1 X 4.2 X 4.3 X 4.4 X 4.4.2 X 4.5 X 5.1 X 5.2 X 5.3 X 5.4 X 5.4.2 X X 5.4.3 X 6 X Tabelle B.1: Kapitel und Autoren 94 Anhang C Screenshots Frontend Abbildung C.1: Startseite C Screenshots Frontend 95 Abbildung C.2: Artikelansicht C Screenshots Frontend Abbildung C.3: Artikelbewertung Abbildung C.4: Reisekoffer ansehen 96 97 Anhang D Screenshots Backend Abbildung D.1: Artikelzentrale D Screenshots Backend 98 Abbildung D.2: Artikelübersicht D Screenshots Backend Abbildung D.3: Artikel bearbeiten/anlegen 99 D Screenshots Backend Abbildung D.4: Contentpart Text bearbeiten/anlegen Abbildung D.5: Kategorien bearbeiten/anlegen 100 101 Anhang E Relevante MIME-Typen Dateityp Audio 3GPP Dateien (.3gp) Audio AMR Dateien (.amr) Audio AMR (wideband) Dateien (.awb) Audio MIDI Dateien (.mid oder .midi) Audio MP3 Dateien (.mp3) Audio MP4 Dateien (.mp4) Audio WAV Dateien (.wav) HTML Dateien (.html oder .htm) Bild BMP Dateien (.bmp) Bild GIF Dateien (.gif) Bild JPEG Dateien (.jpg oder .jpeg) Bild PNG Dateien (.png) Bild TIFF Dateien (.tif oder .tiff) Bild WBMP (Wireless BMP) Dateien (.wbmp) Java application JAR Dateien (.jar) Java application JAD Dateien (.jad) Plain text Dateien (.txt) Symbian application SIS Dateien (.sis) Video 3GPP Dateien (.3gp) Video MP4 Dateien (.mp4) WML Dateien (compiled) (.wmlc) WML Dateien (plain text) (.wml) WMLScript Dateien (compiled) (.wmlsc) WMLScript Dateien (plain text) (.wmls) XHTML MP Dateien (.xhtml, .html or .htm) MIME Medien Typ audio/3gpp audio/amr audio/amr-wb audio/midi audio/mpeg audio/mp4 audio/wav audio/x-wav text/html image/bmp image/x-bmp image/gif image/jpeg image/png image/tiff image/vnd.wap.wbmp application/java application/java-archive application/x-java-archive text/vnd.sun.j2me.app-descriptor text/plain application/vnd.symbian.install video/3gpp video/mp4 application/vnd.wap.wmlc text/vnd.wap.wml application/vnd.wap.wmlscriptc text/vnd.wap.wmlscript application/vnd.wap.xhtml+xml application/xhtml+xml text/html Tabelle E.1: Einige für die Erkennung der Geräteeigenschaften von Mobilen Endgeräten interessante MIME-Typen 102 Anhang F UAProf Profil des Nokia 6230i Listing F.1: UAProf Profil des Nokia 6230i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <? xml version = " 1.0 " ? > <! -- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -- > <! --- > <! -- Copyright ( c ) 2003 Nokia . All rights reserved . -- > <! --- > <! -- The contents of this document are provided " as is " . -- > <! -- No warranties of any kind , either express or implied , -- > <! -- including , but not limited to , the implied warranties -- > <! -- of merchantability and fitness for a particular -- > <! -- purpose , are made in relation to the accuracy , -- > <! -- reliability or contents of this document . Nokia -- > <! -- reserves the right to revise this document or -- > <! -- withdraw it at any time without prior notice . -- > <! --- > <! -- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -- > <! -- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -- > <! --- > <! -- This file was generated using the UA Profile -- > <! -- generator provided by IOP Operations . -- > <! --- > <! -- 2005.04.07 10 :12:05 -- > <! --- > <! -- Valid beginning from version 3.27 -- > <! -- User Agent Header: Nokia6230i /2.0 (03.27) Profile / -- > <! -- MIDP -2.0 Configuration / CLDC -1.1 -- > <! --- > <! -- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -- > < rdf:RDF xmlns:rdf = " http: // www . w3 . org /1999/02/22 - rdf - syntax - ns # " xmlns:prf = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# " xmlns:mms = " http: // www . wapforum . org / profiles / MMS / ccppschema -20010111# " > < rdf:Description rdf:ID = " Profile " > < prf:component > < rdf:Description rdf:ID = " H a r d w a r e P l a t f o r m " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# H a r d w a r e P l a t f o r m " / > < prf:BluetoothProfile > < rdf:Bag > < rdf:li > Headset Profile </ rdf:li > < rdf:li > Handsfree Profile </ rdf:li > F UAProf Profil des Nokia 6230i 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 103 < rdf:li > SIM Access Profile </ rdf:li > < rdf:li > Dial - up Networking Profile </ rdf:li > < rdf:li > Object Push Profile </ rdf:li > < rdf:li > File Transfer Profile </ rdf:li > < rdf:li > Generic Access Profile </ rdf:li > < rdf:li > Serial Port Profile </ rdf:li > < rdf:li > General Object Exchange Profile </ rdf:li > </ rdf:Bag > </ p r f : B l u e t o o t h P r o f i l e > < prf: Bit sPer Pixe l > 16 </ p r f : B i t s P e r P i x e l > < prf: Col orCa pabl e > Yes </ p r f : C o l o r C a p a b l e > < prf: Ima geCa pabl e > Yes </ p r f : I m a g e C a p a b l e > < prf: Inp utCh arSe t > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > </ rdf:Bag > </ pr f:I nput Char S e t > < prf:Keyboard > PhoneKeyPad </ prf:Keyboard > < prf:Model > 6230 i </ prf:Model > < p r f : N u m b e r O f S o f t K e y s >3 </ p r f : N u m b e r O f S o f t K e y s > < p rf : Ou tp u tC ha r S e t > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > </ rdf:Bag > </ pr f: O ut pu t Ch a r S e t > < p r f : P i x e l A s p e c t R a t i o >1 x1 </ p r f : P i x e l A s p e c t R a t i o > < prf:ScreenSize > 208 x208 </ p rf :S cre en Si ze > < p r f : S c r e e n S iz e C h a r > 18 x5 </ p r f : S c r e e n S i z e C h a r > < p r f : S t a n d a r d F o n t P r o p o r t i o n a l > Yes </ p r f : S t a n d a r d F o n t P r o p o r t i o n a l > < p r f : S o u n d O u t p u t C a p a b l e > Yes </ p r f : S o u n d O u t p u t C a p a b l e > < p r f : T e x t I n p u t C a p a b l e > Yes </ p r f : T e x t I n p u t C a p a b l e > < prf:Vendor > Nokia </ prf:Vendor > < p r f : V o i c e I n p u t C a p a b l e > Yes </ p r f : V o i c e I n p u t C a p a b l e > </ rdf:Description > </ prf:component > < prf:component > < rdf:Description rdf:ID = " S o f t w a r e P l a t f o r m " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# S o f t w a r e P l a t f o r m " / > < p r f : A c c e p t D o w n l o a d a b l e S o f t w a r e > Yes </ p r f : A c c e p t D o w n l o a d a b l e S o f t w a r e > < prf:AudioInputEncoder > < rdf:Bag > < rdf:li > AMR </ rdf:li > < rdf:li > EFR </ rdf:li > < rdf:li > FR </ rdf:li > < rdf:li > HR </ rdf:li > </ rdf:Bag > </ p r f : A u d i o I n p u t E n c o d e r > < prf:CcppAccept > < rdf:Bag > < rdf:li > application / java </ rdf:li > < rdf:li > application / java - archive </ rdf:li > F UAProf Profil des Nokia 6230i 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 104 < rdf:li > application / sdp </ rdf:li > < rdf:li > application / vnd . met . ticket </ rdf:li > < rdf:li > application / vnd . met . receipt </ rdf:li > < rdf:li > application / vnd . nok - s40theme </ rdf:li > < rdf:li > application / vnd . nokia . ringing - tone </ rdf:li > < rdf:li > application / vnd . nokia . radio - preset </ rdf:li > < rdf:li > application / vnd . nokia . radio - presets </ rdf:li > < rdf:li > application / vnd . oma . dd + xml </ rdf:li > < rdf:li > application / vnd . oma . drm . content </ rdf:li > < rdf:li > application / vnd . oma . drm . message </ rdf:li > < rdf:li > application / vnd . oma . drm . rights + xml </ rdf:li > < rdf:li > application / vnd . oma . drm . rights + wbxml </ rdf:li > < rdf:li > application / vnd . syncml - xml </ rdf:li > < rdf:li > application / vnd . syncml - wbxml </ rdf:li > < rdf:li > application / vnd . wap . cert - response </ rdf:li > < rdf:li > application / vnd . wap . connectivity - wbxml </ rdf:li > < rdf:li > application / vnd . wap . hashed - certificate </ rdf:li > < rdf:li > application / vnd . wap . sic </ rdf:li > < rdf:li > application / vnd . wap . signed - certificate </ rdf:li > < rdf:li > application / vnd . wap . slc </ rdf:li > < rdf:li > application / vnd . wap . xhtml + xml </ rdf:li > < rdf:li > application / vnd . wap . wmlscriptc </ rdf:li > < rdf:li > application /x - java - archive </ rdf:li > < rdf:li > application /x - wallet - appl . user - data - provision </ rdf:li > < rdf:li > application /x - wap - prov . browser - bookmarks </ rdf:li > < rdf:li > application / xhtml + xml </ rdf:li > < rdf:li > application / m3g </ rdf:li > < rdf:li > audio /3 gpp </ rdf:li > < rdf:li > audio / aac </ rdf:li > < rdf:li > audio / amr </ rdf:li > < rdf:li > audio / amr - wb </ rdf:li > < rdf:li > audio / mid </ rdf:li > < rdf:li > audio / midi </ rdf:li > < rdf:li > audio / mp3 </ rdf:li > < rdf:li > audio / mp4 </ rdf:li > < rdf:li > audio / mpeg </ rdf:li > < rdf:li > audio / sp - midi </ rdf:li > < rdf:li > audio /x - mid </ rdf:li > < rdf:li > audio /x - midi </ rdf:li > < rdf:li > image / bmp </ rdf:li > < rdf:li > image / gif </ rdf:li > < rdf:li > image / jpeg </ rdf:li > < rdf:li > image / jpg </ rdf:li > < rdf:li > image / png </ rdf:li > < rdf:li > image / vnd . nok - oplogo - color </ rdf:li > < rdf:li > image / vnd . nok - wallpaper </ rdf:li > < rdf:li > image / vnd . wap . wbmp </ rdf:li > < rdf:li > multipart / mixed </ rdf:li > < rdf:li > text / css </ rdf:li > < rdf:li > text / html </ rdf:li > < rdf:li > text / plain </ rdf:li > < rdf:li > text / vnd . sun . j2me . app - descriptor </ rdf:li > < rdf:li > text / vnd . wap . si </ rdf:li > < rdf:li > text / vnd . wap . sl </ rdf:li > < rdf:li > text / vnd . wap . wml </ rdf:li > < rdf:li > text /x - co - desc </ rdf:li > < rdf:li > text /x - vCalendar </ rdf:li > < rdf:li > text /x - vCard </ rdf:li > F UAProf Profil des Nokia 6230i 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 < rdf:li > video /3 gpp </ rdf:li > < rdf:li > video / mp4 </ rdf:li > </ rdf:Bag > </ prf:CcppAccept > < prf:CcppAccept - Charset > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > </ rdf:Bag > </ prf:CcppAccept - Charset > < prf:CcppAccept - Encoding > < rdf:Bag > < rdf:li > base64 </ rdf:li > </ rdf:Bag > </ prf:CcppAccept - Encoding > < prf:JavaEnabled > Yes </ p r f : J a va E n a b l e d > < prf: Jav aPla tfor m > < rdf:Bag > < rdf:li > CLDC </ rdf:li > < rdf:li > MIDP </ rdf:li > < rdf:li > MIDP /1.0 - compatible </ rdf:li > < rdf:li > Profile / MIDP -2.0 </ rdf:li > < rdf:li > Configuration / CLDC -1.0 </ rdf:li > < rdf:li > Configuration / CLDC -1.1 </ rdf:li > </ rdf:Bag > </ pr f:J avaP latf o r m > < p r f : M e x e C l a ss m a r k s > < rdf:Bag > < rdf:li >1 </ rdf:li > < rdf:li >3 </ rdf:li > </ rdf:Bag > </ p r f : M ex e C l a s s m a r k s > < prf:MexeSpec > 22.057 </ prf:MexeSpec > < p r f : M e x e S e c u r e D o m a i n s > Yes </ p r f : M e x e S e c u r e D o m a i n s > < prf:VideoInputEncoder > < rdf:Bag > < rdf:li >H .263 </ rdf:li > </ rdf:Bag > </ p r f : V i d e o I n p u t E n c o d e r > < prf:Email - URI - Schemes > < rdf:Bag > < rdf:li > pop </ rdf:li > < rdf:li > imap4 </ rdf:li > </ rdf:Bag > </ prf:Email - URI - Schemes > < prf:JavaPackage > < rdf:Bag > < rdf:li > javax . bluetooth </ rdf:li > < rdf:li > WMA 1.1 </ rdf:li > < rdf:li > MMAPI 1.1 </ rdf:li > </ rdf:Bag > </ prf:JavaPackag e > < prf: Jav aPro toco l > < rdf:Bag > < rdf:li > file /1.0 </ rdf:li > </ rdf:Bag > 105 F UAProf Profil des Nokia 6230i 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 106 </ pr f:J avaP roto c o l > </ rdf:Description > </ prf:component > < prf:component > < rdf:Description rdf:ID = " N e t w o r k C h a r a c t e r i s t i c s " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# N e t w o r k C h a r a c t e r i s t i c s " / > < p r f : S u p p o r t e d B l u e t o o t h V e r s i o n > 1.1 </ p r f : S u p p o r t e d B l u e t o o t h V e r s i o n > < prf:SecuritySupport > < rdf:Bag > < rdf:li > SSL </ rdf:li > < rdf:li > TLS </ rdf:li > </ rdf:Bag > </ p r f : S e c u r i t y S u p p o r t > < prf:SupportedBearers > < rdf:Bag > < rdf:li > GPRS </ rdf:li > < rdf:li > SMS </ rdf:li > < rdf:li > CSD </ rdf:li > < rdf:li > USSD </ rdf:li > < rdf:li > EGPRS </ rdf:li > < rdf:li > HSCSD </ rdf:li > < rdf:li > EDGE </ rdf:li > </ rdf:Bag > </ p r f : S u p p o r t e d B e a r e r s > </ rdf:Description > </ prf:component > < prf:component > < rdf:Description rdf:ID = " BrowserUA " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# BrowserUA " / > < prf:BrowserName > Nokia </ p r f : B r ow s e r N a m e > < p r f : B r o w s e r Ve r s i o n > 1.0 </ p r f : B r o w s e r V e r s i o n > < p rf :F r am e sC ap a b l e > No </ p r f : F r a m e s C a p a b l e > < prf:HtmlVersion > 1.0 </ p r f : H t ml V e r s i o n > < p r f : J a v a A p p l e t E n a b l e d > No </ p r f : J a v a A p p l e t E n a b l e d > < p r f : J a v a S c r i p t E n a b l e d > No </ p r f : J a v a S c r i p t E n a b l e d > < p r f : P r e f e r e n c e F o r F r a m e s > No </ p r f : P r e f e r e n c e F o r F r a m e s > < p rf :T a bl e sC ap a b l e > Yes </ p r f : T a b l e s C a p a b l e > < prf: Xht mlVe rsio n > 1.0 </ p r f : X h t m l V e r s i o n > < prf: Xht mlMo dule s > < rdf:Bag > < rdf:li > XHTML1 - struct </ rdf:li > < rdf:li > XHTML1 - blkstruct </ rdf:li > < rdf:li > xhtml - basic10 </ rdf:li > </ rdf:Bag > </ pr f:X html Modu l e s > </ rdf:Description > </ prf:component > < prf:component > < rdf:Description rdf:ID = " W a p C h a r a c t e r i s t i c s " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# W a p C h a r a c t e r i s t i c s " / > < p r f : W a p D e v i ce C l a s s >C </ p r f : W a p D e v i c e C l a s s > < prf:WapVersion > 2.0 </ p rf :Wa pV er si on > < prf:WmlDeckSize > 131072 </ p r f: W m l D e c kS i z e > < prf:WmlScriptLibraries > < rdf:Bag > F UAProf Profil des Nokia 6230i 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 < rdf:li > Lang </ rdf:li > < rdf:li > Float </ rdf:li > < rdf:li > String </ rdf:li > < rdf:li > URL </ rdf:li > < rdf:li > WMLBrowser </ rdf:li > < rdf:li > Dialogs </ rdf:li > </ rdf:Bag > </ p r f : W m l S c r i p t L i b r a r i e s > < prf:WmlScriptVersion > < rdf:Bag > < rdf:li > 1.2.1 </ rdf:li > </ rdf:Bag > </ p r f : W m l S c r i p t V e r s i o n > < prf:WmlVersion > < rdf:Bag > < rdf:li > 1.2.1 </ rdf:li > </ rdf:Bag > </ prf:WmlVersion > < p rf :W t ai L ib ra r i e s > < rdf:Bag > < rdf:li > WTA . Public . makeCall </ rdf:li > < rdf:li > WTA . Public . sendDTMF </ rdf:li > < rdf:li > WTA . Public . addPBEntry </ rdf:li > </ rdf:Bag > </ pr f: W ta iL i br a r i e s > < prf:DrmClass > < rdf:Bag > < rdf:li > ForwardLock </ rdf:li > < rdf:li > C o m b i n e d D e l i v e r y </ rdf:li > < rdf:li > S e p a r a t e D e l i v e r y </ rdf:li > </ rdf:Bag > </ prf:DrmClass > < p r f : D r m C o n s tr a i n t s > < rdf:Bag > < rdf:li > datetime </ rdf:li > < rdf:li > interval </ rdf:li > < rdf:li > count </ rdf:li > </ rdf:Bag > </ p r f : D rm C o n s t r a i n t s > < prf:OmaDownload > Yes </ p r f : O m aD o w n l o a d > </ rdf:Description > </ prf:component > < prf:component > < rdf:Description rdf:ID = " P u s h C h a r a c t e r i s t i c s " > < rdf:type rdf:resource = " http: // www . o p e n m o b i l e a l l i a n c e . org / tech / profiles / UAPROF / ccppschema -20021212# P u s h C h a r a c t e r i s t i c s " / > < prf:Push - Accept > < rdf:Bag > < rdf:li > application / wml + xml </ rdf:li > < rdf:li > text / html </ rdf:li > </ rdf:Bag > </ prf:Push - Accept > < prf:Push - Accept - Charset > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > 107 F UAProf Profil des Nokia 6230i 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 </ rdf:Bag > </ prf:Push - Accept - Charset > < prf:Push - Accept - Encoding > < rdf:Bag > < rdf:li > base64 </ rdf:li > </ rdf:Bag > </ prf:Push - Accept - Encoding > < prf:Push - MsgSize > 1400 </ prf:Push - MsgSize > < prf:Push - MaxPushReq > 30 </ prf:Push - MaxPushReq > </ rdf:Description > </ prf:component > < prf:component > < rdf:Description rdf:ID = " M m s C h a r a c t e r i s t i c s " > < rdf:type rdf:resource = " http: // www . wapforum . org / profiles / MMS / ccppschema -20010111# M m s C h a r a c t e r i s t i c s " / > < m m s : M m s M a x M e s s a g e S i z e > 300000 </ m m s : M m s M a x M e s s a g e S i z e > < m m s : M m s M a x I m a g e R e s o l u t i o n > 1280 x1024 </ m m s : M m s M a x I m a g e R e s o l u t i o n > < m ms :M m sC c pp Ac c e p t > < rdf:Bag > < rdf:li > application / sdp </ rdf:li > < rdf:li > application / smil </ rdf:li > < rdf:li > application / vnd . nok - s40theme </ rdf:li > < rdf:li > application / vnd . nokia . ringing - tone </ rdf:li > < rdf:li > application / vnd . oma . drm . content </ rdf:li > < rdf:li > application / vnd . oma . drm . message </ rdf:li > < rdf:li > audio /3 gpp </ rdf:li > < rdf:li > audio / aac </ rdf:li > < rdf:li > audio / amr </ rdf:li > < rdf:li > audio / amr - wb </ rdf:li > < rdf:li > audio / mid </ rdf:li > < rdf:li > audio / midi </ rdf:li > < rdf:li > audio / mp3 </ rdf:li > < rdf:li > audio / mp4 </ rdf:li > < rdf:li > audio / mpeg </ rdf:li > < rdf:li > audio / rmf </ rdf:li > < rdf:li > audio / sp - midi </ rdf:li > < rdf:li > audio /x - mid </ rdf:li > < rdf:li > audio /x - midi </ rdf:li > < rdf:li > image / bmp </ rdf:li > < rdf:li > image / gif </ rdf:li > < rdf:li > image / jpeg </ rdf:li > < rdf:li > image / jpg </ rdf:li > < rdf:li > image / png </ rdf:li > < rdf:li > image / vnd . nokia . ota - bitmap </ rdf:li > < rdf:li > image / vnd . nokia . wbmp </ rdf:li > < rdf:li > image / vnd . nok - wallpaper </ rdf:li > < rdf:li > image / vnd . nok - oplogo - color </ rdf:li > < rdf:li > image / vnd . wap . wbmp </ rdf:li > < rdf:li > image /x - ota - bitmap </ rdf:li > < rdf:li > text / plain </ rdf:li > < rdf:li > text /x - vCalendar </ rdf:li > < rdf:li > text /x - vCard </ rdf:li > < rdf:li > video /3 gpp </ rdf:li > </ rdf:Bag > </ mm s: M ms Cc p pA c c e p t > < mms:MmsCcppAcceptCharSet > < rdf:Bag > < rdf:li >ISO -8859 -1 </ rdf:li > 108 F UAProf Profil des Nokia 6230i 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 < rdf:li >ISO -10646 - UCS -2 </ rdf:li > < rdf:li >US - ASCII </ rdf:li > < rdf:li >UTF -8 </ rdf:li > </ rdf:Bag > </ m m s : M m s C c p p A c c e p t C h a r S e t > < mms:MmsCcppAcceptEncoding > < rdf:Bag > < rdf:li > base64 </ rdf:li > </ rdf:Bag > </ m m s : M m s C c p p A c c e p t E n c o d i n g > < mms:MmsVersion > < rdf:Bag > < rdf:li > 1.2 </ rdf:li > </ rdf:Bag > </ mms:MmsVersion > </ rdf:Description > </ prf:component > </ rdf:Description > </ rdf:RDF > 109 110 Tabellenverzeichnis 4.1 4.2 Evaluierung der Kontext-Charakteristiken nach [KPRS03] . . . . Evaluierung der Adaptierungs-Charakteristiken nach [KPRS03] . . 51 55 A.1 Statistik Java Dateien . . . . . . . . . . . . . . . . . . . . . . . . A.2 Statistik JSP Dateien . . . . . . . . . . . . . . . . . . . . . . . . . A.3 Statistik XML Dateien . . . . . . . . . . . . . . . . . . . . . . . . 90 90 90 B.1 Kapitel und Autoren . . . . . . . . . . . . . . . . . . . . . . . . . 93 E.1 Einige für die Erkennung der Geräteeigenschaften von Mobilen Endgeräten interessante MIME-Typen . . . . . . . . . . . . . . . 101 111 Listings 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 B.1 F.1 Request Header Pocket Internet Explorer . . . . . . . . . . . . . . 25 Request Beispiel eines CC/PP Profils . . . . . . . . . . . . . . . . 26 Request Beispiel eines CC/PP Profils . . . . . . . . . . . . . . . . 27 CSS Stil mit Styledefinitionen für die verschiedenen Endgeräte . . 33 Überschriften vs. Sektionen in XHTML 2.0 . . . . . . . . . . . . . 36 XHTML Dokument vor der Transformation . . . . . . . . . . . . 37 XSLT Dokument . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 XHTML Dokument nach der Transformation . . . . . . . . . . . . 38 Mehtode zum Erkennen der vom Benutzer bevorzugten Sprache . 70 Ausschnitt aus der Methode zum Erkennen der Geräteeigenschaften mit Hilfe von DELI . . . . . . . . . . . . . . . . . . . . . . . . 71 Pointcut detectContext . . . . . . . . . . . . . . . . . . . . . . . . 77 Advice detectContext . . . . . . . . . . . . . . . . . . . . . . . . . 77 Pointcut doForward . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Advice doForward . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Pointcut doMainAdaptation . . . . . . . . . . . . . . . . . . . . . 82 Advice doMainAdaptation . . . . . . . . . . . . . . . . . . . . . . 82 Ponitcut doArticleCountTransformation . . . . . . . . . . . . . . 83 Advice doArticleCountTransformation . . . . . . . . . . . . . . . 83 Pointcut doTextTransformation . . . . . . . . . . . . . . . . . . . 83 Advice doTextTransformation . . . . . . . . . . . . . . . . . . . . 83 Pointcut doListSystemCPTransformation . . . . . . . . . . . . . . 84 Advice doListSystemCPTransformation . . . . . . . . . . . . . . . 84 Pointcut doRatingCPTransformation . . . . . . . . . . . . . . . . 84 Advice doRatingCPTransformation . . . . . . . . . . . . . . . . . 85 Ant Build Konfiguration . . . . . . . . . . . . . . . . . . . . . . . 91 UAProf Profil des Nokia 6230i . . . . . . . . . . . . . . . . . . . . 102 112 Abbildungsverzeichnis 2.1 2.2 2.3 8 11 2.4 2.5 Kategorien von Web-Anwendungen . . . . . . . . . . . . . . . . . Ursprünge der Customization [KPRS03] . . . . . . . . . . . . . . Umfang der Customization anhand der Modellierungsdimensionen von Web-Anwendungen [KaRS00] . . . . . . . . . . . . . . . . . . Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . event/condition/action [FSK+ 02] . . . . . . . . . . . . . . . . . . 3.1 3.2 3.3 3.4 3.5 3.6 Intermediate Adaptation . . Client Side Adaptation . . . Server Side Adaptation . . . Dekomposition mit Hilfe von Dekomposition mit Hilfe von Dekomposition mit Hilfe von 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Frontend Use Case . . . . . . . . Backend Use Case . . . . . . . . . MVC-Modell . . . . . . . . . . . Architektur . . . . . . . . . . . . Datenbank-Schema . . . . . . . . Requestablauf ohne Adaptierung Requestablauf mit Adaptierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kommentaren Überschriften . Regions . . . . 14 15 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 33 34 35 36 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 45 56 57 58 60 60 Eingesetzte Technologien . . . . . . . . . . . . . . . . . . . . . . . Weaving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Screenshot des Forschungsprototypen im Winterdesign . . . . . . Screenshot der für einen PDA adaptierten Anwendung im Sommerdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 Requestablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6 Schema Adaptierungsvorgang der Artikel basierend auf sozialen, natürlichen und logischen Kontext . . . . . . . . . . . . . . . . . . 64 67 68 C.1 Startseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2 5.3 5.4 74 76 79 Abbildungsverzeichnis 113 C.2 Artikelansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Artikelbewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . C.4 Reisekoffer ansehen . . . . . . . . . . . . . . . . . . . . . . . . . . D.1 D.2 D.3 D.4 D.5 Artikelzentrale . . . . . . . . . . . . . Artikelübersicht . . . . . . . . . . . . Artikel bearbeiten/anlegen . . . . . . Contentpart Text bearbeiten/anlegen Kategorien bearbeiten/anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 96 96 . 97 . 98 . 99 . 100 . 100 114 Literaturverzeichnis [AvZe97] Avery, C. und Zeckhauser, R.: Recommender Systems for Evaluating Computer Messages. Communications of the ACM (CACM), 40(3), März 1997. [BaDR06] Baldauf, M., Dustdar, S. und Rosenberg, F.: A Survey on Context-Aware Systems. International Journal of Ad Hoc and Ubiquitous Computing, forthcoming, 2006. [BFK+ 00] Badrinath, B., Fox, A., Kleinrock, L., Popek, G., Reiher, P. und Satyanarayanan, M.: A Conceptual Framework for Network and Client Adaptation. IEEE Mobile Networks and Applications, 5(4):221–231, 2000. [BGGW02] Butler, M., Giannetti, F., Gimson, R. und Wiley, T.: Device Independence and the Web. Spotlight, Seiten 81–86, 2002. [BrMa02] Brusilovsky, P. und Maybury, T.: From adaptive hypermedia to adaptive Web. Communications of the ACM (CACM), 45(5):31–33, Dezember 2002. Special Issue on the Adaptive Web. [Bros06] Brosch, P.: Ubiquitäre Web-Anwendungen - Realisierung von Adaptierung mit Hilfe aspektorientierter Programmierung. Diplomarbeit, Technische Universität Wien, 2006. [ChKo00] Chen, G. und Kotz, D: A Survey of Context-Aware Mobile Computing Research. Technischer Bericht TR2000-381, Dept. of Computer Science, Dartmouth College, November 2000. [CSS] Cascading Style Sheets. http://www.w3.org/Style/CSS/. [Demo06] Demolsky, M.: State of the Art in Java Enterprise Web Application Development. Diplomarbeit, Technische Universität Wien, 2006. [EPS+ 01] Espinoza, F., Persson, P., Sandin, A., Nyström, H., Cacciatore, E. und Bylund, M.: GeoNotes: Social and Navigational Aspects of Literaturverzeichnis 115 Location-Based Information Systems. In: Proceedings of the 3rd International Conference on Ubiquitous Computing, Atlanta, Georgia, USA, Seiten 2–17. Springer Berlin / Heidelberg, 2001. [FiKS97] Fink, J., Kobsa, A. und Schreck, J.: Personalized Hypermedia Information Provision Through Adaptive and Adaptable System Features: User Modelling, Privacy and Security Issues. In: Proceedings of the Fourth International Conference on Intelligence in Services and Networks, Seiten 459–467. Springer Berlin / Heidelberg, 1997. [FSK+ 02] Finkelstein, A., Savigni, A., Kappel, G., Retschitzegger, W., Schwinger, W. und Feichtner, C.: Ubiquitous Web Application Development - A Framework for Understanding. In: Proceedings of the 6th World Multiconference on Systemics, Cybernetics and Informatics (SCI), Orlando, Florida, Seiten 431–438, 2002. [GoWJ84] Good, M. D., Wixon, D. R. und Jones, S. J.: Building a User-Derived Interface. Communications of the ACM (CACM), 27(10), Oktober 1984. [HKRS02] Hitz, M., Kappel, G., Retschitzegger, W. und Schwinger, W.: Ein UML-basiertes Framework zur Modellierung ubiquitärer Web-Anwendungen. 2002. [IBM06] WebSphere Transcoding Publisher. http://www306.ibm.com/software/pervasive/transcoding publisher/, 2006. [KaRe98] Kappel, G. und Retschitzegger, W.: The TriGS Active Object-Oriented Database System - An Overview. SIGMOD Rec., 27(3):36–41, 1998. [KaRS00] Kappel, G., Retschitzegger, W. und Schwinger, W.: Modeling Customizable Web Applications - A Requirement’s Perspective. 2000. [KDJ+ 04] Kerer, C., Dustdar, S., Jazayeri, M., Gomes, D., Szego, A. und Caja, J. A. B.: Presence-aware infrastructure using web services and RFID technologies. In: Proceedings of the 2nd European Workshop on ObjectOrientation and Web Services, Oslo, Norway. Springer LNCS, 2004. Literaturverzeichnis 116 [KPRR04] Kappel, G., Pröll, B., Reich, S. und Retschitzegger, W.: Web Engineering, Band 1. dpunkt.verlag, Heidelberg, 2004. [KPRS03] Kappel, G., Pröll, B., Retschitzegger, W. und Schwinger, W.: Customisation for Ubiquitous Web Applications - A Comparison of Approaches. Int. Journal of Web Engineering and Technology (IJWET), 1:79–111, 2003. [KRK+ 02] Kappel, G., Retschitzegger, W., Kimmerstorfer, E., Pröll, B., Schwinger, W. und Hofer, T.: Towards a Generic Customisation Model for Ubiquitous Web Applications. 2002. [LoTe92] Loeb, S. und Terry, D.: Information Filtering. Communications of the ACM (CACM), 35(12), Dezember 1992. [Msdn06] Identifying Pocket Internet Explorer to a Web Server. http://msdn.microsoft.com/library/default.asp?url=/library/en us/ wcepie/html/ceconIdentifyingPocketInternetExplorerToWebServer.asp, 2006. [Noki04] Nokia: Guidelines For Creating Web Content For Mobile And PC Browsing. 2004. [OMA006] User Agent Profile, Approved Version 2.0. http://member.openmobilealliance.org/ftp/Public documents/BAC/ UAPROF/Permanent documents/OMA-TS-UAProf-V2 020060206-A.zip, 2006. [RDF04] Resource Description Framework (RDF). http://www.w3.org/RDF/, 2004. [RFC2] Hypertext Transfer Protocol – HTTP/1.1. http://www.ietf.org/rfc/rfc2616.txt. [SSK+ 06] Schauerhuber, A., Schwinger, W., Kapsammer, E., Retschitzegger, W., Wimmer, M. und Kappel, G.: A Survey on Aspect-Oriented Modeling. 2006. [STAT05] IKT-EINSATZ IN HAUSHALTEN, Ergebnisse der Europaeischen Erhebung über den Einsatz von Informations - und Literaturverzeichnis 117 Kommunikationstechnologien in Haushalten 2005. http://www.statistik.at/fachbereich forschung/ikt txt.shtml, 2005. [W3C003] Device Independence Principles. http://www.w3.org/TR/di-princ/, September 2003. W3C Note. [W3C004a] Authoring Techniques for Device Independence. http://www.w3.org/TR/2004/NOTE-di-atdi-20040218/, Februar 2004. W3C Note. [W3C004b] Composite Capabilities/Preference Profiles (CC/PP): Structure and Vocabularies 1.0. http://www.w3.org/TR/CCPP-struct-vocab/, Januar 2004. W3C Recommendation. [W3CX99] XSL Transformations. http://www.w3.org/TR/xslt, 1999. [WaSc01] Want, B.N. und Schilit, B.N.: Expanding the Horizons of Location-Aware Computing (Guest Editor’s Introduction). Computer, 34(8):31–33, August 2001. [Weis91] Weiser, M.: The Computer for the 21st Century. Scientific American, Seite 265, 1991. [Weis06] Weissensteiner, A.: Ubiquitäre Web-Anwendungen. Diplomarbeit, Technische Universität Wien, 2006. [wurf06] Wireless Universal Resource File. http://wurfl.sourceforge.net/, 2006. [XPAT99] XML Path Language (XPath). http://www.w3.org/TR/xpath, 1999. [XPTR02] XML Pointer Language (XPointer). http://www.w3.org/TR/xptr/, 2002.