What is AndroMDA?

In short, AndroMDA is an open source MDA framework - it takes any number of models (usually UML models stored in XMI produced from case-tools) combined with any number of andromda plugins (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 really, you just write (or customize existing) plugins to support it and you're good to go.

Okay, that all sounds fine, but what can AndroMDA do for me *now* ?

At the time of this writing AndroMDA is mostly used by developers working with J2EE technologies. Out-of-the-box AndroMDA can setup a new J2EE project from scratch, in which code is generated from a UML model. You can choose to generate code for 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 very efficient to have the code generated for you, while keeping your focus on business logic.

Additionally AndroMDA ships with a few tools to make your life easier:

  • As already mentioned, we have a tool to generate project templates such as for J2EE: andromdapp:generate, this is a maven plugin.
  • Schema2XMI is able to read your database and build an XMI file from it, which can then be used to load as a UML model.

Tell me a little bit more about MDA and code generation

In the classical sense of software engineering, one first determines what the system needs to do (the analysis phase). In this step the developer or architect has something in mind that will eventually be 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/architect, we achieve this by making it easier for him/her to digitalize the ideas he/she has in mind (the Mental Model or MM): we let him/her 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 UML. This approach has several obvious advantages:

  • It 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 plugins called cartridges and each cartridge is very easy to tune: you will never encounter a case where you will not be able to have your specific code generated from the model. Any type of customization is possible, therefore you won't get stuck.

On the other hand it is very important to realize AndroMDA is here to help eliminate boring and repetitive tasks, while at the same time allowing your model to really communicate what the system is doing. it is not meant be a Silver Bullet solution where the computer takes over your job and you just sit back and stop thinking.

How does AndroMDA work ?

AndroMDA reads models into memory making these object models available to its plugins. These plugins define exactly what AndroMDA will and will NOT generate. Each plugin is completely customizable to a project's specific needs.

We invite you to get to know AndroMDA, here are three links that will point you in the right direction:

Why would you want to use it ?

You would want to use AndroMDA for a number of reasons:

  1. It eliminates the need to write redundant code.
  2. Your project models WILL reflect your code.
  3. Projects are documented/diagrammed in a standard platform independent way making it much easier/faster to adapt to ever rapidly changing technologies.
  4. You'll have artifacts (your models) that allow much easier communication with the business side of things.

How does it compare to other tools ?

As opposed to other MDA tools we are not spending our time and effort promoting this free software product, neither are we trying to attract developers using catchy slogans or aggressive sales tactics. Instead, we let the product speak for itself, we believe that a great product can only be achieved when strict criteria are met! This is what AndroMDA guarantees:

  • Community driven: Development is driven by community support, our userbase is world-wide, anyone can participate in the development process, be it by submitting patches, requesting features or filing bugs.
  • Vision: A few core developers keep the development process in tight control, it is important AndroMDA doesn't get bloated with features and the ones that are added will properly be maintained and supported.
  • Pragmatic: Instead of blindly implementing specifications we support features people actually need.
  • Open: You will simply *never* get stuck using AndroMDA, it is possible to customize the runtime behavior at any point. This is perhaps one of the most important aspects of a tool that is designed to help you with your projects.
  • Modular: AndroMDA is a micro-kernel supporting plugins for different types of components, AndroMDA ships with a default implementation for each of these components. Any one of them can be replaced by a customized one.
  • Docs: Up-to-date documentation reflects the state of the product, we have two websites, one for the stable releases and one for the nightly builds.
  • Responsiveness: Users appreciate it when they know their questions will be answered. Developers on our mailing list are known to respond to any email within the day; actually, most of the time replies to emails are received within the hour, this is achieved by people from different timezones monitoring the list.
  • Release often: People have access to the latest changes in development as well as access to stable releases. These stable releases are to be updated once a month (as per AndroMDA 3.0 final).
  • Testing: AndroMDA is under constant development, and improvements are added on a daily basis. It is mandatory that we make sure nothing ever gets broken without us knowing, for this reason we run regression tests on all components.