Model Driven Software Development (MDSD), Model Driven Development, Model Driven Architecture, Software Factory, Software Product Lines, Language Oriented Programming, Intentional Programming, Generative Software Development, Generative Programming, Model Driven Architecture, Declarative Programming, Language Workbenches, Domain Specific Languages (DSL)
Saturday, 16 November 2013
Wednesday, 6 November 2013
Why UML is not fit for MDSD ?
Quote by James Rumbaugh
Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. This quote from James Rumbaugh debunks some cliché about UML and code generation.
Federico and Shane: "What do you think of using UML to generate implementation code?"
James: "I think that it's a terrible idea. I know that I disagree with many other UML experts, but there is no magic about UML. If you can generate code from a model, then it is programming language. And UML is not a well-designed programming language.
The most important reason is that it lacks a well-defined point of view, partly by intent and partly because of the tyranny of the OMG standardization process that tries to provide everything to everybody. It doesn't have a well-defined underlying set of assumptions about memory, storage, concurrency, or almost anything else. How can you program in such a language?
The fact is that UML and other modelling language are not meant to be executable. The point of models is that they are imprecise and ambiguous. This drove many theoreticians crazy so they tried to make UML "precise", but models are imprecise for a reason: we leave out things that have a small effect so we can concentrate on the things that have big or global effects. That's how it works in physics models: you model the big effect (such as the gravitation from the sun) and then you treat the smaller effects as perturbation to the basic model (such as the effects of the planets on each other). If you tried to solve the entire set of equations directly in full detail, you couldn't do anything.
I think a lot of the recent work on UML has been misguided. It never was meant to be a programming language. Use it to get the strategy right and write the final program in a suitable programming language.
Unfortunately I don't know any really good programming languages. They all have a lot of flaws that encourage mistakes. The whole C family (C, C++, Java, etc.) is sorely lacking (the syntax is almost unparsable), but we are stuck with them whether we like it or not. A lot of new faddish languages demonstrate the ignorance of any serious language theory on the part of their developers. On the other hand, many of the more academic languages are too elegant for their own good and disdain important features, such as the need for multiple teams to work separately on the same system."
—James Rumbaugh in Masterminds of Programming
Subscribe to:
Comments (Atom)

