Some people think that Model Driven Architecture (MDA) will be biggest shift in software development since the move from assembler to the first high level languages. Others think that it's nothing more than Night of the Living Case Tools. I'm in the latter camp but feel the need for more than a slick saying.
Much of what's being said now for MDA was the same things that the CASE tool community talked about in the 80's. I think CASE tools failed for a number of reasons, but underlying it all was the fact that they couldn't come up with a coherent programming environment that would allow people to build general enterprise applications more effectively than the alternatives. Certainly CASE tools can help, often considerably, for particular tasks. I'd rather draw up a database schema with a graphical schema designer than typing SQL into TextPad. But too many things were either not possible or much harder with CASE environments.
So my question is whether MDA alters this. The UML grew out of notations that are pretty reasonable for sketching to convey design ideas. I use UmlAsSketch heavily, but the degree of formality and cohesion that's required to turn UML into the complete solution that's needed for MDA to work is much tougher. Certainly with UML 2 many people have worked hard to try to make the UML computationally complete. But much of this is done on paper, without clear examples and experience of what a platform using the UML would be like in practice. Even if the UML is computationally complete, it has to be a more effective environment for software development than the alternatives. As one who is familiar with both the UML and the alternatives, I have to say I don't see this.
As an example, consider behavioral logic. I can't see that drawing sequence diagrams or activity diagrams is as good, let alone better, than writing code in a modern language. I find this is true even when I have to write code to a greater degree of precision than the diagrams, as I do if I want to execute and test them.
Even if the UML forms an effective programming environment, it still needs to become a popular one. As an ex-Smalltalker I know only too well that even the best languages don't always make it into the mainstream.
Other arguments for the MDA are secondary, but also unconvincing.
- Having an OMG standards stack is certainly something that the 80's CASE tools lacked, but we'll see how well people stick to it. One thing that's struck me is how many MDA fans seem to see UML as the UnwantedModelingLanguage.
- MDA proponents talk about platform independence, but I've already dismissed this as a PlatformIndependentMalapropism.
- I've heard about how MDA will simplify development by allowing automatic generation of patterns. But I don't see a difference between what you can do in UML and what can be done with good libraries and frameworks. (As well as the fact that generating pattern implementations is missing at least half the point of patterns.)
- Much of the boosting of UML seems to be based on the statement that pictures are better than text. In cases this is true, but I see no evidence for that in general - anyone who has compared flow charts to pseudo code can form their own conclusions.
In many ways I'd love to be wrong about this. I would really like to see software development raised by a level of abstraction. (Not to mention that the UML's success would be good for me personally.) But I don't see that the UML provides this abstraction jump - and without it the MDA will not succeed.
Interestingly there is a growing sense that a broader group of people want to do MDA without the OMG standards. I'm hearing more about Model Driven Development using tools other than the OMG's MDA stack.
Here's some other thoughtful criticism of the MDA:
- Steve Cook talks about Microsoft's views on MDA and the broader issues of Model Driven Development. Steve was a central contributer to the UML as well as a leader in the early days of OO in the UK.
- "Bedarra" Dave Thomas gave a spectacular display of energetic skepticism at the MDA panel at OOPSLA 2003. Sadly I don't have a video of his performance, but an older jot column captures some of the depth of his argument.