« Architecture and Engi… | Home | 15 reasons why you sh… »

10 things you should know about Model Driven Development

09 November 2009

Last saturday I gave a talk at the Devnology community day about Model Driven Development (MDD). I have talked about ten things you should know before you start with MDD. It was an introduction to MDD with some highlights of more advanced topics. In this article I share the slides of my presentation including a short explanation of each of the 10 points.

1. Differs from model-based development

Johan den Haan presenting at the Devnology Community Day

Using a model in your software development approach does not mean you are doing Model-Driven Development. The key concepts of MDD are abstraction and automation. The model of a software application is defined on a higher abstraction level (than 3GL languages) and this model is converted into a working application using automated transformation or interpretation.

2. Is still a software development approach

When using MDD do not forget you are still building software. See 8 reasons why MDD is dangerous for a more detailed explanation of the points. One additional point I mentioned is the law of leaky abstractions. This law coined by Joel Spolsky states: All non-trivial abstractions, to some degree, are leaky. I do not fully agree with the full article about this law, but it is true that if you use MDD and model on a higher abstraction level, sometimes you will need knowledge about the details 'behind' the model. For example to optimize the performance of the resulting system.

3. Asks for agile development

To get all advantages of MDD you need to use it in an agile way. Involve all stakeholders in the development process, use short iterations, and do not forget that YAGNI also holds for modeling. Because it is so easy to add functionality when using MDD, you will not be the first one ending up with a 'spaghetti-model'. MDD, on the other hand, also enables agile development. MDD enables short iterations and makes it possible to show the results of a model change almost directly in the working application.

4. Needs a standardized architecture

MDD needs a standardize architecture. The functional principles of the architecture are enclosed in the Domain-Specific Languages (DSLs) and the associated model validations. The constructional principles are reflected in the code generator or interpreter. On the other hand, MDD really enforces the architecture. Each architecture principle is guaranteed to be followed by the resulting applications.

5. Asks for different tools

See Model Driven Engineering tools compared on user activities for a detailed explanation of this point.

6. Leads to a change in roles

See roles in Model Driven Engineering for a detailed explanation of this point.

7. Can lead to business-IT alignment

By using domain-specific concepts, involving domain experts in the development process, and by enabling shorter iterations MDD can lead to more business-IT alignment. This alignment can possibly become more explicit by using a framework for Model-Driven SOA.

8. Needs another business model

MDD needs another business model than traditional software development approaches. One example is that companies cannot keep selling development hours. They can of course keep doing it, but in most cases you will need less hours to develop a solution...

9. Is not enough

We need more than MDD! We need to integrate modeling and programming. See this presentation for an excellent view on this topic. We also need to focus more on changing applications. Just building applications very fast does not solve our problems. We need to be able to adapt applications to changing business requirements with preservation of runtime data, long running processes, etc. Another point of attention is the runtime flexibility of applications. Due to the fact that MDD enable fast changes in applications a lot of the resulting applications are not flexible themselves. A change in your model means however that you need to test everything again. What we still need is the ability to change an application at runtime in a controlled way. For example: changing security rules, GUI elements, rules, etc. One solution direction is to use adaptive modeling (I will write more on this topic in a future article).

10. Leads to resistance

MDD leads to changes in roles, tools, and business models. Not everybody likes change...

The slides:



Did you like this post?
Subscribe to the article RSS feed or get articles by email and follow @JohanDenHaan on Twitter!

Read more about: , , , ,


Share on LinkedIn Share on Facebook Post to del.icio.us

Be the first to comment!

Be nice. Keep it clean. Stay on topic. No spam.

  
Remember personal info?

Emoticons / Textile

To prevent automated commentspam we require you to answer this silly question
 

  (Register your username / Log in)

Notify:
Hide email:

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.

Powered by Pivot - 1.40.4: 'Dreadwind'