Reverse engineering is pretty effective for the static model. The tool can understand which classes extend or depend on each other.
They are less good at the dynamic model. I haven't seen anything that does a good job of recreating object interaction or sequence diagrams. Higher level concepts like use cases and actors are just not (necessarily) in the code so I wouldn't expect any success in reversing those.
Reverse engineering often includes WAY too much detail. When making our own models we usually "abstract away" the unimportant details to reveal the important bits and the tools don't know the difference. I'd rather reverse engineer with pencil & paper most times.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi