Do *you* use UML?
One of the presenters at QCon (I think it was John Davies) asked the audience whether they used UML 2.0 and only a couple of people raised their hands. I wasn't one of them - I briefly looked at UML 2.0 a while back but I didn't feel compelled enough to use it. This got me thinking, how widespread is the use of UML nowadays?
From my own perspective, here's where I tend to use UML within the context of a bespoke software project.
- Use case diagram : A high level view of the system functionality and scope.
- Activity diagrams : A high level view of the business process that is being realised by the software. This is useful for showing parallelism.
- Class and sequence diagrams : Information about architectural patterns and blueprints (e.g. describing a common implementation pattern). These are typically used by the development team.
- Component and deployment diagrams : Details about deployable components and how instances of those components will be/are deployed on pieces of hardware.
As I've mentioned before, I tend to go with a just enough approach to the software architecture document, but I do definitely find that UML is useful because you don't have to think about the notation. Having said that, I do use Visio-style block diagrams for representing things like the logical and physical/infrastructure architecture (you can see a simplified version of such a diagram on page 3 in this presentation). I do this for two reasons. First of all, I don't think that UML provides an easy to understand notation for this sort of thing and second, these high-level architecture diagrams are typically distributed to a wider audience, some of who aren't technical and don't understand UML.
So then, is UML on the way out? I'd be interested in your thoughts on the following.
- What notation do you use for your architecture and design diagrams?
- Is a standard diagramming notation important to you?
- How does your audience influence how you create diagrams?
- If you do use UML, what's your UML tool of choice?