I used to work on a UML/MDA tool called OptimalJ. It was fantastically complex and developers did not love it, mostly because it was the mother of all code generators. We bet the future of our development facility on Java+UML+MDA, and lost.
Our architect edition was amazing though - you could use it to define your own transformations of UML models into other UML models, define new specialized model types, and transform models into any code structure you wished. I really enjoyed working on that. But it never caught on, which is a real pity.
@Grunnt: UML is very tightly specified at a language level and even at a serialization level (XMI). However, the specification does not address all the needs of MDA (or it didn’t in 2007, when they pulled the plug on OptimalJ), so it has a way to go.
@MatthewNichols: Comunicating with non-programmers is the most critical part of programming. They’re the people the programs are for, and the idea of UML (and MDA takes it to the next level) is to involve the non-technical people, i.e. the ones who understand the purpose of the program, in the process of designing the application and specifying the functionality. But that implies that UML needs to be a proper language, so it becomes too technical once more… It’s a bit self-defeating, taken to the extreme.