A software product line (SPL) is a set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way.
At SoftwareProductsLines.com, Charles Krueger defines them as follows:
Software product lines refers to engineering techniques for creating a portfolio of similar software systems from a shared set of software assets using a common means of production.
The key objectives of software product lines are: to capitalize on commonality and manage variation in order to reduce the time, effort, cost and complexity of creating and maintaining a product line of similar software systems.
- Capitalize on commonality through consolidation and sharing within the software asset inputs, thereby avoiding duplication and divergence.
- Manage variation by clearly defining the variation points and decision model, thereby making the location, rationale, and dependencies for variation explicit.
Closely related to software product lines is the notion of software product families and Product Family Engineering. In many cases the terms product-line and product-family are used interchangeably. Sometimes a product-family is slightly more general in that a product-family may comprise one or more product-lines. The SEI has established a Framework for Software Product-Line Practices that encompasses topics such as architecture, organization, patterns, business-case, and even a section on configuration management for software product-lines.