Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [mdt-ocl.dev] MDT 2.0.0 vs OMG 2.0 / 2.2?

Hi Ed,
 
Excuse me for posting on dev mail list.
I'd like to share some notes on simulteneous support of different version :)   Comments are in-lined below.
 
Regards,
  Sergey.
 
> -----Original Message-----
> From: mdt-ocl.dev-bounces@xxxxxxxxxxx
> [mailto:mdt-ocl.dev-bounces@xxxxxxxxxxx] On Behalf Of
> ed@xxxxxxxxxxxxxxxxxx
> Sent: Wednesday, July 01, 2009 20:15
> To: MDT OCL mailing list
> Subject: Re: HA: [mdt-ocl.dev] MDT 2.0.0 vs OMG 2.0 / 2.2?
>
> Hi Adolfo
>
> You're right. It's not easy. Code decisions can be handled by
> alternate behavioiural objects/methods. The meta-models are harder.
>
> The UML2 project gives us some clues. It supports UML 2.1 and 3.0.
>
> The model directory contains uml.ecore (3.0) and uml_21.ecore (2.1).
> The Jasva classes are from the 3.0 model only.
 
As for UML2 project it looks like UML_21.ecore metamodel is maintained for supporting possible upward conversion 2.1.0 -> 3.0.0.
This is also done for 1.0.0 -> 2.1.0 in UML2_2_UML.ecore2ecore which references deprecated/plugins/org.eclipse.uml2/model/UML2.ecore metamodel.
 
I believe UML2 direction is to support latest version in HEAD and provide implicit means for conversion from older versions (UML22UMLResource.java for 1.0.0 -> 2.0.0, UML212UMLResource.java for 2.0.0 -> 3.0.0).
 
In case of OCL such conversion is not so seamless since OCL sources are text in opposite to ecore models.
But maybe implicit upward conversion can also be an option. And only OCL 2.2 can be developed in HEAD.
It also may be reasonable to add possibility to somehow annotate source with it's version that refers to spec compliance (referring to xmlns in XMI) for future extensions.
 
>
> The important point is that the Ecore model is an Eclipse
> implementation that matches the OMG/EMOF specs as closely as possible.
> It is not precise.
> Use of EReference makes the model instantly non-identical from a
> pedantic semantic viewpoint and totally incompatible from a meta-model
> spelling viewpoint.
>
> We therefore maintain the Ecore OCL 2.2 model as a slight superset
> (include the obsolete classes) so that all the model classes still
> have Java classes, but exclude the spurious classes programatically.
> Certain reflective actions will be inaccurate, such as what are my
> superclasses, but they were in accurate anyway because they had OCL
> class names twice and higher level classes with E prefixes.
>
> So for instance the TypeTypeImpl constructor when configured for OCL
> 2.2 must throw a ClassNotFoundException, but work normally for OCL
> 2.0.
>
>    Regards
>
>       Ed Willink
>

Back to the top