1.1. What is pure::variants?

pure::variants provides a set of integrated tools to support each phase of the software product-line development process. pure::variants has also been designed as an open framework that integrates with other tools and types of data such as requirements management systems, object-oriented modeling tools, configuration management systems, bug tracking systems, code generators, compilers, UML or SDL descriptions, documentation, source code, etc.

Figure 1.1, “Overview of family-based software development with pure::variants” shows the four cornerstone activities of family-based software development and the models used in pure::variants as the basis for these activities.

When building the infrastructure for your Product Line, the problem domain is represented using hierarchical Feature Models. The solution domain, i.e. the concrete design and implementation of the software family, is implemented as Family Models.

The two models used for Application Engineering, i.e. the creation of product variants, are complementary to the models described above. The Variant Description Model (VDM), containing the selected feature set and associated values, represents a single problem from the problem domain. The Variant Result Model describes a single concrete solution drawn from the solution family.

Figure 1.1. Overview of family-based software development with pure::variants

Overview of family-based software development with pure::variants

pure::variants manages the knowledge captured in these models and provides tool support for co-operation between the different roles within a family-based software development process:

  • The domain analyst uses a Feature Model editor to build and maintain the problem domain model containing the commonalities and variabilities in the given domain.

  • The domain designer uses a Family Model editor to describe the variable family architecture and to connect it via appropriate rules to the Feature Models.

  • The application analyst uses a variant description model to explore the problem domain and to express the problems to be solved in terms of selected features and additional configuration information. This information is used to derive a Variant Result Model from the Family Model(s).

  • The application developer generates a member of the solution family from the Variant Result Model by using the transformation engine.