一句话:探索增量构建软件配置的可行性、性能、正确性及最优构建顺序,并在五个真实系统上评估。
软件项目使用构建系统自动化编译、测试和部署,随着软件可配置性增加,构建多个配置变得昂贵且困难。当前实践是对配置子集进行独立(干净)构建。虽然增量构建已用于软件演化和源代码小改动,但尚未用于软件配置。本文通过五个真实可配置系统,探索增量构建是否可行、是否优于一系列干净构建、相对于干净构建是否正确,以及能否用于寻找最优构建顺序。结果表明,在四个系统中增量构建100%可行,一个系统中78%可行;平均88.5%的配置能更快构建,但仅60%的快速增量构建是正确的。结合正确的增量构建与干净构建,总能找到比纯干净构建更优的顺序,增益最高达11.76%。
Software projects use build systems to automate the compilation, testing, and continuous deployment of their software products. As software becomes increasingly configurable, the build of multiple configurations is a pressing need, but expensive and challenging to implement. The current state of practice is to build independently (a.k.a., clean build) a software for a subset of configurations. While incremental build has been studied for software evolution and relatively small changes of the source code, it has surprisingly not been considered for software configurations. In this exploratory study, we examine the benefits and limits of building software configurations incrementally, rather than always building them cleanly. By using five real-life configurable systems as subjects, we explore whether incremental build works, outperforms a sequence of clean builds, is correct w.r.t. clean build, and can be used to find an optimal ordering for building configurations. Our results show that incremental build is feasible in 100% of the times in four subjects and in 78% of the times in one subject. In average, 88.5% of the configurations could be built faster with incremental build while also finding several alternatives faster incremental builds. However, only 60% of faster incremental builds are correct. Still, when considering those correct incremental builds with clean builds, we could always find an optimal order that is faster than just a collection of clean builds with a gain up to 11.76%.
DOI 原文 ·
@inproceedings{paperbot6814,
title = {On the benefits and limits of incremental build of software configurations},
author = {Georges Aaron Randrianaina and Xhevahire Tërnava and Djamel Eddine Khelladi and Mathieu Acher},
booktitle = {ICSE},
year = {2022},
doi = {10.1145/3510003.3510190}
}