Skip to content

The Virtual Single Underlying Model

Timur Sağlam edited this page Apr 29, 2019 · 6 revisions

The Virtual Single Underlying Model

The Vitruvius approach combines legacy metamodels in a non-invasive way to serve as one single modular model. This model is called a virtual single underlying model (VSUM). The interface of the VSUM in the API is the VirtualModel.

Vitruvius enables delta-based consistency preservation of models. Delta-based means that the sequence of changes between two models states is tracked, rather than operating state-based by deriving changes from the old and new state of a model. There is also the option to work with state-based differences if fine-grained change sequences are not available.

Propagation of Change Sequences

Delta-based consistency preservation is the standard procedure with Vitruvius. The VirtualModel allows propagation of these fine-grained change sequences with the method propagateChange(VitruviusChange). This keeps all sub-models of the VSUM consistent.

Propagation of State-based Differences

State-based consistency preservation is used when there are no change sequences available and consistency needs to be preserved based on the difference between the previous and new state of a model. This approach comes explicitly second to delta-based consistency preservation.

The VirtualModel allows propagation of state-based changes with the methods propagateChangedState(Resource) and propagateChangedState(Resource, URI). Both methods take the modified Resource as input, which is either the model resource or the resource of a model root element. The first method assumes the location of the resource was not changed. The second method also takes the old location of the Resource as a URI as input, to prevent problems when renaming or moving model elements. Apart from these differences, both methods are semantically identical.

The VirtualModel then utilizes the StateBasedChangeResolutionStrategy of the correlating domain to translate the state-based changes to fine-grained change sequences (see Domains). These change sequences are then propagated with the ordinary propagateChange(VitruviusChange) method.

Challenges of State-based Differences

There is a potentially unlimited number of (valid) change sequences that describe the changes between any two states. This means there needs to be work done to determine which is the "right" change sequence, or if there even is such a thing.

Another problem of state-based differences is the loss of information. Since the two states only provide limited insight into the evolution of the model, some information is lost. For example, the order of fine-grained changes is lost. Moreover, renaming a model element cannot be differentiated from deleting that element and inserting another one.

This motivates the need for heuristics that solve these problems. Since potential heuristics are dependent on the specific domains, the strategy mechanism (see Domains) is a key feature since it allows domain-specific, state-based change propagation.

You can’t perform that action at this time.