VS2010 Tip #2: Ingeniería inversa de proyectos

Claro… me vas a decir que nunca te pasó de caer en un proyecto por la mitad… tomás un ítem del backlog… intentas entender el código… y querés conocer a tu antecesor en el proyecto para explicarle un par de temitas amablemente.

Ayer mostraba una de las funcionalidades de arquitectura incluidas en VS2010b2, mostrando la posibildad de generar gráficos UML para modelar nuestro proyecto. Sin embargo, muchas veces nos encontramos con la necesidad de contar con un gráfico que nos ayude a entender el código que ya esta escrito. No me voy a poner a discutir aquí sobre si la documentación precede al código o al revés o si no debiera existir.

Vamos con la prueba entonces. Voy a estar trabajando con el proyecto de Oxite, se trata de un blog engine creado sobre el framework ASP.NET MVC (cuya calidad en el código ha sido muy discutida). En este caso vamos a tratar de buscar entender como funciona la administración de comentarios de cada post. Vamos a generar un gráfico de dependencias por clase:

image

Luego de analizar la dependencia entre nuestras clases, Visual Studio nos permite seleccionar las clases y métodos sobre los cuales queremos generar el diagrama. En mi caso voy a inspeccionar los métodos del controlador de Comentarios:

image 

Seleccionamos el método de List, y aparecen las llamadas que el método realiza (GetComments, OxiteModelList y HomePageContainer):

image

Claramente el controller está solicitando al contenedor los comentarios, accediendo al modelo de la aplicación. Ahora bien, si buscamos una vista más completa de la aplicación, podemos realizar un gráfico Custom, indicando que queremos ver la separación de clases, métodos y assemblies que lo componen:

image

El resultado, es realmente asombroso, ya mencioné que ahora VS está hecho en WPF? :-) :

image

Seguiré contando un caso más end-to-end de cómo aprovechar este tipo de gráficos… pero eso queda para otro post.

Saludos!