Sites Inria

Version française

SPIRALS Research team

Self-adaptation for distributed services and large software systems

Team presentation

Spirals is conducting research activities in the domains of distributed systems and software sciences. We aim at introducing more automation in the adaptation mechanisms of software systems, in particular, transitioning from adaptive systems to self-adaptive systems. We target especially two properties: self-healing and self-optimization. With self-healing, we aim at studying and tailoring data mining and machine learning solutions to the design and implementation of software system, and more especially for software automatic repair. With self-optimization, we aim at sharing, collecting, and analyzing behaviors in a distributed setting to continuously tailor, optimize, and keep under working conditions software systems, and to go toward the goal of obtaining eternal distributed systems.

Research themes

  • Self-healing: Mining software artifacts to automatically evolve systems. Software systems are under the pressure of changes all along their lifecycle. Agile development blurs the frontier between design and execution and requires constant adaptation. The size of systems (millions of lines of code) multiplies the number of bugs by the same order of magnitude. More and more software systems live in "surviving" mode, in the sense that they are neither rebootable nor upgradable. We think that novel and innovative solutions can be found by using data mining and machine learning techniques tailored for software engineering. This body of research consists of mining some knowledge about a software system by analyzing the source code, the version control systems, the execution traces, documentation and all kinds of software development and execution artifacts in general. This knowledge is then used within recommendation systems for software development, auditing tools, runtime monitors, frameworks for resilient computing.
  • Self-optimization: Sharing runtime behaviors to continuously adapt software. Complex distributed systems have to seamlessly adapt to a wide variety of deployment targets. This is due to the fact that developers cannot anticipate all the runtime conditions under which these systems are immersed. A major challenge for these software systems is to develop their capability to continuously reason about themselves and to take appropriate decisions and actions on the optimizations they can apply to improve themselves. The research contributions we envision within this area will therefore be organized as a reference model for engineering self-optimized distributed systems autonomously driven by adaptive feedback control loops, which will automatically enlarge their scope to cope with the complexity of the decisions to be taken. The research program for this objective will therefore focus on the study of mechanisms for monitoring, taking decisions, and automatically reconfiguring software at runtime and at various scales.