Re: UML tools in embedded
UML 1.x tools certainly don't help as much as the vendors like to present in their marketing material; it's just a thin layer over C++ (or Java), so the typical embedded developer using C and adopting UML 1.x actually has to migrate to C++, and also attempt to migrate to OO as a usually underemphasised 'part of the deal'.
In particular the talk of 'full code generation' simply means that the tool copies the code you manually write and put somewhere in the UML tool is copied out into some fairly minimal class definition code. YOU still have write and to debug that code, and this approach has major limitations like there are actually two seperate languages involved (i.e. UML and C++), so you're actually increasing the complexity of the development approach to solving problems, rather than allowing tools to simplify development by using the right development languages and letting tools automate tedious and error-prone mechanical activities like writing 100% of the C/C++/Java/Ada/... which will run on your target platform.
The real benefits of a new generation of modelling languages will come when we make a step away from traditional programming languages like C, C++ and Java, using new languages which incorporate some of the abstractions that are lacking from UML 1.x and these languages. In particular these will provide a formal, precise, and visual way of specifying architecture, components and interfaces, so we can really define things once and re-use them any number of times. Look for UML 2.0 tools available now from Telelogic and coming (according to their marketing) from ILogix (with others following during 2004), which in principle will allow a move away from the limitations of conventional languages like UML 1.x/C/C++/Java.
But for smaller projects the advantages probably won't outweight the costs for 5 years, if ever.
How long did it take for embedded developers to migrate to C, then C++? It's still not complete, some are still using assembler! Depressingly, though, C++ is now 18 years old. If it's so sh*t-hot, why doesn't everyone use it? It's not the right solution, that's why. And by extension UML 1.x isn't the right solution either, because it's so tightly linked to the thing that's blocking the road, i.e. C++.
Sorry about the rant, but the garbage talked about UML 1.x makes me hot under the collar.