It’s a year ago I did a summer post 6 questions to Maarten Steen, experienced researcher in the field of Model Driven Engineering. I thought it would be nice to repeat this kind of post. Jos Warmer, a well-known figure in the field of Model-Driven Development, took the time to answer 9 questions. He shares his long experience in the field of MDD and talks about Mod4J an open source Java / Eclipse project. Enjoy!
If you’re new to Model-Driven Development or Model-Driven Engineering please read 10 things you should know about Model-Driven Development first.
And what do you think evolution of the model-driven market is going to be? Will we witness a wider adoption of MDD by big companies?
I gave him this answer:
There will be a growing adoption of MDD but people won’t call it MDD. It’s more a movement that includes, what I see as the three main trends in the evolution of software development: cloud (avoiding infrastructure issues), MDD, and app stores (in a broad sense: not building an application from scratch but by combining pre-built components from other sources).
I don't see myself as a futurist, hence you should take this answer with a pinch of salt. However, I have this blog to share my musings, so give me some time to explain my reaction on Jordi's question with some more words.
Last June I gave a presentation at the Code Generation 2010 conference in Cambridge. I really enjoyed the conference: great venue, great food, I met a lot of interesting people, and last but not least I participated in a lot of interesting sessions!
During the Code Generation 2010 conference I was part of a Birds of a Feather (BoF) session about Code Generation versus Model Interpretation. It was an interesting, informal discussion with Walter Almeida, Peter Bell, Angelo Hulshout and Pedro Molina. We discussed the advantages of Code Generation over Model Interpretation and the other way around.

I want to give you a short overview of the points made during the discussion. We didn’t come up with a final comparison or overview of all issues. Hence, you should see this article as a starting point for a discussion. Join the discussion by adding your own views in the comments!
A couple of days ago FC Internazionale Milano won the UEFA Champions League final. Is it due to the qualities of Wesley Sneijder? Although he’s an excellent football player it’s definitely not due to his individual qualities only that Inter won the Champions League. Is it because of the coach, Jose Mourinho? He definitely played a big role, but it’s still a combination of a team and it’s coach. Is it due to a technical head start in equipment?

Let’s stop trying to come up with more questions, I’m definitely not an expert in this field.
When I was musing about this subject I realized something. On this blog I write about technical stuff: Service-Oriented Business Applications, Model-Driven Software Development, and a combination of these subjects in something like Model-Driven SOA. I like to think and write about these subjects, I also like to explain why these techniques can give you real business advantage. However, in practice, it’s not the tool which brings you business success; it’s a combination of a team and a tool.
Back in 2003 Nicholas Carr wrote about the similarity in evolution patterns of information technology and earlier technologies like railroads and electric power. Carr stated that as the availability of "infrastructural technologies" increases and their cost decreases, they become commodity inputs. With the current cloud-computing phenomenon IT solutions are applied and composed by organizations, but executed and managed by expert third-party providers. IT is industrializing.
I recently wrote about making software development faster, more
agile, by modeling software and executing these models in a cloud, i.e.
Model-Execution-as-a-Service. A lot of these "-as-a-Service" and other cloud-related terms have been introduced lately. Platform-as-as-Service (PaaS) is one of those new hype terms which is used a lot nowadays. Time to get a deeper understanding about this concept and to research how it relates to other concepts like
Model Driven Software Development.
Article highlights:
-
A Platform-as-a-Service is a platform hosted by a provider and delivered as a service to customers. It facilitates deployment of applications without the cost and complexity of buying and managing the underlying hardware and software layers.
-
PaaS is a layer of cloud computing inbetween IaaS and SaaS.
-
Multi-tenancy is fundamental to PaaS as it enables developers to focus on application development rather than managing application infrastructure.
-
Model Driven Engineering is fundamental to PaaS because it enables multi-tenancy and small contracts.
-
We will see a development into the direction of Domain-Specific Platform-as-a-Service solutions.
June 16th to 18th the Code Generation 2010 conference will be held in Cambridge UK. The Code Generation conference is Europe's leading event on Code Generation and Model-Driven Software Development. The event has a strong practical focus and an emphasis on sharing experiences and knowledge. I'm glad my session proposal "Lessons learned in building a Model Driven Software Factory" has been accepted. The conference program is stuffed with interesting sessions and I think you can't miss this event if you're into Model Driven Software Development, Model Driven Development, Model Driven Engineering, Domain-Specific Languages, or what other name you use to say you are raising your level of abstraction.
Recently I was asked to give a talk in a TED like setup. This meant 18 minutes to tell my story. I couldn't go into much detail, but the message had to be clear: a nice challenge! This post contains a short review of my talk along with the slides. Enjoy.
I finally took the time to read Markus Voelter's article Best Practices for DSLs and Model-Driven Development [1] in detail. Short conclusion: excellent article! A must read for everyone involved in the design and development of Domain-Specific Languages (DSLs) and Model Driven Development (MDD) tools.
This post provides a short summary of the best practices listed in Markus' article including some remarks from yours truly.
The best practices are grouped in three categories:
- Designing DSLs: best practices in language design.
- Processing models: best practices in making the models expressed with DSLs executable by either code generation or model interpretation.
- Process and organization: best practices for process and organization around MDD.
In my article 8 reasons why Model-Driven Development is dangerous the first two reasons I stated were about rigidity and flexibility:
- MDD actually introduces a lot of rigidity.
- Models are only flexible where flexibility has been designed.
Both items stem from the fact that Model Driven Engineering (MDE) introduces a double release cycle when used in a software development project. In the first release cycle new releases of an application are created by changing the model and executing the deployment phase again. The second release cycle joins the party when the MDE tool doesn't support the changes you need to make to your application. In that case you need to wait for a new release of the MDE tool introducing flexibility at the points you need it.
In my opinion such a double release cycle is an advantage! It protects your software development project against the Commando Pattern.