I do not know how to answer this question. Mostly because I have mixed feelings about UML itself, and partly because I do not think UML directly impacts the design itself. But I have seen instances where diligent use of UML has helped bring in consistency. I was once a loyal user of UML. I used to meticulously work in UML and only then touch the code, even if sometimes it would be really really cumbersome.
But I have drifted away a bit nowadays. I have not given explicit thought to the reasons before, so this is a good time for it.
- I have observed that UML’s benefits lie in doing the high-level design. If it exists at the same detail as the code, then it ends up getting more complex and redundant. If not, then it cannot capture all the elements of development, making it only a part of a toolkit in the process. However, the UML tools have hardly been able to keep up with evolving development best practices and techniques. As a result of this, we see a lot of UML activity in beginning of a project, but then it fades away.
- UML normalizes the design language. That is the reason I had thought that there will be UML tools which will help us collaboration on design. Of course it is possible today, but it sure is not convenient. I have ended up including scanned copies of diagrams instead of using UML specific tools.
- Another reason has been that my design documentation contains less on the decisions, and more of the rationale behind the decisions. The need for documenting the code has been going down, what has been always important is so record the rationale. UML does not have anything to help here.
- Neither is UML good to address the non-technical audience. This makes it the most unsuitable language to document anything for the client.
- And then UML is just a language, to express yourself. It is not going to inject the right thinking in you. As Craig Larman says:
Getting a book or taking a course that focuses on UML, becoming certified in UML 2.0 notation, or knowing how to use a UML CASE tool has nothing to do with being able to think or analyze in objects or creating well-designed, object-oriented systems.
I use UML nowadays only if other members of the team are keen on it, which unfortunately is not very frequent. At times I find better productivity by jumping to the code, with some breaks with a paper and pencil. Or sometimes with a UML diagram on a whiteboard.
UML is good if everyone on the team uses it with the same sincerity. UML fails not because of itself, the blame goes mostly to the tools and some to us developers. As far as the question goes, it sure is not necessary for a good design. But it might help you if you are working on a big project that might need complex design. But the best way is to try and find out yourself if it gives you the cost-benefit balance you are looking for.

February 14th, 2008 at 7:32 pm
Hi,
I think you’re absolutely right that tool vendors are partially to blame for UML getting a bad name. Many people nowadays feel that UML is for whiteboarding only.
I encountered the same issues when I needed to draw a lot of sequence diagrams. But instead of dismissing them, I decided to make a tool that actually makes you more productive with UML.
It’s called Trace Modeler and its a smart and easy to use editor for UML sequence diagrams.
Check out this 30 sec demo of Trace Modeler in action if you’re in a hurry.
I also agree that UML isn’t necessary to arrive at a good design, it is however the best notation we have to communicate that design to others.
Code browsing is a boring, frustrating and unproductive way of familiarizing yourself with an unknown codebase, sadly it is often the only option available to us.
I think Trace Modeler shows that it is possible to do a better job at supporting UML in the development process, not only for documentation purposes but also for exploratory design.
If you give it a try let me know what you think of it, I’m always happy to get feedback.
Best regards,
Yanic
February 14th, 2008 at 8:46 pm
You should design your application before coding it – using UML to do it based on personal preference. I prefer the paper and pen approach. But you will not be able give that to the client.
February 15th, 2008 at 4:20 pm
Yanic, thanks for the links, will surely check out Trace Modeler.
Binny, yes I go agree with you that it is important to design before starting to code with it. I too usually use paper and pencil for it. However, I will not deny that sometimes I start with the code, and that actually helps me identify some parameters better. I cannot give it to the clients, but neither can I give UML in most cases.
February 20th, 2008 at 11:01 pm
“UML is good if everyone on the team uses it with the same sincerity. UML fails not because of itself, the blame goes mostly to the tools and some to us developers.”
I agree with your assertion that the use of UML is dependent on team buy-in. Most organizational systems require everyone to use them or else they are completely useless.
However, if it’s useful for you, there’s nothing to stop you from diagramming out your own code. Personally, I like seeing the objects related spatially because I’m a visual learner.
February 22nd, 2008 at 11:36 am
abhijit, when you say that you start with a code do you actually code it is just the skeleton i.e. the class, its attribute and api definitions and its relationship with other classes…
February 22nd, 2008 at 11:51 am
I have created this habit of laying out the interfaces before I set into anything deep in the design. It helps me get an overview along with some of the interactions. I am not sure if it will work for all, but it works well for me. Maybe I should write a post of how I find it useful.
I mostly write those classes, which actually is a design task, but I sometimes do it through code.
November 4th, 2008 at 12:46 pm
UML sounds good as beginning but until you involve with it deeper, then you will see how messy it is.
You just need the paper, the pencil to design your cases. Then you can later use MS WORD to record it and send to everyone at your team.
Good luck.
November 4th, 2008 at 1:01 pm
I have read this topic in this forum so I know what is going on with UML decision that my boss asked us to look at it.
I do not know that it is a good idea to use it now when all the current products do not use UML from the start point.
If you were me, how do you think?
Sincerely
Nam