Arquitectura – Visual Studio Dependency Graph ¿Cómo conoces las dependencias de tus componentes?

Visual Studio Dependency Graph
Visual Studio Dependency Graph

Artículos relacionados:

Introducción

Como hablamos en el post anterior una de las herramientas que podemos usar para validar la arquitectura es el gráfico de dependencias. Este gráfico nos permite ver las dependencias que existen entre los componentes, nos ayuda a conocer si existen dependencias cíclicas, cuales son los componentes más usados y los que no se usan.

Visual Studio Dependency Graph

Para generar este gráfico debemos abrir una solución en el Visual Studio e ir al menú Architecture -> Generate Dependency Graph -> For Solution.

Menú generar diagrama dependencias
Menú generar diagrama dependencias

Para la solución que tengo creada, se muestra el siguiente gráfico por defecto:

Ejemplo diagrama dependencias
Ejemplo diagrama dependencias

En la imagen podemos ver que hay varias flechas con distintos colores.

  • La línea solida verde: indica que se realiza una herencia
  • La línea punteada verde: indica que se realiza una implementación de una interfaz.
  • La línea solida morada: indica que se llaman a objetos del otro componente con el operador new.
  • La línea solida gris: indica que se hace referencia a los objetos del otro componente pero no se crean instancias.

Por defecto, en el gráfico que se genera  no se aprecian muy bien las relaciones entre los componentes, para mejorar esto podemos ir a la opción Layout y seleccionar una de las siguientes opciones:

  • Left to rightLeft to Right layout button
  • Right to leftRight to Left graph button
  • Top to bottomTop to Bottom graph button
  • Bottom to topBottom to Top graph button
  • Quick Clusters Quick Clusters button on graph toolbar

En el caso del layout Quick Clusters se puede observar que los componentes más usados se ubican en el centro de los grupos y los menos usados en los extremos.

Diagrama componentes cluster
Diagrama componentes cluster

Análisis del gráfico

En la siguiente imagen vemos:

  • La clase HandlerEvaluacion del componente Evaluacion.ManejadorEvento implementa la interfaz IHandler del componente Core, por eso hace usa la flecha verde punteada.
  • La clase HandlerEvaluacion hace referencia (no crea la instancia) a una clase que se encuentra en el componente Core, por eso usa la flecha gris.
  • La clase HandlerEvaluacion crea una instancia de la clase Matricula que se encuentra en el componente Matricula.Core, por eso usa la flecha morada.
  • Entre el componente Matricula.Core y Core hay una flecha verde debido a que la clase Matricula hereda de IEvento.
Analisis componentes
Análisis componentes

Nota: Cuando existen distintos tipos de relaciones entre dos componentes se usa el color más restrictivo.

Análisis del código

Revisemos el código de la clase HandlerEvaluacion y vemos que se describe lo que indico el gráfico de dependencias:

  • La clase HandlerEvaluacion implementa la interfaz IHandler (Core).
  • Se hace referencia a la clase EvaluacionTerminadaEvent (Evaluacion.Core).
  • Se crea una instancia de la clase Matricula (Matricula.Core).
public class HandlerEvaluacion : IHandler<EvaluacionTerminadaEvent>
{
    private readonly IServicioMatricula servicioMatricula;

    public HanlderEvaluacion(IServicioMatricula servicioMatricula)
    {
        this.servicioMatricula = servicioMatricula;
    }

    public void Handle(EvaluacionTerminadaEvent parametro)
    {
        servicioMatricula.Ejecutar(new Matricula());
    }
}

Conclusión

Para conocer la forma en que se vienen relacionando nuestros componentes es importante generar un gráfico de dependencias. Este gráfico nos permite conocer el tipo de dependencias que existen entre los componentes: dependencias cíclicas, los componentes más usados y los que no se usan. Con esta información podremos determinar que estrategias usar para bajar el acoplamiento entre los componentes o eliminar los que no son usados.

Referencias:
Metal Tip:

Este artículo lo escribí escuchando la canción The power of the dragon flame de la banda Rhapsody of Fire de Italia, les comparto el enlace.

Happy coding and Stay Heavy lml

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s