Product-family engineering (PFE), also known as product-line engineering, is based on the ideas of "
domain engineering Domain engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse and product line engineering. A key idea in systematic software reuse is the domain. M ...
" created by the
Software Engineering Institute
The Software Engineering Institute (SEI) is an American research and development center headquartered in Pittsburgh, Pennsylvania. Its activities cover cybersecurity, software assurance, software engineering and acquisition, and component capab ...
, a term coined by James Neighbors in his 1980 dissertation
[https://escholarship.org/uc/item/5687j6g6 Software construction using components, Retrieved 2021-01-09] at
University of California, Irvine
The University of California, Irvine (UCI or UC Irvine) is a public land-grant research university in Irvine, California. One of the ten campuses of the University of California system, UCI offers 87 undergraduate degrees and 129 graduate and p ...
.
Software product lines are quite common in our daily lives, but before a
product family can be successfully established, an extensive process has to be followed. This process is known as product-family engineering.
Product-family engineering can be defined as a method that creates an underlying
architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing buildings ...
of an organization's product
platform
Platform may refer to:
Technology
* Computing platform, a framework on which applications may be run
* Platform game, a genre of video games
* Car platform, a set of components shared by several vehicle models
* Weapons platform, a system ...
. It provides an architecture that is based on commonality as well as planned variabilities. The various product variants can be derived from the basic product family, which creates the opportunity to reuse and differentiate on products in the family. Product-family engineering is conceptually similar to the widespread use of
vehicle platforms in the
automotive industry.
Product-family engineering is a relatively new approach to the creation of new products. It focuses on the process of engineering new products in such a way that it is possible to reuse product components and apply variability with decreased costs and time. Product-family engineering is all about reusing components and structures as much as possible.
Several studies have proven that using a product-family engineering approach for product development can have several benefits (Carnegie Mellon (SEI), 2003). Here is a list of some of them:
* Higher productivity
* Higher quality
* Faster time-to-market
* Lower labor needs
The Nokia case mentioned below also illustrates these benefits.
Overall process
The product family engineering process consists of several phases. The three main phases are:
* Phase 1:
Product management
Product management is the business process of planning, developing, launching, and managing a product or service. It includes the entire lifecycle of a product, from ideation to development to go to market. Product managers are responsible for ...
* Phase 2:
Domain engineering Domain engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse and product line engineering. A key idea in systematic software reuse is the domain. M ...
* Phase 3:
Product engineering
Product engineering refer to the process of designing and developing a device, assembly, or system such that it be produced as an item for sale through some product manufacturing process. Product engineering usually entails activity dealing with ...
The process has been modeled on a higher abstraction level. This has the advantage that it can be applied to all kinds of product lines and families, not only
software
Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work.
...
. The model can be applied to any product family. Figure 1 (below) shows a model of the entire process. Below, the process is described in detail. The process description contains elaborations of the activities and the important concepts being used. All concepts printed in italic are explained in Table 1.
Phase 1: product management
The first phase is the starting up of the whole process. In this phase some important aspects are defined especially with regard to economic aspects. This phase is responsible for outlining market strategies and defining a
scope
Scope or scopes may refer to:
People with the surname
* Jamie Scope (born 1986), English footballer
* John T. Scopes (1900–1970), central figure in the Scopes Trial regarding the teaching of evolution
Arts, media, and entertainment
* CinemaS ...
, which tells what should and should not be inside the product family.
Evaluate business visioning
During this first activity all context information relevant for defining the scope of the product line is collected and evaluated. It is important to define a clear market strategy and take external market information into account, such as consumer demands.
The activity should deliver a ''context document'' that contains
guidelines,
constraints and the
product strategy
Product strategy defines the high-level plan for developing and marketing a product, how the product supports the business strategy and goals, and is brought to life through product roadmaps. A product strategy describes a vision of the future wi ...
.
Define product line scope
Scoping techniques are applied to define which aspects are within the scope. This is based upon the previous step in the process, where external factors have been taken into account. The output is a ''product portfolio'' description, which includes a ''list of current and future products'' and also a
product roadmap.
It can be argued whether phase 1, product management, is part of the product-family-engineering process, because it could be seen as an individual business process that is more focused on the management aspects instead of the product aspect. However phase 2 needs some important input from this phase, as a large piece of the scope is defined in this phase. So from this point of view it is important to include the product-management phase (phase 1) into the entire process as a base for the domain-engineering process.
Phase 2: domain engineering
During the domain-engineering phases, the variable and common requirements are gathered for the whole product line. The goal is to establish a reusable platform. The output of this phase is a set of ''common and variable requirements'' for all products in the product line.
Analyze domain requirements
This activity includes all activities for analyzing the domain with regard to concept requirements. The requirements are categorized and split up into two new activities. The output is a document with the ''domain analysis''.
As can be seen in Figure 1 the process of defining common requirements is a parallel process with defining variable requirements. Both activities take place at the same time.
Define common requirements
Includes all activities for eliciting and documenting the common requirements of the product line, resulting in a document with ''reusable common requirements''.
Define variable requirements
Includes all activities for eliciting and documenting the variable requirements of the product line, resulting in a document with ''variable requirements''.
Design domain
This process step consists of activities for defining the
reference architecture of the product line. This generates an abstract structure for all products in the product line.
Implement domain
During this step a detailed design of the reusable components and the implementation of these components are created.
Test domain
Validates and verifies the reusability of components. Components are tested against their specifications. After successful testing of all components in different use cases and scenarios, the domain engineering phase has been completed.
Phase 3: product engineering
In the final phase a product X is being engineered. This product X uses the commonalities and variability from the domain engineering phase, so product X is being derived from the platform established in the domain engineering phase. It basically takes all common requirements and similarities from the preceding phase plus its own variable requirements. Using the base from the domain engineering phase and the individual requirements of the product engineering phase a complete and new product can be built. After that the product has been fully tested and approved, the product X can be delivered.
Define product requirements
Developing the product
requirements specification for the individual product and reuse the requirements from the preceding phase.
Design product
All activities for producing the product
architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing buildings ...
. Makes use of the reference architecture from the step "design domain", it selects and configures the required parts of the ''reference architecture'' and incorporates product specific adaptations.
Build product
During this process the product is built, using selections and configurations of the ''reusable components''.
Test product
During this step the product is verified and validated against its specifications. A test report gives information about all tests that were carried out, this gives an overview of possible errors in the product. If the product in the next step is not accepted, the process will loop back to "build product", in Figure 1 this is indicated as "
nsatisfied.
Deliver and support product
The final step is the acceptance of the final product. If it has been successfully tested and approved to be complete, it can be delivered. If the product does not satisfy to the specifications, it has to be rebuilt and tested again.
The next figure shows the overall process of product-family engineering as described above. It is a full process overview with all concepts attached to the different steps.
Process data diagram
On the left side the entire process from the top to bottom has been drawn. All activities on the left side are linked to the concepts on the right side through dotted lines. Every concept has a number, which reflects the association with other concepts.
List of concepts
Below the list with concepts will be explained. Most concept definitions are extracted from Pohl, Bockle, & Linden (2005) and also some new definitions have been added.
Table 1: List of concepts
Example
There are some good examples of the use of product family engineering, which were quite successful. The abstract model of product family engineering allows different kinds of uses, most of them are related to the
consumer electronics
Consumer electronics or home electronics are Electronics, electronic (Analogue electronics, analog or digital electronics, digital) equipment intended for everyday use, typically in private homes. Consumer electronics include devices used for ...
market. Below an example is given of an application of the product line engineering process, based on a real experience of Nokia.
Nokia produces different types of products. Among them is a
mobile phone
A mobile phone, cellular phone, cell phone, cellphone, handphone, hand phone or pocket phone, sometimes shortened to simply mobile, cell, or just phone, is a portable telephone that can make and receive telephone call, calls over a radio freq ...
s product family, currently containing 25 to 30 new products every year. These products are sold all over the world, which makes it necessary to support many different languages and user interfaces. A main problem here is that several different user interfaces must be supported, and because new products succeed each other very quickly, this should be done as efficiently as possible. Product family engineering makes it possible to create software for the different products and use variability to customize the software to each different mobile phone.
The Nokia case is comparable with a normal
software product line Software product lines (SPLs), or software product line development, refers to software engineering methods, tools and techniques for creating a collection of similar software systems from a shared set of software assets using a common means of pr ...
. During the first phase,
product management
Product management is the business process of planning, developing, launching, and managing a product or service. It includes the entire lifecycle of a product, from ideation to development to go to market. Product managers are responsible for ...
, it is possible to define the scope of the different mobile-phone series. During the second phase,
domain engineering Domain engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse and product line engineering. A key idea in systematic software reuse is the domain. M ...
, requirements are defined for the family, and for the individual types of phones, e.g., 6100/8300 series. In this phase, the software requirements are made, which can serve as a base for the whole product family. This speeds the overall development process for the software. The last phase,
product engineering
Product engineering refer to the process of designing and developing a device, assembly, or system such that it be produced as an item for sale through some product manufacturing process. Product engineering usually entails activity dealing with ...
, is more focused on the individual types of phones. The requirements from the preceding phase are used to create individual software for the type of phone then being developed.
The use of a product line gave Nokia the opportunity to increase their production of new mobile-phone models from 5-10 to around 30. Carnegie Mellon (SEI), 2006, Clements & Northrop (2003).
See also
*
Automatic programming
*
Domain analysis
*
Feature model
*
Feature-oriented programming
*
Multiagent systems product lines
*
Systems Engineering
Systems engineering is an interdisciplinary field of engineering and engineering management that focuses on how to design, integrate, and manage complex systems over their life cycles. At its core, systems engineering utilizes systems thinking ...
*
Version Management
In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
References
*
Jan Bosch
Jan Bosch (born 1967) is a Dutch computer scientist, Professor of Software Engineering at the University of Groningen and at Chalmers University of Technology, and IT consultant, particularly known for his work on software architecture. Bass, Len. ...
, Design and use of software architectures: adopting and evolving a product-line approach, ACM Press/Addison-Wesley Publishing Co., New York, NY, 2000 https://www.amazon.com/Design-Use-Software-Architectures-Bosch/dp/0201674947
* Carnegie Mellon Software Engineering Institute (SEI). Software Product Lines. Retrieved February 17, 2006, from: https://web.archive.org/web/20171005173029/http://www.sei.cmu.edu/productlines/
* Clements P. & Northrop L.M. (2003). Software Product Lines. Presentation Carnegie Mellon Software Engineering Institute. Retrieved March 26, 2006, from: http://www.sei.cmu.edu/
* European Software Institute (ESI). Retrieved February 17, 2006, from: https://web.archive.org/web/20070203151901/http://www.esi.es/Families/famResults.html
* Pohl K., Bockle G., & Linden F. van der (2005). Software Product Line Engineering. Berlin, Heidelberg, New York: Springer-Verlag. {{ISBN, 978-3-540-28901-2 https://www.amazon.com/Software-Product-Line-Engineering-Foundations-dp-3540243720/dp/3540243720
External links
Carnegie Mellon Software Engineering Institute (SEI) Software Product Lines (Archived Copy)(ESI)
Software Product LinesSoftware Product Line Engineering Course, B. Tekinerdogan, Bilkent University
Product management