Finding Lost Features in Cloned Systems

Copying and adapting a system, also known as clone-and-own, is a common reuse approach that requires little initial effort. However, the drawbacks of clones are increasing maintenance costs as bug fixes and updates must be propagated. To reduce these costs, migrating cloned legacy systems towards a software product line promises to enable systematic reuse and customization. For both, managing and migrating cloned systems, it remains a challenge to identify and map features in the systems. In this paper, we i) propose a semi-automatic process to identify and map features between legacy systems, ii) suggest a corresponding visualization approach, and iii) assess our process on a case study. The results indicate that our process is suitable to identify features and present commonalities and variability in cloned systems. Our process can be used to enable traceability, prepare refactorings, and extract software product lines.

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

[2]  Zhenchang Xing,et al.  Feature Location in a Collection of Product Variants , 2012, 2012 19th Working Conference on Reverse Engineering.

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

[4]  Charles W. Krueger,et al.  Point - Counterpoint: Being Proactive Pays Off - Eliminating the Adoption , 2002, IEEE Softw..

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

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

[7]  Goetz Botterweck,et al.  Software diversity: state of the art and perspectives , 2012, International Journal on Software Tools for Technology Transfer.

[8]  Alexander Egyed,et al.  Enhancing Clone-and-Own with Systematic Reuse for Developing Software Variants , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[9]  Zhenchang Xing,et al.  Understanding Feature Evolution in a Family of Product Variants , 2010, 2010 17th Working Conference on Reverse Engineering.

[10]  Tewfik Ziadi,et al.  Feature Identification from the Source Code of Product Variants , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

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

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

[13]  KoschkeRainer,et al.  Extending the reflexion method for consolidating software variants into product lines , 2009 .

[14]  Benedikt Hauptmann,et al.  Assessing cross-project clones for reuse optimization , 2013, 2013 7th International Workshop on Software Clones (IWSC).

[15]  Krzysztof Czarnecki,et al.  Cool features and tough decisions: a comparison of variability modeling approaches , 2012, VaMoS.

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

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

[18]  Gunter Saake,et al.  Variant-preserving refactorings for migrating cloned products to a product line , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

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

[20]  Zhenchang Xing,et al.  CloneDifferentiator: Analyzing clones by differentiation , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[21]  Christian Kästner,et al.  Variability Mining: Consistent Semi-automatic Detection of Product-Line Features , 2014, IEEE Transactions on Software Engineering.

[22]  Pierre-Yves Schobbens,et al.  Feature Diagrams: A Survey and a Formal Semantics , 2006, 14th IEEE International Requirements Engineering Conference (RE'06).

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

[24]  Wesley Klewerton Guez Assunção,et al.  Feature location for software product line migration: a mapping study , 2014, SPLC '14.

[25]  Lianping Chen,et al.  A systematic review of evaluation of variability management approaches in software product lines , 2011, Inf. Softw. Technol..

[26]  Krzysztof Czarnecki,et al.  Where Do Configuration Constraints Stem From? An Extraction Approach and an Empirical Study , 2015, IEEE Transactions on Software Engineering.

[27]  Jens Knodel,et al.  Analyzing the Source Code of Multiple Software Variants for Reuse Potential , 2011, 2011 18th Working Conference on Reverse Engineering.

[28]  Elmar Jürgens,et al.  CloneDetective - A workbench for clone detection research , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[29]  Andrzej Wasowski,et al.  Forked and integrated variants in an open-source firmware project , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

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

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

[32]  Sebastian Erdweg,et al.  Abstract Features in Feature Modeling , 2011, 2011 15th International Software Product Line Conference.

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

[34]  Jacob Krüger Lost in Source Code: Physically Separating Features in Legacy Systems , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).

[35]  Thomas Leich,et al.  Extracting software product lines: a cost estimation perspective , 2016, SPLC.

[36]  Martin Verlage,et al.  The Economic Impact of Product Line Adoption and Evolution , 2002, IEEE Softw..

[37]  Ted J. Biggerstaff,et al.  The concept assignment problem in program understanding , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[38]  Slawomir Duszynski Visualizing and Analyzing Software Variability with Bar Diagrams and Occurrence Matrices , 2010, SPLC.

[39]  Elmar Jürgens,et al.  Tool Support for Continuous Quality Control , 2008, IEEE Software.

[40]  Zhenchang Xing,et al.  How developers perform feature location tasks: a human‐centric and process‐oriented exploratory study , 2013, J. Softw. Evol. Process..

[41]  Wolfram Fenske,et al.  Synchronizing software variants with variantsync , 2016, SPLC.

[42]  Michal Antkiewicz,et al.  Maintaining feature traceability with embedded annotations , 2015, SPLC.

[43]  Krzysztof Czarnecki,et al.  A survey of variability modeling in industrial practice , 2013, VaMoS.

[44]  Jacques Klein,et al.  Bottom-up adoption of software product lines: a generic and extensible approach , 2015, SPLC.

[45]  Paul Clements Being proactive pays off , 2002 .

[46]  Chanchal Kumar Roy,et al.  Comparison and evaluation of code clone detection techniques and tools: A qualitative approach , 2009, Sci. Comput. Program..

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

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

[49]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .