Ubiquitous context-aware computing systems present several challenges in their construction. Principal among them is the tradeoff between easily providing new contextaware services to users and the tight integration of those services, as demanded by the small form factor of the devices typically found in ubiquitous computing environments. Performance issues further complicate the management of this tradeoff. Mechanisms have been proposed and toolkits developed for aiding the construction of context-aware systems, but there has been little consideration of how to specialize, organize, and compose these mechanisms to meet the above requirements. We motivate and describe a software architecture that provides the desired integration and extensibility of services in a context-aware application infrastructure. A key result is the fissioning of intuitive class organizations, both across layers and within layers, to achieve the required integration of services and separation of concerns.
William G. Griswold, Robert T. Boyer, Steven W. Br