Product Line Architectures (PLA's)
Today’s software design methodologies are aimed at one-of-a-kind applications, designs are expressed in terms of objects and classes, and software must be coded manually. We argue that future software development will be very different and will center around product-line architectures (i.e., designs for families of related applications), refinements (a generalization of today’s components), and software plug-and-play (a codeless form of programming). — Don Batory
Concepts
A product line architecture (PLA) captures variation among a set of closely-related products. This involves modeling both the commonality among products in a product line as well as the variability that exists between them. PLA's often capture different products with different features.
Product populations are entirely different products for which similar changes may need to be applied. The opposite of product line architectures; this involves modeling the common changes for products in a product population in addition to the individual products themselves.
Features in product line architecture may exhibit different types of relationships, such as conflicting with each other, being dependent on each other, or independent.
Techniques
Model variability using change sets. Borrowing from the concept of intensional versioning in the configuration management community, variability among product line architectures can be modeled using change sets, which are composed together to produce individual product architectures.
Model feature compatibility using change set relationships. To aid an architect in composing valid product architectures, relationships model feature compatibility and feature composition relationships among change sets.
Model variation with variable architectural elements and Boolean guards. Another way of modeling a product line architecture is to model optional and variant elements with Boolean guards that are evaluated when selecting out an individual architecture. [LEGACY]
Tools
- EASEL - Extensible Architecting Support Environment with Layers
- Boolean Guards, Selector, Pruner - Models product line architectures using optional, variant, and optional variant architectural elements.
- PLA Diff and Merge - Creates a diff between two architecture descriptions that may be merged into another architecture description
- Ménage [LEGACY] - an environment for managing evolving product line architectures
See Also
- Product-Line Architectures (Invited Presentation: Smalltalk and Java in Industry and Practical Training 1998)
- Representing Product Family Architectures in an Extensible Architecture Description Language (PFE 4)
- Modeling Product Line Architectures through Change Sets and Relationships (ICSE 2007)