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 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.

6 responses to “More on suitability of MDA/UML for Web Services

  1. +1 on the point of blogs being able to start interesting discussions, this one being evidence of that from my POV as well 🙂
    As to your entry: Strangely enough, I totally, 100% agree that the benefit of Web services is not in their replacing CORBA, RMI, or RPC. I am convinced that a service oriented architecture is something radically different than a client/server or three-tier application architecture. In fact, that’s one of the reasons I’m very skeptical about certain tools that aim to turn the differences between SOAP, DCOM and CORBA into an implementation detail 😉
    I still maintain that UML is suited for the task, although I admit that using it for describing services and/or messages alone may be overkill. More importantly, though, I believe that using metadata to separate logical from technical models – which is IMO what MDA is all about – is critical whatever the technology or paradigm du jour might be.
    And I’m well aware that I still owe you details about how to use UML for Web services … hopefully soon.

  2. If you don’t like UML, don’t use it. It can still be MDA. IMO, UML’s name is dropped in the MDA marketing info because it gets recognized, not because its compulsory. If you have a better language than UML to describe your web services, describe it using MOF and, voila, MDA.

  3. I agree models are important for Web services, and it would be possible to modify or update MDA to be more compatible with Web services. And maybe someone will do the job of creating the right model and the right MOF description to generate Web services the right way, but I believe there’s a fundamental design problem since UML and MDA were developed to unify the development of OO programs. It’s not that you can’t find some way to use the technology for it, but it’s the fact that it wasn’t designed for it in the first place that creates difficulties. How do you really adapt a technology originally created for one purpose to another purpose without compromising the original purpose? I just think UML and MDA are kind of stuck with too much baggage to really ever be useful for Web services in the same way they are for OO development.

  4. Jim is right in pointing out that MDA is not tied to UML; I usually don’t use this argument that (sadly) UML alternatives expressed in MOF are not (yet?) mainstream. You can easily express any sort of metamodel in MOF, be it OO, procedural, functional, service-oriented or whatever, and MOF (and thus MDA) clearly were not designed for OO only (nor are they especially suited), in contrast to UML, which of course heavily leans towards expressing OO concepts.
    So: UML is tied to OO and can be used to express something else, but MOF’s and MDA’s very essence is to be usable for any paradigm.

  5. You’re right, they’re not really mainstream, which is a bit of a downer. The lone exception might be CWM, which I understand has met with a fair bit of success in the data modelling space, mainly because so many significant data warehousing players were on board for writing the standard.
    As for MOF’s suitability for non-OO languages, I can say from experience that it works just fine. I’ve used it for grammar models, process models and document models, none of which were OO, and it worked quite well.

  6. Ok, so the meta-object facility (I guess because it’s meta?) can be adapted easily for non-OO languages and data-oriented paradigms. I guess I hadn’t thought of separating MOF out from MDA and UML as something useful for Web services. That sounds like an important insight. Are there any tools available that support MOF for Web services?