Coevolution of variability models and related software artifacts

A fresh look at evolution patterns in the Linux kernel

Journal Article (2015)
Author(s)

Leonardo Passos (University of Waterloo)

Leopoldo Teixeira (Federal University of Pernambuco)

N.J.R. Dintzner (TU Delft - Software Engineering)

Sven Apel (University of Passau)

Andrzej Wasowski (University of Copenhagen)

Krzysztof Czarnecki (University of Waterloo)

Paulo Borba (Federal University of Pernambuco)

Jianmei Guo (University of Waterloo)

Research Group
Software Engineering
DOI related publication
https://doi.org/10.1007/s10664-015-9364-x
More Info
expand_more
Publication Year
2015
Language
English
Research Group
Software Engineering
Issue number
4
Volume number
21
Pages (from-to)
1744-1793

Abstract

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.

No files available

Metadata only record. There are no files for this record.