Short answer… because model driven is often related to code generation and code is fragile; what we need is code elimination and model driven is surely the way to go.
Some have dismissed the question arguing that there is no golden hammer and that software development is inherently complex.
I fully agree with them that there is no golden hammer but I don’t think that model driven is a quest of golden hammers or silver bullets!
I would like to go further with complexity; there are two sorts of complexity one which I call organic or natural complexity, complexity that is inherent to the business and its processes but we also have ceremonial complexity.
Complexity that creeps into the system instruction by instruction, day after day. Ceremonial complexity - unnecessary complexity - emerges essentially from uncontrolled mangling of technical code with business oriented code, but also from lack of structure and uniformity in the system.
Today the entire complexity that haunts the development of information systems and causes failure and waist is ceremonial complexity; complexity that can be eliminated.
Ceremonial complexity is waste, waste caused by code, value less, change adverse, invariant code; code that must be reduced to its strict minimum.
How to do that? Easy!just don’t write it, and don't generate it, in the first place!
Necessary, invariant technical code; code that is used for reading/writing, displaying, communicating… That’s where models get in, by describing the logical structure of data - I would add in a relational way - models can enable generic handling of standard reading/writing, displaying and communicating of data.
It’s just like an operating system, you don’t rewrite it for every project you use one. So what is needed is a technical engine that handles invariant aspects of software given a model. I call it an AaaS (Architecture as a Service) engine.
As for unnecessary code, well it is unnecessary code so might as well leave it unwritten.
That leaves us with necessary, business oriented code that should be written, necessary business oriented data that should be designed and necessary user interface and experience that should be designed and imagined.
By eliminating fragile code, we can embrace Architecture as a Service a new paradigm for software development based much more on modeling and design than on code.