Caosd Research group

vEXgine UMA

Common Variability Language (CVL)

The Common Variability Language (CVL) has become one of the most used languages for the specification and resolution of variability in the last few years.
Software Product Lines (SPLs) approaches benefits of the several advantages of CVL to manage the variability of their products:

    • Orthogonal variability

Separate base models without modifications

    • MOF compliant

Variability over models in any language defined by means of a MOF-compliant metamodel

    • Standard

Proposed for standardization by the OMG

    • Several levels of abstraction

Variability Specifications (VSpecs), variation points, and resolutions

    • Features with attributes

Variable VSpecs with values of specified types

    • Clonable features

VClassifiers with instance multiplicity

    • Intricate relationships among VSpecs

Use of different constraint languages such as the Object Constraint Language (OCL)

    • Units of modularization

Composite VSpecs, Configurable Units,…

    • Great taxonomy of variation points

Object/Link Existence, Object/Link Substitution, Parametric Slot Assignment, Fragment Substitution, Opaque Variation Point (OVP),…

The CVL approach

CVL specifies, in separate models, the variability that can be applied to a base model. The base model is a model in the domain language that can be defined using a MOF-based metamodel and does not contain any information about variability.
The variability information is separately specified in a variability model, according to the CVL metamodel.
How the variability model can be resolved to produce a configured new model from the base model is described in the resolution models (or “configuration models” in the SPL terminology).
CVL provides an executable engine to automatically derive (materialize) a resolved model.
The resolved model is a fully configured product model with the variability resolved.

Delegation Engine

Variation points define the points of the base model that are variable and can be modified during the materialization process.
Variation points also specify how the elements of the base models are modified by defining specific modifications to be applied by means of model-to-model (M2M) transformations.

The semantics of these transformations is specific to the kind of variation point. During CVL’s execution, the CVL engine delegates its control to an M2M engine in charge of executing the transformations defined by the variation points.

Opaque Variation Point (OVP)

Some of the variation points supported by CVL are the existence of elements of the base model (ObjectExistence) or the links between them (LinkExistence), the assignment of an attribute’s value (ParametricSlotAssignment), or the replacement of a set of elements with another set of elements (FragmentSubstitution).

An important type of variation point is the Opaque Variation Point (OVP) that enables defining new custom model transformations that are not pre-defined in CVL.