most time I use state diagrams drawn on paper by hand. Up on today I did
not see any tool what can make usable code. For more complicated states I
have a seperate tool (GeSY) for Nassi-Shneiderman what can generate
code-frames. I sometimes use the tool but not the code generation feature
becouse code is not really usable. E.g. a case switch with 10 or more
cases will be implemented as a computed jump for efficiency reason. There
are many other things what tools cannot decide automatically.
For complicated things I occasionally use a data flow diagramm or other
diagramms from HW design like K-V (Karnough-Veight) tables. Class and Use
diagramms and other object oriented stuff I do not use. There are no or
only trivial database orientented problems in microcontroller and for most
applications diagramms like entity-relationship are trivial and a waste of
time
If you compare the price of the tools and the benefit, there seems to be
only a small use. In case of NS-Diagram it prevents drawing the thing many
times again and again becouse the program can zoom and shift outer blocks.
In case of more simple diagrams I am faster doing this on paper. The most
important thing is to use a design method if problem requieres this and
not to use a tool for the design method.
One of the tools problems is, that the diagramms should describe 100% of
the problem to be able for code generation. This is hardly possible
becouse each kind of diagram shows a diffrent view of the problem and none
is perfect. This should be finally the skill of the artist to decide the
balance in doing this or that and if 100 persons write code for the same
problem non of them would have the same code in result. This does not mean
that HLL compilers or grafical input cannot boost efficency of programmers
but in the moment all known tools are not really requiered for the design
of good products. UML what can generate code for further modification by
hand needs to parse back the modified sources and those tools seems rarely
or much too expensive and complicated in use.