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:
- 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.
- 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.
- 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.