MDE shuffled againTags:
Almost nine months after my last post on this blog. What happened? I got a baby! She’s ten months old now and she has taken a big place in my “spare life”. Also I started others blogs. So, I take this long break as an opportunity to think again about what Model Driven Engineering does mean in day-to-day IT life-cycle.
First of all, thanks mainly to this blog, I met some people to talk with about modeling. Some of them are still pure spirits floating in internet’s limbo and among them: Meinte Boersma, @modelpractice, Tongying Yu, Rafael Chavez, Marco Brambilla.
Some others have materialized in my real world: Ed Seidewitz – met during a nice lunch in Paris where we talked fast and a lot cause life is short, Rémy Fannader – whose Caminao’s way is for sure a worldclass UML understanding site, Jordi Cabot – a modeling technology partner in his INRIA lab in Nantes, Jean Bézivin – one doesn’t introduce Jean who “created” the MDE term in France, Philippe Desfray – one doesn’t neither introduce Philippe who knows the OMG’s UML full story. And I don’t forget my first mentor in MDE field: Frédéric Madiot now gone working for OBEO.
By the way, Marco and Jordi just published a promising “Model-Driven Software Engineering in Practice” book. I’ll buy it!
These last months I successfully set up a government-funded R&D project named IT Modernization Factory. Is it still relevant to work on MDE solutions today? In a time when Jean Bézivin tweets:
— Jean Bezivin (@JBezivin) October 2, 2012
Let’s go on with some MDE related acronyms trying to settle them quietly in today MDE’s panorama.
MDE: Model Driven Engineering = applying engineering to the use of models
- Not specific to our IT playground, if we put apart that models are information and that the shortest way to automate or instrument engineering with information is to use some programs…
- MDE is business goal neutral: what you will make depends on what you put into models and what engineering operations you will apply on them
MDA: OMG’s Model Driven Architecture = here is the (quite recent) FAQ
- Tells how we can specify, and even write, applications though platform independent models (PIM) eventually using some model transformations until a last one targeting a platform specific model (PSM) which may bring the application to real application life (ie usable by human using computers)
- In fact MDA doesn’t tell how to design nor to write applications. In a way, and in the end, one can view this MDA as a meta-meta programming language: a theory on elaborating meta-programming languages named models which allow us to specify applications and have the ability to be ultimately transformed into a “normal” programming language and all its infrastructure represented through a model (PSM) which has in turn the ability to materialize into real applications life
- Wahou! Hopefully, I don’t think I’m wrong in this long sentence. But summarized this way we, for sure, better understand Jean’s tweet ;D
- However, nobody tells that MDA has no virtue. I think that its best, almost usable, culmination form is fUML (see here how fUML is related to the more theoretical Executable UML). And its best achievement would have been to bring back modeling and code generation into the toolbox used by IT teams.
MDD/MDSD: Model Driven (Software) Development = using MDE for software development
- Thanks to MDA, MDE is now again explicitly used to help software development. Software development has to directions: creating new pieces of software and maintaining pieces of existing software. MDD is usually saw as an approach for the creating direction.
- MDD is usually
a blurred copykind of an instance of “The” MDA. One uses models to specify some business level exigences, some logical functional architecture choices and some business object details, then we build or adapt code generators which can understand the models and which hold implementation details. Then we still have to human code what has not been modeled then generated. Not necessarily simple but it works and there are many reported cases where this approach has a good ROI compared to not using models at all. And nothing deny to mix up this approach with other ones.
Reverse modeling = using MDE to maintain or make evolving existing software
- Needless to say it: maintain and make evolving existing pieces of software is THE big problem faced by each organization. Not simple, even when this software has been developed using an MDD approach, maintaining “legacy” software is a tough job. And, my opinion, a software becomes “legacy” as soon as it has been deployed.
- I guess the big MDE’s business deposit is here. Not an exciting promise for a student who just comes onto the market and wants to show to the world how brilliant he is for mastering promising new programming languages to enter into the Web.2020 area. But a real pain relief for CEO who just discovered TOGAF, have derived from it their own Architecture Development Method and now face to million of legacy source code lines.
- How to? There is a lot of buzz but no standard yet. OMG has begun to work on it but it’s a shy beginning. There is also the Eclipse’s Modisco project but yet a shy move for now.
- That’s the goal of the IT Modernization Factory R&D project I mentioned above. Will we give Modisco and OMG a boost? Still to be seen ;D