You are on page 1of 28

Introduction to

Software Product Lines (SPL)


Software Product Line (SPL)
▪ 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.
Evolution of Software Development

Subroutines

70s
Modules

80s
Objects

90s
Components

Late 90s Product Lines

2000
Overview of SPL
In the product line manager’s view, it should go like this:

Variability

1-Spl

Commonality Develop product 2

2-Spl
Develop core
CORE Develop product 3
product

3-Spl
Software Product Line Engineering

Software product lines refers to engineering techniques for creating a portfolio of similar
software systems from a shared set of software assets

§ A product line represents a family of manufactured products

§ A product line architecture explicitly captures the commonality and variability of a


product line components and their compositions

Software Product Line Engineering makes it possible to


- create software for different products
- use variability to customize the software to each different product

June 25, 2008 5


Product Lines - Motivation
▪ Software is becoming complex
▪ Reuse is becoming an imperative
▪ Mass customization – producing goods and services to meet
individual customer's needs – should be done with near mass
production efficiency

Handcrafted for individual customers

Production Line – Mass Production

Mass Customization: large-scale


production tailored to
individual customers’ needs
Product Lines - Motivation
▪ Any organisation that develops software creates multiple software
applications that have some characteristics in common.
Passive Communication
Attachments
Undo Send
...
GMail

▪ Whatever the commonalities are


amongst the software applications, Text Google Communication Document
Communication Solutions
it is important that these commonalities be Share

managed properly so that the organization


can realize the highest economy of scale.
Hangouts
Active Communication
Video Message
Team Chats
Product Lines – Goals and Characteristics
▪ The three main goals of a software product line are to reduce cost, improve delivery time,
and improve quality.
Reduced
Cost

Reusability Customisation
SPL

Improved Improved
Delivery Time Product Quality

▪ A software product line is a "family of products designed to take advantage of their


common aspects and predicted variabilities“
▪ The software product line practice was designed to manage software products, and their
commonalities were designed to maximize the benefits to the organization.
Software Product Line Engineering
Software product lines refers to engineering techniques for creating a portfolio of similar
software systems from a shared set of software assets

§ A product line represents a family of manufactured products

§ A product line architecture explicitly captures the commonality and


variability of a product line components and their compositions

Software Product Line Engineering makes it possible to


§ create software for different products
§ use variability to customize the software to each different product
Overview of Product Line Engineering Process
Product Line Engineering Framework
Product
Product
Management
Management

Domain Engineering
Domain Engineering: Domain
Domain Domain Domain
Define and realize the commonality Requirements
Design Realisation Testing
Engineering
and variability. The goal is to
establish a reusable platform
Domain Artefacts incl. Variability Model

Requirements Architecture Components Tests

Application Engineering
Application Engineering: Application Application Application Application
Reuse domain artifacts, Requirements
Engineering
Design Realisation Testing
exploiting variability to build a
product. The goal is to derive a
product from the platform Application N – Artefacts incl. Variability Model
Application 1 – Artefacts incl. Variability Model
established in the Domain
Engineering phase
Requirements Architecture Components Tests

Based on the “Software Product Line Engineering” book by Klaus Pohl,Günter Böckle and Frank J. 25,
June van2008
der Linden
Feature Model - a Mechanism to Capture Commonalities
and Variabilities
Feature represents requirement or characteristic of a product
A MP3 Product Line may include the following (high level) features:

Photo Viewer

Audio Codec

Video Codec

Sound Device

Language

Camera

FM Radio

A feature model describes all possible features of a system, and


also defines semantic relationships between these features

12
Managing Product Line Systems
▪ A product line is a decomposition of the entire application
portfolio of an organization according to these common
characteristics.

Figure 4-1. Product line development.


Core Asset Development

▪ Core asset development is the creation and maintenance of the artifacts or core
assets in the product line.
▪ These core assets are used to create systems that match the quality criteria of
the product line. For example, if the types of products that are developed in the
product line have a high maintainability requirement, then the core assets
should reflect this requirement and account for the need for good
maintainability.
▪ The goal of the core asset development activity is to create a capability within
the organization to produce a particular type of application and will thus yield
the same or similar software architecture.
Product Development
▪ The second constituency is product development.
▪ Product development involves the creation of products or systems from the
core assets of the product line.
▪ If a system requires an asset that is not included in the core assets, the core
asset must be created if the asset can be shared across multiple products in
the product line. It is a strategic decision whether or not to build a new core
asset or to create a product-specific feature to the project under development.
▪ If the core asset that exists in the product line does not match the quality
requirements of the product under development, the core asset may be
enhanced or modified.
What makes software product lines work?

