This post originated from an RSS feed registered with Agile Buzz
by Martin Fowler.
Original Post: ModelDrivenSoftwareDevelopment
Feed Title: Martin Fowler's Bliki
Feed URL: http://martinfowler.com/feed.atom
Feed Description: A cross between a blog and wiki of my partly-formed ideas on software development
Model Driven Software Development (MDSD) is a style of software
development that considers itself as an alternative to the
traditional style of programming. The approach centers itself on
building models of a software system. These models are typically
made manifest through diagrammatic design notations - the UML is one
option. The idea is that you use these diagrams, to specify your
system to a modeling tool and then you generate code in a
conventional programming language.
The MDSD vision evolved from the development of graphical design
notations and CASE tools. Proponents of these techniques saw
graphical design notations as a way to raise the abstraction level
above programming languages - thus improving development
productivity. While these techniques and tools never caught on too
far, the basic core ideas still live on and there is an ongoing
community of people still developing them.
Although I've been involved, to some extent, in MDSD for most of
my career, I'm rather skeptical of its future. Most fans of MDSD
base their enthusiasm on the basis that models are ipso facto a
higher level abstraction than programming languages. I don't agree
with that argument - sometimes graphical notations can be a better
abstraction, but not always - it depends on the specific
cases. Furthermore To use MDSD you need tools that support
RepositoryBasedCode, and these tools currently introduce
a number of pragmatic issues in tooling - of which source control is
the canonical example.
MDSD is surrounded by a terminological mess. One particular vision
of MDSD is ModelDrivenArchitecture (MDA) which is an OMG
initiative based on the UML. Many people in the MDSD community,
however, don't think that MDA or UML is the right vision for
MDSD. For a long time I would hear people talking about Model Driven
Development (MDD) as the general concept and MDA as the OMG's
specific vision. However the OMG has trademarks on several "Model
Driven *" and "Model Based *" phrases - including MDD. As a
consequence people have to be careful about what model driven phrase
they use. I'm using MDSD as that is the title of a useful book on the topic.