David Vallner
10/20/2006 11:54:00 AM
gaurav bagga wrote:
> I have just started to learn about Agile development and was told that in
> Agile very less focus is given to documentation and usage of UML related
> things is very less. Is it that its not used at all by most Agile
> developers
> and most of the focus is on Test Driven Development. If code generation is
> accompanied along with the tool being used for UML do people in agile go
> for
> UML usage. This is the case I have seen in Java world using UML
> extensively.
> As in Agile, time is a factor they dont get into that much details of UML.
> So I was wondering how to gauge how much important UML is to Agile world.
>
There are more uses to UML than code generation (which I haven't seen
used yet actually.)
For certain problems, it's useful to have dedicated analysts or
high-level designers (can as well be one person) if the problem domain
being modelled is one the developer team has little expertise in - if
this person isn't a developer, UML is a standardised way for him to
communicate his work to the team members that are. Also if the model has
to be represented / manipulated using multiple languages (DDL for a
RDBMS, and multiple clients on that database in different programming
language), it might make sense to use UML as a lingua franca for the
reference representation of the model - of course, if all developers
have basic skill in one of those languages, you might use the model
implementation in it for this purpose.
Another reason I see behind UML-bashing by the agile crowd is that they
are people that don't have the brain arrangement (this I don't mean as
an offensive statement) to process the diagrams as efficiently as they
would see the actual code. For people with a degree of visually-oriented
thinking, a UML diagram can be a good tool to organise your thoughts on
a problem. I personally find (high-level) activity diagrams or sequence
diagrams easier to comprehend than code across three files.
For purposes of maintainability, UML is a more terse documentation
artefact for some views of a system than source code documentation.
On the whole, I'd say UML still is a valid tool for agile development.
You're likely to use only high-level variants - UML that is on a level
detailed enough to be used for code generation wouldn't be created up
front, maybe as a documentation artefact if that is required. It's also
still useful as a means of communicating a notion if you find you can
create and comprehend it as fast as or faster than other methods - a
unit test replacing a nontrivial sequence diagram might be much more
verbose, for example, if of more value on its own
David Vallner