MDE shuffled again
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:
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 copy kind 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