Skip to main content
Log in

Integrated revision and variation control for evolving model-driven software product lines

  • Regular Paper
  • Published:
Software and Systems Modeling Aims and scope Submit manuscript

Abstract

Software engineering projects are faced with abstraction, which is achieved by software models, historical evolution, which is addressed by revision control, and variability, which is managed with the help of software product line engineering. Addressing these phenomena by separate tools ignores obvious overlaps and therefore fails at exploiting synergies between revision and variation control for models. In this article, we present a conceptual framework for integrated revision and variation control of model-driven software projects. The framework reuses the abstractions of revision graphs and feature models and follows an iterative, revision-control-like approach to software product line engineering called product-based product line development. A single version (i.e., a variant of a selected revision) is made available in a workspace, where the user may apply arbitrary modifications. Based on a user-provided specification of the affected variants, the changes are automatically written back to a transparent repository that relies on an internal multi-version storage. The uniform handling of revisions and variants of models is achieved by transparently mapping version concepts to a semantic base layer, which is defined upon propositional logic. At the heart of the conceptual framework is a dynamic filtered editing model, which allows that the versioned artifacts and the feature model co-evolve. We contribute algorithms for checkout and commit, which satisfy a set of consistency constraints referring to variant specifications in an evolving feature model. This article furthermore addresses the orchestration of collaborative development by distributed replication and the well formedness of text and model artifacts to be checked out into the workspace. The Eclipse-based tool SuperMod demonstrates the feasibility of the conceptual framework. It allows the user to reuse arbitrary editing tools for text-based programming and/or Ecore-based modeling languages. An evaluation based on three case studies investigates the properties of SuperMod with a specific focus on filtered editing. The evaluation demonstrates that the dynamic filtered editing model reduces the cognitive complexity and the amount of user interaction necessary for variation control when compared to unfiltered model-driven approaches to software product line engineering.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21

Similar content being viewed by others

Notes

  1. This section is based on [52, Sect. 4].