Skill in predicting the future! (Or making it happen.)

The characteristic that distinguishes software product lines from previous


efforts is predictive versus opportunistic software reuse.
Rather than put general software components into a library in hopes that
opportunities for reuse will arise, software product lines only call for
software artifacts to be created when reuse is predicted in one or more
products in a well defined product line.
SPL Production
Software Product 1
Product Line Production Production Production
Development Product 2
Strategy Method Plan
Organization Product 3

Core Assets
The core assets and product production system must be jointly engineered to
achieve the organization’s goals for the software product line.

How can product development satisfy the organization’s goals for the
software product line?
The goal is to reduce the risk to product line organizations by providing explicit
techniques for strategizing and planning for product production.
The focus of our work is on product production as a system that is engineered to
have specified production qualities and predictable outputs.
What processes, models, and technologies can be used to ensure
consistency across the core assets?
What does the product developer need to know to effectively utilize
the core assets to develop products?
Product Line Benefits
▪ From the SEI:

Benefits
▪ Product lines can help organizations overcome the problems caused by resource shortages.
Organizations of all types and sizes have discovered that a product line strategy, when skillfully
implemented, can produce many benefits—and ultimately give the organizations a competitive edge. 
• Improved productivity by as much as 10x
• Increased quality by as much as 10x
• Decreased cost by as much as 60%
• Decreased labor needs by as much as 87%
• Decreased time to market (to field, to launch) by as much as 98%
• Ability to move into new markets in months, not years
Product Line Benefits
▪ There are many benefits to establishing a product line.
▪ Principally, the product line leads to reduced cost and faster time
to market for new projects. Also, a product line approach to
software development will lead to a more portable staff because
the architecture is similar from project to project.
▪ Finally, risks are also reduced and quality is improved because the
architecture has been proven on multiple projects.
Product Line Benefits
▪ Flexible Staffing and Productivity
There is much more flexibility when moving people around the organization since
they become familiar with the set of shared tools, components, and processes
of each product line.
▪ A critical product development effort can benefit from using people from other
product development teams who are familiar with the product line's core
assets.
▪ The learning curve is shortened because the shared assets of the product line
are familiar to staff who work on the products in the product line.
Product Line Benefits
▪ Increased Predictability
In a shared product line, several products are developed using a
set of common core assets, a shared architecture and production
plan, and people with experience for creating products within the
product line.
▪ These core assets and architecture are proven on several products.
Project managers and other stakeholders will have more
confidence in the success of new projects within the product line
because of the proven set of core assets and people.
Product Line Benefits
▪ Higher Quality
Because core assets serve the needs of more than one project, they must be of
higher quality. Also, multiple projects exercise the shared assets in more ways
than a single project would, so the shared assets will have a much higher
quality. In addition, the shared architecture of the product line is also proven
through implementation by several projects.

Not only are core assets of higher quality, but the applications that are
developed from them are of higher quality. This stems from the high quality of
the core assets, staff that have higher expertise, more project predictability,
and a proven quality assurance process at the product line level.
Model-driven Software Product Lines
(MD-SPLs)

Technology is the effort to save efforts


José Ortega y Gasset
Introduction to Model-driven Product Line Engineering
(PLE)
Product-Line Engineering (PLE) Model-Driven Engineering (MDE)

Vision  Vision
 Development activities oriented  Capture core software assets as
around product families platform-independent models (PIMs)
 Manage commonalities and  Automatically map PIMS to PSMs to code
variabilities through model transformation

 Obstacles 1

 Larges upfront

3
2

investment
 Poor connection with
regular “single-
system” technology
SPLE + MDE = MDPLE

▪ Both SPLE and MDA provide benefits in software development.


▪ SPLE provides the methodology for the variability management both in
the domain engineering and application engineering phases.
▪ MDA provides mechanisms for abstraction, modeling standards,
persistence and data and metadata exchange.
▪ The proposal for the joint use of both approaches is what is known as
Model-driven Product Line Engineering (MDPLE).
MDE for SPL

CIM Domain Engineering

PIM Application
Design

Application
Engineering

PSM Application
Implementation

Core
Features
Assets
Feature Feature Feature
CIM Model 1 Model 2 Model N

Code Generation
PIM Core
Model Transformation
Model Product
Multi Platform Development
Family

PSM
- Model as Artifacts of Development
- Generating Multiplatform Code Development
Benefits of MDPLE

▪ Development of Product Line Core Assets and Features from Models


▪ Minimize or eliminate to develop code for Core Assets
▪ Abstraction of the Product Line Complexities
▪ Multi-platform Code Generation
▪ Reverse Engineering from Code to the Core Assets
▪…

You might also like