Posts Tagged ‘MDD’

In this and subsequent posts I will expand of upon the themes of putting the engineering back into software development.  Along the way I’ll introduce you to some practical tools and techniques.

I passionately believe that Model Driven Development (MDD) and Model Driven Architecture (MDA) represent one viable approach.  This belief is born from practical experience and success in delivering software using such techniques.  Kalido’s Business Information Modeler, a .NET application was built using MDD.

There is a wealth of material already written on MDA especially by the Object Management Group (OMG).  However it is written in a pretty dry, formal way that is often impenetrable to the casual reader.  In summary MDA is all about driving the generation of software from models, models that are pictures, models that represent the blueprint for the software.  That’s it, the ability to produce software using a higher level abstraction other than just the code.

MDA and MDD have many benefits including:

  • It enables rapid prototyping.  I can sketch a model and produce working software quickly.
  • It enables iterative development.  I can tweak my model and regenerate my application frequently.
  • It breaks the disconnection between design and implementation.  No longer will I have design diagrams that are out of date once the code is written.  I can see a picture, the blueprint, of the software that is actually executing.
  • It increases productivity and quality.  Changes to the model will cause amendments to be made to the code systematically, without error prone manual intervention.

The models in MDA can come in any form, however the use of UML, a modelling notation, is a good popular approach.  UML models can be drawn by hand or more practically using a tool.  I can highly recommend MagicDraw as a UML tool, which I have successfully used for a number of years.  You can download the community edition for free and it even works on my Mac.

Now creating pictures of software can be a pretty fruitless activity.  In the past developers had to translate these diagrams manually into code.  This was a labour intensive activity and often only preformed once as it was so laborious.  It was next to impossible to ensure that subsequent changes to models could be reliably reflected in the software.  The majority of engineers soon abandoned the use of UML and went to straight coding.

There are many tools that can be used for translating models into code.  In the next post I will examine one of these in more detail, the open source software AndroMDA.

Read Full Post »