References

  1. Altmanninger, K., Kappel, G., Kusel, A., Retschitzegger, W., Seidl, M., Schwinger, W., Wimmer, M.: AMOR—towards adaptable model versioning. In: 1st International Workshop on Model Co-Evolution and Consistency Management (MCCM’08), Workshop at MODELS’08, Toulouse, France, 2008. ACM (2008)

  2. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. Int. J. Web Inf. Syst. 5(3), 271–304 (2009)

    Article  Google Scholar 

  3. Apel, S., Batory, D., Kästner, C., Saake, G.: Feature-Oriented Software Product Lines: Concepts and Implementation. Springer, Berlin (2013)

    Book  Google Scholar 

  4. Apel, S., Kästner, C., Größlinger, A., Lengauer, C.: Type safety for feature-oriented product lines. Autom. Softw. Eng. 17(3), 251–300 (2010)

    Article  Google Scholar 

  5. Apel, S., Kästner, C., Lengauer, C.: FEATUREHOUSE: language-independent, automated software composition. In: 31st International Conference on Software Engineering, ICSE 2009, 16–24 May 2009, Vancouver, Canada, Proceedings, pp. 221–231. IEEE (2009)

  6. Basili, V.R., Caldiera, G., Rombach, H.D.: Goal question metric paradigm. In: Encyclopedia of Software Engineering, vol. 1, pp. 528–532. Wiley (1994)

  7. Batory, D.: Feature models, grammars, and propositional formulas. In: Software Product Lines, 9th International Conference, SPLC 2005, Rennes, France, 26–29 Sept 2005, Proceedings, pp. 7–20. Springer (2005)

  8. Behringer, B., Palz, J., Berger, T.: PEoPL: projectional editing of product lines. In: Proceedings of the 39th International Conference on Software Engineering, ICSE 2017, Buenos Aires, Argentina, 20–28 May 2017, pp. 563–574. IEEE/ACM (2017)

  9. Buchmann, T.: Valkyrie: a UML-based model-driven environment for model-driven software engineering. In: ICSOFT 2012—Proceedings of the 7th International Conference on Software Paradigm Trends, Rome, Italy, 24–27 July, 2012, pp. 147–157. SCITEPRESS (2012)

  10. Buchmann, T., Schwägerl, F.: Ensuring well-formedness of configured domain models in model-driven product lines based on negative variability. In: 4th International Workshop on Feature-Oriented Software Development, FOSD ’12, Dresden, Germany, 24–25 Sept 2012, pp. 37–44. ACM (2012)

  11. Buchmann, T., Schwägerl, F.: FAMILE: tool support for evolving model-driven product lines. In: Joint Proceedings of Co-located Events at the 8th European Conference on Modelling Foundations and Applications, pp. 59–62. Technical University of Denmark (DTU) (2012)

  12. Buchmann, T., Schwägerl, F.: A repair-oriented approach to product consistency in product lines using negative variability. Computer Science—Research and Development (2016) (Online first)

  13. Chacon, S.: Pro Git. Apress, New York City (2009)

    Book  Google Scholar 

  14. Collins-Sussman, B., Fitzpatrick, B.W., Michael Pilato, C.: Version Control with Subversion. O’Reilly, Newton (2004)

    Google Scholar 

  15. Conradi, R., Westfechtel, B.: Towards a uniform version model for software configuration management. In: System Configuration Management, ICSE’97 SCM-7 Workshop, Boston, MA, USA, 18–19 May 1997, Proceedings, pp. 1–17. Springer (1997)

  16. Conradi, R., Westfechtel, B.: Version models for software configuration management. ACM Comput. Surv. 30(2), 232–282 (1998)

    Article  Google Scholar 

  17. Czarnecki, K., Pietroszek, K.: Verifying feature-based model templates against well-formedness OCL constraints. In: Generative Programming and Component Engineering, 5th International Conference, GPCE 2006, Portland, Oregon, USA, 22–26 Oct 2006, Proceedings, pp. 211–220. ACM (2006)

  18. Estublier, J., Casallas, R.: The Adele configuration manager. In: Configuration Management. Trends in Software, vol. 2, pp. 99–134. Wiley (1994)

  19. Estublier, J., Casallas, R.: Three dimensional versioning. In: Estublier, J. (ed.) Software Configuration Management: Selected Papers SCM-4 and SCM-5. Lecture Notes in Computer Science, vol. 1005, pp. 118–135. Springer, Seattle (1995)

    Chapter  Google Scholar 

  20. Fitting, M.: Kleene’s logic, generalized. J. Logic Comput. 1(6), 797–810 (1991)

    Article  MathSciNet  MATH  Google Scholar 

  21. Gamma, E., Helm, R., Johnson, R., Vlissides, J.M.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman, Boston (1995)

    MATH  Google Scholar 

  22. Gomaa, H.: Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. ACM, New York City (2005)

    Book  Google Scholar 

  23. Haugen, Ø., Møller-Pedersen, B., Oldevik, J., Solberg, A.: An MDA-based framework for model-driven product derivation. In: Proceedings of the IASTED Conference on Software Engineering and Applications, 9–11 Nov 2004, MIT, Cambridge, MA, USA, pp. 709–714. IASTED/ACTA Press (2004)

  24. Heidenreich, F.: Towards systematic ensuring well-formedness of software product lines. In: Proceedings of the 1st International Workshop on Feature-Oriented Software Development, FOSD 2009, Denver, Colorado, USA, 6 Oct 2009, pp. 69–74. ACM (2009)

  25. Heidenreich, F., Kopcsek, J., Wende, C.: FeatureMapper: mapping features to models. In: 30th International Conference on Software Engineering (ICSE 2008), Leipzig, Germany, 10–18 May 2008, Companion Volume, pp. 943–944. ACM (2008)

  26. Hofer, W., Elsner, C., Blendinger, F., Schröder-Preikschat, W., Lohmann, D.: Toolchain-independent variant management with the Leviathan file system. In: Proceedings of the 2nd International Workshop on Feature-Oriented Software Development, FOSD 2010, Eindhoven, Netherlands, 10 Oct 2010, pp. 18–24. ACM (2010)

  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 CMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University (1990)

  28. Kästner, C., Apel, S., Trujillo, S., Kuhlemann, M., Batory, D.S.: Guaranteeing syntactic correctness for all product line variants: a language-independent approach. In: Objects, Components, Models and Patterns, 47th International Conference, TOOLS EUROPE 2009, Zurich, Switzerland, June 29–July 3, 2009. Proceedings, pp. 175–194. Springer (2009)

  29. Kästner, C., Trujillo, S., Apel, S.: Visualizing software product line variabilities in source code. In: Software Product Lines, 12th International Conference, SPLC 2008, Limerick, Ireland, 8–12 Sept 2008, Proceedings (Workshops), vol. 2, pp. 303–313. IEEE (2008)

  30. Kruskal, V.J.: Managing multi-version programs with an editor. IBM J. Res. Dev. 28(1), 74–81 (1984)

    Article  Google Scholar 

  31. Li, Y., Zhu, C., Rubin, J., Chechik, M.: FHistorian: Locating features in version histories. In: Proceedings of the 21st International Systems and Software Product Line Conference, SPLC 2017, Volume A, Sevilla, Spain, pp. 49–58 (2017)

  32. Lie, A., Conradi, R., Didriksen, T., Karlsson, E.-A., Hallsteinsen, S.O., Holager, P.: Change oriented versioning. In: Ghezzi, C., McDermid, J.A. (eds.) Proceedings of the 2nd European Software Engineering Conference. LNCS 387, pp. 191–202. Springer, Coventry (1989)

  33. Linsbauer, L., Berger, T., Grünbacher, P.: A classification of variation control systems. In: Proceedings of the 16th International Conference on Generative Programming, GPCE 2017, Vancouver, BC, Canada, 23–24 Oct 2017, pp. 49–62. ACM (2017)

  34. Linsbauer, L., Egyed, A., Lopez-Herrejon, R.E.: A variability aware configuration management and revision control platform. In: Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, 14–22 May 2016, Companion Volume, pp. 803–806. ACM (2016)

  35. Lity, S., Nahrendorf, S., Thüm, T., Seidl, C., Schaefer, I.: 175% modeling for product-line evolution of domain artifacts. In: Proceedings of the 12th International Workshop on Variability Modelling of Software-Intensive Systems, VaMoS 2018, Madrid, Spain, pp. 27–34. ACM (2018)

  36. Lopez-Herrejon, R.E., Batory, D.S.: A standard problem for evaluating product-line methodologies. In: Generative and Component-Based Software Engineering, 3rd International Conference, GCSE 2001, Erfurt, Germany, 9–13 Sept 2001, Proceedings, pp. 10–24. Springer (2001)

  37. McVoy, L.: Preliminary product line support in BitKeeper. In: Proceedings of the 19th International Conference on Software Product Lines, SPLC 2015, pp. 245–252, Nashville, Tennessee. ACM (2015)

  38. Mitschke, R., Eichberg, M.: Supporting the evolution of software product lines. In: ECMDA Traceability Workshop (ECMDA-TW), Berlin, Germany, 2008, Proceedings, pp. 87–96. SINTEF (2008)

  39. Munch, B.P.: Versioning in a software engineering database—the change oriented way. Ph.D. thesis, NTNU Trondheim, Norway (1993)

  40. Nieke, M., Engel, G., Seidl, C.: DarwinSPL: An integrated tool suite for modeling evolving context-aware software product lines. In: Proceedings of the Eleventh International Workshop on Variability Modelling of Software-intensive Systems, VaMoS 2017, pp. 92–99, Eindhoven, Netherlands, (2017). ACM

  41. Nieke, M., Seidl, C., Schuster, S.: Guaranteeing configuration validity in evolving software product lines. In: Proceedings of the Tenth International Workshop on Variability Modelling of Software-intensive Systems, VaMoS 2016, pp. 73–80, Salvador, Brazil, (2016). ACM

  42. Object Management Group (OMG): Documents Associated With Meta Objet Facility (MOF) Version 2.5.1. Needham, MA (2016)

  43. Pfofe, T., Thüm, T., Schulze, S., Fenske, W., Schaefer, I.: Synchronizing software variants with VariantSync. In: Proceedings of the 20th International Systems and Software Product Line Conference, SPLC 2016, Beijing, China, 16–23 Sept 2016, pp. 329–332. ACM (2016)

  44. Pohl, K., Böckle, G., van der Linden, F.: Software Product Line Engineering: Foundations, Principles and Techniques. Springer, Berlin (2005)

    Book  MATH  Google Scholar 

  45. Reichenberger, C.: VOODOO—a tool for orthogonal version management. In: Software Configuration Management, ICSE SCM-4 and SCM-5 Workshops, Selected Papers, pp. 61–79. Springer (1995)

  46. Sarnak, N, Bernstein, R.L., Kruskal, V.: Creation and maintenance of multiple versions. In: Proceedings of the International Workshop on Software Version and Configuration Control, 27–29 Jan 1988, Grassau, Germany, pp. 264–275. Teubner (1988)

  47. Schaefer, I., Bettini, L., Bono, V., Damiani, F., Tanzarella, N.: Delta-oriented programming of software product lines. In: Software Product Lines: Going Beyond—14th International Conference, SPLC 2010, Jeju Island, South Korea, 13–17 Sept 2010. Proceedings, pp. 77–91. Springer (2010)

  48. Schwägerl, F.: Version control and product lines in model-driven software engineering. Ph.D. thesis, University of Bayreuth, Germany (2018)

  49. Schwägerl, F., Buchmann, T., Uhrig, S., Westfechtel, B.: Towards the integration of model-driven engineering, software product line engineering, and software configuration management. In: MODELSWARD 2015—Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development, Angers, France, 9–11 Feb 2015, pp. 5–18. SCITEPRESS (2015)

  50. Schwägerl, F., Buchmann, T., Uhrig, S., Westfechtel, B.: Realizing a conceptual framework to integrate model-driven engineering, software product line engineering, and software configuration management. In: Desfray, P., Filipe, J., Hammoudi, S., Pires, L. (eds.) Model-Driven Engineering and Software Development. Communications in Computer and Information Science, vol. 580, pp. 21–44. Springer, Cham (2016)

    Chapter  Google Scholar 

  51. Schwägerl, F., Buchmann, T., Westfechtel, B.: SuperMod—a model-driven tool that combines version control and software product line engineering. In: ICSOFT-PT 2015—Proceedings of the 10th International Conference on Software Paradigm Trends, Colmar, Alsace, France, 20–22 July 2015, pp. 5–18. SCITEPRESS (2015)

  52. Schwägerl, F., Buchmann, T., Westfechtel, B.: Filtered model-driven product line engineering with SuperMod: the home automation case. In: Lorenz, P., Cardoso, J., Maciaszek, L., van Sinderen, M. (eds.) Software Technologies. Communications in Computer and Information Science, vol. 580, pp. 19–41. Springer, Cham (2016)

    Chapter  Google Scholar 

  53. Schwägerl, F., Uhrig, S., Westfechtel, B.: A graph-based algorithm for three-way merging of ordered collections in EMF models. Sci. Comput. Program. 113(1), 51–81 (2015)

    Article  Google Scholar 

  54. Schwägerl, F., Westfechtel, B.: Collaborative and distributed management of versioned software product lines. In: Proceedings of the 11th International Joint Conference on Software Technologies (ICSOFT 2016)—Volume 2: ICSOFT-PT, Lisbon, Portugal, 24–26 July 2016, pp. 83–94. SCITEPRESS (2016)

  55. Schwägerl, F., Westfechtel, B.: SuperMod: tool support for collaborative filtered model-driven software product line engineering. In: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, ASE 2016, Singapore, 3–7 Sept 2016, pp. 822–827. ACM (2016)

  56. Schwägerl, F., Westfechtel, B.: Maintaining workspace consistency in filtered editing of dynamically evolving model-driven software product lines. In: Proceedings of the 5th International Conference on Model-Driven Engineering and Software Development, MODELSWARD 2017, Porto, Portugal, 19–21 Feb 2017, pp. 15–28. SCITEPRESS (2017)

  57. Seidl, C., Schaefer, I., Aßmann, U.: Integrated management of variability in space and time in software families. In: 18th International Software Product Line Conference, SPLC ’14, Florence, Italy, 15–19 Sept 2014, pp. 22–31. ACM (2014)

  58. Steinberg, D., Budinsky, F., Paternostro, M., Merks, E.: EMF—Eclipse Modeling Framework. Addison-Wesley, Boston (2009)

    Google Scholar 

  59. Stănciulescu, Ş., Berger, T., Walkingshaw, E., Wąsowski, A.: Concepts, operations and feasibility of a projection-based variation control systems. In: 2016 IEEE International Conference on Software Maintenance and Evolution, ICSME 2016, Raleigh, NC, USA, 2–7 Oct 2016, pp. 323–333. IEEE (2016)

  60. Thao, C.: Managing evolution of software product lines. In: 34th International Conference on Software Engineering, ICSE 2012, 2–9 June 2012, Zurich, Switzerland, pp. 1619–1621. IEEE (2012)

  61. Thüm, T., Apel, S., Kästner, C., Schaefer, I., Saake, G.: A classification and survey of analysis strategies for software product lines. ACM Comput. Surv. 47(1), 6:1–6:45 (2014)

    Article  Google Scholar 

  62. Tichy, W.F.: Tools for software configuration management. In: Winkler, J.F.H. (ed.) Proceedings of the International Workshop on Software Version and Configuration Control. Berichte des German Chapter of the ACM, vol. 30, pp. 1–20, Grassau, Germany. Teubner Verlag (1988)

  63. Völter, M., Stahl, T., Bettin, J., Haase, A., Helsen, S.: Model-Driven Software Development: Technology, Engineering, Management. Wiley, New York (2006)

    Google Scholar 

  64. Walkingshaw, E., Ostermann, K.: Projectional editing of variational software. In: Generative Programming: Concepts and Experiences, GPCE’14, Vasteras, Sweden, 15–16 Sept 2014, pp. 29–38. ACM (2014)

  65. Westfechtel, B.: Merging of EMF models–formal foundations. Soft. Syst. Model. 13(2), 757–788 (2014)

    Article  Google Scholar 

  66. Westfechtel, B., Munch, B.P., Conradi, R.: A layered architecture for uniform version management. IEEE Trans. Softw. Eng. 27(12), 1111–1133 (2001)

    Article  Google Scholar 

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

    Article  Google Scholar 

