Overview: Core
A modular MDA/MDD generator framework supporting arbitrary import formats, meta models, and output formats.

The tool has an internal architecture that basically works like a compiler. Based on a custom-defined metamodel (see below), an arbitraty model's concrete syntax is read. The metamodel is instantiated, resulting in a model represented as an in-memory object graph. The model is then validated agains the metamodel. In the last step, you use a template language to generate all kinds of textual output.
How to get it?
- You can download it from the sourceforge file release page
- It is also included in the example workspace
What it does
- It reads any kind of model (for which an instantiator is available).
- You can then validate the model against a previously defined metamodel.
- In case there are no errors, you can use an intuitive template langauge to generate code.
Core Concepts of openArchitectureWare:

The tool has an internal architecture that basically works like a compiler. Based on a custom-defined metamodel (see below), an arbitraty model's concrete syntax is read. The metamodel is instantiated, resulting in a model represented as an in-memory object graph. The model is then validated agains the metamodel. In the last step, you use a template language to generate all kinds of textual output.
How to use it
- First you define a metamodel for your domain. This metamodel has to be implemented as Java classes. For simple metamodels you can implement the metaclasses manually. For more complex metamodels, you can use the metamodel generator, which generates the metaclasses from a UML model. These metaclasses also contain constraints that verifies that a model instance is correct wrt. the metamodel and its constraints.
- In the next step, you create a model (technically speaking an instance of the metamodel). You can render this model in any concrete syntax. In many cases you use a UML model (which you then export to XMI); other possibilities include Visio, custom-generated GEF editors, textual languages or XML. In case you want to build UML-based models, you can inherit your metaclasses from the included UML metaclasses; you will later use stereotypes and tagged values in the model to connect to your metamodel.
- The generator is then used to parse the respective model. Various instantiators are available (the supported UML tools are listed below). The generator builds a model in memory, instantiating the metaclasses.
- At this time, the model is independent from the concrete syntax from which it was parsed. As a consequence, you can mix models that have been read from different syntaxes and tools!
-
After that, you write templates in which you can use the metaclasses. Within your templates you create output, e.g. for creating your code.

- Finally, you invoke the generator framework via commandline, an ant-plugin, or a really nice swing gui, which instantiates your design model and lets you define for which elements you want to generate code.
Supported UML Tools
- ARIS UML-Designer
- Artisan
- Gentleware Poseidon for UML
- Enterprise Architect
- Magic Draw
- Metamill
- MID Innovator Object
- Rational Rose + UniSys XML Tools
- Rational XDE
- Together

