Characterizing safe and partially safe evolution scenarios in product lines: An Empirical Study

Evolving software product lines is often error-prone. Previous works have proposed classifying product line evolution into safe or partially safe, depending on the number of products that have their behavior preserved after evolution. Based on these notions, it is possible to derive transformation templates that abstract common evolution scenarios, such as adding an optional feature. However, existing works are focused on evaluating either safe or partially safe templates. Hence, in this work we aim to characterize product line evolution as a whole, measuring to what extent the evolution history is safe compared to partially safe, to better understand how product lines evolve. We measure how often existing templates happen using 2,300 commits from an open-source product line. According to our study, 91.7% of the commits represent partially safe evolution scenarios. Our results also show that 1,800 of these commits can automatically be classified as instances of existing templates. Among these, commits that do not modify other variability-aware models, are the most frequent, accounting for 72.3% out of the total of commits. For the remaining 500 commits, we identify that 24.4% are related to changes in the configuration knowledge, that is, the file responsible for the mapping between features and code.

[1]  Arie van Deursen,et al.  FEVER: An approach to analyze feature-oriented changes and artefact co-evolution in highly configurable systems , 2018, Empirical Software Engineering.

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

[3]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[4]  Paulo Borba,et al.  Partially safe evolution of software product lines , 2016, SPLC.

[5]  Vander Alves,et al.  A product line of theories for reasoning about safe evolution of product lines , 2015, SPLC.

[6]  Udo Kelter,et al.  Reasoning about product-line evolution using complex feature model differences , 2016, Automated Software Engineering.

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

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

[9]  Leticia Montalvillo-Mendizabal,et al.  Requirement-driven evolution in software product lines: A systematic mapping study , 2016, J. Syst. Softw..

[10]  Arie van Deursen,et al.  FEVER: extracting feature-oriented changes from commits , 2016, MSR.

[11]  Paul Grünbacher,et al.  A Case Study on the Evolution of a Component-based Product Line , 2012, 2012 Joint Working IEEE/IFIP Conference on Software Architecture and European Conference on Software Architecture.

[12]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

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

[14]  Klaus Schmid,et al.  Identifying the intensity of variability changes in software product line evolution , 2018, SPLC.

[15]  Uirá Kulesza,et al.  Safe evolution templates for software product lines , 2015, J. Syst. Softw..

[16]  Sven Apel,et al.  Coevolution of variability models and related software artifacts , 2016, Empirical Software Engineering.

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

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

[19]  Paulo Borba,et al.  Safe Evolution of Software Product Lines: Feature Extraction Scenarios , 2016, 2016 X Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS).

[20]  Gunter Saake,et al.  Feature-Oriented Software Product Lines , 2013, Springer Berlin Heidelberg.