Download references

Acknowledgements

The authors greatly appreciate the constructive comments of the unknown reviewers. Thomas Buchmann and Johannes Schröpfer provided valuable assistance in the preparation of the final version of this article.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bernhard Westfechtel.

Additional information

Communicated by Professor Andrzej Wasowski.

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

This article partly reuses and extends material previously published in [48,49,50,51,52, 54,55,56]

Case studies

Case studies

In this appendix, which is an excerpt of [48, Sect. 15.3], the case studies conducted with regard to the evaluation summarized in Sect. 8 are presented. The evaluation subjects developed the multi-version artifacts from scratch based on a list of requirements provided beforehand. We here present the revision histories, logs of command histories including all relevant version management actions (checkout, commit, amend, etc.), and relevant extracts of the product resources available in their local workspace.

1.1 Extended Graph library

This case study, excerpts of which serve as running example in this article, was initially described as an evaluation case in [36] and adapted for the demonstration of many SPL approaches in literature. Below, we present a complete version of the product line that has been developed by the authors from scratch. Figure 22 summarizes the SuperMod commands invoked during the experimentation.

Fig. 22
figure 22

History of interactive commands for the Graph case study

Requirements To make the experimentation of this synthetic case study as realistic as possible, the requirements for the product line were assigned to different product line increments realized by Alice and Bob alternatingly. Furthermore, intentional obstacles were created, such that synchronization conflicts and product well-formedness violations came into play. The list of task descriptions is reproduced here:

