More MDA Critique
IONA’s Eric Newcomer has some thoughts about MDA as well. Sigh.
I wonder when people will start to understand that MDA is not about pictures, but about meta-information, and that an MDA approach does not mean that programming languages are obsolete. The key is to use model and PL where they are appropriate — instead of forcing everything into one pattern.
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.
Hi -
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.
I currently work on a project that uses Kennedy Carter’s product in an attempt to produce a software deliverable that is not programming lanugage or hardware implementation centric. Much effort is being expended on developing a semantic language which is then generated by a model compiler into executable code. What is wrong with this picture? Do we as software developers need the OMG to dictate that we use a “yet to be defined” scripting language specific for UML for model transformations. Should we trust the OMG? (after all what has happened to CORBA?) Don’t get me wrong, I believe that there is a place for modeling and a place for coding. Developers need to realize that these initiatives threaten the creativeness and beauty of software development as a profession. Let’s put our effort in improving the coding skills of developers and the power of existing programming toolsets. There is an OMG meeting next week in Greece to discuss such issues. I urge developers that can attend this conference to voice their views so that we are all heard.