An Ontology-Based Infrastructure for Usability Design Patterns

Usability patterns represent knowledge about known ways to design graphical user interfaces that are usable and meet the needs and expectations of users. There is currently a plethora of usability patterns published in books, private repositories and the World-Wide Web. The dominance of pattern creation and discovery efforts has neglected the emerging need to organize the patterns so they can become a proactive resource for developing interfaces. This paper presents an approach using Semantic Web concepts that turns informal patterns into formal representation capable of supporting systematic design methods. Through this method, loosely coupled pattern collections can be turned into strongly coupled pattern languages representing software patterns and the context in which usability patterns should be applied. Furthermore, we demonstrate how experience-based mechanisms can be utilized to continuously improve the resulting pattern libraries. 1 Usability Patterns as an Interface Design Resource The development of interactive software systems, i.e. systems with significant user interface components, is currently faced with a dilemma. Design for usability is becoming increasingly important to the success of software systems, but software developers are usually poorly trained in human factors or usability issues. Education and iterative development processes aimed at evaluating and improving the user interfaces are necessary solutions to this problem, but techniques are needed that provide software developers with proactive knowledge and techniques for developing high quality user interfaces. There is no lack of information and guidance on the design, development, and evaluation of user interfaces. Usability guidelines, patterns, principles, books, Web pages depicting good and bad examples, databases and various repositories are examples of both the plethora of knowledge and proliferation of formats that have been used to disseminate usability design knowledge. Design patterns, structured descriptions of a successful solution to a recurring problem, have emerged as an important tool that explicitly represents when and how a pattern should be used [7, 10]. Current approaches to representing patterns are document-based, at best supported with hypertext tools on the Web. These passive representations rely on individual developers to know of the existence of the resources and understand when they should be applied. Given the potentially copious numbers of patterns that can be used in different contexts and the lack of training in usability issues, this is not a satisfactory solution. Computational pattern representations are needed that facilitate retrieval, and support for design processes. In addition, mechanisms are lacking to turn the currently isolated sets of patterns and pattern collections into a pattern language, [3] an interconnected corpus of knowledge that embodies a degree of consensus the design community. Tools and techniques are needed to create a community of practice in the patterns community that continuously evolves and refines the available usability patterns. In this paper, we present a framework in which patterns are represented using Semantic Web technologies [4, 17] for creating ontologies. Ontologies are formal and explicitly defined specifications of concepts whose meaning is shared within a community [31]. We provide a specific example of ontologies and associated rules and inferences that allow intelligent support for applying usability patterns. This is demonstrated through a next-generation BORE (Building an Organizational Repository of Experiences) system, a software process framework tool for generating flexible development methodologies [21]. The BORE framework is extended and used to demonstrate how Semantic Web technologies can be utilized to support distributed ontologies and forms of computational reasoning to support the design of user interfaces. Description logic reasoning and rules are used to actively deliver patterns and other usability knowledge to the developer and find related patterns that fit the defined context of the application. 2 Usability Guidelines and Patterns Usability guidelines have been used to disseminate usability knowledge and ensure a degree of consistency across applications [24, 29, 34]. Usability guidelines provide principles and concepts that lead to good interface design from both general and widget-specific perspectives. While hundreds of usability guidelines have been designed and published, the guideline statements tend to be stated in an abstract, decontextualized, manner. This leads to problems of interpretation, applicability, and ambiguous or contradictory statements [8, 32] that make it difficult for developers to properly apply usability guidelines. A usability patterns community, inspired by the recent work on software patterns, [5] has begun to explore how patterns can be used to provide an intermediate perspective between universally applicable usability guidelines and component-specific style guides [25, 36]. The essential idea of a design pattern is to capture recurring problems along with the context and forces that operate on the problem to yield a general solution. Collections of patterns can be organized in a network of higher-level patterns that are resolved or refined by more detailed patterns, resulting in a pattern language [3]. Differences between usability guidelines and usability patterns lie primarily in perspective and representation of the information. The perspective of usability patterns tends to be more problem-oriented, focusing on describing a problem and solution, than the more general information or advice perspective of guidelines. Although templates and data structures for describing guidelines and patterns can easily be reconciled, the ‘context’ and ‘forces’ fields commonly seen in pattern formats is indicative of a problem-oriented perspective The goals of both these approaches are essentially the same: to document and manage experience about usability design issues in a format that is easily disseminated and understood. But current research has focused on the development of pattern and guideline content, with very little work being performed on tool support for applying the knowledge contained in guidelines and patterns. 2.1 Current Support for Usability Patterns Suppose a project team is developing E-commerce website to serve users who want to purchase a set of products through a Web browser. The product offerings are large and diverse enough that it makes sense to divide the site into multiple Web pages with navigational aids to go between categories. But this leaves the sticky problem of how to collect items that have been chosen in different places in the site, both from a Fig. 1. An Online Usability Patterns Collection (from [van Welie 2005]). usability perspective and an information retention perspective (i.e. keeping track of chosen items across separate Web pages). Some members of the team are aware that proven usability knowledge for these types of interfaces is available and refer to the Interaction Design Patterns website (often referred to as the Amsterdam Patterns Collection) [35] containing over 60 usability patterns (see Fig. 1), including guidelines relevant to the project such as Ecommerce and Web shopping patterns. Many other pattern collections exist, both in Web sites [15, 27, 33] and books, [34] and could also be used by the team instead of or in addition to this pattern collection. Given the discovery of this pattern collection, the team must read, digest and sort out the collection of patterns to find which ones might be applicable to parts of their interface design. This leads to a number of problems when trying to design the system using the pattern collection. First, since the patterns are not represented in a problem-oriented form, it is not immediately clear which set of patterns apply to a particular problem. For example, the shopping cart pattern [35] is a solution to the problem of users purchasing items, but it is not clear which other patterns may also apply to this situation. The developers must read all the patterns and make decisions about the applicability of each pattern to the current project. Second, after a particular pattern has been chosen, there are no indications or formal relationships about which pattern(s) should be used with the chosen pattern. For example, using the Shopping pattern may involve choices for specific interaction types, such as using a persistent button or frame to indicate and store persistent items across Web pages, or the need for specific types of search interactions. The patterns are represented in informal natural language, at best using hyper links, or a “Related patterns” field that link to other patterns in the collection. Otherwise, there is little to no information on how the patterns may work together for solutions to larger problems. In addition, there are no links between pattern collections, making the work for the development even harder, as the relationship between patterns in collections is not specified, or at best specified with a hypertext link that carries no semantics. 2.2 Tools for Finding Guidelines Because usability patterns are such a new discipline, few or no tools have been built to help people find relevant patterns. Within the guidelines community, a number of tools have been developed, such as classification schemes, [28] and various information retrieval and hypertext tools [23]. Efforts have also defined mechanisms for validating guidelines, although few efforts have followed such standards. This is also the case for design patterns [14] where the tool most used are UML models and, but no attempt is made to investigate relationships between patterns and/or composing multiple patterns [2]. The potential utility of using the structured format of patterns, for example using the context field to formally or systematical