With diagram comparison, a user must be able to graphically visualize the changes between two or three diagrams. Diagram comparison will contribute a new comparison editor, in addition to the tree and textual comparison editors. This new editor will be available when the compared resources are GMF diagrams. Typically, the diagram comparison editor will display one version of the diagram without decoration (the original diagram) alongside another version of the diagram with graphical decorations to show the differences.

With diagram comparison, a user must be able to graphically visualize the changes between two or three diagrams. Diagram comparison will contribute a new comparison editor, in addition to the tree and textual comparison editors. This new editor will be available when the compared resources are GMF diagrams. Typically, the diagram comparison editor will display one version of the diagram without decoration (the original diagram) alongside another version of the diagram with graphical decorations to show the differences.

Line 99:

Line 99:

The following APIs will be implemented to work both with the Tree and diagram comparison editors:

The following APIs will be implemented to work both with the Tree and diagram comparison editors:

−

* API to create a viewer listing all structural changes resulting from a model comparison which includes the filtering and grouping options as mentioned previously. This API will offer the capability to programmatically retrieve the Meta model class (type) e.g. Documentation, stereotype)

+

* <span style="color:#cc0000">'''[PFI]'''</span>. API to create a viewer listing all structural changes resulting from a model comparison which includes the filtering and grouping options as mentioned previously. This API will offer the capability to programmatically retrieve the Meta model class (type) e.g. Documentation, stereotype)

−

* API to query the viewer for the list of visible changes (e.g. not filtered out) The type of elements returned in the list of structural differences should offer an API to retrieve the location information of the affected elements, in order to trigger the selection of the affected elements in both the Project Explorer and Editor.

+

* <span style="color:#cc0000">'''[PFI]'''</span>. API to query the viewer for the list of visible changes (e.g. not filtered out) The type of elements returned in the list of structural differences should offer an API to retrieve the location information of the affected elements, in order to trigger the selection of the affected elements in both the Project Explorer and Editor.

* API to handle and serialize a set of graphical elements under comparison so that it is possible to pass them on to another tool.

* API to handle and serialize a set of graphical elements under comparison so that it is possible to pass them on to another tool.

* API to launch an Eclipse Model Compare editor with two specified versions of model files and be able to programmatically request the selection of a structural change based on a previously obtained location.

* API to launch an Eclipse Model Compare editor with two specified versions of model files and be able to programmatically request the selection of a structural change based on a previously obtained location.

Specific support of UML Model

In order to provide the best possible accuracy and precision when comparing and merging UML models, it is necessary to implement a specific comparison engine which handles the UML meta-model directly (according to the UML metamodel defined with EMF in Eclipse / Modeling Tools / UML).

For example, for the addition (or deletion or modification) of an association at the UML level, there is 3 additions (or deletions, or potential modifications) in the EMF representation : one "association", and two "property ends". We will define specific UML extensions for EMF Compare using the DiffExtension API to create the UML level operations (AddAssociation, DeleteAssociation, ModifyAssociation) and write the recognition code to identify these UML level change operations from the EMF level change operations. So, the end-user who diffs and merges a UML model will only see UML level change operations, and the changes will be applied atomically on the model to avoid model inconsistency.

Additionally, EMF Compare will support diff and merge of fragmented UML models, that is UML models stored in several physical resources, and of sets of UML model fragments. The fact that UML level operations are atomically applied will be specifically addressed in the case of merging of model fragments to forbid partial merges in one fragment that would corrupt the whole model.

Another transversal UML issue to be addressed is the support of UML profiles.

We will also ensure that generic APIs are adapted to work at the UML level. More specifically, we will provide UML level APIs for:

API to request a UML diff between two models providing the result as a list of structural differences or serialized to a file

Then, we identify separate sets of UML diagram meta-models which will be supported incrementally:

Support first set of Structural metamodels : Package, Class

Support second set of structural metamodels : Composite

Support first set of behavioral metamodels : Use Case , Sequence, Activity

Support second set of behavioral metamodels : State, Communication

[PFI] GMF Diagram Comparison

With diagram comparison, a user must be able to graphically visualize the changes between two or three diagrams. Diagram comparison will contribute a new comparison editor, in addition to the tree and textual comparison editors. This new editor will be available when the compared resources are GMF diagrams. Typically, the diagram comparison editor will display one version of the diagram without decoration (the original diagram) alongside another version of the diagram with graphical decorations to show the differences.

Additions of nodes or edges must be highlighted with a specific graphical decoration.

Example of graphical decoration for node addition

Example of graphical decoration for edge addition

Modifications of nodes and edges must be highlighted with a specific decoration.

Example of graphical decoration for node deletion

Example of graphical decoration for edge deletion

Layout changes must be displayable, but must also be filtered with a configurable threshold.This threshold must be configurable either through an API, or an Eclipse preference.

Example of graphical decoration for node modification

Example of graphical decoration for edge modification

Layout changes must be displayable, but must also be filtered with a configurable threshold. This threshold must be configurable either through an API, or an Eclipse preference.

Example of graphical decoration for layout change

Example of integration of the different graphical decorations for a diagram:

Original diagram

Diagram after modification

Example of diagram with decorations for all the changes

Support fo various UML diagrams comparison in Papyrus

Beyond the generic implementation of GMF graphical diagrams comparison, we will integrate diagram comparison in the Eclipse foundation open source tool Papyrus. We will incrementally implement the different diagrams supported in Papyrus:

Support first set of Structural diagram metamodels : Package, Class

Support second set of structural diagram metamodels : Composite

Support first set of behavioral diagram metamodels : Use Case , Sequence, Activity

Support second set of behavioral diagram metamodels : State, Communication

A specific communication and contribution channel will be established to ensure that the UML model comparison is integrated with the mainstream Papyrus releases.

Others generic APIs

The following APIs will be implemented to work both with the Tree and diagram comparison editors:

[PFI]. API to create a viewer listing all structural changes resulting from a model comparison which includes the filtering and grouping options as mentioned previously. This API will offer the capability to programmatically retrieve the Meta model class (type) e.g. Documentation, stereotype)

[PFI]. API to query the viewer for the list of visible changes (e.g. not filtered out) The type of elements returned in the list of structural differences should offer an API to retrieve the location information of the affected elements, in order to trigger the selection of the affected elements in both the Project Explorer and Editor.

API to handle and serialize a set of graphical elements under comparison so that it is possible to pass them on to another tool.

API to launch an Eclipse Model Compare editor with two specified versions of model files and be able to programmatically request the selection of a structural change based on a previously obtained location.