Daily Archives: April 23, 2004

More on suitability of MDA/UML for Web Services

One of the great things about blogs is that you can get into a great discussion with people with whom you’d otherwise not have any contact.
So far, it’s been a very helpful discussion overall, with the exception of a few knuckleheads on the ServerSide.com who post comments without bothering to understand the point of the discussion. (Most of the comments there were interesting and to the point, reinforcing my growing appreciation of the positive power of Blogs!)
For the record, I never said or implied that drawings aren’t useful or important. Of course they are, especially for the design and documentation phase.
The whole thing started because I was thinking about (and wrote about) something someone told me more than a year ago, about how MDA was going to become the “next great abstraction” in software, similar to the way in which COBOL established itself as the next abstraction over assembly language. And I guess in my original posting I didn’t leave much room for subtlety, such as acknowledging the fact that some people still used assembler even when the majority moved on to COBOL and the other so-called third-generation languages that COBOL epitomized.
So it would seem natural, if I had thought further, to acknowledge the future of software would likely include a mixture of whatever becomes the next abstraction with current languages.
But I still am not convinced the MDA will become the new “fourth” or “fifth” generation language (wherever we are in the count, since fourth generation languages didn’t really succeed), or the epitomy of it, since it seems so unlikely that any graphical language could ever really replace a text based language as a new abstraction layer. (And that was the entire original point.)
However, I do believe XML and Web services have that potential, and seem very likely to succeed at becoming the “future of software” by providing that new text-based code abstraction layer with which people can successfully create enterprise computer systems.
After clarification on the currently more modest goals of the MDA community around increasing the productivity of coders, which make a lot more sense to me than the sort of “new abstraction level” stuff, the discussion moved on to whether MDA (and its superset, UML) are well suited to use with Web services. I said that they weren’t, and Stefan Tilkov said that they are.
This is very interesting, since his entry highlights the fact that there are two real streams of thought converging in Web services — and this is sometimes forgotten in the debates since all of us tend to be guilty in assuming one model or the other. I always assume the asynchronous, message-oriented model for Web services since it’s the most useful (Web services are not RPCs, and shouldn’t be mistaken for them desipte the fact that they have an RPC- emulation message exchange pattern).
And that’s why I say UML and MDA are not well suited for Web services, since they are not well suited for integration-oriented applications.
The two streams of thought or models could also be called the synchronous, application server model and the asynchronous messaging, or EAI broker model. The world of distributed systems is divided in some nearly equal measure between applications better suited for one or the other, and always will be.
Anyway, it seems that many people are thinking about Web services as if they are equivalent to the application server model, since that’s what they are familiar with. And if you think that way, and you are used to using UML with your application server development, then it does seem to make sense to use UML for Web services, since what you are really doing is creating a new EJB, not a Web service per se.
However, if you think that Web services are better suited for SOA and integration applications, as I do, then UML doesn’t make sense since UML is aimed at new development, not fitting service interfaces onto existing or legacy code. Web services need to be language and protocol neutral to support the broadest level of interoperability, like browsers on the Web, and they can’t if they are tied to a single development language or tool.
When developing SOAs with Web services, it doesn’t make sense to think about Web services as if they were a single software environment technology. The whole point of SOA is to join disparate software systems together, not constrain yourself to whatever you can accomplish using VisualStudio, WebLogic Workshop, WebSphere Rational, or whatever.
Something that allows and supports greater neutrality is needed, something that works across those tools and more, and today XML on its own does the job pretty well, especially the Web services applications of XML, such as SOAP and WSDL. No need for UML — it just gets in the way.