IT Modernization < V. Hanniet

software model driven approaches

The Sustainable MDA Manifesto: 1st draft

Following recent discussions, with MDA and Executable UML OMG’s initiatives in background, here is my proposal for a Sustainable MDA Manifesto. It’s a first draft, so feel free to contribute.


Even if one want to see them overlapping, modeling and programming are by very nature different activities. The “IT world” does love programming, mainly because it sounds material and pragmatic, but suffers from a considerable lack of back stand on why doing these programs and why this way. Modeling brings answers, by helping to focus on the problems or on key solution principles rather than on a detailed solution. Model-Driven Architecture is an approach where modeling platform independent requirements and solution principles deliver models that can be used to produce code. I believe this approach helps building sustainable applications (or even IT systems) provided that some principles are followed.

Game rules

The “MDA” term stands here for the OMG’s MDA idea, MDD, MDSD, any MDE forward approach (the lack of well established/shared terminology is a sign by itself  that the technologies are not yet fully adopted).

In MDA, the application code comes from hand written code (0-100%) + generated code (100-0%). The generated code comes from generation rules applied to the application model.

IT team primary roles are: end-user, business analyst, architect and developer.

Sustainable MDA principles

  1. Models are primary artifacts.
    Models have to be stored in the configuration management system. Generation rules too.
  2. One modeling level which merge business analyst and architect views on a Platform Independent Model (PIM).
    The model has class diagrams, and eventually sequence diagrams. In UML, stereotypes are used.
  3. Models are built by business analysts and architects, used by developers, and eventually used by end users if appropriate.
    Eventually, model/generation short iterations may be used for prototyping to get feedback from end users.
  4. You are free to use any modeling notation/tool, any code generation engine, any programming language.
    Modeling matters to minds before tools. PIM models have to be implementation agnostics.
  5. Don’t target 100% generated code at all costs. Think of MDA as a giant copy/paste engine to Not Repeat Yourself while coding.
    The aim is to fill up gaps in the needs/solution design workflow, not to replace developers.
  6. Agile practices do apply.
    Agile practices focus on primary artifacts. Models are. Generation rules are. Hand written code is also.
  7. Keep it in a white box.
    The key point is traceability. When debugging, a developer should be able to reach any model detail, any generation rule. Never use generation rules if you don’t own their source code.

The aim is to keep the thing simple, so that a whole team replacement does not makes it reverse to the “tell me what you want I will code it…” pattern.

Discussions: MDA/MDA: Don’t roundtrip, MDA/MDD: Model is not code!?, The New Executable UML Standards(see comments)

Background: I just read “Executable UML – A foundation for Model-Driven Architecture”, by Stephen J. Mellor & Marc J. Balcer, with foreword by Ivar Jacobson. A book notably reviewed by Martin Fowler & Edwin Seidewitz. The whole forward MDE historical background is described in the foreword, the preface and the first two chapters.

Featured image taken from


5 comments on “The Sustainable MDA Manifesto: 1st draft

  1. mbrambil

    Dear Vincent,
    I like your proposal of “sustainable MDA”.

    One question I have is: why to restrict this only to MDA? Can’t we open it up to a more general MDD /MDE scenario?

    While I agree on most of your points, I don’t on two of them:
    3. I don’t think that prohibition of showing models to users should be strict. There might be some models and some users for which this does not apply. (disclaimer: for user here I mean a non-technical customer, i.e., any kind of stakeholder)
    5. Same on 100% code generation: there are several prominent cases this can be achieved. I agree that the main focus should be reuse and modularization, but I would not discard generation a priori.

    For the rest, I’m completely with you. I especially appreciate point 7., which is often underestimated. Just consider we are now focusing on allowing debugging of models too! (upon the running application)

  2. vhanniet

    Thanks for your comments Marco.
    I updated my post to take into account your three points:
    – MDA is used as a generic term for “forward MDE”
    – Models may be used by end-users, it all depends on what models are and who is called end-user
    – 100% generation is not an “aim at all costs”.
    I think points 1 & 7 are the most important ones.

  3. TY

    I like this words: “modeling and programming are by very nature different activities.”
    I think almost all of your principles are useful or material and pragmatic but, it still not satisfied for me — this is not to you: all of such MDA approach styles are not satisfied for me –- because there are some more advanced architectural style, I think. 😉
    By the way, to bridge the gap more effectively, we need firstly to separate them more clearly. I have been trying to do the work recently…

    • vhanniet

      Hi TY!
      “because there are some more advanced architectural style”: sounds interesting, can you tell a little bit more on this architectural style?

      • TY

        Roughly,that is:
        -Model-driven mechanism as one of main construct to systems;
        -Some of key principles, not only considered in software implement also the requirements research (analysis) and the whole life-cycle and the ecosystem of applications;
        -some foundations on mathematics and, perhaps some of philosophy.

        I’m trying to write more in English. It’s a hard work to me. :-p This is a framework for my idea:A Roadmap of Research for Enterprise Applications.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 187 other followers

Creative Commons License
IT Modernization < V. Hanniet by Vincent Hanniet is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.