Recent Posts

RSS Feeds

MDA Here To Stay?


Surrived Chicago. It was fun, except for the drunks that set off the fire alarm at 3:45 am. I am very glad to be back in the mountains though, something about them makes me feel at peace, despite all I have to get done today...

Anyway back to the subject of this post. One of the best questions I heard all weekend was during the open speakers panel. Some one asked what the future of MDA was. One of the other speakers, Ted Neward, said that MDA was dead and then made the point that the two religous zealot positions are 'model is king' and 'code is king'. I agree about the zealots and I don't think we can make it very far with the two ends of the spectrum calling each other names. But I totally dissagree that MDA (or at least the concept) is dead. So here I will layout some of my thoughts on where MDA is headed without any hype.
A couple of problems in the software industry.

  1. Software is expensive to build
  2. Software is often over budget and behind schedule
  3. Most technology is to complex for the average IT developer to grok - not saying that the average IT developer is dumb, the average IT developer is smarter than I am, they want to have a real life, spend time with their spouse and kids. They don't want to spend thier day off reading the portlet spec. :-)

All this being said MDA provides a way to raise the level of abstraction so that you don't have to understand the underlying nitty gritty to see an application make it into production. Almost no one writes assembly language anymore, only a few gear heads. While its great to have a gear head around it is very hard to build a production system with assembly language. Also its very rare to find a gear head working in an IT shop, they get bored and besides their talents are be better used in a product company, building tools for the IT developers to use.
Another point that Ted made that I agree with is that we can think of MDA as a sort of 'higher level language'. In the same way that we stoped programming in assembly and started using C (and others) and started relying on compilers to generate all the assembly language for us. We can look at MDA as a 'higher level' language that we can program in and expect the 'compiler' (the PIM to PST conversion) to generate all the nitty gritty 'assembly' language. I think this is a decent analogy but there are obviously break downs so we can't take it to far (for example MDA does not address how to code business logic).
So where does this leave us? My take is that MDA is another step away from programming at the nuts and bolts. To see what I'm talking about take a look at the tutorial from Metanology. Download their eclipse plugin (if you are already using Eclipse) and the tutorial and go through it. I think you will be pleasntly supprised. You gain a lot from MDA, most explicitly though is not having to worry about the neuances of building the Session Facade, or how to manage a deep object graph of EJB entities. All that is taken care of by the MDA generator.
What you loose is control. You have to buy into the paradigm of the MDA tool. For many (if not most) IT developers that will be just fine, more time with the family and less controll over the EJB entity. Easy trade off. People who sit in the 'code is king' camp will not be willing to make this trade off. But I think over time the code is king camp will go away (at least to a large degree) in the same way that people who prefered assembly to C. Even though you might be able to increase performance of the app by 5% with assembly, it just is not worth it because of the amazing amount of time that it takes to build the app. It's just not worth it.

This is by no means a definative writing on what MDA is and where its going etc. but it is a quick mind dump of what was triggered in my head as a result of the question this weekend. I'll try to get my slides on line RSN...

Update - 8:00 am
Just noticed this thread started by Dion who as also on the pannel @ TSS. MDA Thread

Permalink     No Comments



Post a Comment:
  • HTML Syntax: Allowed