I’ve been intrigued today by a bold tweet by Meinte Boersma (see his blog to know more about him and his activities)
Any sufficiently advanced software development methodology is indistinguishable from model-driven.
Meinte, I personally fully agree with you. Being also an advocate of Model driven development (and model driven in general, as this blog’s title demonstrates), this is not surprising at all.
This also opened up a new line of discussion, on whether MD* should be named a methodology at all or not.
Personally, I’m again with Meinte and I would say that MD* is much more than a bunch of tools. I think it is actually a methodology, or even more an overall way of thinking. If we want to delve into it: I think it’s a way to make explicit how we should think.
But real question as I see it is :
why can’t an advocate of any discipline state the same it for its own approach?
(e.g., development approaches like: Agile, Lean, test-based, search-based, …)
MDE is actually in a much better position, because it’s a way for formulating, stating and formalizing ways of thinking that are inherent with the human way of seeing the world (i.e., abstraction). That’s why MDE / MDD advocates can actually say that advanced software development methodology is indistinguishable from model-driven.
What’s your response?
Let’s discuss them all here!
[Incidentally, this is my post #100 on this blog! Thanks to all of you readers and contributors]
To keep updated on my activities you can subscribe to the RSS feed of my blog or follow my twitter account (@MarcoBrambi).
6 thoughts on “Sufficiently advanced software development methodology”
Sure, before being supported by so many tools, “Model Driven” is a way of thinking the world and solving it, as resumed by @modelpractice in http://modelpractice.wordpress.com/2012/01/06/modelling-abstraction-thinking/.
But this is not enough to call it a “methodology”, it's rather a “thinking tool”.
On another end, nowadays we can hardly imagine a software methodology not using this tool ;D
I also don't know if you can acll it methodology. However, MDD practitioners tend to be at the “meta” level as much as possible. For me, generating actual code is second-nature. I have to model, describe everything before. Code generation is a by-product of a well engineered, modelled system. So, the meta level is always there to allow *thinking about the design*, and being able to change it, adapt it even to new design methodologies (think for example in Ecore, you can translate it to any other representation really easily). Modelling can be seen at so many levels, and also it is used to describe systems at so very different perspectives that (at least as I see it), at the methodoloty level it is a superset of all of those technologies you cite (test-based, search-based), because I can model these behaviors *and also* produce the same artifacts/results that the other technologies are producing, *but* with the meta-level attached to all my designs.
So we may conclude that MDE==Magic! (maybe programmers disagree but show to a non-technical person that from some models you can get a fully functional app and I'm sure she will agree with me)
I would rather say MDE=Magic wand. The wand in itself is just a tool, able to deliver Magic only if held by… A wizard!
In Jordi's story the wizard has built a MDE factory and helped the user to describe (model) his problem in a way that allow the factory to deliver a solution. See Mendix 😉
I agree with the idea hat MD* is not a methodology, but a more abstract way to think about solving problems.
I've just found this free course of “Model Thinking” at Standford that could be of your interest:
Actually, I was trying to be funny for the most part (as it's obviously a play on Arthur C. Clarke's famous quote) and only a little thought-provoking. Funny what a small tweet can do 😉
I'm pretty sure advocates of Agile and such could come up with equally convincing (well, at least to the world in general) statements for why their way of thinking is the magic way forward which ends this little software crisis of ours.
The very reason that MDE works so well is also its most acute (image) problem: indeed, you need a sort of “meta” magician to be able to pull it off successfully. (The ironic thing is that you need a few magicians to bear any project to fruition anyway, but as long as the majority of the SE industry continues to regard developers as mere code monkeys who should be content in cranking out as many lines of code without talking back, that's not going to be readily recognized.) That magician probably can pull off the project without explicit use of MDE as well, although the way of thinking is going to seep through anyway: things like DRY, Authoritative Source, Separation of Concerns, etc. are achievable without ever talking about an explicit model.
To turn it around: I don't see “regular” developers (i.e., the ones with quite a narrow comfort zone, who like to copy-and-paste and for whom bugs mean job security) going for MDE, unless there's some other personal advantage for them. I guess that's the same with all other magic^H^H^H^H^Hadvanced technology 😉