As intelligent devices become affordable and wireless infrastructure becomes pervasive, the potential to combine, or aggregate, device functionality to provide a user with a better experience grows. Currently, the user must have a detailed understanding of the physical properties of the devices, the software services offered, and the dynamic behavior of the environment in order to form an appropriate aggregation. Even a small number of devices can be aggregated in many ways to perform a particular task effectively. This problem is more severe when the user is in an environment with unfamiliar devices, when a large number of devices are available, or when multiple tasks need to be performed simultaneously.
This thesis presents the design and implementation of a system for the user-centric aggregation of device functionality in a dynamic environment. It supports the automated selection of device functionality for aggregation using predefined descriptions of devices and their services. It facilitates the selection of the aggregation that best matches a user's preferences using declarative policies, and it allows a user to express trade-offs between the quality of device attributes, user distraction, and aggregation stability. This approach enables a user to have a richer experience without having to constantly worry about device details and the aggregation of device functionality.