Hi All!
I'd like to know your opinion on whether UML is still needed in developer's daily work.
If you're curious why I'm asking about UML please read paragraph below.
Background
I'd like to share with you why I've started thinking about usefulness of UML in everyday life.
I always knew "something" about an UML. I mean I know how to read and write basic diagrams. I'm personally that UML is very useful and I regret that I used it so rarely. I've read some books about solution designing with UML but you know that theoretical knowledge without practice began to be out of date.
So I've decided to take part in UML training. In my company I need to receive consent from my supervisor to take part in a training which has place during working hours. So I wrote an email to my supervisor (which is non technical) and asked him for consent. After few days I met him next to coffee machine I reminded him about my email. He told me:
I didn't forgot about your email. I'd like to ensure that you really want to take part in this training. I was thinking that nowadays nobody uses UML in daily work.
I was a little confused. In the same time my colleague (which is a developer too) started laughing and said:
Nobody uses UML.
That was a shock for me.
In my previous job every architect or designer used UML. I was working with UML too. I started to convince them why I'm thinking that UML is handy. Finally I received a consent to take part in this training :) and I hope the training will take place (minimum number of participant is required to start it).
My opinion
As you can guess after lecture of previous paragraph I'm a big enthusiastic of UML. I think that UML if very useful in any kind of projects and especially in "big" projects they are something that you must have. I my opinion sequence diagrams help understand communication between two or more systems, use case diagrams are helpful to show all product's functionalities and plan future work, component diagram describes system's architecture and shows us a big picture, etc. These are just a few examples of using UML in daily work. I wish I could use UML more often.
In my opinion UML is a basic tool when you're working as a software architect. I wish I would be an architect so I'll learn UML anyway.
What is your opinion about UM? Is UML nowadays useless or useful? UML has become obsolete or just developers forget about it? Or maybe they exists some alternatives to UML which are more trendy and developers friendly?
I encourage you to share your opinion. Thanks in advance.


