Modelling
For modelling a specialized DSLs are used.
- DSL for the canonical model (cmn)
- DSL for defining the platform (profile)
Originally UML was used but it turned out quite early that the modeling as base for code generation is possible but not efficient with UML.
Using a custom DSL is now used in production since 2007 by customers we are supporting. We are still convinced that this is the by far better alternative.
The Models are organized in modules which contains the model files.
Modules
The modules are implemented as Maven modules which allows to use a all features of the Maven ecosystem:
- Versioning of modules
- Dependency Management
- Repositories (public ones as well as private ones)
Model Files
Model files consists of a header which is used for:
- Structuring the model into packages and defining namespaces
- Versioning of these packages inside of modules
- Importing of model elements of other packages
Build
To invoke the generators and package the model and/or the generated artifacts Maven is used. The predefined and/or custom generators are invoked by the provided Maven-Plugin.