Last week the second Dutch Model Driven Experience conference was held in Amsterdam. The goal of this conference is to stimulate the use of Model Driven Development (MDD) techniques and practices. The program was centered around practical experiences and “lessons learned”.
Two main approaches
In principle two main approaches were presented by different companies. The first approach is that of a tool vendor delivering a model driven software factory which can directly be used by business engineers to build their application using high-level modeling languages. Examples of exposing vendors are Verum, Thinkwise, Novulo, and Mendix.
The second approach is that of a company building their own model driven software factory using DSL tools. With these tools it is possible to design and develop Domain-Specific Languages (DSLs) which can be combined into a model driven software factory. An example of such a project, build by Ordina, is Mod4J, build with openArchitectureWare and recently published as an open source project.
Most companies presenting their efforts emphasized that this approach is perfect for flexibility: you can change the DSLs yourself. This approach also enables to build more specific DSLs aimed at a problem domain (e.g. insurance, pension). These DSLs are often referred to as vertical DSLs. However, almost all companies also mentioned that it is sometimes difficult to get resources to work on the model driven software factory. You’ll need initial effort, i.e. the costs come before the reward. It is even more difficult to maintain the model driven software factory and to translate project-specific efforts into the generic factory thereby continuously evolving the model driven software factory. So, if the model driven software factory only is a tool to help with the main business (and thus isn’t your main business itself), it can be difficult to construct a convincing business case for the upper management.
Panel discussion
The Model Driven Experience did conclude with a panel discussion answering the questions of the audience. Attendees could also submit written questions during the conference. I was part of the expert panel, together with Jos Warmer, Wim Bast, and Michel Chaudron. I think it was an interesting session with lots of good questions.
I want to show you three of the question with some pointers to answers, to give you an idea of the topics. One of the question was about the business case for building your own model driven software factory. The discussion covered the roles needed in model driven engineering and the activities involved in building a model driven software factory. In essence the question is to buy or to build. It depend on your specific needs what to choose.
Another question was: how to design a DSL? The answer depends a bit on the situation. A possible way to design a DSL is to take existing code bases for a certain type of application and analyze them. The parts of the code common for each application, i.e. the commonalities, can be part of a generic framework. The variable parts need to be covered by the DSL. However, if you want to tailor your DSL to domain experts it can better to take a more iterative approach, with close involvement of the domain experts. In this case concepts of Domain-Driven Design can be used in DSL design.
The last question which I think is interesting to mention is if it is possible to add the requirements phase to model driven development to make it even more easy to build software. The first remarks of the panel were on the fact that if you are going to use requirements to drive the development process, the requirements need to be in a formal format. This means that you still need analytical skills to create the first model. The other option is to accept informal models as first step in the model driven development process. These models are connected to formal models to enable the tracing from high-level requirements and business models to more technical, formal models and back. An example of such an approach is the integration of Bizzdesign and Mendix.

Roald Kruit, CTO of Mendix, pitching the integration of Mendix with Bizzdesign during the Model Driven Experience





