I recently happened to read this abstract of Friedrich Steimann’s verdict on MDA/MDD:
Models have their greatest value for people who cannot program. Unfortunately, this is not because models are more expressive than programs (in the sense that they are capable of expressing complex things in a simple manner), but because they oversimplify. To make a useful program (i.e., one that meets its users’ expectations) from a model, the model must be so complicated that people who cannot program cannot understand it, and people who can program would rather write a program than draw the corresponding model. Even though (over)simplification can be useful sometimes, it is certainly not a sufficient basis for creating a satisfactory end product.
While I agree on some statements, I strongly disagree on the conclusions.
It’s true that models are appealing because they are a simplified representation of the reality. This is exactly their definition. Not a weakness, but a strength, I think. Just think what has been possible in the scientific fields of physics and chemistry. All we studied in classes are models, not the actual reality. Then one can discuss how much these models simplify such reality.But the final outcome is that several real solutions has been devised based on these studies on simplified models.
Back to software engineering, models are crucial for describing overly complex systems, and I strongly believe they are a powerful tool for leading to the end product. Then, the question could be how to reach the target.
One could argue that models can help in the initial phases, while manual implementation is needed at the end. However, I think that MDD is now comprehensive enough to provide a good set of tools for modeling applications down to the final product delivery. We should not forget that we may apply hierarchies of models, model transformations, and aggregation of complementary models for describing a system. At the end, simplification is just another word for abstraction.
Therefore, I think that simplification is actually sufficient for going to the end products, provided that the MDD approaches allows for models with multiple levels of details, transformations among them, and appropriate inferences starting from the simplified views of the reality. I.e., one must assume that starting from a simplification of the reality (or from a combination thereof) there are some logical deductions (more or less automatic) that lead to filling the gap from the simplification to the final result.
I base my opinions on very concrete experience of the MDD approach in the Web field, in which the combination of appropriate models (BPM, ER, WebML, presentation layer [see also the RUX-tool]), of proper transformations, and of design tools (WebRatio) actually allows us to “magically” get to the final product delivery with hundreds of customers.