Hi
I use the model-driven "rhapsody" software from telelogic, where I create an UML class diagram, for which most of the code then is automatically generated.
In addition, I can choose to "reverse engineer" a preexisting code to an UML class diagram.
According to the rhapsody documentation this could be done using UML case, activity and sequence diagrams too. However I haven't tried those yet to know if its indeed true.
Unfortunately rhapsody is not free

and its license is rather expensive..... (I use it at my university)
Here some info for rhapsody:
http://www.onjava.com/pub/a/onjava/2..._rhapsody.html
it works for both java and c++ by the way