Pregunta

i have a question:

Within my modeling tool (Enterprise Architect) I have modeled a meta-model (UML based). Now I want to transform the meta-model into Ecore. But I don't know how to do it.

Within Enterprise Architect I can export the Meta-Model to UML XMI. Does anyone know if it is possible to transform the generated XMI to Ecore XMI ?!

Thanks

¿Fue útil?

Solución

Does anyone know if it is possible to transform the generated XMI to Ecore XMI ?!

Yes, it's possible - at least in outline. You can think of the problem in two parts:

  1. What's the semantic mapping? In other words, how do you map concepts in the source XMI to concepts in the target eCore model?
  2. How will you implement those mappings in practice?

Semantic Mapping

I'm assuming here your metamodel focuses on static structure. ECore doesn't support dynamic concepts outside of declaring EOperations. More on dynamics below if that's of relevance.

I don't know EA specifically, nor which version(s) of XMI it supports. However, it will be some variant of the core UML concepts: Class, Attribute, Operation, Association, AssociationEnd, etc. eCore has a similar (if smaller) set of concepts: EClass, EAttribute, EDataType, EReference, EOperation, etc. There's a fairly strong correlation among the 'type' concepts; for example:

  • UML Class --> EClass
  • Attribute --> EAttribute
  • Operation --> EOperation

So the mapping there should be straighforward. Basically create one instance of the ECore equivalent for each UML concept.

Relationships are a little less obvious but still doable. ECore doesn't support relationships directly; EReference is the only analogous concept. However it's pretty easy to synthesise associations, for example:

  • A one way navigable UML association becomes a single EReference with min & max cardinality copied over
  • A UML bi-directional association becomes two EReferences, one in each direction. You should also set the EOtherEnd property, which effectively says the two EReferences are part of the same association.

Hopefully that gives you the idea.

Implementation

Having defined your conceptual mapping there are lots of options on how to do it. All will generally follow the same basic model:

Parse Source --> Map Source Concepts to Target Concepts --> generate target text.

You could use xslt (since it's just an XML->XML transformation). You could also use one of the many Model-to-model (M2M) and/or Model-to-text (M2T) toolkits available. See e.g. the eclipse modeling project (M2M, M2T). You could also go direct from EA by reading the model using the EA API instead of generating & parsing XMI. Which you choose will depend on your environment, skillset, etc.

If you want to see what it could look like in practice, you might take a look at MagicDraw. It provides ECore export out of the box. (Note it's a paid-for tool - but eval is available).

It might also be worth asking Sparx directly: I'd be a bit surprised if there isn't some ECore export add-on/plugin available for EA.

hth.


Dynamics

If your model has dynamics (state models etc.) then you have more of a problem. ECore doesn't cover those concepts at all. It's possible to extend ECore and that might be an option - but it's potentially more work as the tools that work with ECore will be less likely to understand your extensions.

Otros consejos

You can easily go from Ecore to UML but the other way is not really possible. You have few plugins but when you try to use them it does not work.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top