Dialogue Vous pouvez utiliser des diagrammes de couche pour concevoir l'architecture de votre application et vérifier si ...

Dialogue
Vous pouvez utiliser des diagrammes de couche pour concevoir l'architecture de votre application et vérifier si votre code est conforme à la conception. Vous pouvez suivre le travail associé à vos modèles en liant les éléments de travail Team Foundation Server à des éléments de modèle. Ceci permet d'obtenir une traçabilité entre les modèles, l'environnement IDE et le code, que vous conceviez une nouvelle solution ou que vous mettiez à jour une solution existante. 

Commençons par étudier l'architecture d'une application en examinant son diagramme de couche. 

L'architecte de l'équipe a suggéré de refactoriser une partie de cette application afin qu'elle soit conforme à la conception sur le diagramme de couche. Cette tâche figure dans notre journal des travaux en souffrance et est liée au diagramme de couche.



Action
Dans Team Explorer, sous Mon travail, double-cliquez sur l'élément de travail Tâche pour l'ouvrir. 

Dans l'élément de travail, cliquez sur Autres liens.

Sous Lien de modèle, double-cliquez sur « model link » pour ouvrir Petshop.layerdiagram dans le projet PetShopModels.

Dialogue
Un diagramme de couche affiche les dépendances autorisées entre les espaces de noms qui sont mappées aux couches. Les diagrammes de couche sont très semblables à un dessin sur un tableau blanc. Ils utilisent des formes et des relations entre ces formes. En utilisant des diagrammes de couche dans votre solution, vous pouvez non seulement décrire l'architecture souhaitée, mais également valider votre code par rapport à un diagramme de couche afin de détecter la présence de dépendances non valides. En intégrant cette étape à votre processus d'archivage et de génération, vous pouvez détecter plus facilement les modifications apportées à votre code qui entrent en conflit avec la conception.



Action
Dans le menu Architecture, sélectionnez Windows, puis Explorateur de couches.

Dans le diagramme de couche, cliquez sur la couche Business. Examinez les artéfacts dans l'Explorateur de couches.

Dans le diagramme de couche, cliquez avec le bouton droit sur la couche Business. Sélectionnez Valider l'architecture. (Cette opération peut prendre du temps.)

Dans la fenêtre Liste d'erreurs, examinez les erreurs (marquées d'un X rouge). Double-cliquez sur la première erreur pour afficher le code à l'origine de l'erreur.

Dialogue
Nous avons identifié des dépendances dans le code qui sont en conflit avec la conception. La méthode Insert de la classe Order effectue des appels non valides aux méthodes de deux autres classes. Dans le diagramme de couche, la méthode Insert est mappée à la couche Business, qui ne doit pas communiquer directement avec les couches des deux autres classes. Au lieu de cela, la couche Business doit communiquer avec la couche PaymentGateway.

La validation de la couche nous a signalé les erreurs affectant le code. Par conséquent, une fois les conflits résolus, la revalidation du diagramme doit confirmer que nous avons agi comme il le fallait.



Action
Dans le diagramme de couche, cliquez sur la couche PaymentGateway.

Dans la fenêtre Explorateur de couches, vous pouvez voir l'espace de noms PaymentGateway.

Dans l'Explorateur de solutions, développez le projet PaymentGateway et le type PaymentProcessor, puis examinez les méthodes member.

Ouvrez le fichier PaymentProcessor.cs pour voir les définitions de la méthode member.

Dialogue
En observant le code mappé à la couche PaymentGateway, nous pouvons déléguer certaines fonctionnalités de la méthode Insert à la méthode ProcessPayment. Pour cela, créons des diagrammes de séquence afin de comparer visuellement les structures de niveau supérieur et les séquences d'appel de ces deux méthodes.



Action
Double-cliquez sur la première erreur pour afficher le code correspondant. La définition de la méthode Insert s'affiche.

Cliquez avec le bouton droit n'importe où dans la définition de la méthode Insert. Sélectionnez Générer un diagramme de séquence. Conservez toutes les options proposées. Cliquez sur OK.

Le diagramme de séquence indique que la méthode Insert appelle les méthodes des classes CreditCardService et OnlinePaymentService.

Dans le fichier PaymentProcessor.cs, cliquez avec le bouton droit dans la définition de la méthode ProcessPayment. Sélectionnez Générer un diagramme de séquence. Conservez toutes les options proposées et cliquez sur OK.

Passez d'un diagramme de séquence à l'autre pour comparer les classes ciblées par la méthode Insert et la méthode ProcessPayment et celles qui ne le sont pas. Observez les similitudes et les différences.

Dialogue
Nous pouvons voir que ces deux méthodes sont très similaires, à quelques différences près. Refactorisons la méthode Insert pour appeler ProcessPayment. Ensuite, exécutons de nouveau la validation pour nous assurer que nos modifications ont résolu les conflits de dépendance. 



Action
Dans la définition de la méthode Insert, remplacez le code entre les instructions suivantes :

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

et:

CalculatePaymentInfo(order);

par le code suivant :

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


Validez l'architecture.




Dialogue

Dans cette vidéo, nous vous avons montré en quoi les diagrammes de couche peuvent vous aider à décrire l'architecture souhaitée d'une application et comment utiliser la validation de couche pour repérer à quel niveau votre code entre en conflit avec la conception. Nous vous avons également expliqué comment utiliser les diagrammes de séquence pour visualiser le flux de la méthode entre différentes classes. Pour apprendre à utiliser des modèles UML afin de décrire votre architecture, visionnez la vidéo correspondante.