Will the real MDA please stand up?
Just when you thought that SOA is the major TLA-which-is-supposed-to-be-about-architecture causing uncertainty and confusion in our industry, you run into some concept called Model Driven Architecture or MDA.The concept of software factories, DSL's and code generation are currently a hot topic for software engineering (probably has something to do with the launch of Visual Studio and its new Team System stuff), especially for those engineers doing the OO trick.
As Steve Cook pointed out in an somewhat older blog post, there are three camps for MDA:
- The UML PIM camp: MDA involves the use of UML to build Platform Independent Models (PIMs) which are transformed into Platform Specific Models (PSMs) from which code is generated.
- The MOF camp (careful: has nothing to do with the Microsoft Operation Framework): MDA does not involve the use of UML, but instead the crucial technology is MOF (OMG's Meta Object Facility), and the definition of modelling languages and language transformations using MOF.
- The Executable UML camp: MDA involves building a UML compiler, making it a first class programming language.
As I have run into MDA quite a bit lately when assessing and auditing large projects, I came across his interesting post. Here is what I think about MDA in general and the three camps in particular:
UML PIM camp: To me this is the only contender to justify the use of the word "Architecture" in MDA. It is the only MDA "school" that makes a clear distinction between architecture (although implicit), design and implementation. The key of the models used within this school is not to generate code from the primary model, but instead to have different models / views, which each serve a different purpose. Very much like the way architecture is treated in RUP (the 4+1 view), but still I think one should notice that we are still talking about solution architecture here, and not enterprise architecture.
MOF camp: the main objection I have against this camp, is that they do not use UML. Imperfect as the standard may be, it is still widely adopted, and to some extent facilitates reuse and exchange. MOF may be a (wannabe) standard, but by far it has not the same penetration that UML has. From what I understood about the Microsoft strategy regarding DSLs and SDM, they belong to this camp, especially as they have abandoned the official UML specification in their new tooling. Many people say that Microsoft officially abandoned MDA in general, which could be correct if you have a very strict definition of MDA, as coined by the OMG. I have a more loose definition of MDA, but still I do not understand what the activities of this camp have to do with architecture.
Executable UML camp: This camp probably raises the most interest in MDA, as codegeneration directly from UML diagrams is the key goal of this camp. However, as there is a very tight link between the models of this school, and the implementation of these models in code, I can hardly call this architecture. There is no clear and clean distinction between conceptual, logical and physical design. Besides the UML it uses is dirrrrty: All kinds of additional constructs and hacks are needed to make the model translate to executable code (most popular programming languages do not support multiple object inheritance for instance).
From an enterprise architect's point of view, any of the camps is primarily about what they call "design", and not so much about architecture. However, the UML PIM camp comes closest to performing real architecture (IT architecture that is) in my opinion.
The reason why most organization get interested in MDA is, like I said earlier, the fact that code generation can produce great cost savings. However, Gartner research and other research shows that only after 3 years the benefits and effects of code generation through models become visible. And as Joe McKendrick pointed out in his post on SOA and the temporary system, "most companies do not run versions of mission-critical applications that are more than three years old." I think there is even a word for those systems and applications: vapourware. And exactly for those systems, none of the MDA flavors will be nice.











1 Comments:
I suggest you do some more research into Executable UML, because your comments, "no clear and clean distinction between conceptual, logical and physical design" and "All kinds of additional constructs and hacks are needed", are just wrong.
I would suggest looking at the role of the Domain Chart, the role of the model compiler, and the UML 2.0 Action Semantics w.r.t. action language.
Post a Comment
Trackbacks:
Create a Link
<< Home