Product Family Engineering
Encyclopedia
Product family engineering (PFE), also known as product line engineering, is a synonym for "domain engineering
Domain engineering
Domain engineering, also called product line 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. A key idea in systematic software reuse is the application domain, a software area that contains...

" created by the Software Engineering Institute
Software Engineering Institute
The Carnegie Mellon Software Engineering Institute is a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. SEI also has offices in Arlington, Virginia, and Frankfurt, Germany. The SEI operates...

, a term coined by James Neighbors in his 1980 dissertation at University of California, Irvine
University of California, Irvine
The University of California, Irvine , founded in 1965, is one of the ten campuses of the University of California, located in Irvine, California, USA...

. Software product lines
Software product lines
Software product lines, 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 production....

 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
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...

 of an organization's product platform. 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 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
    Product management is an organizational lifecycle function within a company dealing with the planning, forecasting, or marketing of a product or products at all stages of the product lifecycle....

  • Phase 2: Domain engineering
    Domain engineering
    Domain engineering, also called product line 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. A key idea in systematic software reuse is the application domain, a software area that contains...

  • Phase 3: Product engineering
    Product engineering
    Product engineering refers to the process of designing and developing a device, assembly, or system such that it be produced as an item for sale through some production manufacturing process. Product engineering usually entails activity dealing with issues of cost, producibility, quality,...



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. 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 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 (project management)
In project management, the term scope has two distinct uses: Project Scope and Product Scope.Project Scope"The work that needs to be accomplished to deliver a product, service, or result with the specified features and functions."Product Scope...

, 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 guideline
Guideline
A guideline is a statement by which to determine a course of action. A guideline aims to streamline particular processes according to a set routine or sound practice. By definition, following a guideline is never mandatory. Guidelines are not binding and are not enforced. A guideline is a statement...

s, constraints and the product strategy
Marketing strategies for product software
Marketing strategies for product software assist software firms to determine the type of market analysis that is needed for decision-making. Two general strategies that are well known in the marketing discipline are:* marketing mix; and...

.

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 variable requirements.

Design domain

This process step consists of activities for defining the reference architecture
Reference architecture
A reference architecture in the field of software architecture or enterprise architecture provides a template solution for an architecture for a particular domain. It also provides a common vocabulary with which to discuss implementations, often with the aim to stress commonality...

 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
Requirements analysis
Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users...

 for the individual product and reuse the requirements from the preceding phase.

Design product

All activities for producing the product architecture
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...

. 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 "[unsatisfied]".

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.
Concept Definition

Domain
analysis

Document contains an analysis of the
domain through which common and variable requirements can be split up.

Reusable
common requirements


Document contains requirements that are
common to all products in the product line.

Variable requirements

Document contains derivation of
customised requirements for different products.

Reference
Architecture

Determines the static and dynamic
decomposition that is valid for all products of the product line. Also the
collection of common rules guiding the design, realisation of the parts, and
how they are combined to form products.

Variability
model

Defines the variability of the product line.

Design & implementation assets of reusable components

The major components for the design and
implementation aspects, which are relevant for the whole product family.

Test
results

The output of the tests performed in
domain testing.

Reusable
test artifacts

Test artifacts include the domain test
plan, the domain test cases, and the domain test case scenarios.

Requirements
specifications

The requirements for a particular
product.

Product
architecture

Comparable to reference architecture, but
this contains the product specific architecture.

Running
application

A working application that can be tested
later on.

Detailed
design artifacts

These include the different kinds of
models that capture the static and dynamic structure of each component.

Test
report

Document with all test results of the
product.

Problem
report

Document, which lists all problems
encountered while testing the product.

Final
product

The delivery of the completed product.

Family
model

The overlapping concept of all family
members with all sub products.

Family
member

The concept of the individual product.

Context
document

Document containing important information
for determining the scope; containing guidelines, constraints and production
strategy.

Guidelines

Market/business/product guidelines

Constraints

Market/business/product constraints

Product
strategy

Product strategy with regard to markets

Product
portfolio description

Portfolio containing all available
products, with important properties.

List of
current & future products

A list of all current products and the
products that will be produced in the future.

Product
roadmap

Describes the features of all products of
the product line and categorises the feature into common features that are
part of each product and variable features that are only part of some
products.


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
Consumer electronics are electronic equipment intended for everyday use, most often in entertainment, communications and office productivity. Radio broadcasting in the early 20th century brought the first major consumer product, the broadcast receiver...

 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
Mobile phone
A mobile phone is a device which can make and receive telephone calls over a radio link whilst moving around a wide geographic area. It does so by connecting to a cellular network provided by a mobile network operator...

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. During the first phase, product management
Product management
Product management is an organizational lifecycle function within a company dealing with the planning, forecasting, or marketing of a product or products at all stages of the product lifecycle....

, it is possible to define the scope of the different mobile phone series. During the second phase, domain engineering
Domain engineering
Domain engineering, also called product line 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. A key idea in systematic software reuse is the application domain, a software area that contains...

, 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
Product engineering refers to the process of designing and developing a device, assembly, or system such that it be produced as an item for sale through some production manufacturing process. Product engineering usually entails activity dealing with issues of cost, producibility, quality,...

, 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
    Automatic programming
    In computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level....

  • Domain analysis
    Domain analysis
    In software engineering, domain analysis, or product line analysis, is the process of analyzing related software systems in a domain to find their common and variable parts. It is a model of wider business context for the system. The term was coined in the early 1980s by James Neighbors. Domain...

  • Feature model
    Feature model
    Feature model is a compact representation of all the products of the Software Product Line in terms of "features". Feature models are visually represented by means of feature diagrams. Feature models are widely used during the whole product line development process and are commonly used as input...

  • Feature Oriented Programming
    Feature Oriented Programming
    Feature Oriented Programming or Feature Oriented Software Development is a general paradigm for program synthesis in software product lines....

  • Multiagent systems product lines
    Multiagent systems product lines
    On the one hand, the field of Software Product Lines covers all the software development lifecycle necessary to develop a family of products where the derivation of concrete products is made systematically and rapidly...

  • Systems Engineering
  • Version Management

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK