There is a discussion going on in the internal TW’s mailing list about UML and MDA’s relevence to software developments future. I posed this question:
“With the emergence of MS Software Factories, Sun’s Project Ace, and even JetBrains Meta Programming System, companies are positioning themselves not just around using models to drive design, but also to drive development ( Model Driven Development ). Given that none of these initiatives use UML, has UML, and to a lesser extent MDA, has been set aside by the industry?”
In reponse to that, Chris Stevenson posed this interesting question / point:
“Isn’t UML or any MDA just another language to learn? If so, what makes it ‘Universal’? What makes UML the best choice for specifying every possible requirement? What makes UML better than say ruby, or even Plain Old English (POE) as a specification language?”
I think this is the root of the question, and the reason that most people are moving to domain language approaches rather than aiming for the false utopia of a ‘universal language’. The real world is messy. Its not all boxes and lines. Or even circles and stick figures 🙂
Chris makes a great point, which I acknowledge in my response to him:
That’s a great point. MDA is really two parts: Platform Independent Model (PIM ) & Platform Specific Model (PSM ). You create your software using a PIM and then “generate” it using one or more PSM’s. You point is an excellent one in that how can someone possibly think they know enough about every type of software development to create a “universal” language that will be used to build your PIMs. How can you encompass not only technical language contsructs ( i.e. something like reflection, which doesn’t exist in all languages ) but also individual domain constructs?
Seems like this is the old J2EE spec debate: “you create your programs according to the J2EE spec, and you will be able to move them from app server to app server”. In reality, it didn’t work out quite like that.
And app server independence was a much smaller goal that complete technology and language independence.
I think the most interesting part of all of this is the current buzzword / buzzphrase: Model Driven Development. Most people dismiss is as “pretty pictures” and “we can’t program in pictures”. But the funny thing is that I didn’t see the word Graphical anywhere up there. People are so used to the “model = graphical UML” that they automatically associate the two, when there really isn’t a concrete connection. Software models CAN be graphical, but they could also be textual.
It will be interesting to see where things like Sun’s Project Ace, MS Software Factories, and JetBrains MPS system go in their future….