To introduce the idea of model-driven applications (MDApps) , in the context of software development and application, it is necessary to clarify its relationship with model-driven architecture (MDA). In Model-Driven: An Essential Requirement Come from Customers, described why the term “model-driven” was chosen for our conception in origin, that was before the rising of OMG’s MDA and the use was essentially consistent to MDA; this has been further illustrated in Using Model Driven Mechanism to Explain Model Driven Software Development, where shows that the MDA / MDD is indeed based on Model-Driven Mechanism (MDM). As a preparation for this discussion, an general understanding for architecture presents in the latest post–based on it carefully, here is a concise comparison and a bit analysis to MDApps and MDA, also with OO.
Table: A comparison for MDA, OO, and MDApps as an architecture, on the definition by ISO/IEC 42010
|ISO/IEC 42010:2007||OO||MDA||MDApps as Architecture|
|What||The fundamental organization of a system||Using class/object to organize software||Using MDM to organize software development||Using MDM to organize software application|
|embodied in its components, their relationships to each other and the environment||Classes/objects, messages, encapsulation, inheritance,..||Models, metamodels, in metamodeling hierarchy||Applied models, modeling knowledge (metamodels), operational device, which are related in an MDM structure|
|How||the principles governing its design and evolution||OOA/OOD, e.g. RUP||– Using models to direct the course of understanding, design, construction, deployment, operation, maintenance and modification. ||– Programming for the applied models according to the modeling knowledge;
– Evolution on the app model according to the modeling knowledge;
– Keep the device according to / supporting the modeling knowledge
As mentioned in Understanding Architecture, to compare some architectures, we should first identify what the (class of) systems, the target of architecture, they are for. In the table, shows three typical target systems: software by OO, development (systems or organizations) by MDA, and applications by MDApps.
Don’t know if this will cause some controversy, IMHO, MDA is in fact not an architecture for software system but for software development system. Objectively, it appears in fact to be a complementary to OO architecture, though the model-driven approach is not only to be used for OO. MDA + OO may be regarded as a complete architecture for software but that is somewhat weak: in principle, there is no inevitable, certain relationship between the model-driven approach specified by MDA and the software organized in OO style.
Although I prefer take the term model-driven application to refer to a type of a systems, the ideas about MDApps are certainly presented as a rich architecture. It firstly specifies the core structure for its target systems: the MDM structure; this structure brings the significant unique characteristics what appeared in the functionality of the target systems: it will be capable to adapt to the changes of the applying objects (business, etc.) based on evolving the applied models without change the software (platform). Furthermore, for an MDApp, its development, deployment, government, as well as the division of the roles who involved in the whole life cycle, are all different to a traditional software application. The ideas of MDApps are therefore presented as a strong architecture.
 A regular publication about MDApp is in press, see Recent Work on Model-Driven Applications (MDApp). I will introduce such ideas on this blog continuously, and some more information on EE-Forum.org in Chinese.
 Cite from MDA Guide Version 1.0.1, Sec. 2.2.3, OMG, March 06, 2001