Introduction to Product Line Engineering

Product line engineering (PLE) is a product development method that establishes a procedure for developing a family of similar products. The entire family is called a product line, while a concrete product in that family is called a product variant.

The usual approach for developing such a family is to develop one product and then copy and modify the design documents for all subsequent products (the so-called clone-and-own approach). But this approach is rife with problems - it is difficult to make changes common to all products across the board. Also, traceability is greatly impaired - it is hard to do impact analysis.

By contrast, the PLE approach prescribes that a user makes a common design that encompasses the entire variability spectrum of the products. This design is called a superset model (aka a 150% model) of the system. The available feature choices are then described (usually in a separate document/tool than the system design documents), and a connection is established between the feature choices and particular points in the design that need to vary depending on the feature choice (these points are called variation points). A particular product of the family is then defined by making specific feature choices. A design for a particular product (aka 100% model) can then be produced by taking the design documents of the family and narrowing it down according to the feature choices of that product. This procedure is usually performed with a PLE tool. The important thing to note here is that design documentation consists of various kinds of documents (assets) - requirements, system models, code, test cases, documentation and so on. The PLE tool must be able to operate on every kind of the asset to produce consistent design documents of the product. This usually requires that the PLE tool integrates with all the tools in the tool stack used to design the system. 

MagicDraw  dynamically creates a system model of a particular variant

We present the Product Line Engineering plugin, allowing you to generate a particular model variant from the whole superset model. In the documentation, you can find descriptions as follows:

  • Getting started. In this page you will find a list of tools that should be installed, configuration instructions and links to installation instructions. The set of particular tools will ensure that you are able to generate a particular variant from your general model.
  • Integration with pure::variants. The workflow for generating a particular feature model (100% model) from the system model (150% model) defined in a modeling tool using parameters defined in pure::variants is presented here. To see the real usability and get a clear understanding about generating a feature model, the use case with an example model is described here step by step.
  • Integration with Big Lever Software Gears. The workflow for generating a particular subset model (100% model) from the superset model (150% model) defined in a modeling tool using parameters defined in Gears is presented here. To see the real usability and get a clear understanding about generating a subset model, the use case with an example model is described here step by step.
  • Creating variants using transformations. There are cases where you can generate a particular model variant using the Model Transformation Wizard. The wizard is integrated with the Gears tool. It can also be integrated with your custom plugin designed to generate model variants.
  • Creating model variants in server projects. Our modeling tools support generating a particular model variant from the server projects. Thus, you can use variants modeling in a collaborative environment
  • OpenAPI Sample for Implementing and Plugging Variation Point Provider for 3rd parties. Instructions for integrating your custom plugin for generating variants are provided in this section.