The May/June 2010 edition of IEEE Software contains an excellent "Focus" on Software Product Line management.Â The guest editors (McGregor, Muthig, Yoshimura, Jensen) introduction provides a great definition of an effective software product line strategy: "The software product line strategy is a blend of business and technical actions that lets an organization satisfy a wide range of customers, gain leverage with suppliers, meet the threats of substitute products, and deter other companies seeking to enter the market.Â The strategy is robust over a wide range of technologies and domains and organizations of different structures, cultures and goals." The guest editors assert that several elements are common to successful product lines:
- The definition of which products belong to the product line provides the context within which my other decisions are made.Â Note that this facilitates most branches from the core software line but some are considered members of the product line and some are not.
- The organization uses a common software product line architecture as the basis for each product.Â The architecture provides the basis for exploiting commonality and managing variation.
- Commonality is sufficiently defined to realize economies of scale.Â This is particularly true for reuse and maintenance.
- Variation is sufficiently well managed to realize economies of scope.Â The important message here is that the core has responsibility to support all variations within the product line.
- The organization is structured and operated to facilitate building reusable assets and building products using those assets.Â This sounds obvious but it is not an easy thing to implement.Â Two keys to re-usability are documentation and trust.Â The assets to be reused must be clearly documented so that new users understand what they do (and don't do) bu then the new users must trust the documentation.Â It is very tempting for the new user to trust their own new implementation more than the old existing one.