{"id":67,"date":"2012-10-24T03:28:27","date_gmt":"2012-10-24T00:28:27","guid":{"rendered":"http:\/\/mdatools.net\/blog\/?page_id=67"},"modified":"2018-11-04T19:34:16","modified_gmt":"2018-11-04T17:34:16","slug":"home","status":"publish","type":"page","link":"https:\/\/mdatools.net\/blog\/","title":{"rendered":"Model-driven software development with ModelAnt"},"content":{"rendered":"<div>\n<p><a title=\"Model Ant\" href=\"\/blog\/projects\/modelant\/\">modelant<\/a> is a practical <a title=\"open source initative\" href=\"http:\/\/opensource.org\/\" target=\"_blank\" rel=\"noopener\">open source<\/a> tool that supports\u00a0<a title=\"model-driven software development processes\" href=\"http:\/\/en.wikipedia.org\/wiki\/Model-driven_software_development\" target=\"_blank\" rel=\"noopener\">model-driven software development processes<\/a>. modelant version 2.x is an extension of <a href=\"http:\/\/ant.apache.org\/\">Apache Ant<\/a>, whereas modelant version 3.x extends Apache Maven. modelant can:<\/p>\n<ul>\n<li>create models,<\/li>\n<li>load models,<\/li>\n<li>query models,<\/li>\n<li>transform models,<\/li>\n<li>export models,<\/li>\n<li>reverse engineer to model\n<ul>\n<li>java code,<\/li>\n<li>relational databases,<\/li>\n<li>XML document type definitions (DTD),<\/li>\n<li>XML Schema (XSD),<\/li>\n<li>Ant scripts (projects and antlibs),<\/li>\n<\/ul>\n<\/li>\n<li>compare models and detect model changes,<\/li>\n<li>generate textual artifacts from models:\n<ul>\n<li>java\/any code,<\/li>\n<li>SQL,<\/li>\n<li>scripts,<\/li>\n<li>configuration files, etc.<\/li>\n<\/ul>\n<\/li>\n<li>generate documentation of Ant scripts (for projects and antlibs in version 2.x)<\/li>\n<\/ul>\n<\/div>\n<h2>Standards<\/h2>\n<div>\n<p><a href=\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1444 alignright\" src=\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven-300x185.jpg\" alt=\"\" width=\"300\" height=\"185\" srcset=\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven-300x185.jpg 300w, https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven.jpg 399w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<\/div>\n<div><a title=\"Model Ant\" href=\"\/blog\/projects\/modelant\/\">modelant<\/a>\u00a0uses industry standard technologies and Java APIs. Namely, these standards are\u00a0<a title=\"Java Metadata Interface Specification\" href=\"http:\/\/jcp.org\/en\/jsr\/detail?id=40\">JMI 1.0<\/a>, <a title=\"MetaObject Facility 1.4 Specification\" href=\"http:\/\/www.omg.org\/spec\/MOF\/1.4\/\">MOF 1.4<\/a>, <a title=\"XMI 1.2 Specification\" href=\"http:\/\/www.omg.org\/cgi-bin\/doc?formal\/02-01-01\">XMI 1.1 \/ 1.2<\/a>, <a title=\"UML 1.3 Specification\" href=\"http:\/\/www.omg.org\/spec\/UML\/1.3\/\">UML 1.3<\/a>, <a title=\"UML 1.3 Specification\" href=\"http:\/\/www.omg.org\/spec\/UML\/1.4\/\">UML 1.4<\/a>. modelant is integrated with <a href=\"http:\/\/ant.apache.org\">Apache Ant<\/a> scripting front-end (version 2.x) and <a href=\"http:\/\/maven.apache.org\">Apache Maven<\/a> (version 3.x). It provides means to query and process JMI-compliant models, in particular:<\/div>\n<ul>\n<li><span style=\"font-size: 14px; letter-spacing: 0px;\">generating code out of the model using a <a href=\"https:\/\/mdatools.net\/product\/3.3.0\/modelant.template\/index.html\">JSP-like template language<\/a><\/span><\/li>\n<li><span style=\"font-size: 14px; letter-spacing: 0px;\">model conversion <a href=\"http:\/\/www.omg.org\/spec\/UML\/1.3\/\">UML 1.3<\/a> to <a href=\"http:\/\/www.omg.org\/spec\/UML\/1.4\/\">UML 1.4<\/a><\/span><\/li>\n<li><span style=\"font-size: 14px; letter-spacing: 0px;\">reverse engineering DTD, XSD, and relational databases to UML 1.3.<\/span><\/li>\n<\/ul>\n<div><\/div>\n<h2>Code Generation<\/h2>\n<div><a title=\"Model Ant\" href=\"\/blog\/projects\/modelant\/\">modelant <\/a>provides a powerful template engine to generate<\/div>\n<ul>\n<li>code,<\/li>\n<li>SQL scripts,<\/li>\n<li>XML files,<\/li>\n<li>textual descriptions<\/li>\n<li>and many more.<\/li>\n<\/ul>\n<p>modelant includes practical\u00a0 code generation templates for Java POJO.\u00a0 However, modelant does not provide a common off-the-shelf solution. It is not possible just to pick up and use immediately. Instead, the code generation templates should be adapted for the specific project, frameworks and code conventions.<\/p>\n<div><a title=\"Model Ant\" href=\"\/blog\/projects\/modelant\/\">modelant <\/a>is a platform that really simplifies the creation of project-specific code generation. For more than 14 years, in my former team at <a href=\"http:\/\/www.ifao.net\">i:FAO AG<\/a>\u00a0 we used modelant for code generation. It proved the\u00a0value of the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Model-driven_software_development\">Model-Driven Software Development<\/a> in for the development, support and maintenance of the products. In particular it proved the value of modelant too.<\/div>\n<div><\/div>\n<div><\/div>\n<h2>Reverse Engineering<\/h2>\n<p>modelant&#8217;s feature for <a title=\"reverse engineering\" href=\"http:\/\/en.wikipedia.org\/wiki\/Reverse_engineering\" target=\"_blank\" rel=\"noopener\">reverse engineering<\/a> of java code, relational databases, XML document type definitions (DTD), XML Schema (XSD) and ANT scripts extracts UML 1.3 model that are practical for:<\/p>\n<ul>\n<li>generating documentation<\/li>\n<li>generating code<\/li>\n<li>comparing and revealing structural changes in databases, DTDs, XSDs<\/li>\n<li>visualization and human comprehension<\/li>\n<\/ul>\n<p>Actually, the <a title=\"Documentation\" href=\"\/product\/current-docs\/antdoc\/\">documentation of ModelAnt<\/a> itself is an example of <a href=\"http:\/\/mdatools.net\/product\/current-docs\/antdoc\/\">ant.doc<\/a> outcome.<\/p>\n<h1>Distribution<\/h1>\n<p>The integration of modelant with Apache Maven simplifies the distribution of modelant through Maven plugins, which are found in the <a href=\"https:\/\/repo.maven.apache.org\/maven2\/net\/mdatools\/\">Maven Central binary repository<\/a>. Then the use of modelant&#8217;s components is just including in your pom.xml, for example:<\/p>\n<pre> &lt;plugin&gt;\r\n    &lt;groupId&gt;net.mdatools&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;modelant.uml13.maven.javauml&lt;\/artifactId&gt;\r\n    &lt;version&gt;3.2.0&lt;\/version&gt;        \r\n    &lt;executions&gt;\r\n      &lt;execution&gt;\r\n        &lt;phase&gt;compile&lt;\/phase&gt;\r\n        &lt;goals&gt;\r\n          &lt;goal&gt;reverseEngineerJavaInUml13&lt;\/goal&gt;\r\n        &lt;\/goals&gt;\r\n        &lt;configuration&gt;\r\n          &lt;sourcepath&gt;...&lt;\/sourcepath&gt;\r\n          &lt;outputDirectory&gt;...&lt;\/outputDirectory&gt;\r\n          &lt;includeDependencySources&gt;false&lt;\/includeDependencySources&gt;\r\n          &lt;includeTransitiveDependencySources&gt;false&lt;\/includeTransitiveDependencySources&gt;\r\n        &lt;\/configuration&gt;\r\n      &lt;\/execution&gt;\r\n    &lt;\/executions&gt;\r\n  &lt;\/plugin&gt;<\/pre>\n<p>This allows Maven to download all modelant components and use them.<\/p>\n<h2>Sharing Experience<\/h2>\n<div>We also collect and publish experience, practices, recommendations, ideas\u00a0for improvement of the software development process, by employing <a href=\"http:\/\/en.wikipedia.org\/wiki\/Model-driven_software_development\">model-driven software development (MDSD)<\/a>\u00a0and raising the abstraction level.<\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>modelant is a practical open source tool that supports\u00a0model-driven software development processes. modelant version 2.x is an extension of Apache Ant, whereas modelant version 3.x extends Apache Maven. modelant can: &#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":10,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-67","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Model-driven software development with ModelAnt<\/title>\n<meta name=\"description\" content=\"An open source MDA platform, tools, practices and recommendations for applying model-driven software development (MDSD) in the software development process.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mdatools.net\/blog\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Model-driven software development with ModelAnt\" \/>\n<meta property=\"og:description\" content=\"An open source MDA platform, tools, practices and recommendations for applying model-driven software development (MDSD) in the software development process.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mdatools.net\/blog\/\" \/>\n<meta property=\"og:site_name\" content=\"MDA Tools\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-04T17:34:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven-300x185.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mdatools.net\/blog\/\",\"url\":\"https:\/\/mdatools.net\/blog\/\",\"name\":\"Model-driven software development with ModelAnt\",\"isPartOf\":{\"@id\":\"https:\/\/mdatools.net\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/mdatools.net\/blog\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/mdatools.net\/blog\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven-300x185.jpg\",\"datePublished\":\"2012-10-24T00:28:27+00:00\",\"dateModified\":\"2018-11-04T17:34:16+00:00\",\"description\":\"An open source MDA platform, tools, practices and recommendations for applying model-driven software development (MDSD) in the software development process.\",\"breadcrumb\":{\"@id\":\"https:\/\/mdatools.net\/blog\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mdatools.net\/blog\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mdatools.net\/blog\/#primaryimage\",\"url\":\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven.jpg\",\"contentUrl\":\"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven.jpg\",\"width\":399,\"height\":246,\"caption\":\"maven integration\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mdatools.net\/blog\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/mdatools.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Model-driven software development with ModelAnt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mdatools.net\/blog\/#website\",\"url\":\"https:\/\/mdatools.net\/blog\/\",\"name\":\"MDA Tools\",\"description\":\"Tools and ideas for model-driven software development\",\"publisher\":{\"@id\":\"https:\/\/mdatools.net\/blog\/#\/schema\/person\/6eeb8dce737e32b72e77b5556e2be121\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mdatools.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/mdatools.net\/blog\/#\/schema\/person\/6eeb8dce737e32b72e77b5556e2be121\",\"name\":\"popovr\",\"logo\":{\"@id\":\"https:\/\/mdatools.net\/blog\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Model-driven software development with ModelAnt","description":"An open source MDA platform, tools, practices and recommendations for applying model-driven software development (MDSD) in the software development process.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mdatools.net\/blog\/","og_locale":"en_US","og_type":"article","og_title":"Model-driven software development with ModelAnt","og_description":"An open source MDA platform, tools, practices and recommendations for applying model-driven software development (MDSD) in the software development process.","og_url":"https:\/\/mdatools.net\/blog\/","og_site_name":"MDA Tools","article_modified_time":"2018-11-04T17:34:16+00:00","og_image":[{"url":"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven-300x185.jpg","type":"","width":"","height":""}],"twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mdatools.net\/blog\/","url":"https:\/\/mdatools.net\/blog\/","name":"Model-driven software development with ModelAnt","isPartOf":{"@id":"https:\/\/mdatools.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mdatools.net\/blog\/#primaryimage"},"image":{"@id":"https:\/\/mdatools.net\/blog\/#primaryimage"},"thumbnailUrl":"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven-300x185.jpg","datePublished":"2012-10-24T00:28:27+00:00","dateModified":"2018-11-04T17:34:16+00:00","description":"An open source MDA platform, tools, practices and recommendations for applying model-driven software development (MDSD) in the software development process.","breadcrumb":{"@id":"https:\/\/mdatools.net\/blog\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mdatools.net\/blog\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mdatools.net\/blog\/#primaryimage","url":"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven.jpg","contentUrl":"https:\/\/mdatools.net\/blog\/wp-content\/uploads\/2018\/11\/modelant-maven.jpg","width":399,"height":246,"caption":"maven integration"},{"@type":"BreadcrumbList","@id":"https:\/\/mdatools.net\/blog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mdatools.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Model-driven software development with ModelAnt"}]},{"@type":"WebSite","@id":"https:\/\/mdatools.net\/blog\/#website","url":"https:\/\/mdatools.net\/blog\/","name":"MDA Tools","description":"Tools and ideas for model-driven software development","publisher":{"@id":"https:\/\/mdatools.net\/blog\/#\/schema\/person\/6eeb8dce737e32b72e77b5556e2be121"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mdatools.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/mdatools.net\/blog\/#\/schema\/person\/6eeb8dce737e32b72e77b5556e2be121","name":"popovr","logo":{"@id":"https:\/\/mdatools.net\/blog\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/pages\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":138,"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/pages\/67\/revisions"}],"predecessor-version":[{"id":1456,"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/pages\/67\/revisions\/1456"}],"wp:attachment":[{"href":"https:\/\/mdatools.net\/blog\/wp-json\/wp\/v2\/media?parent=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}