Introducing Software Product Lines (SPL) Silvio Romero de Lemos Meira Eduardo Santana de Almeida
Recent area 2002
Evolution 1960 subroutines 1970 modules 1980 objects 1990 components 2000 SPL
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
Essential Factors Investment Planning Direction Business Strategy Management
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
Core Asset Development Management Core Asset Development
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
Product Development Product Development Management
Critical role in the successful fielding of a product line Technical –Core asset development –Product development Organizational –Training –Funding –Risks
CBD Rules DE Costs Cultural SPL
Questions ?
References [Clements, 2002] P. Clements., L. Northrop., Software Product Lines: Practices and Patterns, Addison-Wesley, [SEI, 2000] L. Northrop., SEI’s Software Product Line Tenets, IEEE Software, July/August, Vol. 19, No 04, 2002.
Software Reuse Environment: Discussion