Skip to content

Software Product Lines

Concept · Chapter 2

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.

  • 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.
  • Reduced development effort
  • Lower costs
  • Increased productivity
  • Increased quality
  • Decreased time to market

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.

  • 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.
  • Software Architect’s Handbook (Packt, 2018), Ch.2 “Software product lines”, pp. 132-135.