Software Product Lines
Concept · Chapter 2
Overview
Section titled “Overview”Competitive pressure and software complexity push organizations to increase efficiency. One way is a software product line — multiple products from one company addressing a particular need or market, often sold under a shared brand (so a customer of one product is more likely to buy another). Many industries, including software, use product line engineering (PLE) successfully.
The idea: reuse from core assets
Section titled “The idea: reuse from core assets”- An org’s products often share similar functional/non-functional requirements and look-and-feel.
- Without reuse, the same functionality gets written repeatedly.
- Architects should build systems from core assets — a solution for one product can serve another; architectural components are reused so a generic solution solves the same problem across products.
- Product lines can also grow by acquiring software (or companies), which becomes a new line or merges into an existing one. This is a concrete application of leveraging design principles and existing solutions.
Benefits
Section titled “Benefits”- Reduced development effort
- Lower costs
- Increased productivity
- Increased quality
- Decreased time to market
Core assets
Section titled “Core assets”Reusable components sharing a common architecture. Examples:
- Requirements analysis
- Domain models and analysis
- Software architecture design
- Test plans and test cases
- Work plans, schedules, budgets
- Processes, methods, tools
- Employees’ knowledge, skills, and experience
- User guides and technical documentation
Variation points: because each product varies, core assets must be built with variation points — places that let the team tailor an asset for a specific product. Reusing assets (via variation points) costs less time/effort than recreating them.
Risks of product line engineering
Section titled “Risks of product line engineering”- Requires a new technical strategy org-wide, plus coordination and managerial support.
- Development teams must clearly know which core assets exist and what the variation points are.
- The product line’s scope must be neither too broad nor too narrow.
- Building all products in-house demands successful execution by architects/teams plus proper management; acquiring products demands adequate technical and managerial resources to identify and reuse common components.
- Organizations not prepared to fully adopt the approach may fail. Reuse also underpins evolutionary architecture.
Citations
Section titled “Citations”- Software Architect’s Handbook (Packt, 2018), Ch.2 “Software product lines”, pp. 132-135.