Monday, June 30, 2008

The Creative Generation

Imagine combining the stimulating English landscape of Cambridge, with a collection of the world's brightest IT code generation minds. Have them exchange thoughts in creative sessions and tutorial, and you'll find that innovation will take on a completely new dimension. Yes, I'm talking about the Code Generation 2008 conference, which was held in Cambridge June 25-27.

Raising the abstraction level
The common theme amongst the sessions resolved around raising the level of abstraction, either by modeling in UML or a (oh no, save me from the buzzword) DSL. Everybody seems to agree that raising the abstraction level is a good thing. What's not always clear however is, what to raise the abstraction level to. Keeping a constant level of modeling, without sneaking in too many details of your concrete platform, remains the challenge. And for people still looking for the ultimate ride on "round-tripping": well there's a reason the term ends with "tripping".

Rise of the model-driven tools
Model-driven architecture has been around since the 2000's. Well, the theory has been, and depending on specific architect's diligence and guidelines, it has also worked brilliantly in practice. In order to become mainstream however, a better tool support was required. It's just too easy to mix concerns or hack some quick changes into a system, when code generation is a part of your process. Looking at 2008, this tool support is finally coming. The pattern / template / marking distinction is more and more explicitly available in tools, led by open architecture ware. Even the Microsoft DSL tools manage to grasp the concept, although their template and pattern implementation will face the same challenges EMF/Java have seen over the last several years. It seems a standard pattern that every framework hurdle needs to be dealt with at least twice.

Personally I can say that this has been probably one of the most inspiring conferences I've been to. The unique combination of a beautiful surrounding with highly intellectual people, created a steady flow of ideas. The one thing I brought home is that my own views on MDA, which I've always considered somewhat straightforward and general, are not that mainstream after all. A lot of MDA's "traps" and pitfalls still catch developers. Let's broaden conferences like this, and spread the word further: domain-driven modeling is here to stay!

Thursday, June 12, 2008

SpringOne presentation

As it turned out, I'm not the only one doing MDA with Spring after all :-). A nice bunch of people came and listened to my SpringOne 2008 presentation. Incidentally, the presentation is available for download. We had some great discussions about various ways to apply MDA, and the various tooling options.

The SpringOne organizers of BeJUG have informed me that the video transcript of the presentation will be available at the start of September, on parleys.com.

Tuesday, June 10, 2008

Model-Driven Architecture and Spring

The place to be in order to find out the latest hot developments in the Spring community, without doubt is the SpringOne conference in Antwerp. This year it will take place on June 11-12. I will deliver a session on how the Spring frameworks play ball in a Model-Driven environment. I hope you'll visit me on June 12th, on 12:00 in room 2.

You might wonder, why the choice of a framework is so important when you're doing MDA. Isn't the point of code generation to hide all that boring boiler-plate code from the developer? Indeed, that is the case. However, an MDA application still is an application, and so the number of lines of (xml or java) code is still important. On top of that, distribution of this code over files, and maintainability of those files, is equally relevant. In my opinion, whether some of those files are generated or not, should be of no concern.

As it turns out, the Spring frameworks do help a lot when doing MDA. They don't "sit in your way", but actually help in getting responsibilities distributed over several files; especially the IoC concept helps in that.

Watch this blog for an update with links to the SpringOne session transcript and video