DEV Community

Discussion on: From OpenAPI to UML (and back)

Collapse
 
hallvard profile image
Hallvard Trætteberg

Very interesting, both the general technique of transforming back and forth between software development artifacts and models, and it's integration into Eclipse. Thanks for sharing both the concepts and code!

Would it make sense to target Ecore in addition to UML2? I know many tools can use both Ecore and UML2 as input, but it may be different when used as a target of a transformation. Still, you can think of them as two different backends to a generic transformation (particular since both ecore and UML2 is implemented in ecore).

Another idea is to explore a custom notation using Sirius, rather than using class diagrams. That could be more usable for some developers. (I'm not sure how flexible papyrus is in this respect.)

Collapse
 
jcabot profile image
Jordi Cabot

Yes. Ecore could be an easy target as well. We chose UML because it's more well-known (outside the "core" modeling community) but I agree that for people that may want to build their own tools/extensions on top of WAPIml, an Ecore output would make sense.

About the custom notation, we see it as a different path with its own pros and cons (kind of the always on-going discussion about DSLs vs UML).

Collapse
 
hamzaed profile image
Hamza Ed-douibi • Edited

To add to what Jordi said, I want to mention that we do have an OpenAPI metamodel implemented in Ecore which we use in an intermediate step between JSON/YAML and UML (we first generate an OpenAPI model instance then we transform it to a UML model). This metamodel could be used for instance to create a custom notation with Sirius or to perform transformations.

Collapse
 
hallvard profile image
Hallvard Trætteberg

After submitting my comment I checked out your repo and found the metamodel!

Yes, that can be a good starting point for other tools, e.g. a custom notation using Sirius. Since I'm maintaining the PlantUML integration in Eclipse, it's also relevant to use the textual PlantUML notation as another backend of the transformation from the metamodel to class diagram, possibly going through an Ecore model.

Thread Thread
 
jcabot profile image
Jordi Cabot

We use PlantUML to render models created with our Slack Modeling Bot, but there we just do a direct transformation from the UML Ecore model to PlantUML syntax. But good to now your extension exists!