A Framework for Software Product Line Practice, Version 5.0
A Note on Terminology
In this document we use the following terms:
-
A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy 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. (This is the definition we provided in "What Is a Software Product Line?")
-
Core assets are those reusable artifacts and resources that form the basis for the software product line. Core assets often include, but are not limited to, the architecture, reusable software components, domain models, requirements statements, documentation, specifications, performance models, schedules, budgets, test plans, test cases, work plans, and process descriptions. The architecture is key among the collection of core assets.
-
Development is a generic term used to describe how core assets (or products) come to fruition. Software enters an organization in any one of three ways: (1) the organization can build it itself (either from scratch or by mining legacy software), (2) purchase it or license it (using it largely unchanged), or (3) commission it (contract with someone else to develop it especially for that organization). So our use of the term development may actually involve building, acquisition, purchase, retrofitting earlier work, or any combination of these options. We recognize and address these options, but we use development as the general term.
-
A domain is a specialized body of knowledge, an area of expertise, or a collection of related functionality. For example, the telecommunications domain is a set of telecommunications functionality, which, in turn, consists of other domains such as switching, protocols, telephony, and networks. A telecommunications software product line is a specific set of software systems that provide some of that functionality.
- Software product line practice is the systematic use of core assets to assemble, instantiate, or generate the multiple products that constitute a software product line. The appropriate verb depends on the production method for the product line. Software product line practice involves strategic, large-grained reuse.
Some practitioners use a different set of terms to convey essentially the same meaning. For some, a product line is a profit and loss center concerned with turning out a set of products; it refers to a business unit, not a set of products. The product family is that set of products we call the product line. The software assets in the core asset base are sometimes called a platform. What we call core asset development is sometimes referred to as domain engineering, and what we call product development is sometimes referred to as application engineering.
The terminology is not as important as the concepts. That having been said, you might encounter different terms in other places and should be able to translate them. These and other related terms are defined in the glossary.



