Analysing Feature Model Changes using FMDiff

Evolving a large scale, highly variable systems is a challenging task. For such a system, evolution operations often require to update consistently both their implementation and its feature model. In this context, the evolution of the feature model closely follows the evolution of the system. The purpose of this work is to show that fine-grained feature changes can be used to guide the evolution of the highly variable system. In this paper, we present an approach to obtain finegrained feature model changes with its supporting tool “FMDiff”. Our approach is tailored for Kconfig-based variability models and proposes a feature change classification detailing changes in features, their attributes and attribute values. We apply our approach to the Linux kernel feature model, extracting feature changes occurring in sixteen official releases. In contrast to previous studies we found that feature modifications are responsible for most of the changes. Then, by taking advantage of the multi-platform aspect of the Linux kernel, we observe the effects of a feature change across the different architecture-specific feature models of the kernel. We found that between 10 and 50% of feature changes impact all the architecture-specific feature models, offering a new perspective on studies of the evolution of the Linux feature model and development practices of its developers.

[1]  Iago Abal,et al.  42 variability bugs in the linux kernel: a qualitative analysis , 2014, ASE.

[2]  Krzysztof Czarnecki,et al.  Coevolution of variability models and related artifacts: a case study from the Linux kernel , 2013, SPLC '13.

[3]  Arie van Deursen,et al.  Extracting feature model changes from the Linux kernel using FMDiff , 2014, VaMoS '14.

[4]  Juha Savolainen,et al.  Coevolution of variability models and code: an industrial case study , 2014, SPLC.

[5]  Stefan Kowalewski,et al.  Towards feature-driven planning of product-line evolution , 2009, FOSD '09.

[6]  Hausi A. Müller,et al.  On designing an experiment to evaluate a reverse engineering tool , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[7]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[8]  Stefan Kowalewski,et al.  EvoFM: feature-driven planning of product-line evolution , 2010, PLEASE '10.

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

[10]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[11]  Thomas Leich,et al.  TypeChef: toward type checking #ifdef variability in C , 2010, FOSD '10.

[12]  Daniel Lohmann,et al.  Understanding linux feature distribution , 2012, MISS '12.

[13]  Mathieu Acher,et al.  Feature Model Differences , 2012, CAiSE.

[14]  Krzysztof Czarnecki,et al.  A dataset of feature additions and feature removals from the Linux kernel , 2014, MSR 2014.

[15]  Daniele Romano,et al.  Analyzing the Evolution of Web Services Using Fine-Grained Changes , 2012, 2012 IEEE 19th International Conference on Web Services.

[16]  Krzysztof Czarnecki,et al.  A Study of Variability Models and Languages in the Systems Software Domain , 2013, IEEE Transactions on Software Engineering.

[17]  Thomas Thüm,et al.  Reasoning about edits to feature models , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[18]  Wolfgang Schröder-Preikschat,et al.  Efficient extraction and analysis of preprocessor-based variability , 2010, GPCE '10.

[19]  Bernhard Rumpe,et al.  A Manifesto for Semantic Model Differencing , 2010, MoDELS.

[20]  Kathi Fisler,et al.  The Margrave Tool for Firewall Analysis , 2010, LISA.

[21]  Mikael Svahnberg,et al.  Variability in Evolving Software Product Lines , 2000 .

[22]  Jianmei Guo,et al.  Consistency maintenance for evolving feature models , 2012, Expert Syst. Appl..

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

[24]  Sven Apel,et al.  Feature-oriented software evolution , 2013, VaMoS.

[25]  Wolfgang Schröder-Preikschat,et al.  The Linux Kernel Configurator as a Feature Modeling Tool , 2008, SPLC.

[26]  Wolfgang Schröder-Preikschat,et al.  Dead or Alive: finding zombie features in the Linux kernel , 2009, FOSD '09.

[27]  Douglas C. Schmidt,et al.  Evolving feature model configurations in software product lines , 2014, J. Syst. Softw..

[28]  Dror G. Feitelson,et al.  The Linux kernel as a case study in software evolution , 2010, J. Syst. Softw..

[29]  Krzysztof Czarnecki,et al.  Reverse engineering feature models , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[30]  Uwe Aßmann,et al.  Co-evolution of models and feature mapping in software product lines , 2012, SPLC '12.

[31]  Thomas Vogel,et al.  A Model-Driven Configuration Management Systems for Advanced IT Service Management , 2009 .

[32]  Wolfgang Schröder-Preikschat,et al.  Feature consistency in compile-time-configurable system software: facing the linux 10,000 feature problem , 2011, EuroSys '11.

[33]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.

[34]  Sergio Segura,et al.  Automated analysis of feature models 20 years later: A literature review , 2010, Inf. Syst..

[35]  Robertas Damasevicius,et al.  Change Impact Analysis of Feature Models , 2012, ICIST.

[36]  Dewayne E. Perry,et al.  Challenges in Evolving a Large Scale Software Product , 1998 .

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

[38]  Wolfgang Schröder-Preikschat,et al.  A robust approach for variability extraction from the Linux build system , 2012, SPLC '12.

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

[40]  Carlos José Pereira de Lucena,et al.  Refactoring product lines , 2006, GPCE '06.

[41]  Harald C. Gall,et al.  Can we predict types of code changes? An empirical analysis , 2012, 2012 9th IEEE Working Conference on Mining Software Repositories (MSR).

[42]  Sven Apel,et al.  An Overview of Feature-Oriented Software Development , 2009, J. Object Technol..

[43]  Krzysztof Czarnecki,et al.  Towards a catalog of variability evolution patterns: the Linux kernel case , 2012, FOSD '12.

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

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