Table 12 Version history underlying the Graph Library case study
  1. 1.

    Alice: Initialize the repository. Add basic support for graphs that contain a node set and an edge set. Assume graphs are undirected, but do not define a feature for this.

  2. 2.

    Bob: Clone Alice’s repository. Introduce a mutually exclusive distinction between directed and undirected graphs. Ensure that Alice’s realization of edges is valid for undirected graphs only, and commit a new realization for directed graphs.

  3. 3.

    Alice: Concurrently to Bob’s change above, add support for labeled and weighted graphs as two optional, independent features. Reconcile your changes with Bob’s.

  4. 4.

    Bob: Wait until Alice pushes revision 3. Add support for colored graphs.

  5. 5.

    Alice: Add constructors to the classes for vertices and edges. Their parameters should match the available properties for colored/labeled/weighted/directed graphs.

  6. 6.

    Bob: Concurrently, define new features for the graph algorithms transpose (requires a directed graph) and shortest path (requires a directed and weighted graph). Reconcile your changes with Alice’s.

Preliminaries The case study was conducted with SuperMod in combination with the UML modeling tool Valkyrie [9].

The technical preparations were made in Alice’s modeling environment. After having initialized the Valkyrie project using the provided project wizard, the domain model created is represented as two models, an abstract syntax model (an instance of the Eclipse UML 2.0 metamodel), and a GMF notation model that defines concrete graphical class diagram syntax for abstract model elements.

