The basic idea of pure::variants is realising product lines by family models and feature models. Contrary to previous feature model based technologies, pure::variants captures the problem with feature models and the solutions with family models separately and independently. Family models are the »memory« of inter-relations, restrictions and requirements of the software elements. A family model consists of so-called components. Components represent at least one attribute of the software solution and contain the logical parts like classes, objects, functions, variables and documentation. A feature model specifies the interdependencies of the features of a product line. They allow a uniform representation of all variabilities and commonalities of the products of the product line.
While other feature model based approaches merely allow the use of only a single feature model, pure::variants facilitates the use of multiple feature models that are hierarchically linked. This approach ensures feature combination consistency and simplifies the re-combination of product lines or parts of them into new ones.
During the problem analysis and solution design stages of software development, pure::variants records and administers all models and information, thus assists in the creation of software families implementing product lines. pure::variants can even be used to automatically generate custom-made solutions:
A user (developer or customer) selects features required for the desired product from the feature models. pure::variants checks the validity of this selection and if necessary automatically resolves dependency conflicts. Thereby it maintains the integrity of dependencies, no matter how complex they are. A valid selection triggers an evaluation of the family models that contain component definitions consisting of logical and physical parts. The evaluation process results in an abstract description of the selected solution in terms of components. This description controls the transformation process that creates the custom-made software solutions.
At every stage of the evaluation process conflicts are solved automatically or, should this not be feasible, are handed over to the developer for solving.