Ubiquitous computing provides a tantalizing vision of the future and hard problems that engage researchers from many subdisciplines of computer science. To conduct ubicomp research effectively, there are significant software engineering challenges that in themselves provide direction for that research community. Ubicomp research is inherently empirical and relies on a rapid prototyping development cycle that can react to feedback from user evaluation. Development under these conditions requires technical advances.
Ubicomp applications share several functional features. Specifically, they strive to produce transparent interaction techniques, they adapt their behavior in accordance with changes to the context of their use, and they provide automated services to capture live experiences for later access. Engineering software solutions that provide these functional features requires advances in the design of toolkits used to build ubicomp applications, the structuring of software systems to separate concerns of environmental context and phases of capture, and the adoption of lightweight component integration techniques.