Why Not MDA?
One possible future, of course, is the failure of the concept of model-driven development in its entirety. Despite our trick of defining a program to be a model, the fact is that many people think of the code as the be-all-and-end-all of systems development, and that playing with pictures is only for kindergarten (the huge sums being made from stick-figure actors notwithstanding). If the code-is-all view prevails, MDA will be as dead as a ham sandwich.
Failure is a real possibility if MDA does not address the perception that models are "extra," that once you build a model and do with it what you will, then you have to write code and the model becomes superfluous. (This, remember, is what has caused the "extreme" backlash.) Models as blueprints, where models are intended to predict the construction of the system by hand, are the antithesis of MDA, yet that remains the perception.
To make models central to systems development, we need not only to address the technical issues (in other words, how to make MDA work), but also the sociological ones. Another point of possible failure is lack of acceptance by developers who fear for their jobs if coding skills become less important. The histories of many industries follow a pattern of increasing automation that reduces the overall employment in that sector. Why should software be any different?
It can also be argued that even if there is a job to be done, it would no longer be interesting. We would argue that automating model transformations is not about incapacitating software engineers; rather, it's about helping them build effective software efficiently.
The business of software engineers will evolve into expressing system functionality in models, metamodels, and mapping functions. This makes said engineers more efficient and rids them of uncreative tasks, just as compilers took away the drudgery er, we mean, creativity involved in making register allocations in function calls. However, that argument doesn't wash if the perception is otherwise. Compilers allowed us to build more complex systems and venture into new levels. Realizing the MDA vision will have a similar effect: It will lead to increasing specialization, which is a property of a maturing engineering discipline.
Bran Selic (2003) makes the case that the time is ripe for model-driven development because the technologies are maturing. He includes the ability to execute models, observe them in execution by tracing back to the models that generated them, scalability, and integration with existing systems. In addition to these key properties of the technology, Selic calls out the importance of standards, and the "network effect" they generate.