Diálogo Use diagramas de capas para diseñar la arquitectura de una aplicación y comprobar si el código está alineado con ...

Diálogo
Use diagramas de capas para diseñar la arquitectura de una aplicación y comprobar si el código está alineado con el diseño. Puede mantener un seguimiento del trabajo asociado con los modelos vinculando los elementos de trabajo de Team Foundation Server con elementos de modelo. Esto proporciona rastreabilidad entre los modelos, el IDE y el código, tanto si está diseñando una solución nueva como si está actualizando una solución existente. 

Comencemos viendo la arquitectura de una aplicación revisando su diagrama de capas. 

El arquitecto del equipo ha sugerido refactorizar parte de esta aplicación para alinearla con el diseño de su diagrama de capas. Esta tarea está en nuestro trabajo pendiente y está vinculada con el diagrama de capas.



Acción
En Team Explorer, en Mi trabajo, haga doble clic en el elemento de trabajo de la tarea para abrirlo. 

En el elemento de trabajo, haga clic en Otros vínculos.

En Vínculo de modelo, haga doble clic en el "vínculo de modelo", que abre el diagrama Petshop.layerdiagram en el proyecto PetShopModels.

Diálogo
Un diagrama de capas muestra las dependencias permitidas entre espacios de nombres, que están asignadas a capas. Los diagramas de capas son muy parecidos a dibujar en una pizarra en blanco. Tienen formas y relaciones entre estas formas. Tener diagramas de capas en la solución permite hacer más que simplemente describir la arquitectura deseada. Puede validar el código con un diagrama de capas para detectar si hay dependencias no válidas. Al incluir este paso como parte del proceso de protección y compilación, puede detectar con más facilidad los cambios del código que están en conflicto con el diseño.



Acción
En el menú Arquitectura, elija Ventanas, Explorador de capas.

En el diagrama de capas, haga clic en la capa Business. Vea los artefactos en el Explorador de capas.

En el diagrama de capas, haga clic con el botón secundario en la capa Business. Elija Validar arquitectura. Esta operación puede tardar unos minutos.

En la ventana Lista de errores, mire los errores (marcados con una X roja). Haga doble clic en el primer error para ver el código que produjo el error.

Diálogo
Hemos encontrado dependencias en el código que están en conflicto con el diseño. El método Insert de la clase Order realiza llamadas no válidas a métodos de otras dos clases. En el diagrama de capas, el método Insert está asignado a la capa Business, que no debe comunicarse directamente con las capas de las otras dos clases. La capa Business debe comunicarse con la capa PaymentGateway.

La validación de capas nos ha mostrado lo que está mal en el código. Por tanto, cuando corrijamos estos conflictos, la revalidación del diagrama debe confirmar que hemos hecho lo correcto.



Acción
En el diagrama de capas, haga clic en la capa PaymentGateway.

En la ventana Explorador de capas, vea el espacio de nombres PaymentGatway.

En el Explorador de soluciones, expanda el proyecto PaymentGateway, el tipo PaymentProcessor y revise los métodos miembro.

Abra el archivo PaymentProcessor.cs para ver las definiciones de los métodos miembro.

Diálogo
Viendo el código que está asignado a la capa PaymentGateway, podemos delegar parte de la funcionalidad del método Insert en el método ProcessPayment. Vamos a crear diagramas de secuencia para poder comparar visualmente las estructuras de alto nivel y llamar secuencias para estos dos métodos.



Acción
Haga doble clic en el primer error para ver el código. Vemos la definición del método Insert.

Haga clic con el botón secundario en cualquier parte dentro de la definición del método Insert. Elija Generar diagrama de secuencia. Mantenga todas las opciones propuestas. Haga clic en Aceptar.

El diagrama de secuencia muestra que el método Insert llama a métodos de las clases CreditCardService y OnlinePaymentService.

En el archivo PaymentProcessor.cs, haga clic con el botón secundario dentro de la definición del método ProcessPayment. Elija Generar diagrama de secuencia. Mantenga todas las opciones propuestas. Haga clic en Aceptar.

Cambie de un diagrama de secuencia a otro y compare qué clases son destino de los métodos Insert y ProcessPayment, y qué clases no lo son. Muestre las similitudes y las diferencias.

Diálogo
Vemos que estos dos métodos son muy similares con algunas diferencias. Vamos a refactorizar el método Insert para llamar a ProcessPayment. Después, vamos a ejecutar de nuevo una validación para asegurarnos de que nuestros cambios han resuelto los conflictos de dependencias. 



Acción
En la definición del método Insert, reemplace el código situado entre las siguientes instrucciones:

if (order.CreditCard.CardType == "CreditCardProviderA" || order.CreditCard.CardType == "CreditCardProviderB") 

y:

CalculatePaymentInfo(order);

por el código siguiente:

PaymentGateway.PaymentProcessor processor = new PaymentGateway.PaymentProcessor();
if (!processor.ProcessPayment(order))
{
          return OrderStatus.Failed;
}


Valide la arquitectura.




Diálogo

En este vídeo, hemos mostrado cómo ayudan los diagramas de capas a describir la arquitectura deseada para una aplicación y cómo puede usarse la validación de capas para ver dónde están los conflictos entre el código y el diseño. También hemos mostrado cómo se pueden usar los diagramas de secuencia para ver el flujo de métodos entre diferentes clases. Para obtener información sobre el uso de modelos UML para describir la arquitectura, vea el vídeo relacionado.