Context-aware systems that make use of sensor information to reason about their context have been proposed in many domains. However, it is still hard to design
context-aware applications, due to the absence of suitable domain theories that consider dynamic context and associated user requirements as a precursor of system development. In this paper, we discuss a theory for the
domain and propose a model-driven development process that exploits the proposed theory to build effective, i.e. user-centric, context-aware applications.