Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

There seems to be plenty of good, free UML tools. I hear about UML tools being used by large organizations, and they seem to have plenty of advocates. However, in my career I have never seen them used beyond "dabbling". Now, I have seen many UML diagrams drawn on whiteboards, and I use them myself all the time, on paper, to think about problems.

I've also seen articles such as this one claiming why developers don't use UML, but the arguments just don't land with me.

Frankly, this seems like an opportunity for a start-up if one can figure out why developers really don't use them, and solve those problems.

So I'm asking anyone here who has attempted to use UML tools in a team, and stopped, this question: "why did you stop?" I'm especially interested in experience from agile teams.

I am looking for concrete experience, not hypothetical opinion. Thanks.

share|improve this question
15  
Actually I've yet to find an open source UML tool that I'd call "good"... – Yannis Rizos Mar 11 '12 at 21:55
2  
I've used quite a few UML tools successfully, proprietary and open source, when I had to. However I haven't yet found a tool I'm happy to work with, I'm not really saying that that's reason enough to not use the notation, but it's not really encouraging either. The past few years my work doesn't involve modelling, and although I'm fully aware of how valuable UML can be if done right, I can't say I'm not glad I don't have to deal with it anymore... – Yannis Rizos Mar 11 '12 at 22:07
7  
Most available UML tools are quite stiff. Insertion is tedious, (lot of switching from keyboard to mouse to keyboard to mouse to keyboard) there is no automatic placement, (when there is some, they got the algorithm wrong for edge scenarios that are not that edge at all) and bad default font/color/weight choices are everywhere. (with no option to change the defaults once and for all) – ZJR Mar 12 '12 at 1:31
1  
+1 for YannisRizos and ZJR comments. Most UML tools are simply more of a hassle to work with than what they provide. Pen and paper just work better. – bjarkef Mar 12 '12 at 7:59
1  
Anyone else feel this question is a little bit like "what caused you to stop beating your wife?" – jk. Mar 13 '12 at 12:58
show 6 more comments

12 Answers

I think it's like writing functional and non-functional requirements before starting a project. Everyone agrees it's useful, but nobody wants to do it.

For most developers, UML is boring. They want to write code. Right now. If they work in a large company, they are forced to gather requirements, spend months on meetings, etc., and they may be forced to use UML. If they don't, they will not do it themselves.

share|improve this answer
Concrete experience, or hypothetical opinion? Have you worked on a team that attempted to do so, and ended up not? – jamie Mar 11 '12 at 22:00
2  
Both. I had several cases where management suggested to use UML, but other developers were too rushed to start writing code (and I supported them and not the management, since I don't know UML too well to use it professionally). – MainMa Mar 11 '12 at 22:04
UML is boring, really? Doing the high-level design is (IMO) the most creative part of software development, thinking abstractly about your problem and solutions is the part I enjoy the most. :) – bjarkef Mar 12 '12 at 8:02
3  
@bjarkef: UML is just a way to express the design. If a specific developer finds UML boring, this doesn't mean that he finds the design boring. – MainMa Mar 12 '12 at 9:57

The problem is simple. UML was being used to do things it's not designed for. And it was being touted as a means of dragging and dropping your way into a ready to run application. The result is that its strengths were understated. UML is very good for high level design and even for detailed design for common or unique complex scenarios.

For example, I can provide a high level design using class diagrams. Detailed interaction could be provided by a sequence diagram (for example, I would show how a web request might flow through a web application with this). Another example where I would use a sequence diagram would be a complex series of interactions within the system.