To this Eclipse project, SuperMod support was added by the Share command. After selecting the hybrid collaborative repository architecture in a first step, the connection to the central remote repository was established.

Overall version history Before we present the key user actions performed in the subsequent remote transactions, we summarize the complete version history of the case study in Table 12.

Fig. 23
figure 23

Alice’s workspace contents after public revision 1

The majority of private revisions was processed in “the straightforward way”: introduce a new feature, add corresponding realization artifacts to the domain model, and commit, using an ambition where the newly introduced feature is positively bound and no further bindings are set.

Public revision 1 In revision 1.1, Alice commits the initial workspace contents using an empty ambition (as no features are defined yet). Revision 1.2 exclusively refers to the feature model—the result of the corresponding modifications is shown in Fig. 23a. In revisions 1.3 until 1.5, the features Graph, Vertices, and Edges are realized straightforwardly (cf. Table 12). Revision 1.6 is an evolutionary change and therefore addresses the same set of variants (derived feature ambition \(\{(O_{Edges}, true )\}\)). The resulting view on the domain model—which equals here the multi-variant domain model as all features are mandatory so far—is depicted in Fig. 23b. Alice concludes the remote transaction by a Push.

Public revision 2 Bob joins the fictional project based on a Clone of revision 1 pushed by Alice. The remote transaction running in his workspace gets the public revision number 2 assigned.

After defining the mutually exclusive features Directed and Undirected, Bob is faced with the problem that the realization of the second feature is already present in the workspace. The corresponding elements therefore need to be constrained to Undirected variants. Bob achieves this by removing the elements in question from his workspace and by committing this deletion using an ambition where Undirected is negatively selected; see Fig. 24a. Through this “double negation”, the visibilities of deleted elements will be automatically conjuncted with the feature option belonging to Undirected. (The same principle is applied in revisions 35 until 37 of the Home Automation Example.)

Fig. 24
figure 24

Variant definitions provided by Bob in revision 2

Subsequently, Bob is prompted for the definition for an option binding for Directed in an interactive migration. Selecting \( true \), this produces the correct choice for the change realized in revision 2.2, namely the definition of two associations for directed edges. An explicit checkout is not required either. Figure 25 depicts Bob’s repository contents at push time. Public transaction 4 is started in his workspace.

Fig. 25
figure 25

Bob’s repository contents at the end of revision 2

Public revision 3 Alice starts her work on the subsequent public transaction in advance to Bob’s push; therefore, the version history is temporarily branched. In revision 3.1, she introduces the features Weighted and Labeled. Furthermore, she realizes the former feature in the domain model.

Fig. 26
figure 26

Version space and workspace presented to Alice in revision 3

After committing, Alice is prompted for an interactive choice migration since the binding for feature Labeled is missing. She specifies a positive selection (cf. Fig. 26a) because this matches her intention for the subsequent private revision 3.2, where she realizes this feature straightforwardly. The final workspace contents are depicted in Fig. 26b.

As prescribed by the experimentation requirements, as soon as Alice attempts to push, a synchronization obstacle occurs as Alice’s version history must be reconciled with Bob’s public revision 2 finished in the meantime. Following SuperMod’s collaborative workflow, an out of date situation is signaled to Alice, who is forced to pull and to update her workspace to the latest revision. As her current workspace choice does not provide bindings for the remotely defined features Directed and Undirected, Alice is forced to complete her workspace choice interactively—see Fig. 27.

Fig. 27
figure 27

Interactive choice migration after Alice’s pull during public revision 3

Alice’s and Bob’s concurrent modifications are, however, not conflicting at product level, such that no well-formedness violations occur in Alice’s workspace after pull and update. She may therefore resume her push without any further restrictions.

Public revision 4 Bob waits for Alice to push, preventing synchronization problems beforehand. Then, he checks out a weighted, directed, unlabeled variant. The realization of the feature Colored defined by the requirements list happens in a straightforward way—see Table 12. Figure 28 depicts Bob’s workspace contents as he pushes.

Fig. 28
figure 28

Bob’s workspace contents after public revision 4

Public revision 5 Alice, too, avoids synchronization problems by awaiting Bob’s push. For defining the constructor of class Vertex, she checks out a colored, labeled, weighted, undirected variant. The realization is split into two distinct commits (with different ambitions): In revision 5.1, a constructor without parameters is introduced for the feature Vertices. The parameter color is added conditionally for Colored variants in revision 5.2.

Still in the same workspace view, Alice defines the constructor for Edge in revision 5.3, as well as the parameter for undirected edges (adjacents of type Vertex with multiplicity 2) in revision 5.4. The intermediate workspace contents are depicted in Fig. 29.

