1. Introduction
Weiser's vision of pervasive or ubiquitous computing [1] involves devices, sensors and actuators that are inter-networked and embedded in the fabric of everyday life. These collaborate to sense and attend to the tasks users in a space are currently aiming to perform, adapting the behavior of available software services to meet that task while reflecting the context of the situation. More so than other distributed systems, ubiquitous computing systems must dynamically adapt to the needs of the user and to the current operational context. This requires ubiquitous computing systems to exhibit a high level of adaptive behavior in order to respond to a wide range of contexts and stimuli that may be difficult to define a priori in a comprehensive manner. In addition, the context and input stimuli experienced by adaptive software applications and the effectiveness of the adaptive behavior they exhibit are highly dependent on the user's involved and the environmental and social context in which they are attempting the tasks which the adaptive systems aim to support. Experimentation and testing of such adaptive software is therefore problematic due to the number of independent variables associated with such context. Accurate assessment of the perceived human benefits achieved by using such adaptive systems therefore requires that this context is accurately controllable, recordable and replicable. In developing such adaptive systems, human interactions must be recorded and later replicated in synchronization with their interactions with the physical ubiquitous computing environment. This experimental requirement is further complicated by the need to test scenarios that involve multiple users collaborating in a ubiquitous computing environment.