Abstract
A large number of companies, especially in the automotive, electronics, aerospace and defense domains, develop a portfolio of closely related software products designed to satisfy similar, yet not identical, needs of their customers (a.k.a. a software product line). Even though numerous software product line engineering approaches promise to ease the product line development and maintenance effort, in practice, the adoption of such approaches is still limited. Instead, products are often established ad-hoc, e.g., by copying existing variants and modifying them to fit the requirements of a new customer or market segment.
In this paper, we discuss reasons leading organizations to employ cloning to realize their product lines. We then present two strategies for efficient management of cloned product variants: (1) the unification of the variants into single-copy representations promoted by product line engineering methods and (2) the construction of a management infrastructure on top of existing cloned variants, to mitigate the shortcomings of cloning while leveraging its benefits. We outline existing work that contributes to the implementation of these two strategies and identify opportunities for future research.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
- 2.
- 3.
We do not allow combining elements from the same variant. Hence, a tuple cannot contain elements from the same variant.
- 4.
The similarity degree for a tuple is also referred to as the tuple weight.
- 5.
References
Androutsopoulos, K., Clark, D., Harman, M., Krinke, J., Tratt, L.: State-based model slicing: a survey. ACM Comput. Surv. 45(4), 53:1–53:36 (2013)
Batory, D.S., Sarvela, J.N., Rauschmaye, 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: Nierstrasz, O., Lemoine, M. (eds.) ESEC/SIGSOFT FSE -1999. LNCS, vol. 1687, pp. 446–463. Springer, Heidelberg (1999). doi:10.1007/3-540-48166-4_27
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)
Berger, T., Lettner, D., Rubin, J., Grünbacher, P., Silva, A., Becker, M., Chechik, M., Czarnecki, K.: What is a Feature? A qualitative study of features in industrial software product lines. In: Proceedings of the 19th International Conference on Software Product Line (SPLC 2015), pp. 16–25 (2015)
Borba, P., Teixeira, L., Gheyi, R.: A theory of software product line refinement. Theor. Comput. Sci. 455, 2–30 (2012)
Boucher, Q., Classen, A., Heymans, P., Bourdoux, A., Demonceau, L.: Tag and prune: a pragmatic approach to software product line implementation. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE 2010), pp. 333–336 (2010)
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 2005), pp. 31–40 (2005)
Chen, K., Rajlich, V.: Case study of feature location using dependence graph. In: Proceedings of the International Workshop on Program Comprehension (IWPC 2000), pp. 241–249 (2000)
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 2010), pp. 335–344 (2010)
Clements, P.C., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2001)
Cunningham, W.: The WyCash portfolio management system. In: Addendum to the Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 1992), pp. 29–30 (1992)
Czarnecki, K., Antkiewicz, M.: Mapping Features to models: a template approach based on superimposed variants. In: Glück, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol. 3676, pp. 422–437. Springer, Heidelberg (2005). doi:10.1007/11561347_28
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: Proceedings of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2013), 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 2013), pp. 25–34 (2013)
Ferber, S., Haag, J., Savolainen, J.: Feature interaction and dependencies: modeling features for reengineering a legacy product line. In: Chastek, G.J. (ed.) SPLC 2002. LNCS, vol. 2379, pp. 235–256. Springer, Heidelberg (2002). doi:10.1007/3-540-45652-X_15
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)
Gomaa, H.: Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison-Wesley, Boston (2004)
Gulla, B., Karlsson, E.-A., Yeh, D.: Change-oriented version descriptions in EPOS. Softw. Eng. J. 6(6), 378–386 (1991)
Hattori, L., Lanza, M.: Syde: a tool for collaborative software development. In: Proceedings of the International Conference on Software Engineering (ICSE 2010), Companion Volume, pp. 235–238 (2010)
Herzig, K., Zeller, A.: Untangling changes. Manuscript, September 2011
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 2006), Companion Volume, pp. 798–804 (2006)
Horwitz, S.: Identifying the semantic and textual differences between two versions of a program. In: Proceeding of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 1990), 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 1994), 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 2009), 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 2007), pp. 203–211 (2007)
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 – a Case Study. In: Obbink, H., Pohl, K. (eds.) SPLC 2005. LNCS, vol. 3714, pp. 45–56. Springer, Heidelberg (2005). doi:10.1007/11554844_6
Kang, K.C., Kim, S., Lee, J., Kim, K., Shin, E., Huh, M.: FORM: a feature-oriented reuse method with domain-specific reference architectures. Ann. Softw. Eng. 5, 143–168 (1998)
Kästner, C., Apel, S.: Integrating compositional and annotative approaches for product line engineering. In: Proceedings of the Workshop on Modularization, Composition and Generative Techniques for Product Line Engineering (McGPLE) at the International Conference on Generative Programming: Concepts and Experiences (GPCE 2008), pp. 35–40 (2008)
Kästner, C., Apel, S., Kuhlemann, M.: Granularity in software product lines. In: Proceedings of the International Conference on Software Engineering (ICSE 2008), pp. 311–320 (2008)
Kelter, U., Wehren, J., Niere, J.: A generic difference algorithm for UML models. In: Proceedings of Software Engineering (SE 2005), pp. 105–116 (2005)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001). doi:10.1007/3-540-45337-7_18
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 2007), 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. Res. Pract. 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)
Kruchten, P., Nord, R.L., Ozkaya, I.: Guest Editors’ introduction. Technical debt: from metaphor to theory and practice. IEEE Softw. 29(6), 18–21 (2012)
Lai, X.: FormlSlicer: a model slicing tool for feature-rich state-machine models. Master’s thesis, School of Computer Science, University of Waterloo, Canada (2015)
Lano, K., Kolahdouz Rahimi, S.: Slicing techniques for UML models. J. Object Technol. 10(11), 1–49 (2011)
Levenshtein, V.I.: Binary codes capable of correcting deletions, insertions and reversals. Sov. Phys. Dokl. 10(8), 707–710 (1966)
Li, Y., Rubin, J., Chechik, M.: Semantic slicing of software version histories (T). In: Proceedings of the International Conference on Automated Software Engineering (ASE 2015), pp. 686–696 (2015)
Li, Y., Zhu, C., Rubin, J., Chechik, M.: Precise semantic history slicing through dynamic delta refinement. In: Proceedings of the International Conference on Automated Software Engineering (ASE 2016) (2016)
Linsbauer, L., Lopez-Herrejon, E.R., Egyed, A.: Recovering traceability between features and code in product variants. In: Proceedings of the International Software Product Line Conference (SPLC 2013), pp. 131–140 (2013)
MacKenzie, D., Eggert, P., Stallman, R.: Comparing and Merging Files with GNU diff and patch. Network Theory Ltd., Bristol (2003)
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 2007), pp. 54–64 (2007)
Northrop, L.: Software product lines reuse that makes business sense. In: Proceedings of the Australasian Software Engineering Conference (ASWEC 2006) (2006)
Pohl, K., Boeckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles, and Techniques. Springer, New York (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 2011), pp. 103–112 (2011)
Rubin, J., Chechik, M.: Combining related products into product lines. In: Lara, J., Zisman, A. (eds.) FASE 2012. LNCS, vol. 7212, pp. 285–300. Springer, Heidelberg (2012). doi:10.1007/978-3-642-28872-2_20
Rubin, J., Chechik, M.: Locating distinguishing features using diff sets. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE 2012), pp. 242–245 (2012)
Rubin, J., Chechik, M.: A framework for managing cloned product variants. In: Proceedings of the International Conference on Software Engineering (ICSE 2013), 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 2013), pp. 301–311 (2013)
Rubin, J., Chechik, M.: Quality of merge-refactorings for product lines. In: Cortellessa, V., Varró, D. (eds.) FASE 2013. LNCS, vol. 7793, pp. 83–98. Springer, Heidelberg (2013). doi:10.1007/978-3-642-37057-1_7
Rubin, J., Czarnecki, K., Chechik, M.: Managing cloned variants: a framework and experience. In: Proceedings of the International Software Product Line Conference (SPLC 2013), pp. 101–110 (2013)
Rubin, J., Czarnecki, K., Chechik, M.: Cloned product variants: from ad-hoc to managed software product lines. J. Softw. Tools Technol. Trans. 17(5), 627–646 (2015). http://dl.acm.org/citation.cfm?id=2822233
Rubin, J., Kirshin, A., Botterweck, G., Chechik, M.: Managing forked product variants. In: Proceedings of the International Software Product Line Conference (SPLC 2012), pp. 156–160 (2012)
Ryssel, U., Ploennigs, J., Kabitzsch, K.: Automatic variation-point identification in function-block-based models. In: Proceedings of the International Conference on Generative Programming: Concepts and Experiences (GPCE 2010), pp. 23–32 (2010)
Sarma, A., Noroozi, Z., Van Der Hoek, A.: Palantir: raising awareness among configuration management workspaces. In: Proceedings of the International Conference on Software Engineering (ICSE 2003), pp. 444–454 (2003)
She, S., Lotufo, R., Berger, T., Wasowski, A., Czarnecki, K.: Reverse engineering feature models. In: Proceedings of the International Conference on Software Engineering (ICSE 2011) (2011)
Stephan, M., Cordy, J.R.: A survey of methods and applications of model comparison. Technical report, Queen’s University, Canada (2011)
Strüber, D., Rubin, J., Arendt, T., Chechik, M., Taentzer, G., Plöger, J.: Rulemerger: automatic construction of variability-based model transformation rules. In: Stevens, P., Wąsowski, A. (eds.) FASE 2016. LNCS, vol. 9633, pp. 122–140. Springer, Heidelberg (2016). doi:10.1007/978-3-662-49665-7_8
Struber, D., Rubin, J., Taentzer, G., Chechik, M.: Splitting models using information retrieval and model crawling techniques. In: Gnesi, S., Rensink, A. (eds.) FASE 2014. LNCS, vol. 8411, pp. 47–62. Springer, Heidelberg (2014). doi:10.1007/978-3-642-54804-8_4
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, Reading (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 2009), pp. 211–220 (2009)
Xing, Z., Stroulia, E.: UMLDiff: an algorithm for object-oriented design differencing. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE 2005), pp. 54–65 (2005)
Xue, Y., Xing, Z., Jarzabek, S.: Feature location in a collection of product variants. In: Proceedings of the Working Conference on Reverse Engineering (WCRE 2012), pp. 145–154 (2012)
Yoshimura, K., Narisawa, F., Hashimoto, K., Kikuno, T.: FAVE: Factor analysis based approach for detecting product line variability from change history. In: Proceedings of the Working Conference on Mining Software Repositories (MSR 2008), pp. 11–18 (2008)
Zave, P.: FAQ Sheet on Feature Interaction (2004). http://www2.research.att.com/~pamela/faq.html
Zeller, A., Snelting, G.: Unified versioning through feature logic. ACM Trans. Softw. Eng. Methodol. 6(4), 398–441 (1997)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Rubin, J. (2017). To Merge or Not to Merge: Managing Software Product Families. In: Cunha, J., Fernandes, J., Lämmel, R., Saraiva, J., Zaytsev, V. (eds) Grand Timely Topics in Software Engineering. GTTSE 2015. Lecture Notes in Computer Science(), vol 10223. Springer, Cham. https://doi.org/10.1007/978-3-319-60074-1_4
Download citation
DOI: https://doi.org/10.1007/978-3-319-60074-1_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-60073-4
Online ISBN: 978-3-319-60074-1
eBook Packages: Computer ScienceComputer Science (R0)