Zurück zur Übersicht

Mensch-Maschine-Interaktion I

Übungsblatt 2

Sarah Heldt




"User Interface Markup Language (UIML)"


UIML ist die Abkürzung für "User Interface Markup Language". Dabei handelt es sich um eine auf XML basierende Sprache, mit deren Hilfe Benutzeroberflächen definiert werden können. Die "User Interface Markup Language" verwendet dazu Definitionen von Interface Elementen, wie Schaltflächen und Menüs, Definitionen für deren Platzierung und der auf diesen Elementen möglichen Aktionen.


Markup Sprachen

Bei UIML handelt es sich um eine so genannte Markup Sprache. Das bedeutet, dass UIML eine Auszeichungssprache ist, bei der Text mit Hilfe von Tags spezifiziert wird. Da die "User Interface Markup Language" eine durch XML definierte Sprache ist, ist UIML ebenfalls eine "Descriptive Markup Language", also eine Sprache, bei der die Art der Darstellung beschrieben wird. XML liefert die Grundstruktur für mehrere Sprachen, um diese besser zu verstehen muss man sich zunächst mit XML auseinandersetzen.


XML "Extensible Markup Language"

XML steht für "Extensible Markup Language". Durch XML werden Regel für den Aufbau von Dokumenten spezifiziert und Strukturelemente definiert. Wichtig sind bei XML zwei Konzepte, das der Wohlgeformtheit und das der Gültigkeit. Ein Dokument ist wohlgeformt, wenn es den Regeln für XML entspricht und ein Dokument ist gültig, wenn des den Regeln der der zugehörigen Grammatik, beispielsweise einer "document type definition" (DTD), einhält. Jede Markup Sprache besitze eine Syntax, eine Grammatik und eine Semantik. Damit bildet XML den Standard um andere Sprachen, wie auch UIML, die in der Grundstruktur ähnlich sind, zu definieren.


UIML"User Interface Markup Language"

Mit UIML will Harmonia, Inc. eine Geräte unabhängige Sprache zur Verfügung stellen mit der es möglich ist Benutzerschnittstellen zu beschreiben. Es gibt mittlerweile drei lizenzfreie Versionen von UIML:

  1. UIML v1.0 aus dem Jahr 1998
  2. UIML v2.0 aus dem Jahr 2000
  3. UIML v3.0 aus dem Jahr 2002

Das Vokabular der Metasprache wurde um Terme, für Teile von Benutzerschnittstellen, deren Eigenschaften und die möglichen Aktionen, erweitert. Für die Entwicklung einer Sprache wie UIML sprachen mehrere Gründe. Zum einen wollte man es ermöglichen, Benutzerschnittstellen für Geräte zu schreiben ohne für diese Geräte spezifische Vorkenntnisse zu besitzen. Zum andern wollte man die Entwicklungszeit reduzieren, da die Ergebnisse universell einsetzbar seinen sollten. Im Vordergrund stand jedoch die Trennung der Benutzerschnittstelle von den Funktionen, ähnlich einer Model-View Architektur, um die Benutzerschnittstelle unabhängig von der für die Implementierung verwendeten Sprache zu machen. Den das Hauptziel von UIML ist es eine Repräsentationsmöglichkeit für User Interfaces bereitzustellen, die gemeinsam mit jeder existierenden Sprache eingesetzt werden kann. In diesem Punkt zeigt sich deutlich die Zugehörigkeit zur XML Familie, da auch bei XML die medienneutrale und plattformübergreifende Nutzbarkeit im Vordergrund steht. Bisher wurde für die Beschreibung von Gleichem in jeder Sprache eine andere Syntax eingesetzt: In jeder Programmiersprache gibt es geringe Abweichungen wie man zum Beispiel eine Schaltfläche erstellt. Nun soll die Syntax für homogene Objekte gleich sein. Dieser Dienst einer absoluten Sprache für den Austausch von gleichen Objekten soll die "User Interface Markup Language" durch ein sehr schnelles, weil universell einsetzbares, Benutzerschnittstellendesign bieten. Hierzu gibt es vier Schlüsselkonzepte:

  1. Die Eigenschaften einer Metasprache wie XML mit dem Inhalt und den passenden Regeln in der DTD. UIML besitzt ein spezielles "toolkit" Vokabular um die Spezifikation von Elementen und deren Eigenschaften zu beschreiben.
  2. UIML trennt die UI Elemente von der Programmlogik
  3. Die Benutzerschnittstelle wird als Baum dargestellt. Änderungen bedeuten also Veränderungen in der Baumstruktur.
  4. Die "User Interface Markup Language" Konstrukte sollen als Blaupausen für mehrere Interface Designs benutzt werden können und somit eine hohe Widerverwendbarkeit garantieren.

Zusammenfassend bietet die "User Interface Markup Language" die Chance plattformunabhängige, modulare und für viele Sprachen einsetzbare Benutzerschnittstellen zu generieren.


Eigenschaften von UIML

