Classifying variability modeling techniques

https://doi.org/10.1016/j.infsof.2006.08.001Get rights and content

Abstract

Variability modeling is important for managing variability in software product families, especially during product derivation. In the past few years, several variability modeling techniques have been developed, each using its own concepts to model the variability provided by a product family. The publications regarding these techniques were written from different viewpoints, use different examples, and rely on a different technical background. This paper sheds light on the similarities and differences between six variability modeling techniques, by exemplifying the techniques with one running example, and classifying them using a framework of key characteristics for variability modeling. It furthermore discusses the relation between differences among those techniques, and the scope, size, and application domain of product families.

Introduction

Cost, quality, and time-to-market have been the main concerns in software engineering since the 1960s. Software product families [11], [15], [30] address these concerns by exploiting the similarities within a set of products. While developing components for a set of products enables effective reuse, it also complicates software development; the product family artifacts (such as, the architecture, reusable components, requirements, and test-cases) have to be able to deal with the product differences.

Variability management deals with these differences by handling the introduction, use, and evolution of variability, i.e., the ability of a system or artifact to be extended, changed, customized, or configured for use in a specific context. The context is the set of products in the product portfolio that are created during application engineering and the different environments these products are used in. The success of a product family is largely dependent on effective variability management [12]. It is a complicated task, however, that faces a number of challenges. These challenges originate, for example, from the large number of choices application engineers can make during product derivation (the numbers can run as high as ten thousands), and the complexity of the constraints between them [12], [21], [49].

Over the past few years, several variability modeling techniques have been developed that are aimed to support variability management during product derivation, e.g., FODA [31], featureRSEB [24], Riebisch et al. [45], Forfamel [2], RequiLine [37], Cardinality-Based Feature Modeling (CBFM) [18], von der Maßen and Lichter [38], Halmans and Pohl [25], ConIPF [28], COVAMOF [48], CONSUL/Pure∷Variants [13], [44], GEARS [35], Koalish [3], OVM [43], VSL [9], van der Hoek et al. [26], and Webber and Gomaa [23]. These techniques aim at representing the variability in a product family, in such a way that software engineers can manage variability more easily during product derivation. They have similarities and differences in terms of core aspects that are important when managing variability, i.e., in terms of modeling concepts and in terms of the tools that support them. These differences make each variability technique suitable for a particular situation. An important outstanding question, however, is which technique is most suited for which situation.

This paper is a first step in answering this question, and its contribution is threefold. First, we provide an overview of variability modeling techniques, by showing how they model variability. Whereas other publications regarding these techniques are written from different viewpoints, use different examples, and rely on a different technical background, we use one example product family to illustrate the modeling concepts of all techniques. Second, we provide a detailed classification of these techniques. This classification is based on the characteristics that are common among variability modeling techniques, or that based on issues that are encountered in practice. Finally, we discuss the relation between differences among these techniques, and the scope, size, and application domain of product families.

We divided this paper as follows. First, we explain the structure of our classification framework by discussing related work, and outlining the concepts, activities, and issues that are involved in managing variability during product derivation (Section 2). Then, we illustrate the modeling techniques in Section 4 by means of a small example product family described in Section 3. We classify these techniques in Section 5 with the classification framework from Section 2, and discuss how well they match different types of product families. We conclude our paper in Section 6.

Section snippets

Background and classification framework

In product families, product development is separated in two phases, i.e., domain engineering and application engineering [11], [15]. Domain engineering involves creating and maintaining a set of reusable artifacts (e.g., a product family architecture and a set of components). During application engineering, these reusable artifacts are used to build the products.

In both phases, variability management plays an important role. During the first phase, domain engineers introduce all kinds of

Running example: Parking

Before we present our classification of modeling techniques in Section 5, we introduce the different techniques in Section 4. To get a feel for how the different modeling techniques model variability, however, we first present an example in this section. This example is based on a product family we came across in one of our case studies. It is used in Section 4 to show how the variability model of this family would look like in the different modeling techniques. Please note that the only

Variability modeling techniques

