On 20.07.2012 09:16, Fredrik Jonson wrote:
> In <> Roedy Green wrote:
>
>> I think the biggest problem [of UML] comes with keeping it up
>> to date.
>
> The more expensive UML tools have round trip engineering which makes
> keeping it up to date with code less of a hassle. My limited experience
> with round trip engineering is that has its own weakness; it picks up all
> minor parts of the code too, including things that are not necessarily is
> important to get the main picture of the design.
Graphical programming (what these round trip tools promise to be able to
do) does not work. The mere fact that you need to have every part of
the code in the diagram leads to diagram overload. One of the important
tasks when creating diagrams (not only UML) is to select what needs to
be shown and how it needs to be shown. This is something a human needs
to do. It cannot be automated. Normally to understand a system only a
few classes need to be depicted and not with every detail (method, data
member etc.). Updating diagrams with every changed detail is tedious
and useless because it does not improve understanding. Often the basic
relationships between classes remain the same because they are at the
heart of the design.
And btw., roundtrip tools don't help much with updating diagrams which
are sitting in text documents. That still has to be done manually -
unless someone invents a system which manages everything (code and
documentation). But then it would still need a human being to decide
whether a new sub class should show up on a particular diagram or not.
My preferred tool is Visio with the free available set of UML stencils.
This makes creating UML diagrams easy (because all the elements are
there) but retains enough flexibility to mix in other information as needed.
> Still, as others already mentioned, it is convenient to have a common
> design language that is not implementation specific, and that is known by
> most programmers out there. That's the strength of UML. Never mind the
> fancy tools, which gets in your way, UML is first and foremost valuable
> as a language to communicate design among your peers.
I couldn't agree more.
> Myself, I mostly use class diagrams and sequence diagrams to introduce a
> design to other developers. In most cases the diagrams never go further
> than a whiteboard. When I have to, I use Umlet to persist them too.
I use these diagram types in decreasing (estimated) frequency:
- class
- activity
- state
- sequence
rarely:
- object
- deployment
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/