Eine der wichtigsten Eigenschaften von UIML ist die bereits erwähnte Trennung der Schnittstelle vom Code für die Programmlogik. Da es sich bei UIML um eine "Descriptive Markup Language" handelt, werden die Objekte beschrieben, die auf der Benutzerschnittstelle zu sehen sind. Im Gegensatz dazu beschreibt die jeweilige Sprache für die Programmlogik wie Prozesse ablaufen sollen. Beides ist somit vollkommen unabhängig von einander. Daneben sollen auch Leute UIML nutzen können, die keine Programmierkenntnisse besitzen. Deshalb wurde UIML zum einen sehr allgemein gehalten, kann aber auf der anderen Seite auch spezifische Ausdrücke aus anderen Domains übernehmen, für die dann aber eine XSL Transformation definiert werden muss. UIML garantiert außerdem eine schnelle Erstellung und Anpassung von Benutzerschnittstellen, weil die die Beschreibungen durch UIML kurz sind und die optische Erscheinung einer Oberfläche mit wenig Aufwand geändert werden kann. Zusätzlich arbeitet die "User Interface Markup Language" über ein Netzwerk schneller als beispielsweise Java oder Active-X, da die verschickten Pakete kleiner sind. Ferner bewegt sich UIML auf einem ähnlichen Sicherheitsniveau wie HTML. Als "Descriptive Markup Language" kann UIML keinen ausführbaren Code enthalten. Auf diese Weise ist sichergestellt, dass UIML kaum beblockt wird und damit auch beim Konsumenten angezeigt wird.


UIML Codebeispiel

Eine Benutzerschnittstelle wird in der "User Interface Markup Language" v2.0 durch fünf Teile beschrieben: description, structure, data, style, und events.

	<?xml version="1.0" standalone="no"?>
<uiml version="2.0">
<interface name="XYZ" class="MyApps">
<description>...</description>
<structure>...</structure>
<data>...</data>
<style>...</style>
<events>...</events>
</interface>
<logic>
</logic>
</uiml>
Innerhalb der <description> werden die Elemente der Benutzerschnittstelle aufgezählt. Dabei hat jedes Element einen Namen und eine Klassenzuweisung, die den Objekttyp definiert.
	<description>
<element name="Main" class="Main"/>
<element name="File" class="ActionGroup"/>
<element name="NewAction" class="ActionItem"/>
<element name="CloseAction" class="ActionItem"/>
<element name="QuitAction" class="ActionItem"/>
</description>
In <structure> wird angegeben wie die Elemente angeordnet werden. Elemente wie <element class="Bar"> fügen der Oberfläche keine neuen Funktionen hinzu und brauchen deshalb keinen Namen in <description>.
	<structure>
<element name="Main">
<element class="Bar">
<element name="File">
<element name="NewAction"/>
<element name="CloseAction"/>
<element class="Separator"/>
<element name="QuitAction"/>
</element>
</element>
</element>
</structure>
Der Teil <data> enthält die Daten, die letztendlich im Interface zu sehen sind. In diesem Beispiel also den Menünamen "File", die Menüpunkte "New", "Close" und "Quit" und das Fenster heißt "UIML Example".
	<data>
<content name="Main">UIML Example</content>
<content name="File">File</content>
<content name="NewAction">New</content>
<content name="CloseAction">Close</content>
<content name="QuitAction">Quit</content>
</data>
Im Abschnitt <style> werden in jeder Zeile die Elemente einer Klasse beschrieben.
	<style>
<attribute class="Main" type="rendering" value="java.awt.Frame"/>
<attribute class="Main" type="size" value="100,80"/>
<attribute class="ActionItem" type="rendering" value="java.awt.MenuItem"/>
<attribute class="Separator" type="rendering" value="wrapper.MenuSeparator"/>
<attribute class="ActionGroup" type="rendering" value="java.awt.Menu"/>
<attribute class="Bar" type="rendering" value="java.awt.MenuBar"/>
</style>
Der Bereich <events> beschreibt die Aktionen.
	<events>
<event name="SelectQuit" class="ActionSelect" source="QuitAction" trigger="Select">
<action target="Main" method="exit"/>
</event>
</events>


Schlussfolgerung

In der heutigen Zeit gibt es viele verschieden Applikationen und immer mehr neue Anzeigeformen für diese. Die Konsumenten wechseln beispielsweise zwischen ihrem Desktop PC, ihrem PDA und ihrem Mobiltelefon. Normalerweise müsste für jedes dieser Geräte in der jeweiligen Sprache eine Benutzerschnittstelle geschrieben werden. Doch dank UIML ist es möglich diese Benutzerschnittstelle plattform unabhängig zu beschreiben. Die Hersteller solcher Oberflächen müssen nur noch eine Sprache lernen. Ähnlich wie bei HTML ist ein hohes Niveau an Sicherheit und eine benutzerfreundliche Gestaltung der Sprache gegeben. Für zukünftige Technologien bietet UIML den Vorteil, dass sie einfach auf neue Hardware gemappt werden kann. Abschließen bleibt zu sagen, dass mit UIML eine Geräte unabhängige Sprache zur Verfügung steht mit der es möglich ist Benutzerschnittstellen zu beschreiben.


Quellen: