What I do
"Traditional software development is based on the closed-world assumption that the
boundary between system and environment is known and unchanging. However, this
assumption no longer works within today’s unpredictable open-world settings, which
demand techniques that let software react to changes by self-organizing its structure
and self-adapting its behavior."
Luciano Baresi, Elisabetta Di Nitto, Carlo Ghezzi: Toward Open-World Software: Issue and Challenges. IEEE Computer 39(10): 36-43 (2006)
Sharing this vision, I mainly work on three main challenges.
First, to increase software resilience, you have to make software variants usable, to change
from one variant to another, and particularly, to tolerate these changes unexpectedly.
I'm interested in the intricate details of handling dynamic software reconfigurations (e.g., quiescence, component decoupling)
at both the component and architectural levels. I've mostly focused on dynamism in distributed component-based frameworks like
Kevoree and the use of model-driven engineering techniques at runtime also nammed (models@runtime).
As a second challenge, you have to model software variation points and handle variability modeling issues. For this challenge I work on the common variability language initiative and I try ;) to contribute to the Familiar project.
As a third challenge, I work to adapt model-driven engineering to this open-world assumption. Indeed, the closed world assumption is adopted by many modelling framework such as the Ecore defacto standard language since complete control of information about the modeled software systems is a strong requirement. . To work on that, I work within the K3 framework and try to support unespected change and variation point in the language design.