1.1 Introduction
Software systems are complex. This holds in particular for the user interfaces of those software systems, which contribute about 50 % to the overall complexity of a software system (Myers and Rosson ). To deal with that complexity, models as abstractions of user interfaces are helpful.
To create such models, a variety of user interface description languages has been proposed (Guerrero-Garcia et al. ). These languages, most of which are XML-based, allow for describing user interfaces on an abstract level. The goal is, most often, to generate user interface code from them in a model-driven approach.
While most of those UI description languages are useful for their purpose, some use cases require a stronger formalization than that given by a UML diagram or an XML schema. A more formal approach is to use ontologies for describing the categories of things that exist in the domain of user interfaces, and their possible relations. An ontology is a formal, shared conceptualization of a domain (Gruber ), i.e., it captures the categories of things that exist in a domain, and their possible relations, in a formal manner.
Although ontologies have been widely adopted in other software engineering fields, e.g., in the domain of web services (Studer et al. ), a universal ontology of user interfaces is still missing.
This chapter discusses the development of UI Ont ,).
The rest of this chapter is structured as follows. Section .
1.2 Ontologies vs. UI Models
Although ontologies and software models are related, they are not essentially the same. Software models and ontologies are different by nature. An ontology claims to be a generic , commonly agreed upon specification of a conceptualization of a domain (Gruber illustrates those differences.
Fig. 1.1
Ontologies and modeling languages serve different purposes (reprinted from Paulheim and Probst )
Taking this thought to the domain of user interfaces and interactions, models are used to define particular user interfaces (e.g. with the goal of generating code implementing those interfaces), while a formal ontology would capture the nature of things that exist in the domain, e.g., which types of user interfaces exist, and how they are related.
Due to those differences, we argue that developing a formal ontology on user interfaces will not lead to yet another user interface description language, but to a highly formal model with different intentions and usages.
1.3 Use Cases
The literature discusses several use cases for employing ontologies in the field of engineering user interfaces, e.g. the position paper by Rauschmayer (). In the latter, we have identified a number of use cases where an ontological representation of the domain of user interfaces and interactions is required or at least beneficial. Those use cases address improving both the development process as well as the user interface itself.
Automatic Generation of UI Code
The classic use case for user interface models is generating user interface code from an abstract model, typically in an MDA based setting. An example for using ontologies as input models to a code generator is shown by Liu et al. (). The authors argue that employing background knowledge from a richly axiomized ontology can improve the quality of the generated user interfaces, e.g., by identifying useless interaction paths or illegal combinations of interaction components (e.g., foreseeing a mouse-triggered interaction on a device without a mouse). Furthermore, domain ontologies may already be used for other purposes in a software engineering project; they can be reused for creating the description of UI components.
Supporting Repositories of User Interface Components
Reusing existing UI components is desirable to reduce development efforts. With a growing number of components that can potentially be reused, it is not an easy task to find suitable components. Happel et al. () discuss an ontology-based repository for software components (in general, not specifically UI components). Reasoning on those ontologies assists users in finding components which fit their needs, e.g., in terms of license agreements, hardware platforms, or required libraries. For systems to be built from a large number of components, conflicts which are hard to find manually can be detected automatically by a reasoner.
Supporting Repositories of Usability Patterns
Not only code artifacts such as software components may be stored and reused, but also conceptual artifacts such as design and usability patterns. Henninger et al. () introduce an approach using ontologies for classifying and annotating usability patterns. The authors propose the use of ontologies for managing a repository of patterns. By representing those properties using formal ontologies, more sophisticated approaches could also validate those patterns, find inconsistencies and incompatibilities between different patterns, and identifying commonalities between different usability patterns.
Integration of UI Components
Ontologies may not only be used for identifying , but also for integrating user interface components. We have introduced an approach which uses ontologies for annotating user interface components and messages exchanged by those components (Paulheim and Probst .
UI Adaptation
Different users have different expectations and needs towards an applications user interface. Therefore, making user interfaces adaptive is a significant improvement regarding usability. Different approaches have been discussed to employ ontologies for building adaptive user interface have been discussed. The W3Cs WAI ARIA initiative (W3C ), for example, suggests the use of ontologies for annotating web based interfaces. Based on a users profile and semantic annotations of the interface, a reasoner can decide on a optimal realizations for users with impairments, such as color-blindness.
Self-explanatory User Interfaces