March 19, 2004

Real world MDA

As I read Stefan’s “Responding to Dave Orchard’s Take on MDA” I thought to myself, well maybe the truth is somewhere in between Dave’s and Stefan’s opinion.

As far as I am concerned I have very often experienced a great benefit of applying a model-driven development approach in mission critical business applications. Despite of the concrete architecture and technology - whether J2EE, CORBA, or WebServices - these applications had something in common: the need for use case specific design and optimization is mainly an exception. Of course there are runtime bottlenecks that have to be implemented very performant. But I found the Pareto principle - the famous 80/20 rule - to be true in all projects I have seen. About 80% of the system ought to be conformant to a set of architectural guidelines. In my view this is only feasible by using a model-driven generative approach. Only a small portion - about 20% - cannot be covered with the standard architectural guidelines and need a special treatment (which commonly takes more than 20% of the effort).

If that’s not so, probably you’ve chosen the wrong architecture for your system.

Although I’d like to comment on every aspect of the postings I have to keep short. That’s why I take only one aspect from Dave’s and Stefan’s postings:

Dave wrote: To make a simple change in the model and then generate took way too long. It could take up to half an hour before the system could be retested. The devs simply would make the change they needed in the place they needed it. For example, the SQL already had the zip code so they only needed to add the zip code in the Java and in the SQL select.

Stefan replied: If it takes half an hour to do this, something is wrong with your tool set. There are generators that can generate hundreds of files in under a minute; depending on the CASE tool, the XMI export itself may sometimes take longer than the actual code generation step.

Well, you both are right. While code generators can be very fast (e.g. see iQgen’s performance sheet) the roundtrip time with “modern” architectures and runtime systems is very high. The deployment of an enterprise archive into an application server can take several minutes. The build also could take several minutes. The model export from a CASE tool could also take several minutes if you’re using the wrong tool of if you’re tailoring your model badly. The compilation could take several minutes. So, in the end you could end up a long time waiting for your changes to be testable.

Although I could subscribe to both points I think there I no black or white in this case. Maybe you did something wrong, Dave? Maybe you were very lucky in your past, Stefan?


Posted by Phillip Ghadir at 10:40 AM | TrackBack