How useful is UML nowadays?

I’m kinda conflicted at the moment, because I hear conflicting statements about the value of UML and related modelling approaches to software engineering.

I basically see three different use cases for UML:

  1. Roughly model the architecture of the software system you want to build. A graphical representation of agents, classes, objects, and other stuff seems to be good for that. The question is whether you actually need UML for that, instead of just drawing diagrams intuitively.
  2. Communication between different stakeholders, like coders, software architects, managers, marketers, shareholders, (customers?), and so on. UML seems to be a good idea to bring some standardization into the game, but many argue that it’s a bit too over-engineered to fulfil that purpose effectively.
  3. Automatic code creation – ideally across different platforms and programming languages. About 5 years ago this seems to have been perfected with fUML and ALF, but this approach failed to see wide, or even significant, adoption. Model based engineering seems to work for some companies, but those aren’t primarily software companies.

What’s your take on the value of UML for these use cases? I would be especially interested in replies from @notatroll, @Macius_Szczur, @Ken_Carroll, @HoverHell, @guillefix, @Darklight, and others with coding experience.

I don’t have a use for UML. Smalltalk has http://www.moosetechnology.org . Visualizing code is good. I couldn’t design software by planning so much out beforehand though. It has to be organic for me. I don’t know exactly what kind of structure I will need until I start playing around. When you get a feel for the stuff you need, then you can refactor to make it more tidy and abstract and reusable.

As for (2), I have no idea what or why you’d want to communicate between stakeholders.

For (3), dunno. Not sure how UML helps. http://book.seaside.st/book/advanced/magritte comes to mind.

I have considered using UML, because I find the possibility of a platform independent abstract architecture intriguing. My reputation economy system Quantified Prestige is just a general system that could be implemented on any platform. So, I thought that making some abstract UML-like diagrams to visualise the system would help people to understand the system and translate it into the language and framework of their choice. I don’t think that it would be the best if there was a single platform that QP was run upon. This means, that my use case is rather a combination of 1 and 2.

There’s also an issue called

which bothers me. It’s confusing that there are two different ways of talking about collections of data: Objects and (database) tables. I would prefer abstracting from that distinction and at first only make some UML-like diagrams for abstract collections of data. My “professional training” lies in the area mathematics. I’m most comfortable with highly abstract stuff.

Would it be ok to use “psuedo-UML” diagrams? Would it be better to use correct UML and focus on the object layer?

1 Like

UML tools are valuable if and only if they are updated. The latest uML version is ver(2.5.1) and Creately is one of the web based tool that support many UML diagrams.

1 Like