New IT skill in town: Model Driven Development
Wednesday, November 21st, 2007OK, maybe not so new, but it is definitely gaining more ground (again). So why is it interesting, what is the point here?
I say: anybody can hack code these days , but , hacking code that generates code… now that is a skill !!!
I am not trying to despise or lower the value of a good programmer who has the discipline, knows best practices, follows guidelines. These programmers are very rare, even these days. I am writing about a new type of developer here.
These days, even teenager kids can write viruses (have to admit that they need a Microsoft for this, which makes it possible for them). But the real deal is actually writing the virus generator (for example: VBS Worm Generator), one that can generate your home-made-gonna-bring-down-the-internet-worm-peace-out type of stuff.
Of course there are more honourable and nobler purposes than writing a virus generator.
Essentially code generation starts with developing an exemplar - the code basis for the pattern implementation. The real skill here is to ensure that the code is generator or pattern friendly. Friendliness is a subjective measure, meaning how easy it is to develop the pattern implementation from the code.
Pattern implementation is about extracting the variability from the exemplar – the part of the code that is likely to change in the generated instances.
As it happens, these two tasks belong to different roles also likely to be different individuals. How are these two roles going to work together? What is the contract between them?
The contract, similar to an interface definition in OOP, in this case it is going to be a model. Actually I should say a meta-model that captures the elements of variability, and the relationships between them.
Once the pattern implementation is ready, an instance of the meta-model – a model – provides the input for the code generation.
This meta-model and the modelling activity gives us Model Driven Development.
The meta-model can describe a set of interrelated concepts, where these concepts can be captured using for example a Domain Specific Languags (DSL). DSL is a topic for another entry, in the meantime here is an article of mine about it: Explore model-driven development (MDD) and related approaches: Applying domain-specific modeling to Model-Driven Architecture.










Take mathematics, physics, or whatever science is closer to your heart as an engineer. Let’s look at how these disciplines described, modelled the world around us. Let’s take math (algebra) as an example…
Right, I did not realize it works like this. I know this “other environment” and it works a bit different there.





