Modern users expect software systems to be highly available, also in mobile settings. This calls for systems capable of adapting to dynamic variation both in user needs and their operating environment. We are studying novel technologies enabling the development of such systems. Our approach is inspired by our background in SPL and relies on the explicit modelling of variability and context dependencies at the architectural level and the representation of such models at runtime. This allows the added complexity of decision-making and dynamic reconfiguration to be delegated to generic middleware.
Through several collaborative projects (MADAM, MUSIC) we have been involved in the development of an open source framework for the development of context aware and adaptive systems based on this approach. The framework is available here, and includes modelling notations and tools, code generation tools, runtime support, and example applications.