next up previous
Next: Controversy over Configuration Up: Discoveries and Insights Previous: Commonality and Variability

Variability Means Different Things to Different People

The phrase "commonality and variability" is treacherously facile because it gives people the sense that they are using shared definitions but may hide diverse interpretations. For some people, the commonality may be the invariant shared portion across several systems. The variability in a domain may represent the unique functional characteristics of each individual system sharing the common elements. Thus there is a two-part division into common elements (those shared by all systems) and system-unique elements.

For other people, the term variability implies "constrained and exhaustive description of variability within the domain"; a scope of intended variation that surrounds the common core yet does not devolve into arbitrary system-by-system variation. In this approach, the domain model describes the range of variation for certain key features of the domain. This might include elements that are common to only subsets of the systems in the domain, but not unique features of individual systems (and particularly not system details that are irrelevant to the focus of the domain itself). This notion of design for reuse suggests that a good reusable design makes explicit the intended multi-system scope of applicability for the design.

What this means in practice is that sometimes people assume a domain model is a partial description with common features only. (If you represent a domain model with a single system model by only representing commonality, you will have an incomplete system model that will not execute.) They may link this generic description to one or more fully elaborated system models.

In the working group, we got at these distinctions by talking about generic descriptions (commonality) specializations (constrained variability) and instances or instantiations. However, alternative terms also floated around (architectures, models of architectures, etc.) To unify these two points of view, we suggest adopting a naming convention that allows for distinguishing all three points on the spectrum: common elements, system-unique elements, and the constrained range of variation that lies between these two poles, a range of variation capable of being enumerated.

( Editor's note: Such an approach may embed the assumption that commonality across systems will occur at high levels of structure and variability at lower levels. It is also possible that variability could occur at the highest architectural level, so that no single generic architecture captures the commonality in the domain but a flexible architecture can express the constrained range of variation at the architecture level that does cover the domain. Similarly, there may be significant pockets of commonality that occur at lower structural levels that will remain implicit in such a scheme.)



next up previous
Next: Controversy over Configuration Up: Discoveries and Insights Previous: Commonality and Variability



Larry Latour
Sat Oct 7 22:45:23 EDT 1995