A framework for managing cloned product variants

We focus on the problem of managing a collection of related software products realized via cloning. We contribute a framework that explicates operators required for developing and maintaining such products, and demonstrate their usage on two concrete scenarios observed in industrial settings: sharing of features between cloned variants and re-engineering the variants into “single-copy” representations advocated by software product line engineering approaches. We discuss possible implementations of the operators, including synergies with existing work developed in seemingly unrelated contexts, with the goal of helping understand and structure existing work and identify opportunities for future research.

[1]  Marsha Chechik,et al.  Combining Related Products into Product Lines , 2012, FASE.

[2]  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.

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

[4]  Ethan V. Munson,et al.  Software Configuration Management for Product Derivation in Software Product Families , 2008, 15th Annual IEEE International Conference and Workshop on the Engineering of Computer Based Systems (ecbs 2008).

[5]  Rainer Koschke,et al.  An evaluation of code similarity identification for the grow-and-prune model , 2009, CSMR 2009.

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

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

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

[9]  Bogdan Dit,et al.  Feature location in source code: a taxonomy and survey , 2013, J. Softw. Evol. Process..

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

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

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

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

[14]  Kim Herzig Untangling Changes , 2011 .

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

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

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

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

[19]  Jilles van Gurp,et al.  1 Version management tools as a basis for integrating Product Deri- vation and Software Product Families , 2006 .

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

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