MDA code generation framework AndroMDA 3 released

Discussions

News: MDA code generation framework AndroMDA 3 released

  1. AndroMDA is a code generation framework that follows the Model Driven Architecture (MDA) paradigm. It takes a UML model from a CASE-tool and generates classes and deployable components (J2EE or other) specific for your application architecture.

    The AndroMDA Team is proud to release the first release candidate of version 3.0! It includes many new features, bug fixes, and much more documentation. Some of the more notable new features include:
     
    - Code generation targeting the Spring framework has been improved greatly - generating Spring applications is now easier than ever
    - Completely new How-to documentation for both Spring and bpm4struts cartridges
    - Hibernate inheritance support has been tremedulously improved (all flavors of hibernate inheritance are now supported)
    - Performance improvements (AndroMDA is now more than 30% faster for larger projects)
     
    For exact details of all improvements that have been made in this release, please see our release site: http://www.andromda.org/changes-report.html#3_0-RC1

    Enjoy working with Open Source MDA!
    The AndroMDA Team

    Threaded Messages (20)

  2. AndroMDA, the leading open source MDA code generation framework, is now backed with professional training and consulting services under the name AndroMDA.com. Matthias Bohlen, the founder of the AndroMDA project, is an expert in Model Driven Architecture and AndroMDA technology and designed a series of training courses that will give users the knowledge they need to make the most out of AndroMDA.

    Whether you are a manager and ask yourself which impact MDA may have on your project or whether you are a software architect or developer, looking to use Model Driven Architecture to create a robust and responsive application - in-depth, hands-on training will take you through open source MDA and teach you how to optimize AndroMDA for your needs.

    Explore the internals of MDA and the AndroMDA code generation framework together with a person who shares the passion for communicating what MDA is about. This is a unique offering in the industry where you learn directly from the creators of the technology.

    Public training sessions are unique experiences. You meet your peers while immersing yourselves in the inner workings of AndroMDA. Trainings take place at high level business hotels.

    You will need to bring your own laptop computer for all public technical courses.

    Private hands-on training courses enable you to train a team of developers at one time at your own site. There is also some flexibility in the course curricula allowing you to tailor the training course to meet your specific needs - both in terms of subject matter and knowledge-level of your staff. Contact AndroMDA.com, we'll find a way to satisfy your needs!

    The next public AndroMDA Boot Camp takes place from April 25 to April 28 in Bonn, Germany. Register online at http://www.andromda.com . In the boot camp, I'll guide you from scratch to writing your own AndroMDA cartridge in only 4 days time! I am looking forward to welcome you there, and I promise: it will be an exciting time!

    Cheers...
    Matthias Bohlen
  3. Who's Right?[ Go to top ]

    from www.openmdx.org:

    "What is openMDX?
    openMDX is the leading open source MDA platform based on the Object Management Group’s Model Driven Architecture standards."

    There's really no independent comparison of the MDA Frameworks, and would be interested in how AndroMDA differentiates itself from the competition. DOes anyone know if this information is available?
  4. Wikipedia knows[ Go to top ]

    see this wikipedia page: http://en.wikipedia.org/wiki/Comparison_of_code_generation_tools http://tankogen.free.fr: Tankogen is a free code generator framework that allows to quickly develop reusable and user-friendly code generators. No new language to learn: Xpath basic knowledge is sufficient:
  5. Hello Matthias,

    Are you thinking about supporting model transformations (via your own implementation or just integrating/interoperating with other transformation tool, e.g. Mia-Software http://www.mia-software.com/) ?

    Thank you,
    Donatas
  6. Hi Donatas,

    yes, we support model transformation although most of our users might not be aware of it and are not yet using it because our samples do not yet show it :-)

    The necessary steps inside AndroMDA are:

    1) It loads the model into a MOF repository.
    2) It instantiates the PIM abstract syntax tree (AST).
    3) It wraps the AST objects with metafacade objects.
    4) The facades transform the PIM AST into a PSM AST.
    5) Templates generate text from the PSM AST objects.
    6) The PSM AST objects are thrown away after the templates have transformed them to text (e.g. source code).

    At the moment, most users skip step #4 and let the metafacades produce String objects that fill the placeholders inside the templates. True model transformation has significant advantages over this simple approach.

    At the JAX conference this year (see http://www.jax.de ), I'll show model to model translation from step #4 above in a practical demo ("model transformation in practice"). The AndroMDA Boot Camp training also shows how to do it in practice.

    Cheers...
    Matthias
  7. Thanks for information, Matthias.
    One more question: does AndroMDA have (or will have) some language to define model-to-model transformations and what are relationships to emerging Q/V/T OMG standard?

    Greetings,
    Donatas
  8. Does AndroMDA have (or will have) some language to define model-to-model transformations and what are relationships to emerging Q/V/T OMG standard?

    Hi Donatas,

    currently, the model-to-model transformations are done in plain Java. As soon as the OMG will select one of the QVT proposals to finalize a standard, we will support that one. In the meantime, we stick to Java.

    Cheers...
    Matthias
  9. <blockquoteHi Donatas,currently, the model-to-model transformations are done in plain Java. As soon as the OMG will select one of the QVT proposals to finalize a standard, we will support that one. In the meantime, we stick to Java.Cheers...MatthiasSo this going to be interesting! It is already now interesting :)

    If somebody is interested in the latest 2nd revision of Q/V/T proposal, here it is (March 2 2005): Revised submission for MOF 2.0 Query/View/Transformation version 2
  10. Hi Donatas,currently, the model-to-model transformations are done in plain Java. As soon as the OMG will select one of the QVT proposals to finalize a standard, we will support that one. In the meantime, we stick to Java.Cheers...Matthias
    So this going to be interesting! It is already now interesting :)

    If somebody is interested in the latest 2nd revision of Q/V/T proposal, here it is (March 2 2005): Revised submission for MOF 2.0 Query/View/Transformation version 2
  11. It instantiates the PIM abstract syntax tree (AST).

    What you strangely call an AST is presumably just a document object model (DOM) ?
    It wraps the AST objects with metafacade objects.

    Metafacade?
  12. Re: Model transformation support[ Go to top ]

    <quote>Metafacade?</quote>

    metafacades are services that wrap elements from the meta-model: let's say you have modeled a simple class in UML but you would like to interface with it using a domain specific API such as for DBs, then you could have a metafacade called 'Table' wrapping this 'class' element: doing $table.columns would return the underlying class attributes and associations, $table.tableName could return the name modeled in UML but with all characters in uppercase, etc..

    each cartridge defines it own meta-model with its unique set of metafacades that map onto the the elements in the UML model, the runtime instances of these facades make up the PSM for that specific UML model

    FYI, AndroMDA exposes these facades in templates to easily generate code, it makes the templates much more readable as the transformation know-how is defined in these facades (java code)

    -- Wouter
  13. Re: Model transformation support[ Go to top ]

    metafacades are services that wrap elements from the meta-model ... each cartridge defines it own meta-model with its unique set of metafacades that map onto the the elements in the UML model...

    This sounds like stereotypes, an OMG-standardized artifact.
  14. Re: Model transformation support[ Go to top ]

    <quote>
    This sounds like stereotypes, an OMG-standardized artifact.
    </quote>

    they are closely related yes, you can use stereotypes to control how a metafacade is mapped

    in AndroMDA you can use a stereotype such as 'ValueObject' on a class to have the ValueObjectFacade wrapped around it, but this approach is rather limited

    recently the AndroMDA core has been extended to allow these 'wrappings' to be based on metafacade properties in addition to stereotypes, this clearly has allowed much greater flexibility in the use of metafacades

    example: suppose an AndroMDA cartridge-developer wants to put the 'MyPackage' stereotype on a package to denote that all classes owned by that package are to be wrapped by a MyClassFacade

    instead of requiring the user to model the 'MyClass stereotype onto each individual class the developer can now simply say: "if the package owning this class has the 'MyPackage' stereotype then wrap it, otherwise don't",

    so you see, mapping metafacades envelopes more than just the notion of stereotypes
  15. Abstract syntax tree[ Go to top ]

    What you strangely call an AST is presumably just a document object model (DOM) ?

    Well, a DOM on a much higher level, yes. It is an in-memory graph made of instances of the metamodel classes. At the moment, our metamodel is mostly UML so the types of the objects that make up the AST are the classes in the UML metamodel.

    Example: If you model a "Person" class with a "birthday:Date" attribute and a "calculateAge:int" operation, then you get an abstract syntax tree made of several objects:

    a UMLClass object, name="Person"
    an Attribute object, name="birthday"
    a Datatype object, name="Date"
    an Operation object, name="calculateAge"
    a Parameter object, kind=VK_RETURN
    another Datatype object, name="int"

    When AndroMDA sees the UMLClass object, it wraps it with a ClassifierFacade object so that you can suddenly can call ClassifierFacade.getFullyQualifiedName() and you will get "com.yourcompany.somepackage.Person" as a result. And this is only the beginning!

    In the AndroMDA Boot Camp (April 25-28 in Bonn), I'll explain everything in detail.

    Cheers...
    Matthias
  16. Abstract syntax tree[ Go to top ]

    What you strangely call an AST is presumably just a document object model (DOM) ?
    Well, a DOM on a much higher level, yes. It is an in-memory graph made of instances of the metamodel classes.

    From your clarification I infer that Andro's engine is based neither on the XMI DOM nor JMI. This surprises me since presumably if JMI isn't good enough to base a model compiler on, then what exactly is JMI good for?!
  17. Re: Abstract syntax tree[ Go to top ]

    From your clarification I infer that Andro's engine is based neither on the XMI DOM nor JMI. This surprises me since presumably if JMI isn't good enough to base a model compiler on, then what exactly is JMI good for?!

    The engine we use for metadata processing is called Netbeans MetaData Repository (MDR, see http://mdr.netbeans.org). It parses an XMI file with the model, builds the in-memory AST that I was talking about, and makes the AST objects implement the JMI interfaces of the metamodel, as well as the reflective JMI interfaces.

    So, all this is 100% compliant to the MOF standards by the OMG.

    Based on the JMI-accessible objects, we add model transformation behavior by wrapping them with metafacades. A pure JMI metaobject has no behavior, that's why.

    Cheers...
    Matthias
  18. If I want to generate an app completely independent of EJB, and deploy to Tomcat, can I do that today with MDA?

    I see mention of Hibernate, Spring, etc., but at a quick glance it looked as if the example apps still used Stateless Session Beans.

    Thanks,
    Mike
  19. If I want to generate an app completely independent of EJB, and deploy to Tomcat, can I do that today with MDA?I see mention of Hibernate, Spring, etc., but at a quick glance it looked as if the example apps still used Stateless Session Beans.Thanks,Mike

    Sorry, meant can I do that with 'AndroMDA'?
  20. Hi Mike,

    Yes you can do that, very easily. The Spring cartridge by default wraps the services with stateless session beans, however all you need to do is change a property and the ejb generation goes away (no code changes at all). A lot of our users use the Spring cartridge without EJB and deploy to Tomcat.

    The application generator (for getting started very quickly with AndroMDA), doesn't generate a standalone war structure yet, it assumes an ear (however it can be easily changed once the structure has been generated). We're planning on making the application generator generate structures for stand-alone wars as well for 3.0 final.
  21. Me too, I saw a mention of Hibernate, Spring, also a I saw a lot of Examples that is for you!

    AndroMDA comes with an array of sample applications. We have set up these sample applications on our server so you can have a look at what is possible with AndroMDA.

    CRUD Sample: http://www.andromda.org/crud
    Animal Quiz: http://www.andromda.org/animal-quiz/
    Online Store: http://www.andromda.org/OnlineStore/

    Enjoy!

    Alexis Quirós - Argentina
    =========================
    (aquiros at cubika dot com)
    (alexisquiros at gmail dot com)