Central to the notion of product-lines and product-families are tracking and managing three different kinds of software assets:
- common/core assets that are shared by all the products in the product-line
- shared assets that are common to some products but not others, and ...
- product-specific assets (or custom-components) that are specific to a single product in the product-line.
A few resources on the subject of Commonality and Variability are as follows:
- A good (albeit old) article on Variability Management in Software Product Lines has a nice overview of some basic variability enabling techniques and the use of binding time
- A dissertations on Variation Mechanisms and Multi-view Architecting in Platform-based Product Family Development
- Expressing Product Diversification -- Categorizing And Classifying Variability In Software Product Family Engineering
- Coplien, Weiss and Hoffman wrote a nice overview article on Commonality and Variability in Software Engineering
- Alan Shalloway has an excellent introductory article on Commonality and Variability Analysis in conjunction with Design Patterns.
- Use Late-Binding instead of Branching:
- Build/Package Options
- Feature Configuration/Selection
- Business Rules
- Interface vs. Implementation vs. Integration
- Container vs. Content vs. Context
Think about which of the following needs to "vary" and what needs to stay the same:
Commonality & Variability analysis helps identify the core dimensions of variation for your project
Use a combination of strategies based on the different types of needed variation and the "dimension" in which each one operates
1 comment:
Hi Brad,
I'll take the opportunity to plug the specialist tool we sell for managing commonality and variability with feature models.
It's called pure::variants, it integrates with other leading life cycle tools and customers include organisations with significant product line challenges such as Robert Bosch, Daimler Chrysler and Audi.
There are of course other products out there and feature modeling is only one approach for variability management but it does work for many classes of product line problem - including systems product lines and more general configuration tasks.
Regards,
Mark Dalgarno
Software Acumen
Post a Comment