Softw Syst Model DOI 10.1007/s10270-016-0550-0 REGULAR PAPER A model-driven development approach for context-aware systems Imen Jaouadi 1,2 · Raoudha Ben Djemaa 2 · Hanêne Ben-Abdallah 3 Received: 29 April 2015 / Revised: 13 June 2016 / Accepted: 15 July 2016 © Springer-Verlag Berlin Heidelberg 2016 Abstract The widespread usage of various types of com- puter devices with different platform characteristics created a need for new methods and tools to support the development of context-aware applications capable of dynamically adapt- ing themselves to context changes. In this paper, we present a new model-based approach that addresses the develop- ment of context-aware applications from both the theoretical and practical perspectives and that supports all develop- ment phases of context-aware systems. On the one hand, we describe how our approach is applied to dynamically capture, observe the change of the context and notify the system at runtime. On the other hand, we show how our approach is used by programmers to develop a context- aware applica- tion. Keywords Context modeling · Application adaptation · Context-aware application development · Model-driven development Communicated by Prof. Heinrich Hussmann. B Imen Jaouadi Jaouadi.Imen@fsegs.rnu.tn Raoudha Ben Djemaa Raoudha.Bendjemaa@isimsf.rnu.tn Hanêne Ben-Abdallah HBenAbdallah@kau.edu.sa 1 MIRACL Laboratory, FSEG, University of Sfax, Sfax, Tunisia 2 ISITCOM, University of Sousse, Sousse, Tunisia 3 King Abdulaziz University, Jeddah, Kingdom of Saudi Arabia 1 Introduction The variety of computer devices and platforms, the circum- stances of software uses, and the skills and preferences of the end users open a vast field of opportunities and chal- lenges in software development. Indeed, today’s software development methods are expected to deliver software that: (1) satisfies the various application domains’ requirements (medical, transportation, air traffic, etc.), (2) self-adapts at runtime to the different needs and profiles of end users (novice, expert, disabled, minor, etc.) and (3) can be deployed on emerging new platforms (PDA, tablet, etc.). These mul- tiple expectations form different contexts of use. In this paper, we define the context of use, or context for brief, as “any information relevant to the interaction of the user with the application, where both the user and the applica- tion’s environment are of particular interest” [7]. This context definition means that, depending on their contexts, users accessing the same data/services through the same devices may receive different outputs; the difference is due to the users’ profiles. Systems that are capable of adapting their interactions based on the context are called context-aware systems [9, 17]. The development of context-aware systems differs from the development of traditional systems, and it still faces several challenges. These latter are inherent to how the context information is gathered, represented and exploited to adapt the system’s interactions. Context information is often captured using sensors from heterogeneous sources that use different representations. Thereby, the context information may require additional semantic and struc- tural interpretation to be significant for the context-aware software. In addition, because the context is dynamic, the software must have a means to monitor the dynamic context elements and detect their changes at runtime. Fur- 123