Dynamic context bindings - Infrastructural support for context-aware applications

The world is increasingly equipped with high-capacity, interconnected, mobile and embedded computing devices. Context-awareness provides an attractive approach to personalize applications such that they better suit the user’s needs in this rich computing environment. Context-aware applications use context information, offered by context sources, to adapt their behavior to the situation at hand. The exchange of context information requires an association between a context consuming context-aware application and suitable context producing context sources. We call these associations ‘context bindings’. Developing context-aware applications is complex due to some intrinsic characteristics of context sources. Firstly, context sources are distributed. Consequently, creating a context binding requires some form of discovery and selection of context sources. Secondly, context sources are arbitrary available during the life-span of the application. This makes a binding hard to maintain. Finally, context sources offer context information with a fluctuating quality. This makes a binding possibly unsuitable for the application. Currently, developers need to spend considerable effort to develop application code to create and maintain required context bindings, which can deal with these complexities. This thesis provides insights in the generic characteristics of contextaware applications and their development process. We propose an abstraction, called the Context Binding Transparency. This transparency has as goal to mask the complexities of creating and maintaining context bindings for the application developer. In this way, we facilitate the development process of context-aware applications. The responsibility for creating and maintaining context bindings is relieved from the application developer and is shifted to a context binding infrastructure. This enables application developers to focus on the development of primary application logic rather than the logic needed to create and maintain context bindings. The application developer interacts with the context binding infrastructure using context retrieval and publishing services, and a context requirement specification language. This language enables application developers to specify their requirement at a high level of abstraction rather than in programming code. In this thesis, we propose a realization of such a context requirement specification language, coined the Context Binding Description Language (CBDL). This language is developed to be generic for a broad range of context-aware applications. Additionally, we propose a realization of a context binding infrastructure called the Context-Aware Component Infrastructure (CACI). This infrastructure realizes a context binding transparency and is composed of a context binding mechanism and a context discovery interoperability mechanism. The context binding mechanism uses CBDL documents, specified by the application developers, to create and maintain context bindings on behalf of the application. The process of creating a binding consists of discovery of context sources at available context discovery mechanisms, selection of suitable context sources, establishment of a binding of the application to these context sources, and maintenance of this binding. Maintenance of a context binding includes re-binding to other suitable context sources in case of lost or (re-)appearing context sources and fluctuating quality of context. This thesis gives an example of a possible rebinding algorithm. The context discovery interoperability mechanism enables contextaware applications to interoperate transparently with different context discovery mechanisms available in the application environment. The goal of the interoperability mechanism is to hide the heterogeneity and fluctuating availability of context discovery mechanisms for context-aware applications. The context discovery interoperability mechanism is a supporting mechanism for the context binding mechanism. It can also be used independently by context-aware applications that do not leverage from the context binding mechanism. We have created a proof-of-concept prototype of CACI, using the OSGi component framework. The prototype includes implementations of the context binding mechanism and the context discovery interoperability mechanism. Evaluation of the proposed context binding transparency and infrastructure consists of a user survey and a comparison on the development effort and software quality of a Telemedicine case implementation with and without CACI. The survey indicated a general interest of possible users in the features of the context binding transparency. The case implementations indicated a possible improvement in the development process of higher quality context-aware applications when using a context binding infrastructure. This research stresses that the availability of context information and the quality of this information highly influences the development of contextaware applications. By using a middleware infrastructure to support the creation and maintenance of context bindings, the development of higher quality context-aware applications can be simplified.