Latest comments (64)
There are tons of videos about programming. Similarly, sometimes when I open news articles they lead to YouTube videos, which I find frustrating. I want to read.
Why do developers and news organizations produce content in video form when I'd rather read? Because while I prefer to read, some people prefer to watch videos. We're all different and we process information differently.
UML is useful if looking at diagrams of code helps you understand code. Otherwise it's useless. I'm in the second category. If I want to understand code I'll look at the code. If I need an overview I'd rather read a well-written paragraph or two.
Why do we need to understand code? Isn't it primarily so that we can modify and maintain it? If we were never going to change it, why would we need to understand it?
There's only one place where we can communicate intent in a way that doesn't become inaccurate as soon as we change the code, and that's in the code. If we're not looking at the code and trying to understand it, then we don't need to understand it. In that case, why do we need diagrams? If we create diagrams but don't make the code itself understandable, is it possible that the diagrams were wasted effort?
I'm not saying UML is bad because I'm sure they're helpful to some people. But I'm not likely to look at them and I'd rather put my energy first into making the code understandable, and, when necessary, describing it with written words. I don't know if the next developer reads UML diagrams either, but we all read.
Rafal...Great post even if I am nearly 2 years late to share.
Over the years as a software architect consultant, I have discovered that UML has become "nearly" obsolete as a standard tool to communicate architecture. In the early days (I am dating myself), we used UML to demonstrate an understanding of the business requirements, and then to share intent with software engineers. It also served as documentation. Today, with Agile, Scrum, storyboards, and the like, it appears the input energy required of UML doesn't warrant what it can output.
Today, we use UML for new client projects for the purposes stated above, to then feed into our project generator to create the first pass of an application and all it's other bits. We also use existing UML created for legacy apps (eg: JEE and 4GL apps, etc..) to assist in generating the groundwork in app refactoring.
I am not sure it will see a revival, but we have discovered value in UML when it serves as input to a larger more valuable output.
Hi Steven,
Thank you for your comment. I agree that the entry threshold is often too high, and sometimes using a UML diagram is simply an overkill.
BTW I'm glad that almost two years after the post has been published is still alive 😉
"I was thinking that nowadays nobody uses UML in daily work."
Your manager is right, at every meeting / project I did ask the question: "do you use UML or BPMN ?" nearly anybody answers yes even in big corps where official methodoly requires documenation with UML diagrams :)
Bill Gates said: 'Banking Is Necessary, Banks Are Not' I would say 'Modeling is necessary, UML is not' ;) Unfortunately developers do modeling with Framework which is not a rational way to do, some part of Business Modeling are now even done by Graphics designer, which is not rational either.
So I have looked at some other fields I know because I'm an engineer I know the automation industry, they have a specification and modeling tool named grafcet that is very simple, and I'm experimenting with it for now, after many months, I'm now sure it can replace UML, BPMN and many more easily with both better mental mapping for Business and direct mapping with code for ANY programming language high level or low level like assembly.
I've been coding in a subset of UML, xtUML, since 1993 when it was still known as Shlaer-Mellor modeling.
UML is much more useful when the diagrams are executable at the analysis level and directly translatable into code, but you have to understand what is worth modeling in UML and what is better left to existing code libraries or other tools. e.g., never try to model mathematical algorithms in UML, or modeling strncpy() isn't going to give you anything that strncpy doesn't already do.
One of the barriers to entry used to be the cost of the tools, but cheaper tools came along. Now the only xtUML tool being actively maintained is free and open source.
Much more information is available at xtuml.org. Tool download and training is available there.
Not a fan at all. I would prefer a statechart, flowchart, or just about any other diagram. UML's popularity reflects it's utility.
Never used it so far in my career (~17 years since first production web app). I probably had to use it in school. But it has never been a job requirement. I have researched it and played with it on the job. But nothing that made it into source control or deliverables.
I cannot believe you've never used UML.
Didn't you read the "Design Patterns", by GoF? It is full of UML diagrams.
Didn't you generate a documentation from code, using Doxigen or similar? It generates the UML class relationships.
Didn't you use MySQL Workbench or similar software? It shows the relationship between tables like UML Classes.
Haven't you explained something with a flow diagram? Sure it is very similar to UML diagrams.
Really, UML is just to standarize some kind of usual charts to give a common language for everyone. Maybe you are not able to create one without any mistake, but surelly you can read an UML diagram.
For example, it may be cool to describe a pattern, like the Abstract Factory (sourcemaking.com/design_patterns/a...), or a workflow represented by an Activity Diagram, or Use Cases to show the desired behavior, etc.
I suggest you to try plantuml (plantuml.com) to start explaining your presentations, and surely you will learn how to use it quickly.
Many people use (or at least read) UML but don't know it. For example, sequence diagrams and class diagrams have been around everywhere I ever worked. But people forget that they are "UML".
In reality I believe that UML is rarely used in any workplace and I assume it is related to an agile environment vs a waterfall way of thinking. Waterfall encourages UML as you can spend days and weeks designing the whole project in diagrams and trying to explain every aspect in the application. On the other hand in an agile environment where the iterations are so fast you barely find the time to design uml diagrams and evaluate them as the requirements as constantly changing by the business stakeholders. The only place where I used UML in the past extensively was in a university.
What I find useful even in an agile environment is the use of sequence diagrams to understand the complexity of some systems. But class diagrams, I don't see them in any real project scenario whatsoever.
So we can assume that Agile is killing UML :) I'm just kidding. I agree that UML is useful when we're working in waterfall (as I had in my previous work).
Something I miss in Agile is that developers are forgetting about documentation creation at all. They are excusing himself
And on the end of a day we haven't any documentation.That approach is in my opinion wrong.
Yes, although it sounds very stereotypical, I see this all the time where "agile" teams don't have any documentation (often because they claim that the code is the documentation, which it isn't). This is simply a misinterpretation of the manifesto, and agile in general.
1: UML is bad and should not be left in a room alone. 2: UML does not scale.
About 1, some UML diagrams (most notably class diagram) do offer a usable way to enhance a message. It should only be used as a supportive image to an explanation. UML is not good it communicating the message by itself, a lot of information is encoded (vaguely) in the diagrams. It is not well understood by all. It does not translate well into all environments. The danger of including an UML diagram is that people will not read the supportive texts, and thereby not implementing it correctly. But I still used UML because it is better than nothing.
As for 2, as your architecture starts to grow the usability and readability of all UML diagrams starts to drop rapidly. The result will be worse than it using UML to begin with.