Fig. 29
figure 29

Alice’s workspace after private revision 5.4

Fig. 30
figure 30

Alice’s workspace after private revision 5.6

Thereafter, the constructor parameters for directed graphs are addressed. To this end, Alice must checkout based on a different choice, selecting feature Directed as well as all other non-conflicting optional features. In revision 5.5, the parameters source and target are added conditionally for Directed graphs. In the same view, the parameter weight is added for Weighted graphs in revision 5.6; see Fig. 30.

In this way, the mutual order of the constructor parameters belonging to Directed and Weighted is fixed; however, no mutual order for adjacents and weight has been defined, although the features are allowed to be combined. In order to avoid well-formedness violations in future products, Alice uses revision 5.7 to make the order explicit. Switching back to her first choice (checking-out an undirected, colored, weighted, labeled graph), an order conflict is reported to Alice as expected. This is default-resolved by placing adjacents before weight, which matches Alice’s preference. For the subsequent commit, she must specify an ambition that is specific enough for the performed change—she positively selects the features Undirected and Weighted, which are realized by the affected parameters.

Last, Alice straightforwardly adds a last constructor parameter for Labeled graphs. After this, a total order (except for the parameters belonging to the mutually exclusive features Directed and Undirected) is defined in the transparent multi-version collection that organizes the constructor parameters of Edge. The workspace domain model present in Alice’s workspace as she pushes is shown in Fig. 31.

Public revision 6 Without awaiting Alice’s push, Bob contributes the final public revision in the straightforward way. The first revision 6.1 is used to introduce features and constraints for the algorithms Transpose and ShortestPath; see Fig. 32a. These are positively selected in the subsequent interactive migration and then realized as operations using the corresponding features as ambitions in revisions 6.2 and 6.3. Then, Bob attempts to push, being forced to pull Alice’s changes connected to public revision 5 first.

Fig. 31
figure 31

Alice’s workspace after private revision 5.8

Fig. 32
figure 32

Bob’s final workspace contents at public revision 6

Since both Alice and Bob add elements to the operations list of class Vertex, another order conflict is raised here. This time, the default resolution strategy suggests an order that is not in line with the usual convention that constructors are placed before regular operations: [shortestPath, Vertex]. Therefore, Bob manually revises the repair action and switches the order. The resulting workspace contents depicted in Fig. 32b are committed under \(\{(o_{ShortestPath}, true )\}\). Bob pushes the final state of the Graph case study.

1.2 Home automation system

In a second evaluation case,Footnote 1 we apply SuperMod to the standard example of a product line for Home Automation Systems (HAS) from [44]. A HAS consists of several technical components communicating with each other; since most components are optional and interchangeable, this case study is frequently used for product lines. We here abstract from the communication layer and consider a requirements-centric view of the system. Moreover, we conduct the study in single-user mode.

The larger part of the case study is organized in a plan-driven way. Consecutively, the activities analysis, design, and implementation (based on generated source code) are executed. For analysis and design, we rely on UML use case, activity, package, and class diagrams using Valkyrie [9] (see above) and its Java code generator. At the end, fictional customer feedback that required to revisit design decisions is given. Figure 33 depicts the underlying command history.

Table 13 Version history of the use case diagram. Based on [52, Table 1]

Requirements analysis Requirements analysis is split into two phases. To begin with, residents’ interactions with the HAS are documented in a use case diagram. Subsequently, one use case is representatively refined by means of an activity diagram.

After having initialized a Valkyrie project and having connected it to SuperMod version control, the first phase is initiated based on an empty use case diagram. In consecutive iterations, we introduce actors, components, use cases, and relationships as summarized in Table 13. The table also shows that the feature model is developed simultaneously, introducing new features on demand in order to delineate the scope of the respective changes. Figure 34 depicts a variant of the final use case diagram.

Fig. 33
figure 33

Command History of the HAS case study

During the second analysis phase, the feature IdentificationMechanism is further refined by adding three concrete mechanisms, namely Keypad, MagneticCard, and FingerprintScanner. Features representing these mechanisms are organized in an OR-group, meaning that at least one mechanism must be chosen in a valid configuration. In case several mechanisms are available, one of them must be chosen during identification at runtime (see below). The available selection should be restricted by the active features; this is realized in revisions 10 until 12 shown in Table 14. The resulting activity diagram is depicted in Fig. 35; Figure 36 presents the feature model in its state at the end of the analysis phase.

Design The static structure of the HAS product line is also developed in two phases. After modeling an initial package diagram, specific packages are refined by class diagrams.

Fig. 34
figure 34

The use case diagram of the HAS study after revision 7, shown in a variant that includes all mandatory and optional features available. From [52, Fig. 7]

Table 14 Version history of the activity diagram for Identify. Based on [52, Table 2]

Table 15 indicates that the package diagram (see Fig. 37) is developed in an iterative and incremental way by realizing one feature after another. Variation points are anticipated by static modeling of appropriate design patterns, namely Strategy and Command [21], which are thereafter refined by class diagrams. Here, we refrain from introducing new features during the design phase.

