Uml Controversies

UnifiedModelingLanguage was never regarded as a bright idea or very useful tool inside WikiCommunity. Static typists and dynamic typists, XPers, agile folks and NoProcess guys never cared to express favorable opinions about UML. However, there's a strong undercurrent that the UML has over the mindshare of key executive decision makers in the industry.

I've seen more and more products come packaged with UML features at the expense of great complexity and to the detriment of the users. Borland aquired TogetherSoft, and now all of their products, including the UML flagship TogetherJava, are geared towards serving you with UML-style development. IBM aquired RationalRose, and of course their flagship "enterprise" development (IBM WebSphereStudio?). Oracle has UML integrated as well in Oracle JDeveloper with lesser features. But all these vendors are pushing promises of ModelDrivenArchitecture, model driven development, click your way through our UML diagrams and you'll have your platform independent model and that will be translated to a platform specific model and then into EJB or .NET and everything will be wonderful. Actually they don't quite have anything to show yet, not even in the way of HelloWorld, but they do have a RoadMap and they claim that even without UML.

All this time, Microsoft has kept quiet, not pushing UML at all other than supporting it in Visio, which is a drawing tool (and a very good drawing tool at that) more than a development tool. Among the many noted researchers that now work for MicrosoftResearch and in product teams, there's nobody of notoriety supporting UML. In particular there's TerryHalping?, the inventor of ObjectRoleModeling notation and approach to data modeling who is on record underlining many limitations of UML for the purpose of InformationModeling activities. The latest Visio for "architects" has excellent support for using ORM to model the information in the system and forward engineer a database schema into SQL Server. To make matters worse for the fate of UML inside Microsoft, they have hired our very own WardCunningham who is a preeminent ExtremeProgrammer.

To surprise some observers, beyond this tacit neglect of UML by the Microsoft camp, a noted architect from their development solutions team, went public with an article outlining what we all mortals in the trenches knew for a long time, but very few from the top layer in the industry had the courage to say, for fear of going against the pseudo-official directions of all the heavyweights gatehred into OMG, an organization that still has a lot of clout.

Steven Cook from Microsoft advocates the position that UML has a lot of deficiencies as a "modeling language", plus it is inadequate for many tasks, plus it is not very popular with developer in the trenches, therefore solutions to modeling problems should be sught in other directions, namely DomainSpecificLanguages. Big surprise, somebody from the top of the industry takes a position that is favored in the trenches and by hackers (mostly OO and functional hackers) and very much favored by the ComputingScience research community. In the end, however it looks like GradyBooch and a few other heavyweuights replied back, and now we have something that looks like a blog war: What do others lurkers on Wiki think about it ? There's a long time tacit bias against UML reflected on UML related pages, a noted researcher was quoted putting UML amongst ModernDinosaurs?, but can we find a DevilsAdvocate amongst ? Is it the case that we should question our against UML prejudices, or is it more like a confirmation of what geek attitude knew all along. Because amongst geeks the situation is quite clear: you won't see a UML diagram of the Linux kernel anytime soon, not even of the Python runtime or other popular and successful open source projects.

Personally, my biggest problem with UML is that it is not bidirectional. Although there are some very specific and contrived exceptions, one cannot create UML from code, then recreate the original code from that UML. Also, UML cannot capture all the non-orthogonal issues in real-world software more readably than the original code. Although it has some use for communicating system design to other programmers, it offers no advantage over a requirements document, DoxyGen diagrams of the code, or GalacticModelingLanguage diagrams drawn with accompanying verbal descriptiosn between PairProgrammer's.'' - LayneThomas

We all seem to agree on that, but we cannot seem to find a DevilsAdvocate for UML. At least for the sport of it. After all, somebody like GradyBooch is a pretty good guy, even an ex-geek judging by some Ada packages he wrote that are still available as open-source. Yet, he seems to be seeing something in this UML, MDA and the complicated 4 layers of models and metamodels that I cannot understand at all. Are we really dumb or is it that the emperror is naked after all ?

I'd say that UML is currently a reasonable Whiteboard language, but is not good for formal descriptions because it is not a programming language. It does support Executable Profiles, but using these is a niche activity (e.g. see ShlaerMellorMethod). For programming C++ or Java, the text based syntax of those languages is subjectively superior for actualy programming, so its not surprising that programmers prefer the text syntax. Of course "Subjective" is ,um, subjective, so some people may prefer a Java subset of UML.

I think UML is in the same state as Microsoft Windows was in its 2.x release. It has potential, but is not yet ready for prime time. UML was never intended to be a programming language, and so it isn't. But it needs to become one. An interesting analogy might be Hardware Description Languages. VHDL and Verilog we originaly invented as "modeling" languages, But then some smart people work out how to build "Synthesis" tools which could translate a sufficient subset of the language into adequate hardware implementations much faster than a human designer could. So these days, hardware designers use textual HDLs instead of graphical schematic capture. UML needs to do something similar if it is to move programmers from the world of text into the world of graphical programming. Until UML *is* source code, it won't be accepted. Round-trip just isn't enough.

[The fatal assumption there, is thinking programmers "want" graphical programming, a few do, the vast majority, especially those you'd call "hackers" or "guru's" don't, at least as far as I can tell, and I'm with em, text is best. Words/Symbols make for better abstractions with less effort in a more clear fashion that I imagine pictures ever will. There's a reason humans communicate best with language and written symbols rather than pictures.]

Humbly, I submit that this misses the point big-time. UML is a language for specs. That's to say, it says what to build, not how. Ergo you will never ever be able to execute your junk. What you can do, and what would be really cool to do, is to use UML as test documentation for TestDrivenDevelopment. What's wanted is a FitNesse-integrated UmlWiki. Then we can take our BAs and Testers by the hand and teach them how to make their specs connect up with the really truly code that really truly executes within their really truly testable specs. Face it - UML solves a problem that we all have - connecting non-programmer members of our team with programmer members. Iff UML could be used almost exclusively for spec-driven-testing, and then test-driven-development, I will go go on record as saying it'd be an entirely appropriate and very useful thing. --PeterMerel

If UML is used only for communication between programmers and non-programmers, then the problem is that non-programmers never understand what kind of information they are not getting from the diagrams. -- PanuKalliokoski


View edit of December 23, 2010 or FindPage with title or text search