|
Following a speech two days ago, I'm struck by how very little we use the
Unified Modeling Language (UML) on our software projects. Occasionally I'll
create some activity diagrams to model how users get their tasks done, but
that's about it. Typically when we create a requirements specification this is
what we deliver:
- Light use cases (or heavy user stories, take your pick).
- Prototypes of the more complex screens.
- A detailed database design.
I also perform a Function Point count at this time, but that's not something
I typically deliver to customers. I just use it for cost estimating.
After that, during development time, our developers just talk about the
object model, but none use UML. I think this is interesting, because I used to
think the UML was very important. Mostly I think it is just a good training
tool.
Occasionally we reverse engineering source code into UML class diagrams.
There are many tools that support this capability now, and every once in a while
it's useful, but those occasions are surprisingly rare.
There are a few tools that make a game effort of reverse engineering source code (typically Java source code) into UML sequence diagrams. I don't know how practical this is in problem solving, or in learning about a system, but it has been fun to play with. I've tried it on a few small projects, with some interesting results. One of the most interesting things is to see the code you've written by hand displayed visually in a sequence diagram, after
you've created it. It even exposed a flaw in an algorithm one time. So I think this is the most worthy effort, and I hope those companies keep trying to improve their products.
These are all rambling thoughts from a tired brain. This speech took a lot of time to prepare, and took a lot out of me. A vacation is coming soon, and just in time.
|