A taxonomy of software product line reengineering

In the context of single software systems, refactoring is commonly accepted to be the process of restructuring an existing body of code in order to improve its internal structure without changing its external behavior. This process is vital to the maintenance and evolution of software systems. Software product line engineering is a paradigm for the construction and customization of large-scale software systems. As systems grow in complexity and size, maintaining a clean structure becomes arguably more important. However, product line literature uses the term "refactoring" for such a wide range of reengineering activities that it has become difficult to see how these activities pertain to maintenance and evolution and how they are related. We improve this situation in the following way: i) We identify the dimensions along which product line reengineering occurs. ii) We derive a taxonomy that distinguishes and relates these reengineering activities. iii) We propose definitions for the three main branches of this taxonomy. iv) We classify a corpus of existing work.

[1]  Colin Atkinson,et al.  Component-based product line development: the KobrA Approach , 2000, SPLC.

[2]  Sven Apel,et al.  Language-Independent and Automated Software Composition: The FeatureHouse Experience , 2013, IEEE Transactions on Software Engineering.

[3]  Márcio Ribeiro,et al.  Recommending refactorings when restructuring variabilities in software product lines , 2008, WRT '08.

[4]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE.

[5]  Marsha Chechik,et al.  Managing forked product variants , 2012, SPLC '12.

[6]  Marco Tulio Valente,et al.  Extracting Software Product Lines: A Case Study Using Conditional Compilation , 2011, 2011 15th European Conference on Software Maintenance and Reengineering.

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

[8]  Sandro Schulze,et al.  Refactoring delta-oriented software product lines , 2013, Software Engineering & Management.

[9]  Viviana Bono,et al.  Delta-Oriented Programming of Software Product Lines , 2010, SPLC.

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

[11]  Ilka Philippow,et al.  Feature-Oriented Development of Software Product Lines: Mapping Feature Models to the Architecture , 2004, Net.ObjectDays.

[12]  Thomas Leich,et al.  Pointcuts, advice, refinements, and collaborations: similarities, differences, and synergies , 2007, Innovations in Systems and Software Engineering.

[13]  D. C. Sharp,et al.  Reducing avionics software cost through component based product line development , 1998, 17th DASC. AIAA/IEEE/SAE. Digital Avionics Systems Conference. Proceedings (Cat. No.98CH36267).

[14]  Sven Apel,et al.  Refactoring Feature Modules , 2009, ICSR.

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

[16]  Márcio Ribeiro,et al.  Improving Guidance when Restructuring Variabilities in Software Product Lines , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[17]  Klaus Pohl,et al.  Variability management in software product line engineering , 2006, ICSE.

[18]  Sven Apel,et al.  A Case Study Implementing Features Using AspectJ , 2007, 11th International Software Product Line Conference (SPLC 2007).

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

[20]  Marsha Chechik,et al.  A framework for managing cloned product variants , 2013, 2013 35th International Conference on Software Engineering (ICSE).

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

[22]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[23]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[24]  Thomas Leich,et al.  On the duality of aspect-oriented and feature-oriented design patterns , 2007, ACP4IS.

[25]  Christian Berger,et al.  Measuring the Ability to Form a Product Line from Existing Products , 2014, VaMoS.

[26]  Sven Apel,et al.  Integrating Compositional and Annotative Approaches for Product Line Engineering , 2008 .

[27]  Vander Alves,et al.  Extracting and Evolving Mobile Games Product Lines , 2005, SPLC.

[28]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[29]  Oscar Díaz,et al.  Feature refactoring a multi-representation program into a product line , 2006, GPCE '06.

[30]  Marsha Chechik,et al.  Managing cloned variants: a framework and experience , 2013, SPLC '13.

[31]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[32]  William G. Griswold Program restructuring as an aid to software maintenance , 1992 .

[33]  Weishan Zhang,et al.  XVCL: XML-based variant configuration language , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[34]  Don S. Batory,et al.  Automating Feature-Oriented Refactoring of Legacy Applications , 2007, WRT.

[35]  Charles W. Krueger,et al.  Easing the Transition to Software Mass Customization , 2001, PFE.

[36]  Sven Apel,et al.  Virtual Separation of Concerns - A Second Chance for Preprocessors , 2009, J. Object Technol..

[37]  Sérgio Soares,et al.  FLiP: Managing Software Product Line Extraction and Reaction with Aspects , 2008, 2008 12th International Software Product Line Conference.

[38]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[39]  Martin L. Griss Implementing Product-line features by composing aspects , 2000, SPLC.

[40]  Yinxing Xue Reengineering legacy software products into software product line based on automatic variability analysis , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[41]  Petra Bosch-Sijtsema,et al.  Introducing agile customer‐centered development in a legacy software product line , 2011, Softw. Pract. Exp..

[42]  Miguel A. Laguna,et al.  A systematic mapping study on software product line evolution: From legacy system reengineering to product line refactoring , 2013, Sci. Comput. Program..

[43]  Marco Tulio Valente,et al.  A Semi-Automatic Approach for Extracting Software Product Lines , 2012, IEEE Transactions on Software Engineering.

[44]  Weishan Zhang,et al.  Reengineering a PC-based system into the mobile device product line , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[45]  Sérgio Soares,et al.  Product Line Variability Refactoring Tool , 2007, WRT.

[46]  Alexander Egyed,et al.  From Requirements to Features: An Exploratory Study of Feature-Oriented Refactoring , 2011, 2011 15th International Software Product Line Conference.

[47]  Florian Heidenreich,et al.  Refactoring in Feature-Oriented Programming : Open Issues , 2008 .

[48]  Gunter Saake,et al.  Variant-preserving refactoring in feature-oriented software product lines , 2012, VaMoS.

[49]  Bo Nørregaard Jørgensen,et al.  Remodularizing Java programs for comprehension of features , 2009, FOSD '09.

[50]  Sven Apel,et al.  A model of refactoring physically and virtually separated features , 2009, GPCE '09.

[51]  Frank Maurer,et al.  Extreme Product Line Engineering - Refactoring for Variability: A Test-Driven Approach , 2010, XP.