Tuesday, April 13, 2004
Amen, hallelujah, and sing it to the rafters.
The problem with MDA, and the Shlaer-Mellor method that preceded it in my experience, is the way it is taught. I've made semi-religious converts out of people who swore blind that generating code from models would never work in practice. I do it by getting them to build their own code generator with Access and VB (don't laugh). They build a little database to hold their meta-information, e.g. for Ethernet message structures, then write some VB to walk the database and generate their code. They get a real Eureka thrill out of it. After that, you've got their attention and can start to introduce them to loftier concepts.
A lot of the tools on the market, at least the ones that I've worked with, are difficult for people to accept because they hide what's going on under the covers. Users cannot develop faith in the tools and many of them turn against them.
A good educational programme makes all the difference.
I wish everytime I criticize MDA people wouldn't automatically assume I don't understand it.
The point I was trying to make is that MDA is not going to work out as a lot of people seem to hope that it will, as the software industry's next great abstraction.
I agree with a lot of the points you make about the practical use of UML and MDA and if the proponents of those technologies were to say similar things I think it would be very helpful.
Instead, we get a lot of hype about how MDA is going to become the new, single mechanism for application development.
I agree code generation is good and helpful. I agree diagrams and models have their place. But I basically think the grand vision of UML and MDA is never going to be achieved and people should stop talking as if it were.
Neil, I totally agree, as is to be expected. And I won't laugh at you for the Access/VB idea - in fact, I often use Excel as an example where code generation can turn information from something and end-user can understand into the metadata for a "real" application.
Eric, I think that if we essentially have no real difference in our opinions. But I am not sure what the great vision behind MDA you allude to is supposed to be, and who is actually hyping it. I actually *am* a proponent of MDA. Who are those proponents who claim that MDA is going to be the silver bullet?
Somehow, every week somebody else seems to be bashing MDA, and - more or less unintentionally - makes people turn away not only from that great, unrealistic vision, but also from every sensible use of metainformation and code-generation.
I know that MDA is not applicable to all situations. I think that it does become more applicable as you scale your systems up. At the larger end of the system scale, it will easily repay the investment you have to make in training and developing code generators.
A major trap that many people fall into is expecting one code generator from their tool vendor to produce all their code. They always hit performance problems. (I'm coming from the defence sector here; I don't expect IS code generators to have quite the same performance problems as their architectures are more uniform.) If you model your system as a set of domains, then you can get great performance results by developing domain-specific code generators. A code generator for Ethernet messaging, another for 1553, one for your GUI domain, and so on. These little domain-specific code generators are really easy to develop and are especially rewarding when the handcrafted alternative requires weeks of drudgery to implement. And they can be easily linked in with your must-be-done-by-hand code.
Think of MDA today as being in an analogous situation to the first 3GL compilers. All those assembler boffins walking around saying, "These compilers will never match my hand written code." Given time, the compiler writers came up with the goods. And yes, we still have applications today that require handcrafted assembly code. That need will probably never go away, but the balance has shifted from writing assembler to writing 3GL. I see the same thing happening with MDA. Just give it time.