Skip to main content

To Merge or Not to Merge: Managing Software Product Families

  • Conference paper
  • First Online:
Book cover Grand Timely Topics in Software Engineering (GTTSE 2015)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 10223))

  • 709 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    We mostly focus on producing annotative SPL architectures: these architectures appear to be more intuitive to practitioners as they do not require a paradigm shift in the way software is being developed, especially in the embedded domain, where predecessor directives are commonly used [7, 49].

  2. 2.

    Adapted from http://en.wikipedia.org/wiki/Artifact_(software_development).

  3. 3.

    We do not allow combining elements from the same variant. Hence, a tuple cannot contain elements from the same variant.

  4. 4.

    The similarity degree for a tuple is also referred to as the tuple weight.

  5. 5.

    http://splc.net/fame.html.

References

  1. 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)

    Article  Google Scholar 

  2. Batory, D.S., Sarvela, J.N., Rauschmaye, A.: Scaling step-wise refinement. IEEE Trans. Softw. Eng. 30(6), 355–371 (2004)

    Article  Google Scholar 

  3. 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

    Google Scholar 

  4. 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)

    Article  Google Scholar 

  5. 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)

    Google Scholar 

  6. Borba, P., Teixeira, L., Gheyi, R.: A theory of software product line refinement. Theor. Comput. Sci. 455, 2–30 (2012)

    Article  MathSciNet  MATH  Google Scholar 

  7. 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)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. Clements, P.C., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2001)

    Google Scholar 

  12. 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)

    Google Scholar 

  13. 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

    Chapter  Google Scholar 

  14. 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)

    Google Scholar 

  15. 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)

    Google Scholar 

  16. 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

    Chapter  Google Scholar 

  17. 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)

    Article  Google Scholar 

  18. Gomaa, H.: Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison-Wesley, Boston (2004)

    Google Scholar 

  19. Gulla, B., Karlsson, E.-A., Yeh, D.: Change-oriented version descriptions in EPOS. Softw. Eng. J. 6(6), 378–386 (1991)

    Article  Google Scholar 

  20. 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)

    Google Scholar 

  21. Herzig, K., Zeller, A.: Untangling changes. Manuscript, September 2011

    Google Scholar 

  22. 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)

    Google Scholar 

  23. 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)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. 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)

    Google Scholar 

  26. 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)

    Google Scholar 

  27. 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)

    Google Scholar 

  28. 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

    Chapter  Google Scholar 

  29. 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)

    Article  Google Scholar 

  30. 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)

    Google Scholar 

  31. 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)

    Google Scholar 

  32. Kelter, U., Wehren, J., Niere, J.: A generic difference algorithm for UML models. In: Proceedings of Software Engineering (SE 2005), pp. 105–116 (2005)

    Google Scholar 

  33. 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

    Chapter  Google Scholar 

  34. 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)

    Google Scholar 

  35. 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)

    Article  Google Scholar 

  36. 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)

    Article  Google Scholar 

  37. 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)

    Article  Google Scholar 

  38. 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)

    Google Scholar 

  39. Lano, K., Kolahdouz Rahimi, S.: Slicing techniques for UML models. J. Object Technol. 10(11), 1–49 (2011)

    Google Scholar 

  40. Levenshtein, V.I.: Binary codes capable of correcting deletions, insertions and reversals. Sov. Phys. Dokl. 10(8), 707–710 (1966)

    MathSciNet  MATH  Google Scholar 

  41. 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)

    Google Scholar 

  42. 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)

    Google Scholar 

  43. 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)

    Google Scholar 

  44. MacKenzie, D., Eggert, P., Stallman, R.: Comparing and Merging Files with GNU diff and patch. Network Theory Ltd., Bristol (2003)

    Google Scholar 

  45. 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)

    Google Scholar 

  46. Northrop, L.: Software product lines reuse that makes business sense. In: Proceedings of the Australasian Software Engineering Conference (ASWEC 2006) (2006)

    Google Scholar 

  47. Pohl, K., Boeckle, G., van der Linden, F.J.: Software Product Line Engineering: Foundations, Principles, and Techniques. Springer, New York (2005)

    Book  MATH  Google Scholar 

  48. 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)

    Google Scholar 

  49. 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

    Chapter  Google Scholar 

  50. 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)

    Google Scholar 

  51. 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)

    Google Scholar 

  52. 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)

    Chapter  Google Scholar 

  53. 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)

    Google Scholar 

  54. 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

    Chapter  Google Scholar 

  55. 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)

    Google Scholar 

  56. 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

    Article  Google Scholar 

  57. 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)

    Google Scholar 

  58. 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)

    Google Scholar 

  59. 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)

    Google Scholar 

  60. 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)

    Google Scholar 

  61. Stephan, M., Cordy, J.R.: A survey of methods and applications of model comparison. Technical report, Queen’s University, Canada (2011)

    Google Scholar 

  62. 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

    Chapter  Google Scholar 

  63. 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

    Chapter  Google Scholar 

  64. Tip, F.: A survey of program slicing techniques. J. Program. Lang. 3(3), 121–189 (1995)

    Google Scholar 

  65. Weiss, D.M., Lai, C.T.R.: Software Product Line Engineering: A Family-Based Software Development Process. Addison-Wesley, Reading (1999)

    Google Scholar 

  66. 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)

    Google Scholar 

  67. 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)

    Google Scholar 

  68. 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)

    Google Scholar 

  69. 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)

    Google Scholar 

  70. Zave, P.: FAQ Sheet on Feature Interaction (2004). http://www2.research.att.com/~pamela/faq.html

  71. Zeller, A., Snelting, G.: Unified versioning through feature logic. ACM Trans. Softw. Eng. Methodol. 6(4), 398–441 (1997)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Julia Rubin .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics