Cloned product variants: from ad-hoc to managed software product lines

We focus on the problem of managing a collection of related software product variants realized via cloning. By analyzing three industrial case studies of organizations with cloned product lines, we conclude that an efficient management of clones relies on both refactoring cloned variants into a single-copy product line representation and improving development experience when maintaining existing clones. We propose a framework that consists of seven conceptual operators for cloned product line management and show that these operators are adequate to realize development activities we observed in the analyzed case studies. We discuss options for implementing the operators and benefits of the operator-based view.

[1]  Douglas C. Schmidt,et al.  Guest Editor's Introduction: Model-Driven Engineering , 2006, Computer.

[2]  Harald C. Gall,et al.  Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction , 2007, IEEE Transactions on Software Engineering.

[3]  Linda M. Northrop Software Product Lines: Reuse That Makes Business Sense , 2006, ASWEC.

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

[5]  Stuart J. Ghertner Ph. D. Guest editor's introduction , 2004, Administration and Policy in Mental Health and Mental Health Services Research.

[6]  Danilo Beuche,et al.  Minimally Invasive Migration to Software Product Lines , 2007, 11th International Software Product Line Conference (SPLC 2007).

[7]  Kerstin Mueller,et al.  Software Product Line Engineering Foundations Principles And Techniques , 2016 .

[8]  Martin P. Robillard,et al.  Separating features in source code: an exploratory study , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[9]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[10]  Tanja Hueber,et al.  Designing Software Product Lines With Uml From Use Cases To Pattern Based Software Architectures , 2016 .

[11]  Ruzanna Chitchyan,et al.  A framework for constructing semantically composable feature models from natural language requirements , 2009, SPLC.

[12]  J. Cordy,et al.  A Survey of Methods and Applications of Model Comparison Technical Report 2011-582 Rev . 3 , 2011 .

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

[14]  Susan Horwitz,et al.  Identifying the semantic and textual differences between two versions of a program , 1990, PLDI '90.

[15]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[16]  Kim Herzig Untangling Changes , 2011 .

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

[18]  Flemming Nielsen,et al.  A Two-Part Architectural Model as Basis for Frequency Converter Product Families , 2000, IW-SAPF.

[19]  Juha Savolainen,et al.  Feature Interaction and Dependencies: Modeling Features for Reengineering a Legacy Product Line , 2002, SPLC.

[20]  Jaejoon Lee,et al.  Feature-Oriented Re-engineering of Legacy Systems into Product Line Assets - a Case Study , 2005, SPLC.

[21]  Rainer Koschke,et al.  Extending the reflexion method for consolidating software variants into product lines , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[22]  Mehrdad Sabetzadeh,et al.  Matching and Merging of Statecharts Specifications , 2007, 29th International Conference on Software Engineering (ICSE'07).

[23]  Gail C. Murphy,et al.  Generating natural language summaries for crosscutting source code concerns , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[24]  Jean-Francois Girard,et al.  Transitioning legacy assets to a product line architecture , 1999, ESEC/FSE-7.

[25]  Don Batory,et al.  Scaling step-wise refinement , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[26]  Rainer Koschke,et al.  An evaluation of code similarity identification for the grow-and-prune model , 2009, J. Softw. Maintenance Res. Pract..

[27]  Krzysztof Czarnecki,et al.  An Exploratory Study of Cloning in Industrial Software Product Lines , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

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

[29]  Giuliano Antoniol,et al.  Comparison and Evaluation of Clone Detection Tools , 2007, IEEE Transactions on Software Engineering.

[30]  Mehrdad Sabetzadeh,et al.  A manifesto for model merging , 2006, GaMMa '06.

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

[32]  Marsha Chechik,et al.  A Survey of Feature Location Techniques , 2013, Domain Engineering, Product Lines, Languages, and Conceptual Models.

[33]  Charles W. Krueger,et al.  Incremental return on incremental investment: Engenio's transition to software product line practice , 2006, OOPSLA '06.

[34]  Ian Alexander,et al.  Handbook of Action Research Participative Inquiry and Practice , 2001, Eur. J. Inf. Syst..

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

[36]  Danilo Beuche,et al.  Running a software product line: standing still is going backwards , 2009, SPLC.

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

[38]  Kangtae Kim,et al.  Building Software Product Line from the Legacy Systems "Experience in the Digital Audio and Video Domain" , 2007 .

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

[40]  Marsha Chechik,et al.  N-way model merging , 2013, ESEC/FSE 2013.

[41]  Krzysztof Czarnecki,et al.  Usage scenarios for feature model synthesis , 2012, VARY '12.

[42]  Marsha Chechik,et al.  Quality of Merge-Refactorings for Product Lines , 2013, FASE.

[43]  David M. Weiss,et al.  Software Product-Line Engineering: A Family-Based Software Development Process , 1999 .

[44]  Daniel M. Berry,et al.  AbstFinder, A Prototype Natural Language Text Abstraction Finder for Use in Requirements Elicitation , 1997, Automated Software Engineering.

[45]  Daniel Jackson,et al.  Semantic Diff: a tool for summarizing the effects of modifications , 1994, Proceedings 1994 International Conference on Software Maintenance.

[46]  Mathieu Acher,et al.  Feature model extraction from large collections of informal product descriptions , 2013, ESEC/FSE 2013.

[47]  Hassan Gomaa Designing Software Product Lines with UML 2.0: From Use Cases to Pattern-Based Software Architectures , 2006, ICSR.

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

[49]  Haiyan Zhao,et al.  An approach to constructing feature models based on requirements clustering , 2005, 13th IEEE International Conference on Requirements Engineering (RE'05).

[50]  Dirk Muthig,et al.  Refactoring a legacy component for reuse in a software product line: a case study: Practice Articles , 2006 .

[51]  Mathieu Acher,et al.  Comparing Approaches to Implement Feature Model Composition , 2010, ECMFA.

[52]  Dirk Muthig,et al.  Refactoring a legacy component for reuse in a software product line: a case study , 2006, J. Softw. Maintenance Res. Pract..

[53]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[54]  Vladimir I. Levenshtein,et al.  Binary codes capable of correcting deletions, insertions, and reversals , 1965 .

[55]  Klaus Kabitzsch,et al.  Extraction of feature models from formal contexts , 2011, SPLC '11.

[56]  Pierre-Yves Schobbens,et al.  Model checking lots of systems: efficient verification of temporal properties in software product lines , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[57]  Stuart Kent,et al.  Model Driven Engineering , 2002, IFM.

[58]  Václav Rajlich,et al.  Case study of feature location using dependence graph , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.