Coevolution of variability models and related software artifacts: A fresh look at evolution patterns in the Linux kernel

Leonardo Passos*, Leopoldo Teixeira, Nicolas Dintzner, Sven Apel, Andrzej Wąsowski, Krzysztof Czarnecki, Paulo Borba, Jianmei Guo

*Corresponding author for this work

Research output: Contribution to journalArticleScientificpeer-review

35 Citations (Scopus)


Variant-rich software systems offer a large degree of customization, allowing users to configure the target system according to their preferences and needs. Facing high degrees of variability, these systems often employ variability models to explicitly capture user-configurable features (e.g., systems options) and the constraints they impose. The explicit representation of features allows them to be referenced in different variation points across different artifacts, enabling the latter to vary according to specific feature selections. In such settings, the evolution of variability models interplays with the evolution of related artifacts, requiring the two to evolve together, or coevolve. Interestingly, little is known about how such coevolution occurs in real-world systems, as existing research has focused mostly on variability evolution as it happens in variability models only. Furthermore, existing techniques supporting variability evolution are usually validated with randomly-generated variability models or evolution scenarios that do not stem from practice. As the community lacks a deep understanding of how variability evolution occurs in real-world systems and how it relates to the evolution of different kinds of software artifacts, it is not surprising that industry reports existing tools and solutions ineffective, as they do not handle the complexity found in practice. Attempting to mitigate this overall lack of knowledge and to support tool builders with insights on how variability models coevolve with other artifact types, we study a large and complex real-world variant-rich software system: the Linux kernel. Specifically, we extract variability-coevolution patterns capturing changes in the variability model of the Linux kernel with subsequent changes in Makefiles and C source code. From the analysis of the patterns, we report on findings concerning evolution principles found in the kernel, and we reveal deficiencies in existing tools and theory when handling changes captured by our patterns.

Original languageEnglish
Pages (from-to)1744-1793
Number of pages50
JournalEmpirical Software Engineering
Issue number4
Publication statusPublished - 5 May 2015


  • Evolution
  • Linux
  • Patterns
  • Software product lines
  • Variability


Dive into the research topics of 'Coevolution of variability models and related software artifacts: A fresh look at evolution patterns in the Linux kernel'. Together they form a unique fingerprint.

Cite this