Classifying variability modeling techniques
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)
- et al.
Variability management with feature models
Science of Computer Programming
(2004) - et al.
Product derivation in software product families; a case study
Journal of Systems and Software
(2005) Design-time product line architectures for any-time variability
Science of Computer Programming special issue on Software Variability Management
(2004)- et al.
XVCL: a mechanism for handling variants in software product lines
Science of Computer Programming
(2004) - M. Antkiewicz, K. Czarnecki, FeaturePlugin: Feature Modeling Plug-In for Eclipse, in: Proceedings of the 2004 OOPSLA...
- T. Asikainen, Modelling Methods for Managing Variability of Configurable Software Product Families, Licentiate Thesis...
- T. Asikainen, T. Soininen, T. Männistö, A Koala-Based Approach for Modelling and Deploying Configurable Software...
- C. Atkinson, J. Bayer, D. Muthig, Component-based product line development: the KobrA Approach, in: Proceedings of the...
- F. Bachmann, L. Bass, Managing Variability in Software Architectures, in: Proceedings of the Symposium on Software...
Frame-based software engineering
IEEE Software
(1987)
The Design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology
Commonality and variability in software engineering
IEEE Software
Generative Programming
Formalizing cardinality-based feature models and their specialization
Software Process Improvement and Practice
Cited by (153)
Model-based documentation of dynamicity constraints for collaborative cyber-physical system architectures: Findings from an industrial case study
2019, Journal of Systems ArchitectureAutomatized integration of a contextual model into a process with data variability
2018, Computer Languages, Systems and StructuresCitation 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.
CREATING THE BEST DIRECTED RANDOM TESTING METHOD TO MINIMIZE INTERACTIVE FAULTSEMPIRICAL PERSPECTIVE
2023, Journal of Theoretical and Applied Information TechnologyAnalysis and optimisation of SPL products using goal models
2023, Proceedings of the IEEE International Conference on Requirements EngineeringDomain-Specific Languages: Effective Modeling, Automation, and Reuse
2023, Domain-Specific Languages: Effective Modeling, Automation, and Reuse