Compartir a través de


Diagramas de dependencia: instrucciones

Describa la arquitectura de la aplicación en un nivel alto mediante la creación de diagramas de dependencias en Visual Studio. Para asegurarse de que el código mantiene la coherencia con este diseño, valide el código con un diagrama de dependencias. También puede incluir la validación de capas en el proceso de compilación.

Para ver qué ediciones de Visual Studio admiten esta característica, consulte Compatibilidad de ediciones con las herramientas de arquitectura y modelado.

Nota

Se admiten diagramas de dependencias para proyectos de .NET Core a partir de la versión 16.2 de Visual Studio 2019.

Descripción de un diagrama de dependencias

Al igual que en un diagrama de arquitectura tradicional, en un diagrama de dependencias se identifican los componentes primarios o las unidades funcionales del diseño y sus interdependencias. Cada nodo del diagrama, que se denomina capa, representa un grupo lógico de espacios de nombres, proyectos u otros artefactos. Puede dibujar las dependencias que debería haber en el diseño. A diferencia de un diagrama de arquitectura tradicional, puede comprobar que las dependencias reales del código fuente se ajustan a las dependencias especificadas que se pretenden. Al incluir la validación en el proceso de compilación normal de Team Foundation Server, tiene la garantía de que el código de programa seguirá ajustándose a la arquitectura del sistema cuando se realicen cambios. Vea Diagramas de dependencias: referencia.

Diseño o actualización de la aplicación con diagramas de dependencias

Los siguientes pasos proporcionan información general sobre cómo utilizar los diagramas de dependencias dentro del proceso de desarrollo. Las secciones posteriores de este tema describen cada paso con más detalle. Si está desarrollando un nuevo diseño, omita los pasos en los que se hace referencia al código existente.

Nota

Estos pasos aparecen en un orden aproximado. Es probable que desee superponer las tareas, reorganizarlas para que se adapten a su situación particular y revisarlas al inicio de cada iteración del proyecto.

  1. Cree un diagrama de dependencias para toda la aplicación o para una de sus capas.

  2. Defina las capas que para que representen las principales áreas o componentes funcionales de la aplicación. Denomine estos niveles según su función, por ejemplo, "Presentación" o "Servicios". Si tiene una solución de Visual Studio, puede asociar cada capa a una colección de artefactos, como proyectos, espacios de nombres, archivos, etc.

  3. Detecte las dependencias existentes entre las capas.

  4. Modifique las capas y las dependencias para mostrar el diseño actualizado que desea que el código refleje.

  5. Diseñe nuevas áreas de la aplicación; para ello, cree capas que representen los principales bloques arquitectónicos o componentes y defina las dependencias que van a representar el modo en que cada capa emplea las otras.

  6. Modifique el diseño y el aspecto del diagrama para que le resulte más fácil explicárselo a sus colegas.

  7. Valide el código con el diagrama de dependencias para poner de manifiesto los conflictos entre el código y la arquitectura necesaria.

  8. Actualice el código para que se adapte a la nueva arquitectura. Desarrolle y refactorice el código en iteraciones hasta que la validación no muestre ningún conflicto.

  9. Incluya la validación de capas en el proceso de compilación para asegurarse de que el código no se desvía del diseño.

Creación de un diagrama de dependencias

Los diagramas de dpendencias deben crearse dentro de un proyecto de modelado. Se puede agregar un nuevo diagrama de dependencias a un proyecto de modelado ya existente, crear un nuevo proyecto de modelado para el diagrama de dependencias o bien copiar un diagrama de dependencias ya existente en el mismo proyecto de modelado.

Importante

No agregue, arrastre ni copie un diagrama de dependencias de un proyecto de modelado a otro, ni a otra ubicación de la solución. Un diagrama de dependencias que se copia de esta manera tendrá las mismas referencias que el diagrama original, incluso si se modifica. Esto impide que la validación de capas se haga correctamente y es posible que cause otros problemas, como la pérdida de elementos u otros errores al intentar abrir el diagrama.

Vea Creación de diagramas de dependencia a partir del código.

Definir capas para representar áreas funcionales o componentes

Las capas representan grupos lógicos de artefactos, como proyectos, archivos de código, espacios de nombres, clases y métodos. Se pueden crear capas a partir de artefactos de proyectos de Visual C# y Visual Basic, o bien se pueden adjuntar especificaciones o planes a una capa vinculando documentos, como archivos de Word o presentaciones de PowerPoint. Cada capa aparece como un rectángulo en el diagrama y muestra el número de artefactos vinculados a ella. Una capa puede contener capas anidadas que describan tareas más específicas.

