Tools that help ReverseEngineering.
Commercial tools for source code reverse engineering of object oriented languages include:
UnderstandForCeePlusPlus? extracts metrics, CrossReference? and FunctionsCallTrees? from the SourceCode.
There are a few very good free tools for reverse engineering as well. For example, ESSModel generates excellent class diagrams from the source--and it's very fast! ESSModel is OpenSource FreeSoftware and is available at http://www.essmodel.com/download.html or from the SourceForge project page at http://sourceforge.net/projects/essmodel
You can also try some promising free tool for Java Reversing :