AndroMDA

AndroMDA is an Open Source MDA Generator. It is used for everything from simple CRUD applications to complex enterprise applications. AndroMDA comes with an array of ready-made cartridges for common architectures like Spring, EJB, .NET, Hibernate, Struts and more. If you have a custom architecture, AndroMDA can also help you - by writing a so-called cartridge, you can customize AndroMDA to fit your needs.

Usage
With ArgoUML, you create the model that serves as input for AndroMDA. For how to configure and use AndroMDA, so that this model is processed, look at the AndroMDA site.

There is a highly recommended tutorial on a sample project: the Getting Started Java pages. It even considers ArgoUML as the modeling tool (beside others). CAUTION: the tutorial needs to be updated for the actual ArgoUML version, please have a look at the following changes: AndroMDA 'Getting Started Java' Update.

Actual AndroMDA profile for ArgoUML
It can be downloaded here:
 * andromda-profile-32-noextensions.xmi

Since ArgoUML 0.26, this can be used as a profile in the Profile Configuration.

Issues
Currently we have the following main issues with AndroMDA:
 * Profile shipped with AndroMDA cannot be imported by ArgoUML, use the profile above. This is not a bug of ArgoUML, but an incorrect appearence of double model elements in the profile which causes MDR to throw exceptions. See issue 3571. *NEW*: with profile support things may change, watch the "AndroMDA profiles and ArgoUML" section below!
 * Cartridges cannot be modelled with ArgoUML, write them by hand instead. This is because AndroMDA expects the stereotypes to be linked (HREF) to the ones of the andromda profile via some special Magic Draw extension. See issue 4077.
 * Models created with MagicDraw (e.g. AndroMDA sample models) are very difficult to load if they reference elements from so called modules (hrefs in the XMI file), see issue 3571 again. Better don't try this! You can save the whole model in one single XMI file containing everything inside Magicdraw, this could bring you one step further...

AndroMDA profiles and ArgoUML
With release 0.26 support for profiles is introduced in ArgoUML. Now the profile above can be added to the Profile Configuration. But even more: if the original AndroMDA (uml14) profile is available in your file system (either from the maven repository or from a direct download), then it's parts can be added all at once to the profile configuration in ArgoUML (e.g. by selecting the uml14 directory), so that each part can be separately (de)activated. To achieve this, select the "Edit -> Settings..." menu item and click on the "profiles" tab, then add the uml14 directory to the list of default UML directories. After clicking on the refresh button (or after restarting ArgoUML), the AndroMDA profiles are available for individual projects in "File -> Settings..." (profile tab).

CAUTION! We found a bug in ArgoUML 0.26 that causes these instructions to work only if the profile models get the same XMI name attribute as the respective XMI file name is. This limitation will vanish in the soon coming 0.26.1 bugfix release!

Remark: ArgoUML can't load the file with the complete AndroMDA profile and will complain by throwing an exception, but this can be safely ignored. The various profile parts are loaded correctly, which allows to even use only a subset of the whole profile in projects.

This is tested with AndroMDA 3.3.


 * TODO: Test if the resulting models can be processed by AndroMDA, e.g. with the Timetracker tutorial.

ArgoUML profiles and AndroMDA
This is the other way around: ArgoUML profiles are used in a model which need to be processed by AndroMDA.

With release 0.26 support for profiles is introduced in ArgoUML. If a model depends on a profile and serves as input for AndroMDA, then AndroMDA needs to find the used profile(s). For this the andromda.xml needs to be modified; be aware that this file is generated by AndroMDA!

The modified part of andromda.xml might look like this so that AndroMDA can find the profile(s) (here it is in ${project.basedir}/src/main/uml/):

 ${model.uri}   ${settings.localRepository}/org/andromda/profiles/uml14  ${project.basedir}/src/main/uml/ 

For more information about this, have a look on issue 5194.

Reusing MagicDraw model
Many AndroMDA users (and developers) use MagicDraw as their preferred modelling tool. There are some issues with reusing the MagicDraw models, but if one is willing to do some manual work, it will be possible. Have a look on the following page to see how this works for the current ArgoUML version: Reusing models of other tools.

Issues in our bug tracking database that deal with further developing ArgoUML to make it more convenient:
 * http://argouml.tigris.org/issues/show_bug.cgi?id=5407
 * http://argouml.tigris.org/issues/show_bug.cgi?id=3571

Additional hints/resources
You can either use the model elements in the provided profile (see above), or just create the elements needed by the AndroMDA cartridges during generation. In fact, creating stereotypes is so easy, that bloating the model with the whole profile is not really necessary.

There's also a discontinued AndroMDA module for ArgoUML, which can be found here. It has the following features:
 * Settings tab: allow the user to choose the path to AndroMDA and Maven.
 * Create AndroMDA project: allow the user to create a new AndroMDA project (and UML model) via a Wizard dialog
 * Launch Maven: allow the user to launch Maven on the current model