Como regla general, denomine las capas según su función, por ejemplo, "Presentación" o "Servicios." Si los artefactos tienen una estrecha interdependencia, colóquelos en la misma capa. Si los artefactos se pueden actualizar de forma independiente o usar en aplicaciones diferentes, sitúelos en capas distintas.

Sugerencia

Existen ciertos tipos de artefactos que se pueden vincular a capas, pero que no admiten la validación con el diagrama de dependencias. Para ver si el artefacto admite la validación, abra el Explorador de capas y examine la propiedad Admite validación del vínculo de artefacto. Consulte Detectar las dependencias existentes entre capas.

Al actualizar una aplicación desconocida, también puede crear mapas de código. Estos diagramas pueden ayudarle a detectar patrones y dependencias mientras explora el código. También puede usar el Explorador de soluciones para examinar los espacios de nombres y las clases, que suelen corresponderse con las capas existentes. Asigne estos artefactos de código a las capas arrastrándolos desde el Explorador de soluciones hasta los diagramas de dependencias. Después, puede usar diagramas de dependencias, que le ayudarán a actualizar el código y mantener la coherencia con el diseño.

Consulte:

Detectar las dependencias existentes entre capas

Una dependencia existe cuando un artefacto que está asociado a una capa tiene una referencia a un artefacto que está asociado a otra capa. Por ejemplo, una clase de una capa declara una variable que tiene una clase en otra capa. Puede detectar las dependencias existentes aplicándoles técnicas de ingeniería inversa.

Nota

No se puede realizar ingeniería inversa en las dependencias de ciertos tipos de artefactos. Por ejemplo, no se va a realizar ingeniería inversa en ninguna dependencia que tenga como origen o destino una capa vinculada a un archivo de texto. Para ver qué artefactos tienen dependencias en las que se puede realizar ingeniería inversa, haga clic con el botón secundario en una o varias capas y, a continuación, haga clic en Ver vínculos. En el Explorador de capas, observe la columna Admite validación. No se realizará ingeniería inversa en las dependencias de artefactos en los que esta columna muestra False.

Para realizar ingeniería inversa de las dependencias existentes entre capas

Seleccione una o varias capas, haga clic con el botón secundario en una capa seleccionada y, a continuación, haga clic en Generar dependencias.

Normalmente, verá algunas dependencias que no deberían existir. Puede editar estas dependencias para alinearlas con el diseño buscado.

Editar capas y dependencias para mostrar el diseño previsto

Para describir los cambios que piensa realizar en el sistema o la arquitectura deseada, use los pasos siguientes para editar el diagrama de dependencias. También podría realizar algunos cambios de refactorización para mejorar la estructura del código antes de extenderlo. Vea Mejorar la estructura del código.

To Siga estos pasos
Eliminar una dependencia que no debería existir Haga clic en la dependencia y, a continuación, presione ELIMINAR.
Cambiar o restringir la dirección de una dependencia Establezca su propiedad Direction.
Crear nuevas dependencias Use las herramientas Dependencia y Dependencia bidireccional.

Para dibujar varias dependencias, haga doble clic en la herramienta. Cuando finalice, haga clic en la herramienta Puntero o presione la tecla ESC.
Especificar qué artefactos asociados a una capa no pueden depender de los espacios de nombres especificados Escriba los espacios de nombres en la propiedad Forbidden Namespace Dependencies de la capa. Use un signo de punto y coma (;) para separar los espacios de nombres.
Especificar qué artefactos asociados a una capa no deben pertenecer a los espacios de nombres especificados Escriba los espacios de nombres en la propiedad Forbidden Namespaces de la capa. Use un signo de punto y coma (;) para separar los espacios de nombres.
Especificar qué artefactos asociados a una capa no deben pertenecer a uno de los espacios de nombres especificados Escriba el espacio de nombres en la propiedad Espacios de nombres necesarios de la capa. Use un signo de punto y coma (;) para separar los espacios de nombres.

Mejorar la estructura del código

Los cambios de refactorización son mejoras que no afectan al comportamiento de la aplicación, pero que facilitan los cambios y las ampliaciones del código en el futuro. Un código bien estructurado tiene un diseño que resulta fácil abstraer en un diagrama de dependencias.

Por ejemplo, si crea una capa para cada espacio de nombres del código y, a continuación, aplica técnicas de ingeniería inversa a las dependencias, debe haber un conjunto mínimo de dependencias unidireccionales entre las capas. Si crea un diagrama más detallado usando clases o métodos como capas, el resultado debería tener también las mismas características.

