Eu gosto de usar o NDepend para reverter a complexa base de código .NET. A ferramenta vem com vários ótimos recursos de visualização como: Existem dezenas de maneiras de visualizar uma base de código, e para completar a resposta do Pierre_303, aqui estão algumas imagens extraídas do NDepend (disclaimer, eu sou o criador do NDepend).
Gráfico de Dependência : Um gráfico pode representar diferentes tipos de interação em seu código, mais documentação aqui a> (Gráfico de Interação, Gráfico de Chamada, Gráfico de Herança de Classe, Gráfico de Caminho, Gráfico de Ciclo ...)
MatrizdeDependência:Representaasmesmasinformaçõesqueumgráfico,masdeumamaneiracompletamentediferente.OMatrixémelhorqueoGraphparaexibirdependênciasgrandesconfiguradascomcentenasdenósearestas,enquantooGraphémelhorqueoMatrixparadependênciasmenores,especialmentecommenosde20nós.Matrixtambémtemumaimensavantagememmostraropadrãoestruturaldocódigonumpiscardeolhos,comocódigoemcamadas,ciclodedependência,coesão,acoplamento...Maisinformações
Visualizaçãodemétricadecódigopormeiodetreemaping:issonãovisamostrarestruturadecódigo/arquitetura,masmaiscomoocódigoéparticionado.Aqui,osretângulosmostrammétodos,classesenamespaces,equantomaislinhasdecódigoumaclassetiver,maiorseráoseuretângulo.Aoescolherumacombinaçãoapropriadademétricadecódigoevaloresdenível,aExibiçãodemétricadoTreemapajudaaverpadrõesqueseriamdifíceisdedetectardeoutrasmaneiras.Maisinformações