An overall picture of the software product line organization as it progresses through the various stages of software product line engineering can be depicted with the factory pattern. A pattern is a common way of expressing common contexts and problem-solution pairs. The following extends the description of Factory found in Software Product Lines: Practices and Patterns.
Name: The Factory pattern is a composite pattern that describes the entire software product line organization.
Context: an organization is considering (or is fielding) a software product line
Problem: to map the entire product line effort
Solution: Fielding a product line can be thought of as accomplishing six things:
- deciding what products you wish to build;
- building and running the production capability (the assembly line, if you like) to build those products;
- preparing the organization to effectively use the assembly line;
- designing and providing the parts that will roll down the assembly line to be joined together to form the product;
- running the assembly line and building products from those parts; and
- monitoring the process, keeping a pulse on the operations and applying course corrections as necessary to keep the organization on course.
The factory pattern consists of the disciplined interaction of these other eight patterns.
- What to Build yields the set of products to be included in the product line
- Each Asset provides individual core assets and their attached processes
- Product Parts gives the core assets that will be part of the product
- Assembly Line provides the production capability
- Product Builder constructs the products
- Cold Start prepares the organization for the product line operation
- In Motion keeps the product line organization running
- Monitor keeps watch on the organization and responds with any needed changes.
Where is your organization?
The Product Line Quick Look can help your organization locate its position in Factory so that you can apply the most effective practices to move where you wish to go.