ABSTRACT
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.
- Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines. Springer. Google ScholarCross Ref
- Sven Apel and Christian Kästner. 2009. An Overview of Feature-Oriented Software Development. JOT 8, 5 (2009), 49--84. Google ScholarCross Ref
- Wesley K. G. Assunção and Silvia R. Vergilio. 2014. Feature Location for Software Product Line Migration: A Mapping Study. In SPLC. ACM, 52--59. Google ScholarDigital Library
- Veronika Bauer and Benedikt Hauptmann. 2013. Assessing Cross-Project Clones for Reuse Optimization. In IWSC. IEEE, 60--61. Google ScholarCross Ref
- Thorsten Berger, Ralf Rublack, Divya Nair, Joanne M. Atlee, Martin Becker, Krzysztof Czarnecki, and Andrzej Wąsowski. 2013. A Survey of Variability Modeling in Industrial Practice. In VAMOS. ACM, 7:1--7:8. Google ScholarDigital Library
- Ted J. Biggerstaff, Bharat G. Mitbander, and Dallas Webster. 1993. The Concept Assignment Problem in Program Understanding. In ICSE. IEEE, 482--498.Google Scholar
- Lianping Chen and Muhammad Ali Babar. 2011. A Systematic Review of Evaluation of Variability Management Approaches in Software Product Lines. IST 53, 4 (2011), 344--362. Google ScholarDigital Library
- Paul C. Clements and Charles W. Krueger. 2002. Point/Counterpoint: Being Proactive Pays Off/Eliminating the Adoption Barrier. Software 19, 4 (2002), 28--30. Google ScholarDigital Library
- Paul C. Clements and Linda M. Northrop. 2001. Software Product Lines: Practices and Patterns. Addison-Wesley.Google Scholar
- Krzysztof Czarnecki and Ulrich W. Eisenecker. 2000. Generative Programming: Methods, Tools, and Applications. Addison-Wesley.Google Scholar
- Krzysztof Czarnecki, Paul Grünbacher, Rick Rabiser, Klaus Schmid, and Andrzej Wąsowski. 2012. Cool Features and Tough Decisions: A Comparison of Variability Modeling Approaches. In VAMOS. ACM, 173--182. Google ScholarDigital Library
- Florian Deissenboeck, Elmar Juergens, Benjamin Hummel, Stefan Wagner, Benedikt Mas y Parareda, and Markus Pizka. 2008. Tool Support for Continuous Quality Control. Software 25, 5 (2008), 60--67. Google ScholarDigital Library
- Bogdan Dit, Meghan Revelle, Malcom Gethers, and Denys Poshyvanyk. 2013. Feature Location in Source Code: A Taxonomy and Survey. SMR 25, 1 (2013), 53--95. Google ScholarCross Ref
- Yael Dubinsky, Julia Rubin, Thorsten Berger, Slawomir Duszynski, Martin Becker, and Krzysztof Czarnecki. 2013. An Exploratory Study of Cloning in Industrial Software Product Lines. In CSMR. IEEE, 25--34. Google ScholarDigital Library
- Slawomir Duszynski. 2010. Visualizing and Analyzing Software Variability with Bar Diagrams and Occurrence Matrices. In SPLC. Springer, 481--485. Google ScholarCross Ref
- Slawomir Duszynski, Jens Knodel, and Martin Becker. 2011. Analyzing the Source Code of Multiple Software Variants for Reuse Potential. In WCRE. IEEE, 303--307. Google ScholarDigital Library
- Wolfram Fenske, Jens Meinicke, Sandro Schulze, Steffen Schulze, and Gunter Saake. 2017. Variant-Preserving Refactorings for Migrating Cloned Products to a Product Line. In SANER. IEEE, 316--326. Google ScholarCross Ref
- Stefan Fischer, Lukas Linsbauer, Roberto Erick Lopez-Herrejon, and Alexander Egyed. 2014. Enhancing Clone-And-Own with Systematic Reuse for Developing Software Variants. In ICSME. IEEE, 391--400. Google ScholarDigital Library
- Wenbin Ji, Thorsten Berger, Michal Antkiewicz, and Krzysztof Czarnecki. 2015. Maintaining Feature Traceability with Embedded Annotations. In SPLC. ACM. Google ScholarDigital Library
- Elmar Juergens, Florian Deissenboeck, and Benjamin Hummel. 2009. CloneDetective - A Workbench for Clone Detection Research. In ICSE. IEEE, 603--606. Google ScholarDigital Library
- Kyo C. Kang, Sholom G. Cohen, James A. Hess, William E. Novak, and A. Spencer Peterson. 1990. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report. SEI, CMU.Google Scholar
- Christian Kästner, Alexander Dreiling, and Klaus Ostermann. 2014. Variability Mining: Consistent Semi-Automatic Detection of Product-Line Features. TSE 40, 1 (2014), 67--82. Google ScholarDigital Library
- Rainer Koschke, Pierre Frenzel, Andreas P. Breu, and Karsten Angstmann. 2009. Extending the Reflexion Method for Consolidating Software Variants into Product Lines. SQJ 17, 4 (2009), 331--366. Google ScholarDigital Library
- Charles W. Krueger. 2002. Easing the Transition to Software Mass Customization. In PFE. Springer, 282--293. Google ScholarCross Ref
- Jacob Krüger. 2017. Lost in Source Code: Physically Separating Features in Legacy Systems. In ICSE. IEEE, 461--462. Google ScholarDigital Library
- Jacob Krüger, Wolfram Fenske, Jens Meinicke, Thomas Leich, and Gunter Saake. 2016. Extracting Software Product Lines: A Cost Estimation Perspective. In SPLC. ACM, 354--361. Google ScholarDigital Library
- Miguel A. Laguna and Yania Crespo. 2013. A Systematic Mapping Study on Software Product Line Evolution: From Legacy System Reengineering to Product Line Refactoring. SCICO 78, 8 (2013), 1010--1034. Google ScholarDigital Library
- Jabier Martinez, Tewfik Ziadi, Tegawendé F. Bissyandé, Jacques Klein, and Yves Le Traon. 2015. Bottom-Up Adoption of Software Product Lines: A Generic and Extensible Approach. In SPLC. ACM, 101--110. Google ScholarDigital Library
- Sarah Nadi, Thorsten Berger, Christian Kästner, and Krzysztof Czarnecki. 2015. Where do Configuration Constraints Stem From? An Extraction Approach and an Empirical Study. TSE 41, 8 (2015), 820--841. Google ScholarCross Ref
- Tristan Pfofe, Thomas Thüm, Sandro Schulze, Wolfram Fenske, and Ina Schaefer. 2016. Synchronizing Software Variants with Variantsync. In SPLC. ACM, 329--332. Google ScholarDigital Library
- Chanchal K. Roy, James R. Cordy, and Rainer Koschke. 2009. Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qualitative Approach. SCICO 74, 7 (2009), 470--495. Google ScholarDigital Library
- Julia Rubin and Marsha Chechik. 2013. A Framework for Managing Cloned Product Variants. In ICSE. IEEE, 1233--1236. Google ScholarCross Ref
- Julia Rubin and Marsha Chechik. 2013. A Survey of Feature Location Techniques. In Domain Engineering: Product Lines, Languages, and Conceptual Models. Springer, 29--58. Google ScholarCross Ref
- Julia Rubin, Krzysztof Czarnecki, and Marsha Chechik. 2013. Managing Cloned Variants: A Framework and Experience. In SPLC. ACM, 101--110. Google ScholarDigital Library
- Julia Rubin, Andrei Kirshin, Goetz Botterweck, and Marsha Chechik. 2012. Managing Forked Product Variants. In SPLC. ACM, 156--160. Google ScholarDigital Library
- Ina Schaefer, Rick Rabiser, Dave Clarke, Lorenzo Bettini, David Benavides, Goetz Botterweck, Animesh Pathak, Salvador Trujillo, and Karina Villela. 2012. Software Diversity: State of the Art and Perspectives. STTT 14, 5 (2012), 477--495. Google ScholarDigital Library
- Klaus Schmid and Martin Verlage. 2002. The Economic Impact of Product Line Adoption and Evolution. Software 19, 4 (2002), 50--57. Google ScholarDigital Library
- Pierre-Yves Schobbens, Patrick Heymans, and Jean-Christophe Trigaux. 2006. Feature Diagrams: A Survey and a Formal Aemantics. In RE. IEEE, 139--148. Google ScholarDigital Library
- Steven She, Rafael Lotufo, Thorsten Berger, Andrzej Wasowski, and Krzysztof Czarnecki. 2011. Reverse Engineering Feature Models. In ICSE. IEEE, 461--470. Google ScholarDigital Library
- Ştefan Stănciulescu, Sandro Schulze, and Andrzej Wąsowski. 2015. Forked and Integrated Variants in an Open-Source Firmware Project. In ICSME. IEEE, 151--160. Google ScholarDigital Library
- Thomas Thüm, Christian Kästner, Sebastian Erdweg, and Norbert Siegmund. 2011. Abstract Features in Feature Modeling. In SPLC. IEEE, 191--200. Google ScholarDigital Library
- Jinshui Wang, Xin Peng, Zhenchang Xing, and Wenyun Zhao. 2013. How Developers Perform Feature Location Tasks: A Human-Centric and Process-Oriented Exploratory Study. SMR 25, 11 (2013), 1193--1224. Google ScholarCross Ref
- Zhenchang Xing, Yinxing Xue, and Stan Jarzabek. 2011. CloneDifferentiator: Analyzing Clones by Differentiation. In ASE. IEEE, 576--579. Google ScholarDigital Library
- Yinxing Xue. 2011. Reengineering Legacy Software Products into Software Product Line Based on Automatic Variability Analysis. In ICSE. ACM, 1114--1117. Google ScholarDigital Library
- Yinxing Xue. 2013. Reengineering Legacy Software Products Into Software Product Line. Ph.D. Dissertation. University of Singapore.Google Scholar
- Yinxing Xue, Zhenchang Xing, and Stan Jarzabek. 2010. Understanding Feature Evolution in a Family of Product Variants. In WCRE. IEEE, 109--118. Google ScholarDigital Library
- Yinxing Xue, Zhenchang Xing, and Stan Jarzabek. 2012. Feature Location in a Collection of Product Variants. In WCRE. IEEE, 145--154. Google ScholarDigital Library
- Tewfik Ziadi, Luz Frias, Marcos Aurélio Almeida da Silva, and Mikal Ziane. 2012. Feature Identification from the Source Code of Product Variants. In CSMR. IEEE, 417--422. Google ScholarDigital Library
Index Terms
- Finding Lost Features in Cloned Systems
Recommendations
Apo-games: a case study for reverse engineering variability from cloned Java variants
SPLC '18: Proceedings of the 22nd International Systems and Software Product Line Conference - Volume 1Software-product-line engineering is an approach to systematically manage reusable software features and has been widely adopted in practice. Still, in most cases, organizations start with a single product that they clone and modify when new customer ...
Towards automated test refactoring for software product lines
SPLC '18: Proceedings of the 22nd International Systems and Software Product Line Conference - Volume 1In practice, organizations often rely on the clone-and-own approach to reuse and customize existing systems. While increasing maintenance costs encourage some organizations to adopt their development processes towards more systematic reuse, others still ...
When to extract features: towards a recommender system
ICSE '18: Proceedings of the 40th International Conference on Software Engineering: Companion ProceeedingsIn practice, many organizations rely on cloning to implement customer-specific variants of a system. While this approach can have several disadvantages, organizations fear to extract reusable features later on, due to the corresponding efforts and ...
Comments