What is AndroMDA?

In short, AndroMDA is an open source MDA framework - it takes any number of models (usually UML models stored in SMI produced from case-tools) combined with any number of AndroMDA plug-ins (cartridge and translation-libraries) and produces any number of custom components. You can generate components for any language you want: Java, Net, HTML, PHP, anything you want. You just write or customize existing plug-ins to support it and you're ready to go.

Andromda - Programmer at Work

More about MDA and Cogeneration

In the classical sense of software engineering, one first determines what the system needs to do (the analysis phase). In this step the developer architect is something in mind which eventually is translated into a formal and platform specific system. It will require an actual person to implement this translation using a language such as ASM, C, C++, Java. With MDA we attempt to simplify the job of the developer or architect and we achieve this by making it easier for the person to digitalize the ideas that he or she has in mind (the Mental Model, MM): we let the person create the Platform Independent Model or PIM, this model is a one-or-one mapping of the MM into a more formal language such as a UML. This approach has several obvious advantages: is a very straightforward translation process. The developer architect keeps focus on the business logic, not the underlying technology. The PIM can be reused later, it is not bound to any existing platform. The PIM is a useful medium to communicate ideas to others.

The next step is to have a way to transform the PIM into program code, the MDA way of doing this is to gradually refine the model into a more Platform Specific Model or PSM and Marshall this model into the code that would actually be written manually. This is where AndroMDA kicks in: different cartridges exist that will analyze the given PIM and construct a PSM with which templates are used to produce code. You'll see that a lot of code often is boilerplate and will never require a manual change, if some code does require a change there are a few different ways of elegantly solving that problem.

A very important thing to know about AndroMDA is that the transformation process is controlled using plug-ins called cartridges and each cartridge is very easy to tune: you will never encounter a case we will not be able to have your specific code generated from the model. Any type of customization is possible, therefore you don't get stuck. On the other hand you need to realize that AndroMDA is here to help eliminate boring and repetitive tasks, while the same time it allows your model to really communicate with the system is doing. It is not meant to be a silver bullet solution where the computer takes over your job and you just sit back and stop thinking and do nothing.

Why would you want to use it? There are several reasons: it eliminates the need to write redundant code. Your project models will reflect your code. Projects are documented and diagrammed in a standard platform independent way making it much easier and faster to adapt to ever rapidly changing technologies. You'll have artifacts or your models that will allow much easier communication with the business side of things.

Andromeda is mostly used by developers working with J2EE technologies. Andromeda can set up a new J2EE project from scratch in which the code is generated from a UML model. You can choose to generate code from Hibernate. EJB, Spring, WebServices and Struts. The generated code is automatically integrated into the build process. In doing so you will only need to spend a little time getting to know AndroMDA and you're good to go, you will see it is a very efficient way to have the code generated for you while keeping your focus on business logic.

Andromeda ships with a few tools to make your life easier such as J2EE Andromdapp: generate which is a maven plug-in. Schema2XMI is able to read your database and build an XMI file from it and then used to load as a UML model. Admin-Console is a web application that can be used for the maintenance of your database tables. It allows to list, insert, update and delete rows from your database. It is very configurable so you can present your data in a way that suits the users best. You could deploy this tool together with your application and easily and quickly perform CRUD operations as this tool is still under development and is only available through CVS.

Andromeda reads models into memory making these object models available to its plug-ins. These plug-ins define exactly what AndroMDA will and will not generate. Each plug-in is completely customizable to a project specific needs.