DS07 - Société de l'information et de la communication

Varying Variability – VaryVary

Submission summary

Most modern software systems (operating systems like Linux, Web browsers like Firefox or Chrome, video encoders like x264 or ffmpeg, servers, mobile applications, etc.) are subject to variation or come in many variants. Hundreds of configuration options, features, or plugins can be combined, each potentially with distinct functionality and effects on execution time, memory footprint, etc. Among configurations, some of them are chosen and do not compile, crash at runtime, do not pass a test suite, or do not reach a certain performance quality (e.g., energy consumption, security).

In this JCJC project, we follow a thought-provocative and unexplored direction: We consider that the variability boundary of a software system can be specialized and should vary when needs be. The goal of this project is to provide theories, methods and techniques to make vary variability.
Specifically, we consider machine learning and software engineering techniques for narrowing the space of possible configurations to a good approximation of those satisfying the needs of users.
Based on an oracle (e.g., a runtime test) that tells us whether a given configuration meets the requirements (e.g. speed or memory footprint), we leverage machine learning to retrofit the acquired constraints into a variability that can be used to automatically specialize the configurable system. Based on a relative small number of configuration samples, we expect to reach high accuracy for many different kinds of oracles and subject systems.

Our preliminary experiments suggest that varying variability can be practically useful and effective. However, much more work is needed to investigate sampling, testing, and learning techniques within a variety of cases and application scenarios.
We plan to further collect large experimental data and apply our techniques on popular, open-source, configurable software (like Linux, Firefox, ffmpeg, VLC, Apache or JHipster) and generators for media content (like videos, models for 3D printing, or technical papers written in LaTeX).

The scientific coordinator, Mathieu Acher, is the program committee co-chair of SPLC 2017, the major venue for the core research topic of this JCJC project: software product line and variability engineering. Benoit Baudry, Olivier Barais, Arnaud Blouin, Johann Bourcier, and Jean-Marc Jézéquel (members of the DiverSE team) will bring their strong expertise in software testing, dynamic adaptive systems, search-based techniques, and empirical software engineering both topics being present in this ANR JCJC project. We will also collaborate with machine learning experts (more details are given in the proposal).

The variation of variability can impact popular, real-world projects and help both end-users and professional developers to fully exploit variability. In complement to our method, we aim to build an open and collaborative platform for producing and sharing experimental data: scientists will confront and devise solutions for exploiting variability data the contributors collaboratively supply.

Project coordination

Mathieu Acher (Institut de recherche en informatique et systèmes aléatoires)

The author of this summary is the project coordinator, who is responsible for the content of this summary. The ANR declines any responsibility as for its contents.


IRISA Institut de recherche en informatique et systèmes aléatoires

Help of the ANR 332,883 euros
Beginning and duration of the scientific project: - 42 Months

Useful links

Explorez notre base de projets financés



ANR makes available its datasets on funded projects, click here to find more.

Sign up for the latest news:
Subscribe to our newsletter