A Framework for Software Product Line Practice, Version 5.0
The goals of this framework are
- to identify the foundational concepts underlying software product lines and the essential activities to consider before developing a product line
- to identify practice areas that an organization developing
software product lines must master
Although these practice areas may be required for engineering any software system, the product line context imposes special constraints requiring that they be carried out in an unconventional way.
- to define example practices in each practice area, where
current knowledge is sufficient to do so
For example, "Configuration Management" is a practice area that applies to any software development effort, but it has special implications for product line development. Thus, we identify it as a practice area and define one or more effective configuration management practices for product lines. In many cases, the definition of the practice is a reference to a source outside this document.
- to provide guidance to an organization about how to move to a
product line approach for software
Organizations using this framework should be able to understand the state of their product line capabilities by (1) understanding the set of essential practice areas, (2) assessing how practices in those areas differ from their conventional forms for single product development, and (3) comparing that set of practices to the organization's existing skill set.
As such, this framework can serve as the basis for a technology and improvement plan aimed at achieving product line development goals.
Every organization is different and comes to the product line approach with different goals, missions, assets, and requirements. Practices for a product line builder will be different from those for a product line acquirer, and different still for a component or service vendor. Appropriate practices will also vary according to
- the type of system being built
- the depth of the organization's domain experience
- the legacy assets on hand
- the organizational goals
- the maturity of artifacts and processes
- the skill level of the personnel available
- the production strategy embraced
- many other factors
There is no one correct set of practices for every organization; hence, we do not prescribe a methodology consisting of a set of specific practices. The framework is not a maturity model1 or a process guide. We are prescriptive about the practice areas and prescribe that organizations adopt appropriate practices in each practice area. This document contains practices that we have seen work successfully.
This framework has been used by organizations, large and small, to help them plan to adopt a product line approach, as well as to help them gauge how they're doing and in what areas they're falling short. We use it to guide our collaborations with customers and to focus in on the areas where our collaboration will best assist our customers. We also use it as the basis for conducting an SEI Product Line Technical Probe (PLTP)formal diagnostics of an organization's product line fitness [Clements 2002c, Ch. 8; SEI 2007e]. The framework is a living, growing document that represents our best picture of sound product line practice as described to us by its many users and reviewersall of whom are practitioners. The framework has served successfully as the basis for technology and improvement plans that achieve product line goals.
1 For a discussion of the relationship between Capability Maturity Model Integration (CMMI) and this framework, see the work of Jones and Soule [Jones 2002a].