Tuesday, June 17, 2008 2:57 PM
Paulo Sousa
Software Product Lines
Software Product Lines (SPL) are a way of managing the development process focusing on planned reuse thru a large number of products (a product family).
The Software Engineering Institute (SEI) defines a SPL as (emphasis mine):
A Software Product Line is a set of software-intensive systemssharing 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
[Clemens and Northrop 2001]
It's basically a concept about software industrialization, repeatable processes and strategic reuse of core assets (e.g., requirements, architecture, components, tests, ...) which try to capitalize on the commonality across scores of families of similar systems to predictably and efficiently achieve business and mission goals.
The main activities necessary to put in place a SPL are:
- core asset development - the goal of the core asset development activity is to establish a production capability for products. this consist of developing reusable and configurable core assets (thru variability) as well as defining the production plan (i.e., the way an asset can be used in a product)
- product development - product builders use the core assets, in accordance with the production plan, to produce products that meet their respective requirements. Product builders also have an obligation to give feedback on any problems or deficiencies encountered with the core assets, so the core asset base remains healthy and viable.
- management - Activities must be given resources, coordinated, supervised both at the technical and organisational level. Technical management oversees the core asset development group and the product development group. Organizational management is the final authority for the success or failure of SPL and deals with the external interfaces.
Beneath the level of these essential activities are essential practices that fall into practice areas (i.e., a body of work or a collection of activities that an organization must master to successfully carry out the essential work of a product line). The SEI SPL Framework defines 29 practice areas that must be mastered to deploy a sucesseful SPL arranged in 3 categories: software engineering, technical management and organisational management.
There is a lot of costs associated with an SPL effort, such as:
- Architecture - Must support variation inherent in the product line (Requires greater talent to define)
- Software Components - Must be designed to be general without a loss of performance; must build in support for variation points
- Test Plans, Test Cases, Test Data - Must consider variation points and multiple instances of the product line
- Business Case and Market Analysis - Must address a family of software products, not just one product
- Project Plans - Must be generic or be made extensible to accommodate product variations
- Tools and Processes - Must be more robust
- People, Skills, Training - Must involve training and expertise centered around the assets and procedures associated with the product line
- Requirements - Sophisticated analysis and intense negotiations; Common req. and variation points for the whole system
Several organizations who have already implemented SPL have reported the following beneffits:
- 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
In essence this about management of the software bussiness and not a technological "thing". SPL epitomize the concept of strategic, planned reuse to achieve economies of scope (one in which many systems are similar but not by accident, but because they were thought to).
You can find a presentation I've made on this issue at slideshare.
References
Paul Clements, Linda Northrop (2001) Software Product Lines: Practices and Patterns.
Addison-Wesley Professional.