Why UML "Really" Died

Why UML "Really" Died

For people that care about the topic, the death of UML has long been talked about, either with great fanfare or remorse depending on what side of the debate you were on.

The Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system.


UML promised to do for software what blueprints did for architecture - provide a high-level spec to help understand and produce code. But it never delivered on that promise. The author argues that this was due to the complexity of the spec and the need to be interoperable with legacy vendors. This made UML both too complicated but also too loosely defined to work well as a standard.

XKCD Standards

Source: XKCD

For better or worst, standards are a classic example of the worse is better approach to design. Specifically, I find that simplicity will consistently beat out all other design criteria.

JSON vs XML, Javascript vs "any other programming language", Markdown vs AscciDoc" - the standard that ends up being adopted is the one that humans can reason about.

Some parting thoughts:

  • as we continue to make advancements in software, will we continue to be able to design "simple" abstractions to work with them?
  • is there some limit to this process where we require complicated abstractions due to the essential complexity of the problem? (eg. https://kubernetes.io/)