Product Line Engineering Defined
Systems and Software Product Line Engineering, abbreviated as Product Line Engineering (or PLE for short), refers to the engineering of a portfolio of related products using a shared set of engineering assets and an efficient means of production.
A product line is defined as a family of similar products or systems with variations in features and functions. Each product is described by giving a list of its features: "A prominent or distinctive user-visible aspect, quality, or characteristic of a software system or systems". Features are used to express product differences in all lifecycle phase artifacts. This streamlines the engineering process and lets all stakeholders speak the same language.
In the PLE Factory paradigm, we need a way to describe what product we're building, so the shared assets (requirements, designs, code, test cases, user manuals, etc.) can be configured appropriately. Rather than adopt a different "language" and mechanism for each artifact (for example, compiler directives for code, attributes for requirements, text variables for documents, and so forth), we uses a small and consistent set of variation mechanisms for all of the artifacts.
Application engineering shrinks to almost nothing; products are produced through the use of high-end industrial-strength automation that configures the shared assets appropriately to produce the product asset instances for that product.
As shown in the illustration, the PLE Factory configurator automatically derives products from a wide variety of shared assets. Features are used to describe the products' variations, and to tell the configurator the germane characteristics of the product it is to derive by configuring the assets.