Wednesday, April 14, 2010

Agile Model Driven Development?

Yesterday I attended a webinar presented by Stephen Mellor, who is the father of Executable UML. He had a funny story to tell. He had been invited to the meeting that produced the Agile Manifesto, and where he ended up being one of the signatories. Being a proponent of model driven development, he wanted to know whether it was considered agile enough for him to be "qualified" to sign the manifesto. It came out during the discussions that agilists didn't like models because they don't execute, like code, and they can't be tested automatically, like code. In the end, he realized they were basically saying that models are essentially just "documentation", which doesn't correspond to the code, is high-maintenance, etc. Then he described a conversation that went something like this:

"So you don't like models because they can't execute?"

"That's right"

"And you would like models if they could execute?"

"Yes"

"But they can execute."

"I still don't like them."

In spite of this, he decided they all had enough in common so that he could sign the manifesto in good faith.

Then he went on to basically say that with executable models, you can be just as agile as a coder can, with the same feedback, test, etc.

It all seemed convincing to me. My concern with model driven development is reflected in Martin Fowler's remarks in the third edition of UML Distilled. Once we have a fully executing modeling system, we basically have another programming language/environment. Then it will go into competition with other programming environments. Certainly it will be higher level, better in many ways, etc., but in practical terms we have seen that it's pretty hard to get a different programming environment/language accepted. Fowler mentioned Smalltalk as a "better programming environment" that never really got widespread acceptance.

Plus, in a way that's much more vague, I admit, I find myself thinking back to Fred Brooks's classic "No Silver Bullet" article, where he basically said that programming environments weren't where the real problem lies -- even higher level programming environments could only go so far in attacking the essential complexity of software. So although I'm very much in favor of the model driven approach, I'd still be a bit wary of expecting too much improvement too soon.

No comments:

Post a Comment