Some years ago (2004), Alex E. Bell published the article Death by UML Fever (if you have not read it yet, you can access the paper here and a follow-up here ).
The paper describes several software-related maladies (the “fevers”) that are amplified by the (mis)use of UML. As an example, the blind adoption fever is defined as a “loss of judgment when it comes to assessing appropriate use of available technologies … engineers afflicted have been observed to force state machine semantics into all of their classes”. Instead, the “victims of the desperation fever often purchase expensive UML-centric products only to discover later than the correct usage of those products does not align with their development processes.
In fact, as the own author states, many of these maladies cannot (and should not) be attributed to UML but to the poor (or absent) software development process in many companies. In those companies, UML was seen as a silver bullet, as the magic solution that would easily solve all their (fundamental) development problems. And, of course, it didn’t. UML is just a notation, it has nothing to do with fixing broken development processes so the problems remained (which by the way, made those same companies then blame the UML for that!).
Fortunately, I think that AS a community we have now a much better understanding of what UML is and what it can be useful for (see this previous post , commenting on Ivar Jacobson’s reflections on the evolution of the UML), but it still worth to keep in mind all fevers identified in the paper just in case we run into a resistant strain or find still some infected people.
Let me end up this post with a warning. I am starting to see another fever emerging. This new fever shares many of the symptoms with the old UML fever so it is a probably a mutation of that one. Its name is DSL fever and has the potential to be even more lethal than the UML one. I’ll explore this new fever in a future post.
ICREA Research Professor at Internet Interdisciplinary Institute (UOC). Leader of the SOM Research Lab focusing on the broad area of systems and software engineering. Home page.
I still run into some outbreaks from time to time.
And I think you are right about the the DSL fever mutation. I would expect similar symptoms. Hopefully, our experience in dealing with UML fever will help us conquer that one faster!
It’s presumptuous to say that everything we have been doing in Software Engineering in the last 50 years has a major flaw at its core, but I believe it is relatively easy to prove.
If you take a look at this simple 4 quadrant figure: http://www.chorusjs.com/wp-content/uploads/2014/08/star.png, you realize 99% of software engineering has focused on the left side (Physical View) to the detriment of the conceptual view. States and Relationships have been systematically, deliberately, reified behind Actions and Types. Even in SQL, the “Relational” foundation, relationships are not explicit in anyway, they are merely the attribute of a type.
OO, and Abstract Data Types’s adoption is wide spread because they allow us to translate directly what “we see” into software concepts. But we all know that’s not enough, one can’t built software without States and Relationships.
Hence, our programming paradigms are simply incomplete and ill prepared to project the “conceptual” view of any particular solution. Good developers will translate States and Relationships into Actions and Types effortlessly while the others will deliver at best a maze.
So we can continue discussing as to whether UML is broken or not, point out people who can’t code, but in the end it is not until we will rebalance the foundation of Software Engineering towards the conceptual view that we will make any progress.
This STAR quadrant is an “M4 level”, an absolute classification and structure. From there, any number of M3s can be built. BOLT is one, it defines “a structure” of a certain class of representations (I don’t use the word model). UML is another one. Following Pedro’s lead, as long as something is the structure of something else, it is an M3 with respect to that something else. However, I am not fully convinced that structures stack up very much (Mn/Mn+1), I just believe that several M3s are possible.
The root cause of all SE fevers is the reification of the conceptual view into the physical view. Depending on the domain, it will show up with different symptoms. There cure is there, it’s called M4.
Note: by the way DSLs are not much better, they tend to reify the dynamic view into the static view, … so they are just as broken as our so called 3GLs…