introducing software product lines (spl) silvio romero de lemos meira eduardo santana de almeida...
TRANSCRIPT
Introducing Software Product
Lines (SPL)Silvio Romero de Lemos Meira Eduardo Santana de Almeida
Previous Classes
Software Reuse
Domain Engineering
Component-Based Development
Product Lines
Overview
Success and Failure Factors
Myths
Inibitors
Overview
Steps
Scoping
Elements
Overview
Origins
Concepts
Elements
Overview
Concepts
Steps
Software Product Line
“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.
Paul Clements and Linda Northrop, 2002
“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.
Paul Clements and Linda Northrop, 2002
Is Product Lines a new approach?
• Small-Grained Reuse• Single-System Development
with Reuse• Component-Based
Development• Reconfigurable Architecture• Release and versions of
Single Products
Small-Grained Reuse
• Reuse of pieces of code– Algorithms, modules, objects, components
• Company Libraries– Poor documentation– Ineficient search mechanisms
• Opportunistic reuse• Software Product Line
– Reuse is planned, comprehensive, and enabled
• Asset base– Requirements, domain models, architecture, test
cases.....
Single-System Development with
Reuse
• Software Product Line– Assets designed for reuse– Product line is treated as a whole
Just Component-Based Development
• Products in product lines are composed of components, however:– Product-Line Architecture– Production Plan– Technical and Organizational Management
Others
• Reconfigurable Architecture– Variability Points
• Release and versions of Single Products– Previous versions
Organizational Benefits
• To achieve large-scale productivity gains• To improve time-to-market• To maintain market presence• To improve product quality• To increase customer satisfaction• To achieve reuse goals• To enable mass customization
Product Line asset repository Benefits
• Requirements
• Architecture
• Components
• Modeling and Analysis
• Testing
• Planning
Essential Activities
Management
Core Asset Development
Product Development
Domain Engineering Application Engineering
Product Line Scope
• Product Line scope is a description of the products, that will constitute the product line or that the product line is capable of including
• Fundamental activity {Scoping}
• Commonality and Variability
• Iterative process
Core assets
• Core assets are the basis for production of products in the product line
• Core assets– Architecture {scope, styles, patterns, and
frameworks}– Components– Test plans, Test cases– Documentation– Domain models– Requirements– Commercial off-the-shelf (COTS) components
Production Plan
• A production plan describes how the products are produced from the core assets {reuser’s guide}
• A Set of attached process {with the glue}
• Production Plan describes:– Tools– Metrics, Metric Plan
Management
• Critical role in the successful fielding of a product line
• Technical – Core asset development– Product development
• Organizational– Training– Funding– Risks
References
• [Clements, 2002] P. Clements., L. Northrop., Software Product Lines: Practices and Patterns, Addison-Wesley, 2002.
• [SEI, 2000] L. Northrop., SEI’s Software Product Line Tenets, IEEE Software, July/August, Vol. 19, No 04, 2002.