As shown in Table 16, the package identification is refined by a class diagram, exemplifying the realization of transparent variation points during design. In revision 29, general details are added to the class IdentificationMechanism as well as to the interface IMechanism that realizes the Command pattern. Its specific realizations are added subsequently and scoped with the respective feature. In this case, the only necessary changes are to make the respective command classes realize IMechanism (see Fig. 38). Similar refinements might have been applied to the packages doorLock, alarm, and heating.

Fig. 35
figure 35

The activity diagram of the use case Identify after revision 12, shown in a variant that includes all sub-features of IdentificationMechanism. From [52, Fig. 8]

Fig. 36
figure 36

The final HAS feature model after revision 12. From [52, Fig. 9]

Implementation In the here considered model-driven product line, the structural part of the source code can be derived from the artifacts developed in the design phase using Valkyrie’s Java source code generator. The main class HomeAutomationSystem shall contain the main executable as command line application. Below, we confine the presentation to the implementation of the method identify() of class IdentificationMechanism, which implements the activity diagram shown in Fig. 35 above.

Variability is achieved by making the declarations and usages of specific mechanism classes dependent on their respective features. As indicated in Table 17, after the initial code generation run in revision 33, a variant that includes all identification mechanisms is made available in the workspace. In revision 34, a multi-variant implementation is provided by manual source code extensions (see Listing 1). We then connect the variable constructor calls and the concrete implementation classes to their respective features by applying the negative implementation, i.e., by removing the corresponding source code file and the statement containing the constructor call, and by committing against the negation of the respective feature. In advance to performing these deletions, it is necessary to checkout explicitly a suitable choice where the respective features are deselected.

figure f
Table 15 Version history of the package diagram. Additional horizontal lines indicate that an explicit checkout was necessary between the affected revisions. Based on [52, Table 3]

Responding to customer feedback So far, the SPL has been developed in a phase-structured and proactive way, following the classical development activities analysis, design, and implementation. We now investigate to which extent SuperMod and the underlying approach allow to react to a new customer request that crosscuts all three development activities. The fictional customer feedback consists in a feature request to extend the list of identification mechanisms available by a biometric mechanism.

In response to this feedback, we checkout the latest revision of the HAS, choosing the customer’s product variant (which includes all sub-features of IdentificationMechanism). Then, we realize the increment in one single iteration under the same feature ambition.

  • Analysis. A new feature Biometric is introduced to the OR-group below IdentificationMechanism (cf. Fig. 36). The request does not affect the use cases themselves, but the activity diagram that details the use case Identify (cf. Fig. 35): We add a new activity BiometricIdentification and connect it to the decision/merge node in analogy to the existing identification actions.

  • Design. We define a new class Biometric as well as an outgoing realization relationship to the interface IMechanism in the class diagram shown in Fig. 38. This transparently extends the package diagram’s view (cf. Fig. 37).

  • Implementation. The (incremental) code generation is re-invoked, creating a new source file Biometric.java. To the implementation of method IdentificationMechanism.identify() (cf. Listing 1), we add after line 99:

  • Deployment. The current iteration is finalized by committing all pending changes to the repository under revision 38. In the feature ambition, exclusively the new feature Biometric is selected positively. Last, the same product variant as present in the developer’s workspace is deployed to the customer using the Export command.

Fig. 37
figure 37

The package diagram after revision 28. The product variant shown does not include features Active and Automatic, thus not classes doorLock::ActiveLock and heating::Automatic, either. From [52, Fig. 10]

Table 16 Revision history of the class diagram refining package identification. Based on [52, Table 4]

1.3 Bootstrapping SuperMod

In a third case study, SuperMod is applied to an instance of a custom metamodel, which in turn is based on Ecore. The considered modeling language reflects an extended subset of the conceptual framework’s core metamodel introduced in Sect. 3.2; it is capable of describing the architecture provided by as well as the operations offered by a concrete SuperMod repository. The architecture in turn comprises a specific combination of pre-defined dimensions, which can be version-related (e.g., the revision graph), product-related (e.g., the versioned file system), hybrid (e.g., the feature model), or transparent (e.g., the change space optimization presented in [50]). Overall, the product line shall be capable of reproducing at least seven conceivable repository architectures (the details of which are out of scope of this article; see [48, Sect. 14.3]).

Fig. 38
figure 38

The class diagram that refines package identification (revision 32), with Keypad, MagneticCard, and FingerprintScanner selected. From [52, Fig. 11]

Table 17 Overall commit history of the implementation phase. Based on [52, Table 5]

The SuperStrap (for SuperMod bootstrap) metamodel is depicted as an Ecore class diagram in Fig. 39. A repository consists of an ordered set of dimensions. These are connected by a cross-reference controlledDimensions, which indicates a versioning relationship. A set of operations represents the commands available to the user.

For editing the singleton instance of the SuperStrap metamodel versioned by SuperMod, a customized generated EMF tree editor is used in this experiment. For better precision, the generated source code has been extended such that the editor relies on UUIDs.

The focus of this experiment lies on the suitability of the approach for fine-grained and alternative variability. To this end, we add an intentional obstacle, which is reflected by the attribute architectureCode. Its value must be unique for every allowed repository architecture mapped by corresponding feature configurations. Conversely, the metamodel defines this attribute as single-valued, such that alternative values cannot be expressed in a single-version model instance (constrained variability).

The overall command history summarizing the actions underlying this case study is depicted in Fig. 40.

