Abstract
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.
Similar content being viewed by others
References
Acher, M., Collet, P., Lahire, P., France, R.: Comparing approaches to implement feature model composition. In: Proceedings of the European Conference on Modeling—Foundations and Applications (ECMFA’10), pp. 3–19 (2010)
Batory, D.S., Sarvela, J.N., Rauschmayer, A.: Scaling step-wise refinement. IEEE Trans. Softw. Eng. 30(6), 355–371 (2004)
Bayer, J., Girard, J.-F., Würthner, M., DeBaud, J.-M., Apel, M.: Transitioning legacy assets to a product line architecture. In: Proceedings of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE’99), pp. 446–463 (1999)
Bellon, S., Koschke, R., Antoniol, G., Krinke, J., Merlo, E.: Comparison and evaluation of clone detection tools. IEEE Trans. Softw. Eng. 33, 577–591 (2007)
Borba, P., Teixeira, L., Gheyi, R.: A theory of software product line refinement. Theor. Comput. Sci. 455, 2–30 (2012)
Brunet, G., Chechik, M., Easterbrook, S., Nejati, S., Niu, N., Sabetzadeh, M.: A manifesto for model merging. In: Proceedings of the Workshop on Global Integrated Model Management (GaMMa) at the International Conference on Software Engineering (ICSE’06), pp. 5–12 (2006)
Chen, K., Rajlich, V.: Case study of feature location using dependence graph. In: Proceedings of the International Workshop on Program Comprehension (IWPC’00), pp. 241–249 (2000)
Chen, K., Zhang, W., Zhao, H., Mei, H.: An approach to constructing feature models based on requirements clustering. In: Proceedings of the IEEE International Requirements Engineering Conference (RE’05), pp. 31–40 (2005)
Classen, A., Heymans, P., Schobbens, P.-Y., Legay, A., Raskin, J.-F.: Model checking lots of systems: efficient verification of temporal properties in software product lines. In: Proceedings of the International Conference on Software Engineering (ICSE’10), pp. 335–344 (2010)
Clements, P.C., Northrop, L.: Software product lines: practices and patterns. Addison-Wesley, New York (2001)
Davril, J.-M., Delfosse, E., Hariri, N., Acher, M., Cleland-Huang, J., Heymans, P.: Feature model extraction from large collections of informal product descriptions. In: Proceeding of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE’13), pp. 290–300 (2013)
Dubinsky, Y., Rubin, J., Berger, T., Duszynski, S., Becker, M., Czarnecki, K.: An exploratory study of cloning in industrial software product lines. In: Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR’13), pp. 25–34 (2013)
Ferber, S., Haag, J., Savolainen, J.: Feature interaction and dependencies: modeling features for reengineering a legacy product line. In: Proceedings of the International Software Product Line Conference (SPLC’02), pp. 235–256 (2002)
Fluri, B., Wuersch, M., Pinzger, M., Gall, H.: Change distilling: tree differencing for fine-grained source code change extraction. IEEE Trans. Softw. Eng. 33(11), 725–743 (2007)
Fowler, M.: Refactoring: improving the design of existing code. Addison-Wesley, New York (1999)
Goldin, L., Berry, D.M.: AbstFinder, a prototype natural language text abstraction finder for use in requirements elicitation. J. Autom. Softw. Eng. 4(4), 375–412 (1997)
Gomaa, H.: Designing software product lines with UML: from use cases to pattern-based software architectures. Addison-Wesley, Redwood city (2004)
Herzig, K., Zeller, A.: Untangling changes (2011) (Manuscript)
Hetrick, W.A., Krueger, C.W., Moore, J.G.: Incremental return on incremental investment: Engenio’s transition to software product line practice. In: Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA’06), Companion Volume, pp. 798–804 (2006)
Horwitz, S.: Identifying the semantic and textual differences between two versions of a program. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’90), pp. 234–245 (1990)
Jackson, D., Ladd, D.A.: Semantic diff: a tool for summarizing the effects of modifications. In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM’94), pp. 243–252 (1994)
Jepsen, H.P., Beuche, D.: Running a software product line: standing still is going backwards. In: Proceedings of the International Software Product Line Conference (SPLC’09), pp. 101–110 (2009)
Jepsen, H.P., Dall, J.G., Beuche, D.: Minimally invasive migration to software product lines. In: Proceedings of the International Software Product Line Conference (SPLC’07), pp. 203–211 (2007)
Jepsen, H.P., Nielsen, F.: A two-part architectural model as basis for frequency converter product families. In: Proceedings of the International Workshop on Software Architectures for Product Families (IW-SAPF’00), pp. 30–38 (2000)
Kang, K.C., Cohen, S.G., Hess, J.A., Novak, W.E., Peterson, A.S.: Feature-oriented domain analysis (FODA) feasibility study. Technical report, Software Engineering Institute, Carnegie Mellon University, CMU/SEI-90TR-21 (1990)
Kang, K.C., Kim, M., Lee, J., Kim, B.: Feature-oriented re-engineering of legacy systems into product line assets. In: Proceedings of the International Software Product Line Conference (SPLC’05), pp. 45–56 (2005)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of aspects. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP’01), pp. 327–353 (2001)
Kim, K., Kim, H., Kim, W.: Building software product line from the legacy systems: experience in the digital audio and video domain. In: Proceedings of the International Software Product Line Conference (SPLC’07), pp. 171–180 (2007)
Kolb, R., Muthig, D., Patzke, T., Yamauchi, K.: Refactoring a legacy component for reuse in a software product line: a case study: practice articles. J. Softw. Maint. Evol. 18(2), 109–132 (2006)
Koschke, R., Frenzel, P., Breu, A.P., Angstmann, K.: Extending the reflexion method for consolidating software variants into product lines. J. Softw. Qual. Control 17(4), 331–366 (2009)
Levenshtein, V.I.: Binary codes capable of correcting deletions, insertions and reversals. Sov. Phys. Doklady 10, 707 (1966)
Liu, J., Batory, D., Lengauer, C.: Feature oriented refactoring of legacy applications. In: Proceedings of the International Conference on Software Engineering (ICSE’06), pp. 112–121 (2006)
MacKenzie, D., Eggert, P., Stallman, R.: Comparing and merging files with GNU diff and patch. Network Theory Ltd. (2003)
Mende, T., Koschke, R., Beckwermert, F.: An evaluation of code similarity identification for the grow-and-prune model. J. Softw. Maint. Evol. 21(2), 143–169 (2009)
Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. 30(2), 126–139 (2004)
Murphy, G.C., Lai, A., Walker, R.J., Robillard, M.P.: Separating features in source code: an exploratory study. In: Proceedings of the International Conference on Software Engineering (ICSE’01), pp. 275–284 (2001)
Nejati, S., Sabetzadeh, M., Chechik, M., Easterbrook, S., Zave, P.: Matching and merging of statecharts specifications. In: Proceedings of the International Conference on Software Engineering (ICSE’07), pp. 54–64 (2007)
Northrop, L.: Software product lines: reuse that makes business sense. In: Proceedings of the Australasian Software Engineering Conference (ASWEC’06) (2006)
Pohl, K., Boeckle, G., van der Linden, F.: Software product line engineering : foundations, principles, and techniques. Springer, Berlin, Heidelberg (2005)
Rastkar, S., Murphy, G.C., Bradley, A.W.J.: Generating natural language summaries for crosscutting source code concerns. In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM’11), pp. 103–112 (2011)
Reason, P., Bradbury, H.: Handbook of action research: participative inquiry and practice. Sage Publications Inc (2001)
Rubin, J., Chechik, M.: A framework for managing cloned product variants. In: Proceedings of the International Conference on Software Engineering (ICSE’13), pp. 1233–1236 (2013)
Rubin, J., Chechik, M.: A survey of feature location techniques. In: Reinhartz-Berger, I., et al. (eds.) Domain engineering: product lines, conceptual models, and languages, pp. 29–58. Springer, Heidelberg (2013)
Rubin, J., Chechik, M.: N-way model merging. In: Proceedings of the European Software Engineering Conference and the ACM Sigsoft Symposium on the Foundations of Software Engineering (ESEC/FSE’13), pp. 301–311 (2013)
Rubin, J., Chechik, M.: Quality of merge-refactorings for product lines. In: Proceedings of the International Conference on Fundamental Approaches to Software Engineering (FASE’13), pp. 83–98 (2013)
Rubin, J., Czarnecki, K., Chechik, M.: Managing cloned variants: a framework and experience. In: Proceedings of the International Software Product Line Conference (SPLC’13), pp. 101–110 (2013)
Rubin, J., Kirshin, A., Botterweck, G., Chechik, M.: Managing forked product variants. In: Proceedings of the International Software Product Line Conference (SPLC’12), pp. 156–160 (2012)
Ryssel, U., Ploennigs, J., Kabitzsch, K.: Extraction of feature models from formal contexts. In: Proceedings of the International Software Product Line Conference (SPLC’11), pp. 4:1–4:8 (2011)
Schmidt, D.C.: Guest editor’s introduction. Model Driven Engineering. IEEE Comput. 39(2), 25–31 (2006)
She, S., Czarnecki, K., Wasowski, A.: Usage scenarios for feature model synthesis. In: Proceedings of the Workshop on Variability for you (VARY) at the ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (MODELS’12), pp. 13–18 (2012)
She, S., Lotufo, R., Berger, T., Wasowski, A., Czarnecki, K.: Reverse engineering feature models. In: Proceedings of the International Conference on Software Engineering (ICSE’11) (2011)
Stephan, M., Cordy, J.R.: A survey of methods and applications of model comparison. Technical report, Queen’s University, Kingson (2011)
Tip, F.: A survey of program slicing techniques. J. Program. Lang. 3(3), 121–189 (1995)
Weiss, D.M., Lai, C.T.R.: Software product line engineering: a family-based software development process. Addison-Wesley, Boston (1999)
Weston, N., Chitchyan, R., Rashid, A.: A framework for constructing semantically composable feature models from natural language requirements. In: Proceedings of the International Software Product Line Conference (SPLC’09), pp. 211–220 (2009)
Zave, P.: FAQ sheet on feature interaction. http://www2.research.att.com/~pamela/faq.html (2004)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Rubin, J., Czarnecki, K. & Chechik, M. Cloned product variants: from ad-hoc to managed software product lines. Int J Softw Tools Technol Transfer 17, 627–646 (2015). https://doi.org/10.1007/s10009-014-0347-9
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-014-0347-9