Concepts: Means of Production – The Configurator

The means of production is the mechanism that exercises the assets' variation points to produce configured versions that, together, constitute the artifact set for one of the products in the product line. Configuring the shared assets for each product in turn produces the entire set of products.

For product lines of any size or frequency of change, manual production is impractical; some form of automation is required.

Early approaches to PLE employed many means for producing the products from the shared assets. The assets could be manually configured, or (more likely) an ad hoc collection of techniques was employed to configure the various assets separately.

These techniques might include #ifdef statements for code, attributes in tabular requirements, or variables in Word documents. Each of these techniques usually only applies to the single asset in which it is used, and is often derived from the tooling used to engineer that asset.

This scheme scales poorly, and may not trace well across different kinds of artifacts. Second Generation Product Line Engineering (2GPLE) approaches use the same kind of variation across all assets.

For product lines of any size or frequency of change, manual production is impractical; some form of automation is required. In fact, the complexities of modern product lines demand industrial-strength automation. The automation is called a configurator, which takes a feature-based description of a product and configures all of the assets (using their variation points) to produce instances for that product.

Under this paradigm, the PLE Factory configurator is the manufacturing automation; the shared assets represent the factory's supply chain.

The configurator needs to be able to support the construction and management of feature models (including feature declarations, assertions, and profiles), assets and their variation points, support hierarchical production lines, and represent the logic that maps from feature choices to asset instances. Further, it needs to either provide version control for the models and artifacts or (even better) work seamlessly on top of the user's own choice of change management system.

A major requirement for the configurator is that it supports the specification and selection of variation in shared assets and artifacts from across the entire spectrum of the lifecycle. This means that the tool will have to support variation in, for example, DOORS requirements modules, Microsoft Word documents and Excel spreadsheets, build files for Make or Ant, Rhapsody UML models, and many more. This often involves having the configurator interface with a variety of tools and manipulate artifacts stored in proprietary formats – something that most configurators cannot do.