Search-based runtime software diversification

Keywords: software diversity, search-based software engineering, genetic programming, runtime adaptation

Description

Collaborative adaptive systems integrate heterogeneous devices (ranging from sensors to phones), which collaborate to provide global services such as environmental monitoring or urban transportation control. These large-scale systems operate continuously in dynamic, unpredictable environments. In this context, software components support the collaboration at various levels (communication, data processing, aggregation and storage, information display). Consequently, the software layer of these systems has to adapt to handle the fluctuating environment. Engineering the software components in this layer is thus extremely challenging because they must tightly collaborate but can make little assumption about their execution environment.
Ecological systems share many characteristics with software components in collaborative adaptive systems: these systems are composed of multiple, heterogeneous species, that collaborate through different networks of interactions (prey/predator, mutualistic relations, pollinators, etc.) and the system constantly adapt to cope with changes in its environment. The science of ecology has demonstrated that the capacity of these systems to adapt highly depends on the level of diversity in the system.
Based on these observations, we aim at investigating novel mechanisms for the spontaneous diversification of these components in order to increase their adaptive capacities.
This postdoc will be in the area of software engineering and will aim at devising novel theories and algorithms for the diversification of software components in collaborative adaptive systems. This work will leverage related work in the area of software diversity and dynamic adaptation.

Mission

The postdoc candidate will investigate the use of meta-heuristic search to automatically generate diverse versions of a component. The goal of this search process will be to generate a ‘pool’ of diverse components that can serve to adapt the system when perturbations occur. We will explore genetic programming as the main search technique since it has been designed specifically to search and transform source code.
In a first step of the postdoc, we will explore diversification at design time, generating and storing the diverse components in a repository available for runtime adaptation. The challenges here will be:

  • design search operators to generate valid, yet diversified components
  • design component interfaces that can exhibit the diversified traits

In a second step we will explore the diversification process at runtime, in order to integrate contextual information in the diversification process. The challenges here will be:

  • integrate monitoring capacities with the diversification process
  • optimize the search strategies for efficient runtime exploration

The goal of the postdoc will be to design diversification operators and the complete lifecycle of diverse components, and to provide a software platform that supports the investigation of runtime software diversification in collaborative adaptive systems.

References

E. Schulte, Z. P. Fry, E. Fast, W. Weimer, S. Forrest. “Software Mutational Robustness and Proactive Diversity”, 2012.
S. Sidiroglou-Douskos, S. Misailovic, H. Hoffmann, M. C. Rinard. « Managing performance vs. accuracy trade-offs with loop perforation”: SIGSOFT FSE 2011: 124-134.
M. Orlov and M. Sipper, “Flight of the FINCH through the Java Wilderness”. IEEE Transactions on Evolutionary Computation, vol. 15(2), pp. 166–182 (April 2011).

Working environment

The candidate will work at INRIA in the Triskell team. Triskell’s research is in the area of software engineering, focusing on model-driven engineering and software testing for adaptive systems of systems. The team is actively involved in European, French and industrial projects and is composed of 7 faculty members, 20 PhD students and 4 engineers. It is an international team, very active in different software engineering communities, offering good opportunities to develop academic and industrial networks.
The monthly net salary will be 2100 euros. The position is for 16 months.
Contact: Benoit Baudry (benoit.baudry_at_inria.fr)

Application