In my recent postings, I’ve asserted that UML and MDA are not well suited for Web services. There are two main reasons:
- Web services are intended for cross-domain interoperability
- Web services need a data model, not an object model
Stefan Tilkov says that he is using UML for a Web services project. It would be great to hear more details about that, in particular whether it’s a data-oriented integration project.
I never said it’s impossible to use UML or MDA with Web services. I’m sure it is. My position is that UML and MDA are not well suited for use with Web services — they are not the right tool for the job. Putting a camera on a phone doesn’t mean it’s a camera. Just because it’s possible to use UML and MDA for Web services doesn’t mean it’s the right thing to do.
UML is too complex for Web services; simple and cheap is always better. I’d be surprised if anyone is using UML/MDA for Web services who didn’t already know UML. Learning UML in order to use Web services seems like real overkill.
This article on the WS-I sample application illustrates one of the main points — UML was not designed for use with applications that span multiple domains. UML and MDA were designed to model an application for a single object-oriented domain (and by domain I mean coherent software systems such as J2EE application servers, the .NET Framework, or CORBA-compliant object request brokers). I realize the models are generic; however as implemented in development toolsets the goal is to generate mappings to a specific technology.
UML and MDA are not designed for modeling integration projects in which reconciling data type and structure differences are the paramount activity. Integration projects do not start with a clean slate – by definition integration means joining things that already exist – and UML/MDA does not have a good way to understand or model transformations, aggregations, and associations among related data items and structures. Sure — it wasn’t designed to.
So on the one hand UML/MDA are overkill for Web services. It also already seems clear that the original vision of providing another “layer of abstraction” in the evolution of software, i.e. replacing programming languages as the way in which people tell computers what to do, hasn’t panned out. And finally, UML/MDA do not address a major requirement of Web services — data integration and reconciliation of semantics.
The argument therefore has everything to do with what Web services are good for. They are not good for developing applications – they are good for integrating applications. UML is a development tool, not an integration tool. I realize UML can be used to model integrations, and systems, and SOAs, etc. But let’s face it, the modeling language was designed for use with executable software systems, not for use with an XML contract representing the integration of multiple domains, and is therefore not very well suited for it.
UML and MDA are great as productivity aids for the application developer – I can buy that. But just I can’t see how they are helpful for data-based Web services integration projects.