title: C / C++ packages to understand code for refactoring
body: <p>I am about to starting to work on a project which involves refactoring and modifying existing code which is in c &amp; c++. The code is a bloated one and is in huge volume. Of course since the code needs to be modified, an understanding of the code has to be developed and in a very short span of time since we have some pretty time pressed project schedule. Can anyone please suggest any open source tools which will help in achieving the above. 
  In short what I am looking for is tool which can:</p>
  
  <ol>
  <li>Reverse engineering tools which will help understand the design.</li>
  <li>Sequence generator tools which will help draw sequences at run time(Most probably we will be able to run the code, but not in the initial stages at least) or through code examination.</li>
  <li>Good code browsing tools to study the existing code base.</li>
  <li>Suitable tool which can auto refactor code with minimal efforts.</li>
  </ol>
  
  <p>Please do tell me about any experiences,preferences or favorites worth looking out for.</p>
  
  <p>[EDIT] Came up with a list of tools to help in above. Here's the list:</p>
  
  <ol>
  <li><p><a href="http://www.graphviz.org/" rel="nofollow noreferrer">Graphviz</a> &amp; <a href="http://www.doxygen.nl" rel="nofollow noreferrer">doxygen</a><br>
  Generate UML class diagrams from existing code base</p></li>
  <li><p><a href="http://www.pragsoft.com/prod_umls.html" rel="nofollow noreferrer" title="Umlstudio">UMLStudio</a><br>
  Creating an object model for your OO legacy code is the best approach to analysing, understanding and maintaining it. UMLStudio can automatically convert C++, Java, CORBA IDL, PHP 5, and Ada 95 code into OOA&amp;D notation faster than any other CASE tool. </p></li>
  <li><p><a href="http://www.codedrawer.com/" rel="nofollow noreferrer" title="codedrawer for C++">CodeDrawer for C++</a><br>
  The CodeDrawer converts source code to visual based diagrams. Class, struct, and any elements of source code can be shown diagrams. It also shows the logics of a function and a method. The CodeDrawer helps understand source code of your  project</p></li>
  <li><p><a href="http://www.imagix.com/" rel="nofollow noreferrer">Imagix</a><br>
  Reverse engineering and visualization of source code lead to improved program comprehension. Speeds: 
  Learning Unfamiliar Code 
  Change Impact Analysis 
  Integrating Open Source Code 
  Code Reuse 
  Software Maintenance</p></li>
  <li><p><a href="http://www.agilej.com/" rel="nofollow noreferrer">AgileJ</a>
  AgileJ StructureViews is a plug-in for the Eclipse Java IDE which generates highly customisable UML class diagrams on an industrial scale, ideal for agile development or exploration of any existing Java codebase.</p></li>
  <li><p><a href="http://www.maintainj.com" rel="nofollow noreferrer">MaintainJ</a>
  If you can run the code base then MaintainJ generates UML sequence and class diagrams at runtime when you run a particular use case.</p></li>
  <li><p><a href="http://www.neiljohan.com/projects/reverse/" rel="nofollow noreferrer">Java Reverse Engineering Tool</a>
  Generates class diagrams and relations between classes from Java source code.</p></li>
  <li><p><a href="http://www.sourceinsight.com" rel="nofollow noreferrer">Source Insight</a>
  Great source browsing software</p></li>
  </ol>
  
  <p>One more, Thanks to Steve Townsend<br>
  <a href="http://www.klocwork.com/products/insight/architect-code-visualization/" rel="nofollow noreferrer">Klocwork</a></p>