Use product line engineering to reduce the total costs required to create, deploy & maintain systems & software
Software Product Line Engineering
In the world of hard goods, a product line refers to the variations on a common theme, where multiple products are combined into one "line", offering different sizes, colors and features, with a common goal of filling customer need for a particular kind of item.
"Economy of scale" is a key aspect of the product line concept, with greater profitability achieved when common product or manufacturing assets can be used for different "flavors" of a product.
As product differentiation moves from the physical attributes (color, size) to software-based functional capabilities (calorie calculators on treadmills, cars that maintain personalized temperature settings, mobile phones that also provide up to the minute sports scores) the product line concept is making its way into software development.
Software Product Line (SPL) engineering is a growing trend that is helping organizations achieve product diversity at the speed and efficiency it takes to satisfy today's cost-conscious "want it new, want it now" consumers and businesses.
The focus of SPL engineering is on the means of efficiently producing and maintaining multiple similar software products, exploiting what they have in common and precisely managing what varies among them.
This is analogous to the automotive industry, where the focus is on creating a single production line, out of which many "customized" (e.g., body color, interior package, sound system, navigation option, transmission type) but similar variations of a car model are produced.
The powerful, though subtle, essence of this description is the
focus on a singular means of production rather than a focus on
producing the many individual products. Once this "production line"
focus is established, creating the individual products is more a matter
of automated instantiation rather than manual creation.
|Figure 1: Software Product Line Engineering|
SPL engineering can be described in terms of four simple concepts, as illustrated in Figure 1,above:
1) Reusable SPL Assets: Being developed on the left side of the diagram is the collection of reusable SPL assets " such as requirements, architectures, models and designs, source code components, test cases, documentation, and so forth " that can be configured and composed in different ways to create all of the products in a product line.
Each of the assets has a well defined role within a common architecture for the product line. To accommodate variation among the products, some of the assets may be optional and some of the assets may have internal variation points that can be configured in different ways to represent different system behavior.
2) Feature Profiles: Being fed into the top of the product configurator are the feature profiles. They describe optional and variable features for the products in the product line. Each product in the product line is uniquely defined by its own feature profile " choices for each of the optional and variable features.
3) Product Configurator: At the center of the diagram, the product configurator is the means for automatically composing and configuring products from the reusable software assets. Feature profiles are used during production to determine which reusable software asset to use and how to configure the variation points within those assets.
4) Product Line Portfolio: Being automatically generated out of the right of the product configurator are the products in the product line portfolio " the collection of all products that can be produced for the product line. The scope of the product line is determined by the set of products in the portfolio that can be automatically produced from the reusable software assets and the feature profiles.
Real world success stories of the SPL approach come from diverse areas such as mobile phones, e-commerce software, RAID storage systems, computer printers, diesel engines, telecom networks, enterprise software, construction and mining equipment, cars, ships, and airplanes. Each of these examples relies on creating and maintaining a collection of similar software-centric systems, as part of delivering a product line of similar yet varying products.
For example, a mobile phone company may have tens or hundreds of
different phone models, each using software that is unique, yet
substantially similar to software in the other models. New models may
be introduced every few weeks.
By using pragmatic SPL engineering techniques to exploit the software commonality and effectively manage the desired variations for each model, companies are reporting order of magnitude reductions in time-to-market, engineering overhead, defect rates, and development cost.