Requirements Feature model and domain model shall be edited concurrently based on a list of domain model artifacts to be considered in consecutive blocks of iterations:

  1. 1.

    The specific dimensions and their relationships.

  2. 2.

    Pieces of optimization controlled by individual features: visibility forest and change space (see [50] for interest; not in scope of this article).

  3. 3.

    Operations to be offered by concrete variants of the repository. We here confine the list to CheckOut, Commit, Pull, Push, and Amend (see [55] for interest; not in scope of this article).

  4. 4.

    Finally, the distinct values of the attribute architectureCode.

Table 18 Revision history of the first phase of the bootstrapping case. Additional horizontal lines indicate that an explicit checkout was necessary
Fig. 39
figure 39

The SuperStrap metamodel underlying the third evaluation case

Fig. 40
figure 40

Command History of the SuperStrap case study

Preliminaries In an empty Eclipse project, a new model conforming to the SuperStrap metamodel is created, instantiating a new Repository as root object. Then, SuperMod version control support is added based on the hybrid (non-collaborative) repository architecture. The initial contents are committed as revision 1.

Dimensions and relationships In the first phase of the case study, we introduce features for the human-visible dimensions (file hierarchy, low-level logical dimension, feature model, revision graph, and collaborative revision graph). As evident from the revision history shown in Table 18, there is a one-to-one correspondence between features and instances of Dimension. Furthermore, the relationships between the dimensions—represented as instances of controlledDimension—depend on combinations of source and target feature.

Due to the mutual exclusions between features Logical and FeatureModel, as well as RevisionGraph and Collab, it is necessary to apply the changes in three different views, such that two explicit checkouts become necessary. In these situations, the operation Migrate is not applicable since the respective bindings added in the ambition are conflicting with the subsequently intended choice.

Single-version views on different revisions of the domain model, as well as the final revision of the feature model, are provided in Fig. 41.

Fig. 41
figure 41

Workspace artifacts belonging to the first phase of the bootstrapping case

Table 19 Revision history for the second phase of the bootstrapping case

Optimization. The optimizing features suggested by the requirements list are reflected in the domain model in two different ways. First, the visibility forest is covered by an instance of a corresponding class attached to the repository (see revision 15 in Table 19); this modification involves a successful interactive migration step. Second, the change space is represented in the solution space as an additional, transparent dimension that controls all other version dimensions, except for the low-level logical dimension, to which an excludes relationship is defined in the feature model.

The corresponding controlledDimensions links are added under suitable ambitions; this requires to use two different choices in total, such that one additional checkout operation comes into play. We begin in a collaborative variant—this feature is still present in the workspace after revision 14—and switch to a single-user variant in advance to realizing revision 19. Fig. 42 presents relevant cutouts of the artifacts modified in the local workspace.

Operations When compared to the two previous phases, the changes connected to the operations offered by the repository are less invasive. Furthermore, the operations are not explicitly modeled as features.

Fig. 42
figure 42

Workspace artifacts for the second phase of the bootstrapping case

Table 20 Revision history for phase three of the bootstrapping case
Fig. 43
figure 43

Workspace domain model, revision 22, of the bootstrapping case

Table 21 Architecture codes specified during phase four of the bootstrapping case

As indicated by Table 20, CheckOut and Commit are offered by all repository architectures available, whereas Pull and Push require the existence of a collaborative dimension. Last, the operation Amend is exclusive for repository architectures that contain both a change space and a feature model as dimensions [50, 55].

In this specific version history, it is not necessary to explicitly checkout by a choice where ChangeSpace is active, since this feature has already been positively bound in the ambition of revision 22.

Figure 43 depicts a product variant with all operations enabled.

Architecture code In spite of its rather simple representation in the solution space—the value of a string-valued attribute—the architecture code appears to be the most complex detail for multi-variant realization. As listed in the requirements, the value of architectureCode is supposed to match the most adequate identifier of the seven conceivable SuperMod architectures. This provides an extreme case of alternative variability, which is managed in an unconstrained way by SuperMod’s intrinsic repository representation.

Since the different values of this attribute are mutually exclusive in the model instance presented in the workspace, seven different ambitions are necessary to match this requirement. Table 21 summarizes the revision history; six explicit checkouts are applied between the corresponding iterations, provided that we can stay in the view obtained after revision 22 before realizing and committing revision 23.

In the checkout performed in advance to the final revision 29, we are faced with a product conflict: the mutual order of the dimensions RevisionGraph and Logical has not been defined unambiguously during the first phase of the case study (cf. Table 18), as the orthogonal architecture does not assume any relationship between these dimensions. The default resolution strategy (which gives priority to the least recent value) resolves the order conflict by placing the logical dimension before the revision graph. Albeit, version selection is performed in the historical dimension first, thus we correct this order in the course of manual reconciliation. Figure 44 shows both the revised workspace contents and the ambition used for the final commit.

Fig. 44
figure 44

Workspace contents and feature ambition for revision 29

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Schwägerl, F., Westfechtel, B. Integrated revision and variation control for evolving model-driven software product lines. Softw Syst Model 18, 3373–3420 (2019). https://doi.org/10.1007/s10270-019-00722-3

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10270-019-00722-3

Keywords

Navigation