Learning Software Configuration Spaces: A Systematic Literature Review

06/07/2019
by   Juliana Alves Pereira, et al.
0

Most modern software systems (operating systems like Linux or Android, Web browsers like Firefox or Chrome, video encoders like ffmpeg, x264 or VLC, mobile and cloud applications, etc.) are highly-configurable. Hundreds of configuration options, features, or plugins can be combined, each potentially with distinct functionality and effects on execution time, security, energy consumption, etc. Due to the combinatorial explosion and the cost of executing software, it is quickly impossible to exhaustively explore the whole configuration space. Hence, numerous works have investigated the idea of learning it from a small sample of configurations' measurements. The pattern "sampling, measuring, learning" has emerged in the literature, with several practical interests for both software developers and end-users of configurable systems. In this survey, we report on the different application objectives (e.g., performance prediction, configuration optimization, constraint mining), use-cases, targeted software systems and application domains. We review the various strategies employed to gather a representative and cost-effective sample. We describe automated software techniques used to measure functional and non-functional properties of configurations. We classify machine learning algorithms and how they relate to the pursued application. Finally, we also describe how researchers evaluate the quality of the learning process. The findings from this systematic review show that the potential application objective is important; there are a vast number of case studies reported in the literature from the basis of several domains and software systems. Yet, the huge variant space of configurable systems is still challenging and calls to further investigate the synergies between artificial intelligence and software engineering.

READ FULL TEXT

page 2

page 10

research
11/28/2019

Predicting Performance of Software Configurations: There is no Silver Bullet

Many software systems offer configuration options to tailor their functi...
research
12/06/2021

Application of Artificial Intelligence and Machine Learning in Libraries: A Systematic Review

As the concept and implementation of cutting-edge technologies like arti...
research
10/25/2022

Specialization of Run-time Configuration Space at Compile-time: An Exploratory Study

Numerous software systems are highly configurable through run-time optio...
research
06/04/2021

VEER: Disagreement-Free Multi-objective Configuration

Software comes with many configuration options, satisfying varying needs...
research
12/16/2022

A Comprehensive Survey of Benchmarks for Automated Improvement of Software's Non-Functional Properties

Performance is a key quality of modern software. Although recent years h...
research
12/14/2021

The Interaction between Inputs and Configurations fed to Software Systems: an Empirical Study

Widely used software systems such as video encoders are by necessity hig...
research
06/02/2021

Controlled Update of Software Components using Concurrent Exection of Patched and Unpatched Versions

Software patching is a common method of removing vulnerabilities in soft...

Please sign up or login with your details

Forgot password? Click here to reset