Here is the problem, the UML diagram is good for expressing the initial ideas/intents of the design, but the implementation will deviate from that design 9 times out of 10 (devil is in the details). So you now have the problem of having a design document that is out of sync with reality. To me the problem is simple to solve. The UML diagrams served their purpose. Toss them out. This raises all kinds of flags with other people though. "Why are we spending so much time building disposable artifacts" (because they helped us arrive at a more solid design for our system). "Why not just use synchronization tools to keep the UML in sync with the code" (because they are an all or nothing proposition...when I'm designing a system with UML, sometimes I will leave out unnecessary details so that it focuses on only what's important. I haven't found a synchronization tool that can do this automatically instead generating encyclopedic diagrams that are about as helpful as city map for interstellar navigation).

I think there is definite use to be had for UML. The problem is that people expect it to do far more than what it's well-equipped to do.

Answering the hidden question Your hidden question is what's wrong with the existing tools? That's easy. I have to constantly switch between mouse and keyboard to use it. Unless I have a tablet with really good hand writing recognition. If someone made a UML tool that let me manipulate the diagram with minimal mouse manipulation, I'd be their friend for life!

share|improve this answer
3  
+1 for that, I worked in some companies where we used UML, as well documents describing the requirements, and there was always that time of the year for "updating all diagrams and documentation". It is a tedious work, and in the end it is not very useful, as it is still incomplete and out of date by next week. – jlemos Mar 12 '12 at 9:36
4  
+1 I was planning to answer this question, but this expresses my opinion completly. Also, given that the use of the UML diagrams is in the communication and their volatility are high. Our teams sketch them up on what ever available and in the end throw them away, or snaps a photo of it. – daramarak Mar 12 '12 at 11:51

I use UML a lot actually. I find it very useful to describe the system to other people, and my diagrams save me hours of writing boring documents or going to boring meetings where I need to explain what the system is built of and what are the interactions.

However, its a tool for describing a high-level overall view of the system, and having it linked in any way to the code other than particular class names in particular places leads to what Mike Brown describes in his answer. It is virtually impossible to have automatically generated UML's to describe high-level view. I've used Doxygen and the graphics generating tools accompanying it to create UML class diagrams from the existing code - and they were not helpful, in most of the cases. Too many details, too many lines, too many information for the level needed. The only use was for class hierarchies and cross-reference to the actual code documentation when you found the class you needed, that's it.

share|improve this answer

I don't use UML tools because it's much faster to use a pen and paper. Why mess with annoying computer drawing applications when I can just pick up a sharpie and some paper, sketch a diagram in a minute or so, take a photo with my phone, and attach it to a page in the project Wiki? I'll be interested in computer drawing tools when I have a stylus and digitizing pad at my desk, and the computer just cleans up my hand drawn diagram. If the diagram is too complex to just redraw when necessary, it's too complex to be of any use.

share|improve this answer
Pen and paper is great until you make mistakes. Even on whiteboards, when you make errors the mighty pen can become a hindrance. You describe computer drawing applications as annoying, so I suggest that perhaps you've been using the wrong computer drawing applications. After corrections, the tool I use for sketching UML (Cadifra) is actually quicker than pen and produces better results. This is especially true for sequence diagrams. – Ed James Mar 13 '12 at 0:41
2  
I like the pen and paper because it is very syntactically forgiving. I don't care if my Object Constraints are well formed or not. I just want to add a -bit- of formalism to my communication. – Al Biglan Mar 13 '12 at 1:13
@Ed: Downloaded it. It's all about the mouse. There are few software tasks I hate more than editing drawings with a mouse. I even have one of those fancy vertical mice. Yes, it can be done, but professionals use a stylus and tablet. – kevin cline Mar 13 '12 at 3:02
@kevincline: fair enough, but I guess you're not arguing the point that a drawing tool can be faster than pen? – Ed James Mar 13 '12 at 10:09
1  
+1 If I didn't spot this I would have written a similar answer. Pen and paper is so much easier and reflects the transient nature of the diagrams. Draw -> understand -> discard (its gonna go out of date soon anyway). In fact, for the last 10 years I've kept one, and only one, A4 notebook running at any time. If I want to revisit something I just skip thru the pages and all the doodles and scribbles all play a part in reminding me of the time when I was drawing the diagram and why I drew it in such a way. – JW01 Mar 13 '12 at 20:31
show 2 more comments

I like UML but don't want to use what is around UML. I mean that UML is a graphical notation which is a standardized language. Great for documentation and early stage development. The problem is that if you use UML then plenty of useless add-on are sold at the same time. Model transformation, OCL, code generation etc...

Having all these add-on make the Model Driven Development useless !! As said previously in this threat by Mike Brown *"the implementation will deviate from that design 9 times out of 10 (devil is in the details). So you now have the problem of having a design document that is out of sync with reality." the problem is that MDD does not allow multiple iterations. The implementation team is therefore stuck as soon as the code is changed. Iteration just at diagram and model level is a silver bullet which could not be used in real project.

Just selling a graphical notation is not making money at software or consulting levels therefore all smart companies are adding Model Driven Development in order to generate more revenue. A simple 30 days project will become an 180 days project including full of very well paid high level consultants. This is why Model Driven is good way to pick up easy money as soon as UML is used. There is no solution today except to only use UML which is fantastic notation and get ride of the useless Model Driven Development add-on.

Having said that there is an ambitious project sponsored by Omondo: http://www.forum-omondo.com/documentation_eclipseuml_2008/waterfall_versus_incrementale_modeling_cycle.html It seems that this company is too small to set up such a large project but it is a good start

share|improve this answer

I dont use uml because it quite likely that it will be outdated soon, because code and architecture changes and nobody is willing to pay the price to keep the uml images updated.

share|improve this answer

Maintaining any documentation can impose overheads that many smaller teams in smaller companies often can't afford. Diagrammatically focused documentation in particular can be difficult to maintain if the tools aren't very simple to use, and often programmers find themselves spending more time struggling with formatting their documents than they do writing the code behind it. I can't think of a single diagramming tool (specialist UML or otherwise) that allowed me to create even simple UML diagrams quickly and easily. Sure if I really put the hours in, I could get a beautifully rendered diagram, but at a cost of lots of hours spent fiddling with software where the input interface was poorly-thought and which made a mess of what should have been a relatively straightforward task.

Personally, I prefer to use a white-board, draw up some rudimentary UML diagrams to compose thoughts or to describe something to someone else, take a photo of it with my phone, and that becomes a part of my planning documentation if it is really needed. Otherwise I use UML/diagramming tool very rarely if ever at all, since it is not the core of what I do as a software developer.

So in short, using UML isn't the problem per-se. Documenting large projects in UML is, particularly when the tools seem to always let you down, but also because the time spent creating the diagrams can often take longer than the actual coding.

Software architects and planners looking to secure large corporate or government projects may need to use UML more, but for the day to day developer, formal diagramming is likely to be overkill for the most part, and this is probably why it is not as widely used or accepted by the more experienced of us. As for the newer developers out there, it's likely they simply don't see the need, or don't get a chance to use it in an industry that has largely put aside the need for high documentation overheads. This last statement is probably more true of the agile teams out there. In any case, once you have a working product that meets all of its requirements, if diagramming is needed (for posterity if nothing else), then there are tools that can generate the UML for you straight from the code, and keep it updated if the code changes, and this is probably the biggest reason of all that UML is so seldom used, because changes to diagrams often result in changes to requirements which can be a cause for missed deadlines and create difficulties when a developer or even the customer needs to negotiate a change in requirements.

So I feel it really comes down to how UML is used as a tool. If it is over-emphasized in it's importance, it becomes a burden. As a means for developers to discuss design and use-cases, it can be a useful tool in an informal setting (such as at the white-board during a meeting).

In my case therefore, I stopped using the diagramming tools when I realized that the cost/benefit to me became too out of balance. As for UML itself, I use it in an ad-hoc manner, and thus the diagramming tools are no longer particularly relevant in my case.

share|improve this answer

UML is great for mapping out high-level design ideas, but at some point it gets to be more effort than it's worth. For detailed design, you're better off using pseudocode or plain English. A sufficiently detailed sequence or activity diagram for a single procedure may spill across several pages (or be unreadable if shrunk down to a single page), especially if there are a lot of components involved.

I've used Rational Rose at a couple of shops. Its use was limited to documenting the high-level design (use cases, class diagrams, activity diagrams), but we never used it to generate code, and the detailed design was done with standard English prose. The interface is less than stellar, but it's pretty damned powerful, and probably the most robust tool for reverse-engineering code. It's also frickin' expensive.

For my own personal use, I've tried Umbrello (open source, part of KDE) and Visual Paradigm (Community Edition). VPUML easily had the best front end of any tool I've seen (including Rose), but VP's licensing scheme, even for the community edition, was a PITA, which is why I stopped using it. Therefore I use Umbrello as a sketch pad for my own work, but it's fairly fragile (don't try to reverse-engineer any code that isn't dead simple) and the drawing tools tend to get me swearing within 10 minutes. Even at that, it's better than most of the open-source alternatives I've seen.

share|improve this answer

For me, the short answer is "doing UML is expensive". I built in UML for many years to participate in software design competitions. After a few years I worked out a strategy that allowed me to win these competitions more or less routinely: I would spend 6 to 8 hours building a working prototype, and then spend as many, if not more, hours documenting my design using UML. I think this is the central issue: if you can avoid spending development time on UML, you would definitely avoid it.

The competition company could not avoid it: they used UML as the way to communicate designs to developers, and it was a perfect tool for the job. However, their situation is unique, because software designers were not allowed to be in direct contact with software developers, and because there often were multiple developers competing for a single design. Most companies are not like that, so UML becomes a liability, not an asset, especially in fast-paced environments.

share|improve this answer
Black box reverse engineering? – stolsvik Mar 18 '12 at 9:00
@stolsvik not at all :-) – dasblinkenlight Mar 18 '12 at 14:23

