What is a software product line and why should you care? A software product line is a family of products that share characteristics. The idea is that a product line can help you reduce cost, while improving delivery time and quality, by sharing process, components, infrastructure and knowledge. In A Practical Guide to Enterprise Architecture (Coad Series), James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about software product lines.
What is a Software Product Line
A product line is a family of related products. McGovern, Ambler, Stevens, Sharan, and Jo write:
A software product line is a “family of products designed to take advantage of their common aspects and predicted variabilities” [Weiss 1999]
3 Goals of a Product Line
According to McGovern, Ambler, Stevens, Sharan, and Jo the 3 goals of a product line are:
1. Reduce Cost
2. Improve delivery time
3. Improve quality
Core Assets of a Product Line
According to McGovern, Ambler, Stevens, Linn, Sharan, and Jo, the core assets of a product line are shared components, infrastructure tools, process, documentation, and shared architecture:
Any organization that has many software systems will notice that many of those software systems have characteristics in common. When a set of systems has common characteristics, they are candidates to become part of a product family or product line. A product line has a set of core assets upon which a shared family of systems is built. Core assets include shared components, infrastructure, tools, process, documentation, and above all else, shared architecture.
4 Aspects of a Product Line
McGovern, Ambler, Stevens, Linn, Sharan, and Jo identify four aspects of a product line:
- Shared process
- Shared components
- Shared infrastructure
- Shared knowledge
Core Asset Development, Product Development, Management
According to McGovern, Ambler, Stevens, Linn, Sharan, and Jo, a product line is a cooperation among core asset development, product development, and management:
- Core asset development – Core asset development is the creation and maintenance of the artifacts or core assets in the product line.
- Product development – Product development involves the creation of products or systems from the core assets of the product line. If a system requires an asset that is not included in the core assets, the core asset must be created if the asset can be shared across multiple products in the product line. It is a strategic decision whether or not to build a new core asset or to create a product-specific feature to the project under development.
- Management – Management consists of the management of individual projects within the product line, as well as overall product line managemers. Management must be inovlved to ensure that core asset development and product development are interacting correctly. Instituting a product line practice at an organization requires a strong commitment from management. it is also important to identify which assets are part of the product line and which ones are part of the development of individual products of the system.
Benefits of a Product Line
McGovern, Ambler, Stevens, Linn, Sharan, and Jo outline the following potential benefits:
- Reduced cost
- Improved time to market
- Flexible staffing and productivity
- Increased predictability
- Higher quality
Key Take Aways
Here’s my key take aways:
- The core assets of a product line include shared components, infrastructure tools, process, documentation, and shared architecture.
- Product lines are a cooperation among core asset development, product development, and management.
- The four aspects of a product line include shared process, shared components, shared infrastructure, and shared knowledge.
- Potential benefits include better, faster, cheaper software.
Additional Resources
- Software Product Lines (SEI)
- Product Lining (Wikipedia)
My Related Posts
[…] Software Product Lines […]