5.1. Introduction

The pure::variants Eclipse plug-in extends the Eclipse IDE to support the development and deployment of software product lines. Using pure::variants, a software product line is developed as a set of integrated Feature Models describing the problem domain, Family Models describing the problem solution and Variant Description Models (VDMs) specifying individual products from the product line.

Feature Models describe the products of a product line in terms of the features that are common to those products and the features that vary between those products. Each feature in a Feature Model represents a property of a product that will be visible to the user of that product. These models also specify relationships between features, for example, choices between alternative features. Feature Models are described in more detail in Section 5.3, “ Feature Models ” .

Family Models describe how the products in the product line will be assembled or generated from pre-specified components. Each component in a Family Model represents one or more functional elements of the products in the product line, for example software (in the form of classes, objects, functions or variables) or documentation. Family models are described in more detail in Section 5.4, “ Family Models ” .

In contrast to other approaches, pure::variants captures the Feature Model (problem domain) and the Family Model (problem solution) separately and independently. This separation of concerns makes it simpler to address the common problem of reusing a Feature Model or a Family Model in other projects.

A Variant Description Model (VDM) describes the set of features of a single product, i.e., a configuration, in the product line. Taking a Feature Model and making choices where there is variability in the Feature Model creates these models. VDMs are described in more detail in Section 5.5, “ Variant Description Models ” .

pure::variants supports two modes of configurations in VDMs: In full configuration mode, which was the only mode available in pure::variants 4.0, it is assumed that the set of chosen features is complete. New in pure::variants 5.0 is the partial configuration mode, which assumes that the set of chosen features is not complete and will describe a subset of products of a product line.

The checking, whether the chosen set of features in a VDM is valid, is done in an automatic Model Evaluation. The pure::variants Model Evaluation supports both configurations modes: In full evaluation it is checked whether the current chosen set of features fulfills all relationships of the corresponding Feature and Family Models. In the partial evaluation, however, it is checked whether the current set of features or an extension of that fulfills all relationships. That is, a valid set of features can be reached by eventually selecting more features. More details about the evaluation algorithm can be found in Section 5.8, “ Variant Description Evaluation ” . Also, in the next sections, the evaluation handling for the single modeling parts is briefly described. For a better understanding this only covers the full evaluation. The differences of the evaluation in partial configuration mode is described more in detail in Section 5.8.2, “ Partial Evaluation ” .

Figure 5.1, “pure::variants transformation process” gives an overview of the basic process of creating variants with pure::variants.

Figure 5.1. pure::variants transformation process

pure::variants transformation process

The product line is built by creating Feature and Family Models. Once these models have been created, individual products may be built by creating VDMs. Responsibility for creation of product line models and creation of product models is usually divided between different groups of users.