All good reasons above, but there's one reason I don't use them: they're all crap. From the Rational Rose training I attended (many years ago) where we filled a page of A4 with bugs in the first hour, to newer tools that crash continually.

I find it ironic that the software tools that are designed to produce better quality software are of such poor quality themselves.

We recently used UML in a very strict environment where it was part of the released software (they wanted everything wrapped up and tied down, government thing). We spent ages on it, and I'm pretty certain no-one ever looked at it, let alone used it for software design.

I would use UML today as a post-processed step, where the software is reverse engineered into it for documentation purposes. I'd create diagrams that showed how the architecture fitted together too (manually) and some sequence diagrams for the functional documentation. But I would not use it as a design tool. Think of it as part of a documentation tool, like doxygen creating those graphviz graphs but without the method texts.

share|improve this answer

Never seen a class-diagram that added any clarity to a project, never use them. Sequence/collaboration diagrams, I find useful as a means for illustrating individual or extra complicated use-cases in the code.

share|improve this answer

Most of the time when I'm using UML it's one of three situations:

  • I'm part of a group of 3-4 people trying to come up with a design for a component/system/whatever in a conference room. I find a whiteboard just flows much better for something like this, even if the finished diagram looks messy.

  • I'm over at someone's cube trying to brainstorm something. I have an idea so I grab the legal pad that's sitting on the corner of the desk and sketch out a very rough UML diagram.

  • A manager asks for a design diagram to put in a document. Usually this is for something that's already had some thought put into it, so I either have a cell phone pic of a whiteboard, half a sheet torn out of a legal pad, or some code that I can work from. A UML tool is great in this situation to create a nice, clean, publishable diagram. This is also much less common for me than the other two situations, so I don't have much use for a UML tool.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.