In the overview on related work in Section 2.1, we listed several variability modeling techniques that were developed to support engineers in managing their product family. To be able to discuss the classification of variability modeling techniques in detail, we have restricted the number of techniques we classify. We motivate this selection below.

CBFM [18], featureRSEB [24], Riebisch et al. [45], Forfamel [2], and RequiLine [37] are all based on FODA [31] feature modeling. As CBFM is

Classification of the variability modeling techniques

The brief descriptions in the previous section already suggest that VSL, ConIPF, CBMF, COVAMOF, Koalish, and Pure∷Variants have commonalities and differences. But what are these commonalities and differences exactly, and how does that make them suitable for different types of product families? To provide a first answer to this question, we focus on the first half in Sections 5.1 Modeling, 5.2 Tools; explicitly describing the commonalities and differences using the structure of our

Conclusion

Variability modeling is recognized as the key approach to successful management of industrial software product families. In the past few years, several variability modeling techniques have been developed, each one using its own concepts to capture the variability provided by reusable artifacts. The publications regarding these techniques are written from different viewpoints, use different examples, and rely on a different technical background. As a result, it is hard to compare them and choose

References (53)

  • D. Batory et al.

    The Design and implementation of hierarchical software systems with reusable components

    ACM Transactions on Software Engineering and Methodology

    (1992)
  • D. Batory, J. Sarvela, A. Rauschmayer, Scaling Step-Wise Refinement, in: Proceedings of the 25th International...
  • M. Becker, Towards a General Model of Variability in Product Families, in: Proceedings of the 1st Workshop on Software...
  • Y. Bontemps, P. Heymans, P.Y. Schobbens, J.C. Trigaux, Semantics of feature diagrams, in: Proceedings of the Workshop...
  • J. Bosch, Design and use of software architectures: adopting and evolving a product line approach. Pearson Education...
  • J. Bosch, G. Florijn, D. Greefhorst, J. Kuusela, H. Obbink, K. Pohl, Variability Issues in Software Product Lines, in:...
  • L. Brownsword, P. Clements, A Case Study in Successful Product Line Development, CMU/SEI-96-TR-016, ADA315802,...
  • P. Clements, L. Northrop, Software Product Lines: Practices and Patterns, SEI Series in Software Engineering,...
  • J. Coplien et al.

    Commonality and variability in software engineering

    IEEE Software

    (1998)
  • K. Czarnecki et al.

    Generative Programming

    (2000)
  • K. Czarnecki et al.

    Formalizing cardinality-based feature models and their specialization

    Software Process Improvement and Practice

    (2005)
  • E.M. Dashofy, A. van der Hoek, R.N. Taylor, A Highly Extensible, XML-Based Architecture Description Language, in:...
  • S. Deelstra, M. Sinnema, J. Nijhuis, J. Bosch, Experiences in software product families: problems and issues during...
  • Encoway GmbH website, available from:...
  • H. Gomaa, D. Webber, Modeling Adaptive and evolvable software product lines using the variation point model, in:...
  • M. Griss, J. Favaro, M. d’Alessandro, Integrating Feature Modeling with the RSEB, in: Proceedings of the Fifth...
  • Cited by (153)

    • Automatized integration of a contextual model into a process with data variability

      2018, Computer Languages, Systems and Structures
      Citation Excerpt :

      Few works have studied variability in systems architecture, although out of the modeling scope, to comply with fixed or changing requirements. Variability in systems architecture has been analyzed in software product families [11], to manage the complexity introduced in UML models [12], to define features or decision models [13], to be described and shared by groups of systems [14], as data-centric to improve model consistency [15], or model transformation rules [16]. Otherwise, few works have examined the problem of variability in context modeling.

    • Analysis and optimisation of SPL products using goal models

      2023, Proceedings of the IEEE International Conference on Requirements Engineering
    • Domain-Specific Languages: Effective Modeling, Automation, and Reuse

      2023, Domain-Specific Languages: Effective Modeling, Automation, and Reuse
    View all citing articles on Scopus
    View full text