Skip to Content
Recently I had a challenging task of giving an overview on Model Driven Architecture (MDA) to a non IT audience. It sure was a humbling experience and present here some of my travails. I started of saying: MDA is base architecture for Object Management Group’s (OMG) standards, which include UML, MOF, XMI & CWM. Software development in the MDA starts with a Platform-Independent Model (PIM) of an application’s business functionality and behavior. MDA tools convert this PIM first to a Platform-Specific Model (PSM) and then to a working implementation on virtually any middleware platform.

image
I showed the slide above
MDA offers a ‘Meta-metamodel’ abstraction (M3 level) to represent different ‘Metamodels’ (M2 level) in a standard way. I could see a lot of blank faces in the audience. I tried to reassure them saying that I had to re-read it several times myself before I understood what they were talking about. It did not seem to have helped much. I proceeded saying that ‘Models’ (M1 level) themselves are instances of the Metamodels. Then came the first question, what is a model? I gave example of a Customer class as a model and its UML representation as a metamodel. Then came the apologetic reply, what is UML? Can you give a simple example like when paying at supermarket? My reply, if you consider your shopping bill, the items on it and amount is the data (M0 level) and the objects used to represent them (like item name and price fields in database table bill) are the Metadata (M1 level), the relational database used is itself an example of Metamodel (M2 level). They still seemed apprehensive why one needed so many Meta levels.

I proceeded saying that the goal of MDA is to raise level of abstraction by enabling reuse at model level. The models are stored in common repository in a standard way. The end users will be working at a model level, with the underlying implementation generated for them automatically. No coding needed (or only minmal coding needed). I went on tell them how we were doing this at SAP as a part of the development of Composite Application Framework (CAF)
image

For the business applications domain we have metamodels for User interface (UI) layer, Process layer, Service and object layer. Based on this users can develop application specific Models with the underlying implementation generated for them based on the Models. While I was expecting a great applause from the audience, there was still apprehension on a lot of faces. Then came the usual down to earth question, when I use a calculator I know it works correctly can the users of MDA models be equally confident? This was a tough one, I had to agree that was the vision. The process on industrialization of services has begun but it will take some time before it becomes as mature.
Obviously explaining things without technical jargon is tough and I sure did a bad job by starting with the ‘Meta-metamodel’ level. Hopefully my next audience will be luckier.

To report this post you need to login first.

6 Comments

You must be Logged on to comment or reply to a post.

  1. Kurt Kanaskie
    Unfortunately I get the same blank stares within my IT Strategy and Planning group. I’ve also been tasked with educating my senior management on Composite Application Frameworks. I think I’ll avoid the MDA details.

    Regards,

    (0) 
  2. Bogdan Vatkov
    This might be some MDA explanation approach:

    The first  task of all the developers/architects when bulding an application can be concluded to the following: formalizing the processes from a real life system (physical, chemical, economics, abstract, etc.) using the instruments that the development environment could provide.

    The developer/architect has do decompoze (analyze) the real life systems by collecting all those details of the system that reflect the processes that the application is concerned to, and by ignoring the rest of the details. The result of that decomposition is called object model or simply model.

    The model describes the real system in a highly optimized way because it holds the information that is only needed by the application and the ones that use this application.

    In order the models to be defined in a formal way one needs some descriptive elements that will be used do define the models. The set of all descriptive elements is called meta-model.

    When the model consists of primitive data, then its meta-model consists of objects (meta-data).

    The most popular example is: the model is a bunch of primitive database fields and the meta-model is tables of field and relations in the database.

    When the model consists of objects and references, then its meta-model consists of classes (meta-objects) and associations.

    The most popular example of this type is: the model is a bunch of objects and the meta-model is UML.
    Another example of this type is: the model is a bunch of services and the meta-model is the CAF meta-model.

    When the model consists of classes, then its meta-model consists of meta-classes.

    The most popular (to software engineers) example is: the model is UML and the meta-model is MOF.

    Back in the past when there was no OOP it was not enough to have just the model of the system. The developers had to do some additional formalization in order to implement the corresponding application. Decomposition should occur once again to analyze which parts of the object model will be expressed with variables and functions.

    This was the most complex and expensive development task and had the highest risk for introducing errors in the application.

    Later the OOP paradigm was invented.
    The developers/architects still had to implement the object model using the OO programming style.

    Now when MDA is becoming reality the only thing that developers/architects should care is the model. The implementation of the object model is done automatically either via corresponding code generation or via environments that recognize models and are ready to execute those models.

    Here we could start “generic vs. generation” discussion 🙂 , which is better, when and why.

    (0) 
  3. Prasanna Gopinath
    It is interesting to see how MDA is finally being leveraged as part of *real* infrastructure. As far meta-metamodel, do you guys use MOF or EMF?. And do you guys use CWM as metamodel to store all CAF artifacts?. Just curious to learn more in-depth architecture of how tools store metadata stuff in the model repository and how the contents gets serialized into XMI and helps in code generation, what patterns are used for code generation etc. Is there a document that describes these things?. Else I would appreciate if you could post some details throwing more light on this.

    Thanks
    –Prasanna

    (0) 
  4. Prasanna Gopinath
    OOPS sorry I did not see the picture above. It indeed looks like you guys use MOF, CWM and XMI as underlying framework to develop CAF. What I really want is how these things are stictched together with code generation framework – sort of end to end explanation.

    Thanks
    –Prasanna

    (0) 
    1. Srinivas Reddy Post author
      Hi Prasanna,
      There are lot of good MDA books out there which do just this.  The one that I can recommend is
      MDA Explained: The Model Driven Architecture–Practice and Promise (Paperback) by Anneke Kleppe, Jos Warmer, Wim Bast

      Regards
      Srinivas

      (0) 
  5. Community User
    Hi,
    I do have some understanding of the need of composites and what xApps are. The problem is in the way CAF architecture is presented at various places. When it was being presented in Walldorf at SDN Meets Labs event this year, the layers were displayed in a way that Process Modeler Layer was placed at the top, then came UI Modeler, and Service Modeler layer at the bottom. Please take a look at https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/events/sdn-meets-labs-palo-alto-05/developing%20composite%20applications.pdf, page 7 for further information.
    I put forth a question to the presenter on the need for such composition of layers, as UI layer is usually at the top for user interaction (as displayed in your diagram). The answer I received was a bit unsatisfying, saying that this is just to demonstrate the architecture and the composition of layers is not important. The person sitting beside me was an SAP employee and he was not statified as well on the reasoning.
    Could you please explain the composition in detail and the reasoning behind it. Additionally, it seems that the presentation content on CAF should be synchronized to avoid confusion.

    Regards

    (0) 

Leave a Reply