The emergence of new types of mobile and embedded computing devices and developments in wireless networking
are broadening the domain of computing from the workplace and home office to other facets of everyday life. This trend is expected to lead to a proliferation of pervasive computing environments, in which inexpensive, interconnected computing devices are ubiquitous and capable of supporting users in a range of tasks. It is widely accepted that the success of pervasive computing technologies will require a radical design shift, and that it is not sufficient to simply extrapolate from existing desktop computing technologies. In particular, pervasive computing demands applications that are capable of operating in highly dynamic environments and of placing fewer demands on user attention. In order to meet these requirements, pervasive computing applications need to be sensitive to the context of use, including the location, time and activities of the user.
Currently, the programming of
context-aware applications represents a complex and error-prone task, while modification to support changing user requirements or a changing set of context information is usually prohibitively difficult. Consequently, context-aware applications are explored largely in laboratory settings, and remain some distance from widespread ac ceptance and use. In order to remedy this situation, there is a need for better understanding of the design process associated with context-aware applications, improved programming models that lead to highly flexible and customisable applications, and infrastructural support for tasks such as gathering and management of context information. This thesis presents a framework that addresses these issues. The framework integrates a set of original conceptual foundations, including context and preference modelling techniques, with a software architecture that implements context and preference management functions and provides programming support in the form of
The thesis makes several important research contributions.
First, it presents a novel characterisation of context information in pervasive computing systems, covering (among other features) temporal aspects and various types and sources of uncertainty.
Second, it proposes two complementary approaches to context modelling. The first modelling approach, CML, provides a graphical notation that supports the exploration and specification of an application's context requirements by the designer. CML represents context information in terms of facts, and has a strong formal basis that enables a straightforward mapping to a context management system built around a relational
database. The second approach, termed the situation abstraction, allows contexts to be described in selective, high-level terms as constraints upon a fact-based CML model. Situations are well suited for use in context querying and as programming abstractions.
Third, the thesis presents a pair of programming models that can be used in conjunction with the situation abstraction. The first model, which enables the triggering of actions in response to context changes, has been widely used previously in the development of adaptive and context-aware software, but is reformulated here to accommodate uncertain context information. The second model, which supports choice amongst alternative actions based on the context and preferences of the user (termed branching), is unique to this thesis, and is developed in conjunction with a novel preference modelling approach that allows users to
easily express and combine context-dependent requirements.
Fourth, the thesis proposes a software architecture for context-aware systems, which combines toolkit support for the two programming models with software components that perform gathering and processing of context information from a variety of sources, and management of both context and preference information.
Finally, the thesis presents a case study that evaluates a partial implementation of the architecture and its underlying conceptual foundations. This involves the development of a context-aware communication platform that supports choice of communication channels for interactions between users based on the contexts and preferences of the participants. The case study validates the architecture, the context and
preference modelling approaches and the branching model, and illustrates the process and issues involved in the design of context-aware software.