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/2001/01/25/uml_rhapsody.html
it works for both java and c++ by the way