De lo contrario, el código resultará más difícil de modificar a lo largo de su vida útil y será menos apropiado para llevar a cabo la validación con diagramas de dependencias.

Diseñar nuevas áreas de la aplicación

Cuando comience el desarrollo de un nuevo proyecto, o una nueva área de un nuevo proyecto, puede dibujar capas y dependencias que le ayuden a identificar los componentes primarios antes de empezar a desarrollar el código.

  • Muestre modelos arquitectónicos identificables en los diagramas de dependencias, si es posible. Por ejemplo, un diagrama de dependencias en el que se describa una aplicación de escritorio puede incluir capas como Presentación, Lógica del dominio y Almacén de datos. Un diagrama de dependencias que abarque una única característica de una aplicación puede tener las capas Modelo, Ver y Controlador.

  • Cree un artefacto de código para cada capa, como un espacio de nombres, una clase o un componente. De este modo, le resultará más fácil hacer un seguimiento del código y vincular los artefactos de código a las capas. Tan pronto como cree cada uno de los artefactos, vincúlelo a la capa apropiada.

  • No es necesario vincular la mayor parte de las clases y otros artefactos a las capas, pues pertenecen a artefactos mayores, como espacios de nombres, que ya han vinculado a las capas.

  • Cree un nuevo diagrama para una característica nueva. Normalmente, habrá uno o varios diagramas de dependencias en los que se describa toda la aplicación. Si está diseñando una nueva característica de la aplicación, no agregue ni cambie los diagramas existentes. En su lugar, cree un diagrama propio en el que refleje los nuevos elementos del código. Las capas del nuevo diagrama pueden incluir las capas de la presentación, la lógica del dominio y la base de datos de la nueva característica.

    Cuando compile la aplicación, el código se validará con el diagrama general y con el diagrama más detallado de la característica.

Editar el diseño para su presentación y explicación

Para que le resulte más fácil identificar las capas y dependencias o para analizarlas con los miembros del equipo, edite el aspecto y el diseño del diagrama de los siguientes modos:

  • Cambiar el tamaño, la forma y la posición de las capas.

  • Cambiar el color de las capas y las dependencias.

    • Seleccione una o varias capas o dependencias, haga clic con el botón derecho y, a continuación, haga clic en Propiedades. En la ventana Propiedades, edite la propiedad Color.

Validar el código con el diagrama

Una vez editado el diagrama, puede validarlo con el código manualmente en cualquier momento o automáticamente cada vez que se compile.

Vea:

Actualizar el código para que se ajuste a la nueva arquitectura

Normalmente, los errores aparecerán la primera vez que valide el código contra un diagrama de dependencias actualizado. Estos errores pueden tener varias causas:

  • Un artefacto se ha asignado a la capa equivocada. En este caso, mueva el artefacto.

  • Un artefacto, como por ejemplo una clase, usa otra clase de forma que hay conflictos con su arquitectura. En este caso, tiene que refactorizar el código para quitar la dependencia.

Para resolver estos errores, actualice el código hasta no aparezcan más errores durante la validación. Normalmente, este es un proceso iterativo. Para obtener más información sobre estos errores, consulte Validación de código con diagramas de dependencias.

Nota

A medida que desarrolla o refactoriza el código, es posible que tenga nuevos artefactos que deba vincular al diagrama de dependencias. Sin embargo, esto podría no ser necesario, por ejemplo, si tiene capas que representan espacios de nombres existentes, y el nuevo código solo agrega más material a estos espacios de nombres.

Durante el proceso de desarrollo, puede que desee suprimir algunos de los conflictos notificados durante la validación. Por ejemplo, es posible que desee suprimir errores de los que ya se ha ocupado o que no son pertinentes para su escenario concreto. Cuando se suprime un error, conviene registrar un elemento de trabajo en Team Foundation. Para realizar esta tarea, consulte Validación de código con diagramas de dependencias.

Incluir la validación de capas en el proceso de compilación

Para asegurarse de que los futuros cambios que se hagan en el código cumplen los requisitos de los diagramas de dependencias, incluya la validación de capas en el proceso de compilación estándar de la solución. Cuando otros miembros del equipo compilen la solución, cualquier diferencia entre las dependencias del código y el diagrama de dependencias se notificará como un error de compilación. Para más información sobre cómo incluir la validación de capas en el proceso de compilación, vea Validación de código con diagramas de dependencias.