ModelAnt is a practical open source MDA tool to support model-driven software development processes. It is an extension of Apache Ant that allows:
- create models,
- load models,
- query models,
- transform models,
- export models,
- reverse engineer java code to model,
- reverse engineer relational databases to model,
- reverse engineer XML document type definitions (DTD) to model,
- reverse engineer XML Schema (XSD) to model,
- reverse engineer Ant scripts (projects and antlibs) to model,
- compare models and detect model changes,
- generate textual artifacts (code, SQL, scripts, etc.) from models,
- generate documentation of Ant scripts (for projects and antlibs)
Its feature for reverse engineering and generating documentation of Ant scripts (referred as ant.doc) is quite similar to javaDoc tool. The documentation of ModelAnt itself is an example of ant.doc outcome.
ModelAnt uses industry standard technologies and Java APIs as a JMI 1.0, MOF 1.4, XMI 1.1 / 1.2, UML 1.3 integrating them with Ant as a scripting front-end.
ModelAnt provides a powerful template engine to generate code, SQL scripts, XML files, textual descriptions and many more. It includes practical code generation templates for Java POJO. Of course, the code must be specific for the platform, framework and conventions of the concrete product. Thus it does not provide a common off-the-shelf solution just to pick up and use immediately – the code generation templates should be adapted for the concrete project.
ModelAnt is a platform that really simplifies the creation of product-specific code generation solution. Such a product-specific solution is used in our team at i:FAO AG since more than 10 years now and proves the value of ModelAnt itself and the Model-Driven Software Development in general.
We also collect and publish experience, practices, recommendations, ideas and usage of model-driven architecture (MDA) and model-driven software development (MDSD) for improvement of the software development process and raising the development abstraction level.