I have been working on the UML and Java technology in the last 7 years. It
seems to me that MDA/MDD or EMF are not really compatible with the agile
project approach. MDA/MDD/EMF works at model level then generate a code
from the model. The problem is that the next iteration is impossible if
the code is manually changed by the team. I mean that you can not update
your model and have another iteration if the code is not each time
generated from the model. That is not what I would recommend to agile
projects.

It is important to make a clear differentiation between UML which is
language and MDA/MDD or EMF which are a concept using code generation,
serialization from a model. You can use UML at any time of the project
even if your code is manually changed or created because UML diagrams are
only a graphical view of your UML Superstructure. Now that EMF
serialization of UML allows the creation of very large and scalable inside
a single UML Structure Models. UML should therefore be a viewer of the
model and not the model itself. The dilemma is therefore how to map Agile
to UML I mean java code to XMI and not to stay at EMF or MDA/MDD level.

If the first iteration problem is solved then the second question could
be "Why and how to use UML in an Agile Project ?"

I think that Story boars should be replaced by Use Case diagrams. It is
not a big job to create few actors and use cases in a diagram.I don't
think we should also be afraid of making mistakes because if you made a
mistake between include or extends that doesn't mean that your code is
wrong :-). Use case diagrams need to be created rapidly and have graphical
or model explanation which are written. What is really cool is to be able
to use the same usecase or actor in different views and automatically
create your UML Superstructure Model. See more at: See Actor in different
views from the same model: http://www.forum-omondo.com/documentation_eclipseuml_2008/Mo del_Editor/UML_Metamodel_element/index.html#Add_new_UML_elem ent_in_UML_diagram

The codding stage could start just few hours after the story board is
finished. You don't need to create the skeleton of your application using
the model driven generation. You can code and use the way you want to
create your project architecture. Either manually with no UML or using
live code and model synchronization from a class diagram or something
else. All solutions are possible.

After the first codding stage code has been implemented this first
meeting should allow to add new features, to fix bugs and to always be
able to use the initial UseCase Story board. Using the UML to Java merge
option allows to have an updated Model on which we can now developped new
requirements.

Don't forget that you can use UML diagrams as a view of the UML
Superstructure Model. The UML id also remains the same for the entire life
project because of no transformation stage . It means that we can trace
Story board Use Cases from requirement to deployment and also have many
iterations without loosing traceability. No specific manipulation is
required, just clean your model with a merge at each iteration.

If the team doesn't know UML then how to use it ?

You need to spend few hours to understand how works a UseCase diagram.
After just few hours of reading you will be able to create your diagrams.
It is not really important to know when to use all features and UML
specification, but what is important is to add written comments for
documentation, traceability and tests.

You can add graphical dependencies, and talk about the requirements while
using UML as a viewer of your java code and your UML Superstructure Model.
You can even create UML classes (e.g. no code) to explain what will be
implemented later. You can also transform this UML class into Java class,
keep the same Id and traceability and then at the next iteration see how
this class has been implemented.

I think that Java language is fantastic but it is not enough to document
full projects. Using Java + UML inside the same environment for
documentation purposes which would replace story boards and other external
documentation files will save a lot of time. Java + UML + documentation +
test + traceability are possible inside a single development environment.
I believe that over 50% of time to market project could be reduced using
UML inside an Agile Project. I am not talking about modeling best
practices , this is not the point of my post and I think nobody cares
about it today :-).I am only trying to explain why code delivery +
iteration + traceability + test + requirements should be done using the
latest EMF technologies and could reduce projects time and codding by
about 50%.

Do you agree ?

PS: Feel free to add your comments and let's talk :-). Please do not take
pieces of my post out of the global context in order to reply. This is not
a support question but more related to how agile methodology and modeling
can work together.
Thanks,