\chapter{UIML - User Interface Markup Language} \label{uiml} \section{Inleiding} UI's of gebruikersinterfaces moeten meer en meer ontwikkeld worden voor verschillende devices zoals een PDA, een computer, een smartphone, \ldots. Dit is goed nieuws voor de gebruiker, want deze krijgt nu een waaier van keuzemogelijkheden. Voor de ontwikkelaar van een UI is dit echter geen lachertje, want er doen zich immers verschillende problemen voor. Hij moet verschillende technologi\"en aanleren. Enkele voorbeelden zijn Wireless Markup Language (WML) die gebruikt wordt voor mobiele telefoons en aanverwante apperaten die gebruik maken van het WAP\footnote{Wireless Application Protocol} protocol, C++ met specifieke structuren voor PalmOS of WindowsCE, enzovoorts. Al deze talen hebben het probleem dat ze evolueren in de tijd. Functienamen veranderen, sommige verdwijnen en nieuwe functies en klassen komen erbij. Ook de toolkits evolueren snel. Het is moeilijk voor de ontwikkelaar om deze veranderingen continue te blijven volgen. Sommige toolkits veranderen zo snel, dat het niet mogelijk is om de code telkens opnieuw aan te passen aan de nieuwere versie. Het is moeilijk voor de ontwikkelaar om de UI consistent te houden over de verschillende technologi\"en en platformen. Stel dat we een applicatie maken die op vijf verschillende platformen moet draaien. Als we \'e\'en aanpassing doen, hoe klein ook, moeten we de code aanpassen voor de vijf verschillende platformen om consistent te blijven. \section{Doel} UIML of \textit{User Interface Markup Language} is een HLUIDL die toelaat om UI's te beschrijven in XML op een abstracte, declaratieve manier. Het kan gezien worden als een meta-taal. Specieke elementen zoals $<$window$>$ of $<$button$>$ zijn niet aanwezig, er wordt gebruik gemaakt van generieke elementen zoals $<$part$>$ en $<$property$>$, zie figuur \ref{uiml_uidl}. Deze worden gebruikt om de interface te beschrijven. Een voorbeeld is gegeven in listing \ref{uiml_example}. In dit voorbeeld wordt een simpele teller beschreven met knoppen om de teller te verhogen, te verlagen en te resetten. Het voordeel van de elementen gebruikt in UIML is dat een UIML document kan gemapt worden op eender welk type van UI, van grafische tot spraak UIs en zelfs op types die nog niet zijn uitgevonden. UIML is dus voorbereid op de toekomst. Meer details over de mapping wordt uitgelegd in sectie \ref{voc}. \begin{figure}[h] \center \includegraphics[scale=2]{images/uiml_uidl.jpg} \caption{Het verschil tussen specifieke en generieke elementen, in dit voorbeeld tussen \texttt{