Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF Compare"

(Team)
(Compatibility)
(33 intermediate revisions by 3 users not shown)
Line 1: Line 1:
__NOTOC__
+
{{EMF_Compare}} __NOTOC__  
<table border="0"  width="100%" cellspacing="6">
+
<tr>
+
<td>
+
=Presentation=
+
  
The EMF Compare project is [http://www.eclipse.org/modeling/emf/?project=compare part of EMF] (Eclipse Modeling Framework).
+
The [http://www.eclipse.org/emf/compare EMF Compare] project is part of EMF (Eclipse Modeling Framework).  
 +
 
 +
[[Image:Emf logo.png]]
  
 
EMF Compare brings model comparison to the EMF framework, this tool provides generic support for any kind of metamodel in order to compare and merge models. The objectives of this component are to provide a stable and efficient generic implementation of model comparison and to provide an extensible framework for specific needs.  
 
EMF Compare brings model comparison to the EMF framework, this tool provides generic support for any kind of metamodel in order to compare and merge models. The objectives of this component are to provide a stable and efficient generic implementation of model comparison and to provide an extensible framework for specific needs.  
  
 +
= Overview =
 +
 +
[[Image:EMF Compare Process Full.png|thumb|center|800px]]
  
The comparison process is divided in 2 phases: '''matching''' and '''differencing.''' The matching phase browses the model version figuring out which element comes from which other one, then the differencing process browses the matching result and create the corresponding delta. This delta may itself be serialized as a model.
+
The above figure represents the comparison process of EMF Compare. It can be roughly divided in 6 main phases.
 +
; Model Resolving
 +
: From a given "starting point" (the file a user decided to compare), finding all other fragments required for the comparison of the whole logical model.
 +
; Matching
 +
: Iterating over the two (or three) loaded logical models in order to map elements together two-by-two (or three-by-three). For example, determine that class ''Class1'' from the first model corresponds to class ''Class1''' from the second model.
 +
; Differencing
 +
: The matching phase told us which elements were matching together. The differencing phase will browse through these mappings and determine whether the two (or three) elements are equal or if they present differences (for example, the name of the class changed from ''Class1'' to ''Class1''').
 +
; Equivalences
 +
: The differencing phases detected a number of differences between the compared models. However, two distinct differences might actually represent the same change. This phase will browse through all differences and link them together when they can be seen as equivalent (for example, differences on opposite references).
 +
; Requirements
 +
: For the purpose of merging differences, there might be dependencies between them. For example, the addition of a class ''C1'' in package ''P1'' depends on the addition of package ''P1'' itself. During this phase, we'll browse through all detected differences and link them together when we determine that one cannot be merged without the other.
 +
; Conflicts
 +
: When we're comparing our file with one from a Version Control System (CVS, SVN, Git, Clearcase...), there might actually be conflicts between the changes we've made locally, and the changes that were made to the file on the remote repository. This phase will browse through all detected differences and detect these conflicts.
  
[[Image:CompareGlobal.png]]
 
  
=Compatibility=
+
The Model resolving phase itself can be further decomposed in its own two distinct phases. More on the logical model and its resolution can be found on [[EMF_Compare/Logical_Model|the dedicated page]].
The EMF Compare development team does its best to maintain downward compatibility towards Europa (3.3). Following is the compatibility chart :
+
[[Image:EMF Compare Model Resolving.png|thumb|center|800px]]
 +
 
 +
= Compatibility =
 +
 
 +
The EMF Compare development team does its best to maintain downward compatibility towards Galileo (3.5). Following is the compatibility chart&nbsp;:  
 +
 
 
{| border="1"
 
{| border="1"
! EMF Compare !! Eclipse 3.2 - EMF 2.2 !! Eclipse 3.3 - EMF 2.3 !! Eclipse 3.4 - EMF 2.4 !! Eclipse 3.5 - EMF 2.5 !! Eclipse 3.6 - EMF 2.6
 
 
|-
 
|-
| 0.7
+
! EMF Compare
| style="text-align:center; background:green; color:white" | OK
+
! Eclipse 3.2 - EMF 2.2
|
+
! Eclipse 3.3 - EMF 2.3
|
+
! Eclipse 3.4 - EMF 2.4
|
+
! Eclipse 3.5 - EMF 2.5
|
+
! Eclipse 3.6 - EMF 2.6
 +
! Eclipse 3.7 - EMF 2.7
 +
! Eclipse 3.8 - EMF 2.8
 
|-
 
|-
| 0.8
+
| 0.7
 +
| style="text-align:center; background:green; color:white" | OK
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| 0.8  
 +
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| 1.0
 +
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
|
 +
|
 +
|-
 +
| 1.1
 +
| style="text-align:center; background:red; color:white" | KO
 
| style="text-align:center; background:red; color:white" | KO  
 
| style="text-align:center; background:red; color:white" | KO  
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
| style="text-align:center; background:green; color:white" | OK
 
|
 
|
 
 
|-
 
|-
| 1.0
+
| 1.2
 
| style="text-align:center; background:red; color:white" | KO  
 
| style="text-align:center; background:red; color:white" | KO  
 +
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
| style="text-align:center; background:green; color:white" | OK
 +
|-
 +
| 1.3
 +
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:red; color:white" | KO
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
Line 40: Line 98:
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
|-
 
|-
| 1.1
+
| bgcolor="#cccccc" | 2.0
| style="text-align:center; background:red; color:white" | KO  
+
| style="text-align:center; background:red; color:white" | KO
| style="text-align:center; background:green; color:white" | OK
+
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:red; color:white" | KO
 +
| style="text-align:center; background:green; color:white" |OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
| style="text-align:center; background:green; color:white" | OK
 
|}
 
|}
 +
 
An empty cell indicates that the compatibility hasn't been tested for a particular combination.
 
An empty cell indicates that the compatibility hasn't been tested for a particular combination.
</td>
 
  
<td rowspan="2" width="310" style="background-color: #bbbad2; border-width: 1px; border-style: solid; border-color: #e3e2ff; padding: 10px;">
+
= Events  =
 +
'''04/11/2011''' - Talk given at Eclipse Con Europe 2011: [http://eclipsecon.org/sessions/emfcompare-improvements-fulfilling-requirements-modeling-platform-working-group EMFCompare improvements: fulfilling requirements of the Modeling Platform Working Group].
  
=Documentation=
+
'''20/07/2010''' - First [https://build.eclipse.org/hudson/job/emf-compare-1.1/3/ buckminsterized EMF Compare build]  
* Initial project description : [[Media:EMFCompareDescription.pdf | EMF Compare Description (PDF)]]
+
* [[EMF Compare 1.1.0 New And Noteworthy | New and Noteworthy : 1.1.0]]
+
* [[EMF Compare 1.0.0 New And Noteworthy | New and Noteworthy : 1.0.0]]
+
* [[EMF Compare 0.8.0 New And Noteworthy | New and Noteworthy : 0.8.0]]
+
==User Guide==
+
* [[Installing and Using EMF Compare | Installing and Using EMF Compare]]
+
* [[EMF Compare Demos | EMF Compare Demos]]
+
  
==Developer Guide==
+
'''23/06/2010''' - EMF Compare 1.1.0 [http://www.eclipse.org/helios/ released with Eclipse Helios]  
* [[Setting up a development environment for EMF Compare | Setting up a development environment for EMF Compare]]
+
* [[Comparing XML files with EMF Compare | Comparing XML files with EMF Compare]]
+
  
You'll find a few more tutorials on the Eclipse Online Help once you installed EMF Compare
+
'''10/06/2009''' - Graduation to EMF [http://www.eclipse.org/project-slides/Galileo/EMF_Compare_Galileo_Review.pdf Graduation Review]
* Architecture
+
* Using the Compare Services
+
* Adapting the Comparison Process to your Ecore Model
+
* Adding new actions to the export menu
+
  
''Feel free to add any tutorial or documentation on the wiki, we'll integrate them back in the online help.''
+
'''20/03/2008''' - Short talk given at EclipseCon 2008 [http://www.eclipsecon.org/2008/?page=sub/&id=328 An update on EMF Compare]
  
==FAQ==
+
'''10/10/2007''' - Talk given at Eclipse Summit Europe 2007 [http://cedric.brun.free.fr/EMFCompare_OneYearLater.pdf EMF Compare&nbsp;: One year later].
* [[EMF Compare FAQ|EMF Compare FAQ]]
+
</td>
+
</table>
+
  
 +
'''05/03/2007''' - We presented the project at EclipseCon through a [http://www.eclipsecon.org/2007/index.php?page=sub/&id=3593 panel]. Here is some feedback: [[Model Comparison Panel 2007]].
  
<table width="100%" height="100%" cellpadding="0" cellspacing="0">
+
= Team  =
<tr>
+
<td style="background-color: #cff8d9; border-width: 1px; border-style: solid; border-color: #def9e4; padding: 10px;">
+
  
=Roadmap & History=
+
The project developers are:
  
== Roadmap ==
+
Cédric Brun ([http://www.obeo.fr Obeo]), project lead
  
=== 1.1.0 - Eclipse 3.6 ===
+
Laurent Goubet ([http://www.obeo.fr Obeo])<br>
- Match Scoping
+
- Performances and Scalability
+
- Better stability
+
  
=== 1.0.0 - Eclipse 3.5 ===
+
Mikaël Barbero ([http://www.obeo.fr Obeo])  
- [[EMF_Compare/Epatch|patch/changeset model]]
+
- UI extensibility
+
- Graphical modelers integration
+
- Remote proxy resolving
+
- Incubation status exit
+
- ResourceSet match (inter-models links)
+
  
 +
Cédric Notot ([http://www.obeo.fr Obeo])
  
== History ==
+
[[Category:Modeling]] [[Category:EMF]] [[Category:EMF Compare]]
 
+
 
+
=== 0.8.0 - Ganymede (2008) ===
+
- « 3 way » comparison
+
- confirm RCP/Domain uses cases for diff/synchronization
+
- diff engine extensibility
+
- diff model extension
+
- performances enhancements
+
- tutorials/documentation
+
 
+
=== 0.7.0 branch (2007)===
+
 
+
- merge/differencing
+
- reference documentation
+
- « 2 way » comparison
+
- Ecore/XMI Id handling
+
- metamodel agnostic
+
- match engine extensibility
+
- export API
+
 
+
</td>
+
 
+
<td  style="background-color: #fef6b0; border-width: 1px; border-style: solid; border-color: #e3e2ff; padding: 10px;">
+
 
+
</td>
+
<tr>
+
<td>
+
 
+
=Team=
+
The project developers are:
+
 
+
Cedric Brun ([http://www.obeo.fr Obeo]), project lead
+
 
+
Laurent Goubet ([http://www.obeo.fr Obeo])
+
 
+
Jonathan Musset ([http://www.obeo.fr Obeo])
+
 
+
Moritz Eysholdt ([http://www.itemis.de Itemis])
+
</td>
+
<td>
+
 
+
=Contacts=
+
Any issue should be reported to the [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EMF&component=Compare Bugzilla]
+
You may also contact the team using the EMF newsgroup.
+
</td>
+
<tr>
+
<td colspan="2">
+
=Events=
+
'''10/06/2009''' - Graduation to EMF [http://www.eclipse.org/project-slides/Galileo/EMF_Compare_Galileo_Review.pdf Graduation Review]
+
 
+
'''20/03/2008''' - Short talk given at EclipseCon 2008 [http://www.eclipsecon.org/2008/?page=sub/&id=328 An update on EMF Compare]
+
 
+
'''10/10/2007''' - Talk given at Eclipse Summit Europe 2007 [http://cedric.brun.free.fr/EMFCompare_OneYearLater.pdf EMF Compare : One year later].
+
 
+
'''05/03/2007''' - We presented the project at EclipseCon through a [http://www.eclipsecon.org/2007/index.php?page=sub/&id=3593 panel]. Here is some feedback: [[Model Comparison Panel 2007]].
+
</td>
+
</tr>
+
</table>
+
 
+
[[Category:Modeling]]
+
[[Category:EMFT]]
+

Revision as of 07:29, 18 October 2012


EMF Compare
Website
Download
Community
Mailing List
Forums
Bugzilla
Open
Create New
Contribute
Browse Source


The EMF Compare project is part of EMF (Eclipse Modeling Framework).

Emf logo.png

EMF Compare brings model comparison to the EMF framework, this tool provides generic support for any kind of metamodel in order to compare and merge models. The objectives of this component are to provide a stable and efficient generic implementation of model comparison and to provide an extensible framework for specific needs.

Overview

EMF Compare Process Full.png

The above figure represents the comparison process of EMF Compare. It can be roughly divided in 6 main phases.

Model Resolving
From a given "starting point" (the file a user decided to compare), finding all other fragments required for the comparison of the whole logical model.
Matching
Iterating over the two (or three) loaded logical models in order to map elements together two-by-two (or three-by-three). For example, determine that class Class1 from the first model corresponds to class Class1' from the second model.
Differencing
The matching phase told us which elements were matching together. The differencing phase will browse through these mappings and determine whether the two (or three) elements are equal or if they present differences (for example, the name of the class changed from Class1 to Class1').
Equivalences
The differencing phases detected a number of differences between the compared models. However, two distinct differences might actually represent the same change. This phase will browse through all differences and link them together when they can be seen as equivalent (for example, differences on opposite references).
Requirements
For the purpose of merging differences, there might be dependencies between them. For example, the addition of a class C1 in package P1 depends on the addition of package P1 itself. During this phase, we'll browse through all detected differences and link them together when we determine that one cannot be merged without the other.
Conflicts
When we're comparing our file with one from a Version Control System (CVS, SVN, Git, Clearcase...), there might actually be conflicts between the changes we've made locally, and the changes that were made to the file on the remote repository. This phase will browse through all detected differences and detect these conflicts.


The Model resolving phase itself can be further decomposed in its own two distinct phases. More on the logical model and its resolution can be found on the dedicated page.

EMF Compare Model Resolving.png

Compatibility

The EMF Compare development team does its best to maintain downward compatibility towards Galileo (3.5). Following is the compatibility chart :

EMF Compare Eclipse 3.2 - EMF 2.2 Eclipse 3.3 - EMF 2.3 Eclipse 3.4 - EMF 2.4 Eclipse 3.5 - EMF 2.5 Eclipse 3.6 - EMF 2.6 Eclipse 3.7 - EMF 2.7 Eclipse 3.8 - EMF 2.8
0.7 OK
0.8 KO OK OK
1.0 KO OK OK OK OK
1.1 KO KO OK OK OK OK OK
1.2 KO KO OK OK OK OK OK
1.3 KO KO KO OK OK OK OK
2.0 KO KO KO OK OK OK OK

An empty cell indicates that the compatibility hasn't been tested for a particular combination.

Events

04/11/2011 - Talk given at Eclipse Con Europe 2011: EMFCompare improvements: fulfilling requirements of the Modeling Platform Working Group.

20/07/2010 - First buckminsterized EMF Compare build

23/06/2010 - EMF Compare 1.1.0 released with Eclipse Helios

10/06/2009 - Graduation to EMF Graduation Review

20/03/2008 - Short talk given at EclipseCon 2008 An update on EMF Compare

10/10/2007 - Talk given at Eclipse Summit Europe 2007 EMF Compare : One year later.

05/03/2007 - We presented the project at EclipseCon through a panel. Here is some feedback: Model Comparison Panel 2007.

Team

The project developers are:

Cédric Brun (Obeo), project lead

Laurent Goubet (Obeo)

Mikaël Barbero (Obeo)

Cédric Notot (Obeo)

Copyright © Eclipse Foundation, Inc. All Rights Reserved.