Advertisement

Software Reuse: From Cloned Variants to Managed Software Product Lines

  • Christoph SeidlEmail author
  • David Wille
  • Ina Schaefer
Chapter

Abstract

Many software systems are available in similar, yet different variants to accommodate specific customer requirements. Even though sophisticated techniques exist to manage this variability, industrial practice mainly is to copy and modify existing products to create variants in an ad hoc manner. This clone-and-own practice loses variability information as no explicit connection between the variants is kept. This causes significant cost in the long term with a large set of variants as each software system has to be maintained individually. Software product line (SPL) engineering remedies this problem by allowing to develop and maintain large sets of software systems as a software family.

In this chapter, we give an overview of variability realization mechanisms in the state of practice in the industry and the state of the art in SPL engineering. Furthermore, we describe a procedure for variability mining to retrieve previously unavailable variability information from a set of cloned variants and to generate an SPL from cloned variants. Finally, we demonstrate our tool suite DeltaEcore to manage the resulting SPL and to extend it with new functionality or different realization artifacts. We illustrate the entire procedure and our tool suite with an example from the automotive industry.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Alves V, Matos P, Cole L, Vasconcelos A, Borba P, Ramalho G (2007) Extracting and evolving code in product lines with aspect-oriented programming. In: Transactions on aspect-oriented software development IV. Springer, Berlin, pp 117–142CrossRefGoogle Scholar
  2. 2.
    Apel S, Kästner C (2009) An overview of feature-oriented software development. J Object Technol 8(5):49–84CrossRefGoogle Scholar
  3. 3.
    B ąk K, Czarnecki K, W ąsowski A (2011) Feature and meta-models in Clafer: mixed, specialized, and coupled. In: Proceedings of the international conference on software language engineering (SLE), SLE ’11. Springer, Berlin, pp 102–122Google Scholar
  4. 4.
    Batory D (2004) Feature-oriented programming and the AHEAD tool suite. In: Proceedings of the international conference on software engineering (ICSE), ICSE ’04. IEEE, Piscataway, pp 702–703CrossRefGoogle Scholar
  5. 5.
    Berger T, Rublack R, Nair D, Atlee JM, Becker M, Czarnecki K, W ąsowski A (2013) A survey of variability modeling in industrial practice. In: Proceedings of the international workshop on variability modeling in software-intensive systems (VaMoS), VaMoS ’13. ACM, New York, pp 7:1–7:8Google Scholar
  6. 6.
    Berger T, Lettner D, Rubin J, Grünbacher P, Silva A, Becker M, Chechik M, Czarnecki K (2015) What is a feature?: a qualitative study of features in industrial software product lines. In: Proceedings of the international software product line conference (SPLC), SPLC ’15. ACM, New York, pp 16–25CrossRefGoogle Scholar
  7. 7.
    Beuche D (2012) Modeling and building software product lines with pure::variants. In: Proceedings of the international software product line conference (SPLC), SPLC ’12. ACM, New York, pp 255–255CrossRefGoogle Scholar
  8. 8.
    Clements PC, Northrop LM (2001) Software product lines: practices and patterns. Addison-Wesley, BostonGoogle Scholar
  9. 9.
    Czarnecki K, Eisenecker UW (2000) Generative programming: methods, tools, and applications. Addison-Wesley, BostonGoogle Scholar
  10. 10.
    Damiani F, Lienhardt M (2016) On type checking delta-oriented product lines. In: Proceedings of the international conference on integrated formal methods (iFM), iFM ’16. Springer, Berlin, pp 47–62CrossRefGoogle Scholar
  11. 11.
    Damiani F, Lienhardt M (2016) Refactoring delta oriented product lines to enforce guidelines for efficient type-checking. In: Proceedings of the international symposium on leveraging applications of formal methods, verification and validation (ISoLA), ISoLA’16. Springer, BerlinCrossRefGoogle Scholar
  12. 12.
    Dubinsky Y, Rubin J, Berger T, Duszynski S, Becker M, Czarnecki K (2013) An exploratory study of cloning in industrial software product lines. In: Proceedings of the European conference on software maintenance and reengineering (CSMR), CSMR ’13. IEEE, Piscataway, pp 25–34CrossRefGoogle Scholar
  13. 13.
    Figueiredo E, Cacho N, Sant’Anna C, Monteiro M, Kulesza U, Garcia A, Soares S, Ferrari F, Khan S, Dantas F (2008) Evolving software product lines with aspects. In: Proceedings of the international conference on software engineering (ICSE), ICSE ’08. IEEE, Piscataway, pp 261–270CrossRefGoogle Scholar
  14. 14.
    Greenfield J, Short K (2003) Software factories: assembling applications with patterns, models, frameworks and tools. In: Proceedings of the international conference on object-oriented programming, systems, languages and applications (OOPSLA), OOPSLA ’03. ACM, New York, pp 16–27Google Scholar
  15. 15.
    Groher I, Voelter M (2009) Aspect-oriented model-driven software product line engineering. In: Transactions on aspect-oriented software development VI. Springer, Berlin, pp 111–152CrossRefGoogle Scholar
  16. 16.
    Haugen Ø, Møller-Pedersen B, Oldevik J, Olsen GK, Svendsen A (2008) Adding standardized variability to domain specific languages. In: Proceedings of the international software product line conference (SPLC), SPLC ’08. IEEE, Piscataway, pp 139–148Google Scholar
  17. 17.
    Heidenreich F, Kopcsek J, Wende C (2008) FeatureMapper: mapping features to models. In: Proceedings of the international conference on software engineering (ICSE), ICSE ’08. ACM, New YorkGoogle Scholar
  18. 18.
    Holthusen S, Wille D, Legat C, Beddig S, Schaefer I, Vogel-Heuser B (2014) Family model mining for function block diagrams in automation software. In: Proceedings of the international workshop on reverse variability engineering (REVE), SPLC ’14. ACM, New York, pp 36–43Google Scholar
  19. 19.
    International Electrotechnical Commission (2009) Programmable logic controllers – part 3: programming languages. IEC61131-3 StandardGoogle Scholar
  20. 20.
    Kang KC, Cohen SG, Hess JA, Novak WE, Peterson AS (1990) Feature-oriented domain analysis (FODA) feasibility study. Tech. Rep. CMU/SEI-90-TR-021, Carnegie-Mellon University Software Engineering InstituteGoogle Scholar
  21. 21.
    Kapser C, Godfrey MW (2006) “Cloning Considered Harmful” considered harmful. In: Proceedings of the working conference on reverse engineering (WCRE), WCRE ’06. IEEE, Piscataway, pp 19–28Google Scholar
  22. 22.
    Kästner C, Apel S, Kuhlemann M (2008) Granularity in software product lines. In: Proceedings of the international conference on software engineering (ICSE), ICSE ’08. ACM, New York, pp 311–320CrossRefGoogle Scholar
  23. 23.
    Kiczales G, Lamping J, Mendhekar A, Maeda C, Lopes C, Loingtier JM, Irwin J (1997) Aspect-oriented programming. ECOOP ’97. Springer, BerlinCrossRefGoogle Scholar
  24. 24.
    Krueger C (2002) Variation management for software production lines. In: Software product lines. Springer, Berlin, pp 37–48CrossRefGoogle Scholar
  25. 25.
    Krueger CW (2008) The Biglever software gears unified software product line engineering framework. In: Proceedings of the international software product line conference (SPLC), SPLC ’08. IEEE, Piscataway, pp 353–353Google Scholar
  26. 26.
    Liebig J, Apel S, Lengauer C, Kästner C, Schulze M (2010) An analysis of the variability in forty preprocessor-based software product lines. In: Proceedings of the international conference on software engineering (ICSE). ACM, New York, pp 105–114Google Scholar
  27. 27.
    Lity S, Lachmann R, Lochau M, Schaefer I (2012) Delta-oriented software product line test models – the body comfort system case study. Tech. Rep. 2012-07, Technische Universität Braunschweig, BraunschweigGoogle Scholar
  28. 28.
    Muthig D, Atkinson C (2002) Model-driven product line architectures. In: Software product lines. Springer, Berlin, pp 110–129CrossRefGoogle Scholar
  29. 29.
    Pohl K, Böckle G, van der Linden FJ (2005) Software product line engineering: foundations, principles and techniques. Springer, BerlinCrossRefGoogle Scholar
  30. 30.
    Rubin J, Chechik M (2013) A survey of feature location techniques. In: Domain engineering: product lines, languages, and conceptual models. Springer, Berlin, pp 29–58CrossRefGoogle Scholar
  31. 31.
    Rumpe B, Weisemöller I (2011) A domain specific transformation language. In: Proceedings of the international workshop on models and evolution (ME), ME ’11Google Scholar
  32. 32.
    Ryssel U, Ploennigs J, Kabitzsch K (2011) Extraction of feature models from formal contexts. In: Proceedings of the international software product line conference (SPLC), SPLC ’11. ACM, New York, pp 4:1–4:8Google Scholar
  33. 33.
    Schaefer I, Bettini L, Bono V, Damiani F, Tanzarella N (2010) Delta-oriented programming of software product lines. In: Software product lines: going beyond. Lecture notes in computer science, vol 6287. Springer, Berlin, pp 77–91CrossRefGoogle Scholar
  34. 34.
    Schaefer I, Rabiser R, Clarke D, Bettini L, Benavides D, Botterweck G, Pathak A, Trujillo S, Villela K (2012) Software diversity: state of the art and perspectives. Int J Softw Tools Technol Transfer 14(5):477–495CrossRefGoogle Scholar
  35. 35.
    Schmidt DC (2006) Model-driven engineering. Computer 39(2):25CrossRefGoogle Scholar
  36. 36.
    Seidl C, Schaefer I, Aßmann U (2014) DeltaEcore – a model-based delta language generation framework. In: Modellierung, Modellierung’14, pp 81–96Google Scholar
  37. 37.
    Seidl C, Schaefer I, Aßmann U (2014) Integrated management of variability in space and time in software families. In: Proceedings of the international software product line conference (SPLC), SPLC ’14. ACM, New YorkGoogle Scholar
  38. 38.
    Sendall S, Kozaczynski W (2003) Model transformation the heart and soul of model-driven software development. Tech. rep., MicrosoftCrossRefGoogle Scholar
  39. 39.
    She S, Lotufo R, Berger T, Wasowski A, Czarnecki K (2011) Reverse engineering feature models. In: Proceedings of the international conference on software engineering (ICSE), ICSE ’11. IEEE, Piscataway, pp 461–470Google Scholar
  40. 40.
    Steinberg D, Budinsky F, Paternostro M, Merks E (2008) Eclipse modeling framework, 2nd edn. Addison-Wesley, BostonGoogle Scholar
  41. 41.
    Szyperski CA (1998) Component software - beyond object-oriented programming. Addison-Wesley, BostonGoogle Scholar
  42. 42.
    Thüm T, Kästner C, Benduhn F, Meinicke J, Saake G, Leich T (2014) FeatureIDE: an extensible framework for feature-oriented software development. Sci Comput Program 79:70–85CrossRefGoogle Scholar
  43. 43.
    van der Linden F, Schmid K, Rommes E (2010) Software product lines in action: the best industrial practice in product line engineering. Springer, BerlinGoogle Scholar
  44. 44.
    von Rhein A, Thüm T, Schaefer I, Liebig J, Apel S (2016) Variability encoding: from compile-time to load-time variability. J Log Algebr Methods Program 85(1):125–145MathSciNetCrossRefGoogle Scholar
  45. 45.
    Weiland J, Manhart P (2014) A classification of modeling variability in Simulink. In: Proceedings of the international workshop on variability modeling in software-intensive systems (VaMoS), VaMoS ’14. ACM, New York, pp 7:1–7:8Google Scholar
  46. 46.
    Weston N, Chitchyan R, Rashid A (2009) A framework for constructing semantically composable feature models from natural language requirements. In: Proceedings of the international software product line conference (SPLC), SPLC ’09. ACM, New York, pp 211–220Google Scholar
  47. 47.
    Wille D (2014) Managing lots of models: the FaMine approach. In: Proceedings of the international symposium on the foundations of software engineering (FSE), FSE ’14. ACM, New York, pp 817–819Google Scholar
  48. 48.
    Wille D, Holthusen S, Schulze S, Schaefer I (2013) Interface variability in family model mining. In: Proceedings of the international workshop on model-driven approaches in software product line engineering (MAPLE), SPLC ’13. ACM, New York, pp 44–51Google Scholar
  49. 49.
    Wille D, Schulze S, Seidl C, Schaefer I (2016) Custom-tailored variability mining for block-based languages. In: Proceedings of the international conference on software analysis, evolution, and reengineering (SANER), SANER ’16, vol 1. IEEE, Piscataway, pp 271–282Google Scholar
  50. 50.
    Zhang X, Haugen Ø, Møller-Pedersen B (2011) Model comparison to synthesize a model-driven software product line. In: Proceedings of the international software product line conference (SPLC), SPLC ’11. IEEE, Piscataway, pp 90–99Google Scholar
  51. 51.
    Zhang X, Haugen Ø, Møller-Pedersen B (2012) Augmenting product lines. In: Proceedings of the Asia-Pacific software engineering conference (APSEC), vol 1. IEEE, Piscataway, pp 766–771Google Scholar

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  1. 1.Technische Universität BraunschweigInstitute of Software Engineering and Automotive InformaticsBraunschweigGermany

Personalised recommendations