One of the most important goals of pervasive systems is to help users in their daily life by automating their behaviour patterns. To achieve this, pervasive services must be dynamically coordinated, executed, and adapted to context according to user behaviour patterns. In this work, we propose a model-driven solution to meet this challenge. We propose a task model and a context ontology to design context-adaptive coordination of services at a high level of abstraction. This design facilitates the coordination analysis at design time and is also reused at runtime. We propose a software architecture that interprets the models at runtime in order to coordinate the service execution that is required to support user behaviour patterns. This coordination is done in a contextadaptive way and decoupled from service implementation. This approach makes the models the only representation of service coordination, which facilitates the maintenance and evolution of the executed service coordination after deployment.