Towards a catalog of variability evolution patterns: the Linux kernel case

A complete understanding of evolution of variability requires analysis over all project spaces that contain it: source code, build system and the variability model. Aiming at better understanding of how complex variant-rich software evolve, we set to study one, the Linux kernel, in detail. We qualitatively analyze a number of evolution steps in the kernel history and present our findings as a preliminary sample of a catalog of evolution patterns. Our patterns focus on how the variability evolves when features are removed from the variability model, but are kept as part of the software. The identified patterns relate changes to the variability model, the build system, and implementation code. Despite preliminary, they already indicate evolution steps that have not been captured by prior studies, both empirical and theoretical.

[1]  Donald D. Cowan,et al.  S.P.L.O.T.: software product lines online tools , 2009, OOPSLA Companion.

[2]  Shinji Kusumoto,et al.  CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code , 2002, IEEE Trans. Software Eng..

[3]  Sarah Nadi,et al.  Make it or Break it: Mining Anomalies from Linux Kbuild , 2011, 2011 18th Working Conference on Reverse Engineering.

[4]  Paulo Borba,et al.  A theory of software product line refinement , 2010, Theor. Comput. Sci..

[5]  Krzysztof Czarnecki,et al.  Feature-to-Code Mapping in Two Large Product Lines , 2010, SPLC.

[6]  Uirá Kulesza,et al.  Investigating the safe evolution of software product lines , 2011, GPCE '11.

[7]  Lianping Chen,et al.  Variability management in software product lines: a systematic review , 2009, SPLC.

[8]  Krzysztof Czarnecki,et al.  Variability modeling in the real: a perspective from the operating systems domain , 2010, ASE '10.

[9]  Wolfgang Schröder-Preikschat,et al.  Revealing and repairing configuration inconsistencies in large-scale system software , 2012, International Journal on Software Tools for Technology Transfer.

[10]  Krzysztof Czarnecki,et al.  Evolution of the Linux Kernel Variability Model , 2010, SPLC.

[11]  Richard C. Holt,et al.  Mining Kbuild to Detect Variability Anomalies in Linux , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[12]  Paulo Borba,et al.  An Introduction to Software Product Line Refactoring , 2009, GTTSE.

[13]  S. She,et al.  Formal Semantics of the Kconfig Language Technical Note , 2010 .

[14]  Krzysztof Czarnecki,et al.  The Variability Model of The Linux Kernel , 2010, VaMoS.

[15]  Wolfgang Schröder-Preikschat,et al.  Is The Linux Kernel a Software Product Line , 2007 .