Home Introduction Getting Started Benefits Successes Perspectives Resources

Introduction to Software Product Lines

Chapter Author: Charles W. Krueger, PhD, CEO, BigLever Software

Software product lines refers to engineering techniques for creating a portfolio of similar software systems from a shared set of software assets using a common means of production. Manufacturers have long used analogous engineering techniques to create a product line of similar products using a common factory that assembles and configures parts designed to be reused across the varying products in the product line. For example, automotive manufacturers can now create tens of thousands of unique variations of one car model using a single pool of carefully architected parts and one factory specifically designed to configure and assemble those parts.

The idea of manufacturing software from reusable parts has been around for decades, but success has been elusive. Recent advances in the software product line field have demonstrated that narrow and strategic application of these concepts can yield order of magnitude improvements in time-to-market, quality, portfolio scalability and software engineering cost. The result is often a discontinuous jump in competitive business advantage, similar to that seen when manufacturers adopt mass production and mass customization paradigms.

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.

Mass production - the ability to efficiently create many copies of the same product - represented a big advance in the manufacturing world, though creating many copies of a software product is trivial. On the other hand, mass customization - the ability to efficiently create many variations of a product - is a big advance in both manufacturing and software engineering. The key to mass customization is to capitalize on the commonality and to effectively manage the variation in a product line. The following sections in this chapter describe how to do this for software product lines.

Next Section >

2nd Generation Tools and Methods for
Systems and Software Product Line Engineering