Functional programming is rapidly becoming mainstream and UML is fading away at the same pace.
How does UML relate to FP? It doesn’t. That’s the problem. UML was designed for the object-oriented world where mutable state and inheritence was the way of life. These concepts are now getting replaced by immutability and functional composition across the whole spectrum. Even UIs are now built without side-effects which was impossible to imagine in the past. The world is clearly shifting towards a more declarative approach and UML simply became obsolete in this environment.
Agile didn’t do any good for UML either. One of the goals of UML was to help facilitate communication between the business and technology. While this might work in a slow waterfall model it cannot keep up with a fast paced agile environment. No business user will look at a diagram if they have the choice to look at a prototype. Tight feedback loops are good for both sides. The developer will spend less time on building throw-away code and the user gets faster turnaround. UML would just hold them back.
Does that mean that we simply don’t need a modeling language anymore? That’s not the case. While prototyping is an efficient way to communicate with the business we still need to coordinate between different systems and technology teams. And because there are different technologies involved we cannot simply define and API in our favorite language.
Facebook’s GraphQL can be used
To be continued …