I had already asked the question many years ago and the
responses were mixed.
We are currently part designing, part reengineering a big
software project for the control of power stations. Since
the previous release was made without proper design
notation, the company has decided to use UML and a
tool call Visual Paradigm to do the preliminary design.
We won't generate the code.
One aspect that IMO is not satisfactory is that UML
diagrams are not "naturally" fit for expressing requirements
in a way that is consistent and complete enough to
generate usable code and being able to reverse
engineering. With the possible exception of state
diagrams which can be translated into executable
instruction while staying at a rather abstract point of
view. Use cases, sequence diagrams, activity diagrams
are approximate and leave too much room for interpretation
or are cluttered with some detail in an obscure notation.
I have had a look at an European project called "Interested".
They have used tools from different vendors and built the
necessary interfaces. They can generate code for highly
demanding applications such as avionics or nuclear plants.
The problem is those tools are rather hard to use and can
only be used where the generated code is relatively small.
It seems there is a need for tools for large projects with
intermediate safety constraints that are not covered by the
existing ones.
An article expressing my views on UML:
<
http://softwarechimps.blogspot.fr/20...ml-or-dsl-for-
embedded.html>