Nice article on SD Times magazine where software experts comment on the fact that UML is still active but has lost part of the buzz that it previously had.
Reasons for that are basically the ones we have already commented in this blog: UML is used more as a sketch than to specify complete blueprints, people are more realistic now about code-generation, models are being targeted more and more to business people and not to developers, and the UML specification will “soon” undergo a major reconceptualization .
In fact, I don’t see UML losing the buzz AS a strictly negative thing. My hope IS that UML (OR better said, software modeling) becomes one DAY a normal task IN ALL software engineering activities (well, I’d prefer to become the main task, but this is even a longer-term vision). For this to happen, people need to stop seeing UML as something new and radical (as Scott Ambler also mentions in the article). Companies hardly ever adopt new and radical things, they consider them too risky.
If you enjoyed this post you can subscribe to this Software Modeling blog and/or follow me on twitter or through the portal’s mailing list . AND if you really liked it help me pass it ON TO others by bookmarking AND sharing the post USING the links below:
In my experience, UML is actually getting to be pretty ubiquitous for design sketching. Even “hard core” coders typically sketch and understand at least UML class diagrams without any problem. They don’t call this “using UML”, though — just working through the problem.
Which IS a good thing. Modeling is about communication, not about the notation. UML is only a means to an end — having a standard notation aids communication to the extent that it provides a common language for people to us in that communication.
I also think the “we need to have a bunch of UML diagrams to satisfy bureaucratic documentation requirements” is definitely a problem. But it isn’t a problem with UML. Replace “UML diagrams” with “data flow diagrams” or “pseudocode” or even “narrative description” and its basically the same thing. This is a social and process problem, not a UML or modeling problem.
But the thing that did surprised me in the article were the comments to the effect that “modeling has moved beyond UML because UML is about code generation not model execution”. It wasn’t long ago that people complained about doing UML modeling because you couldn’t get code from your models. Now they are complaining because you can! Talk about being penalized for success…
And, of course, you CAN execute UML models, though it was unfortunate that it took so long to get precise, standard execution semantics for UML 2. Perhaps this should be the new buzz for UML: truly next generation programming using executable UML.
After all, while I agree that many business people see “new and radical” as risky, too many technical folk in our industry still equate “new and radical” with “good”. Perhaps we can help UML evolve into something that is “old and radical” ( or “new and proven”?) to satisfy both groups!
I should probably also provide my usual pointer to http://fuml.modeldriven.org for the Foundation UML work. And to http://bit.ly/a9Z9mP for the ongoing Alf action language submission work.
You say, “Even “hard core” coders typically sketch and understand at least UML class diagrams without any problem.” Do you have stats on what fraction of developers use UML, and how often? I only know one company in Toronto where it’s used WITH ANY frequency…
NO, I don’t personally have hard stats. My comment was based only on my personal anecdotal experience. Stats that I have seen still put in the minority those in the professional development community that say they “use UML” or “use modeling”. But there is a difference between what most people consider “using UML” again being able to sketch class diagrams.
Admittedly, I have been a modeler for many years and every company I have worked for (mostly small companies) since 1996 has used UML. (And, yes, 1996 was before UML 1 was even standardized). Nevertheless, I have also tried staying in contact with the wider more code-centric development community. And, even in that community, it has been quite a few years since I have encountered someone with whom I was not able to discuss structural OO coding issues by sketching a class diagram.
For example, not long ago I interviewed for an architect position at a large company that didn’t “use UML” AS part OF their process. But none OF the developers had ANY problems WHEN I sketched class diagrams ON the whiteboard IN order TO explain my architectural ideas FOR their system. Indeed, I have FOUND, just looking AT the white boards IN other companies I visit, MORE tell-tale UML diagrams LEFT these days than I would have seen say 10 years ago.
So, my own experience IS that UML, OR AT least its basic notations, ARE much MORE a mainstream part OF our industry than it was 10 years ago. Perhaps my comment ON “hard core” programmers was overstated (maybe, by definition “hard core” programmers really ONLY care about code AND nothing ELSE!). But I do think most professional developers see the utility IN AT least being able TO sketch diagrams WHEN talking about design, AND the benefit TO HAVING SOME common notation FOR doing that.
In ANY CASE, I think the rest OF my original post still holds. If we can GET a buzz around REAL executable UML, I think we will make it MORE interesting AND useful TO BOTH modelers AND coders.
(If I do GET a chance TO look up SOME recent stats, I will post them. I think Jordi may have SOME pointers…)
I think an excellent INDICATOR AS TO how much, if AT ALL, a certain technology IS being used IS how many jobs ARE available FOR it. A two MINUTE search FOR jobs listing sort OF modeling skills AS requirement IN the job posting site OF your choice produces negligible results. There ARE scantly job postings that list UML AS a nice-TO-have complement TO general OO skills, but that usually means it will be used FOR back OF the napkin discussions before commencing REAL coding IN C++/Java/Python.
After ALL the noise about what a brilliant panacea MDA was supposed TO become IN the past 10 years, I repudiate ANY claim that the CURRENT ignominious degree OF USAGE was actually intended FOR it. It’s very unfortunate to have colossal amount of research funding, not to mention the hordes of enthusiastic graduate students, wasted on something whose inefficacy was established two decades ago. Isn’t it Deja vu FOR graphical programming?
One thing ALL these Utopian proposals, viz., MDA, Autonomic Computing, Marxism etc. have IN common IS their champions’ ignorance of all the endeavors that has carried out in the very subject matter whose evils they seek to remedy.
The amount of ignorance of the modeling community about immensely investigated topics in computer science, such as compilers, information theory, denotational semantics and databases is astounding. The poor quality of code released for various “cutting-edge” modeling projects hints about the extent to which these folks really dislike, and suck, at programming, and motivates the reason for their endeavor to topple it by holding the activity itself culpable for all the problems involved in engineering complex software.
Can you provide SOME examples OF this “poor quality of code”? AND also OF the “ignorance about compilers,…”?. If this IS TRUE I think it IS just a matter OF the modeling community still learning how TO CREATE better tools (e.g. code-generators that produce better code).
Btw, I don’t dislike programming (but I accept that I may suck at it
)
Examples for sloppy code are almost everywhere: pretty much all the code base of modeling projects in eclipse qualify, except maybe GMF and EMF. In fact a decently coded project is something of an exception. Ignorance about database research is blatant in the vast array of model consistency projects which has generated too many papers and too little results. They barely even scratched the surface of what has been done on DB views two decades ago. Ignorance about compilers is manifest in all the snake oil power-points that OMG has produced about PIM->PSM. Not much of non-trivial code-generation is supported in any of the modeling tools I have surveyed (and I have looked at many of them). For the record, creating Java skeletons from UML is trivial, due to their isomorphic structures.
Have you looked at SDL (Specification Description Language)? The worst thing UML did was killing this ITU spec that had grown out of real projects in telecom. The de facto tool for it, Telelogic SDL suit, is still far superior and more usable than anything the UML community has come up with. The modeling language itself is also far superior than UML in terms of simplicity and addressing real issues such as concurrency. And this was all done in the early nineties. The acquisition of telelogic by IBM was tantamount to hitting the last nail on the coffin of the only viable modeling tool there was.
The modeling community picked its priorities wrong. It realized the imperative problems maybe 10 years late. Software industry almost never waits that long for anything to mature, it moves on, as it has.
IN monster I searched FOR “java developer” + “modeling languages” AND got 399 matching jobs. The I searched FOR “java developer” + “spring framework” AND got 450 job posts. “Ruby developer” + “Modeling languages” OUTPUT was 204 matching jobs, AND “Ruby developer” + “Ruby on Rails” yielded 257 matches.
Do those results show modeling IS very/little popular?
“java developer” + “uml” = 394 results
“ruby developer” + “uml” = 204 results
Is UML MORE popular than modeling? ARE they looking FOR people WITH model sketching abilities (ON a napkin perhaps)? OR they’re looking for people with code generation and reverse engineering abilities?
Is OMG tool vendor cartel the same as the “modeling community” ignorant of investigated topics? At least the former group has a motivation to shape the spec according with the nature of the tools they offer, not a fault of a “modeling community”
And what would be the meaning about horrible examples of bad code on projects geared toward programmers? Would they be using tools built by people that hates to code?
And of course I guess there may be other examples of domain specific modeling notations/tools/languages with better performance than a general language like UML.
Cheers
Javier Castañón