Tuesday, August 29, 2006

Model Driven Development

IBM's System Journal is running an issue on Model Driven Development. There's something that bugs me a bit in the introduction -

Amazing feats can now be accomplished with sophisticated modeling tools. For example, the latest Dassault Aviation commercial jet, the Falcon 7X®, was designed, simulated, and had its entire bill of materials generated by a CAD/CAM system. It was the first airplane ever designed that flew without any physical models ever being built and discarded. Millions of dollars and significant amounts of time were thus saved. In addition, the completeness of the model makes testing the comfort and safety characteristics of the airplane very simple and quick.

In light of this, the question should be why not model complex software applications

When will people realize that developing software isn't anything at all like building a jet, or a building or any other analogy often used when people are promoting their "improvements" to the software development process? If you must come up with a real world analogy for software development, one good analogy would, oddly enough, be model building.

That's what bugs me about this introduction to MDD - pretty much all software development is in essence the development of a model. So it's hard for me to see how you could make a model of a complex software application that isn't the application itself, unlike with jets and buildings, where the model is far removed from the final product. While MDD operates at fairly high level, from what I've seen of it, you'd be hard pressed to find a MDD tool that doesn't output some form of runnable code. This means you're not really building a model of your complex application separate from your complex application, you're building your complex application. Don't get me wrong - I think there's the potential to get a lot out of using MDD tools - what gets me is the inappropriate analogies to various forms of engineering.