Partager via


Visualiser du code dans des diagrammes de séquence

Pour visualiser la façon dont le code implémente une méthode particulière, créez un diagramme de séquence à partir d'une méthode dans Visual Studio Ultimate. Le diagramme de séquence montre l'interaction entre des objets sous la forme d'une série de lignes de vie et de messages. Les lignes de vie représentent des instances d'objets, et les messages représentent des appels de méthode entre ces objets. Vous pouvez générer des diagrammes de séquence à partir de code Visual C# .NET ou Visual Basic .NET, mais pas à partir de projets qui partagent du code entre plusieurs applications.

Un diagramme de séquence généré affiche des éléments semblables à ceux figurant sur un diagramme de séquence UML. Un diagramme de séquence généré à partir de code de programme existe indépendamment d'un modèle UML et peut être ajouté à tout projet .NET. Par contre, un diagramme de séquence UML dessiné à la main fait toujours partie du modèle dans lequel il a été créé. Pour plus d'informations, consultez Diagrammes de séquence UML : référence.

  • Générer un diagramme de séquence à partir du code source

  • Explorer le code dans les diagrammes de séquence

  • Modifier le diagramme pour proposer des modifications de conception

  • Atteindre le code à partir du diagramme

  • Lier un diagramme de séquence à des éléments de travail

  • Relations avec les autres diagrammes

  • Dépanner les diagrammes de séquence

Générer un diagramme de séquence à partir du code source

  1. Dans Visual Studio Ultimate, ouvrez le fichier de code qui contient la définition de la méthode.

  2. Accédez à la définition de la méthode, cliquez avec le bouton droit à l'intérieur de l'éditeur, puis choisissez Générer un diagramme de séquence.

  3. Dans la zone Profondeur des appels maximale, spécifiez le niveau maximal des appels que vous souhaitez voir. Par exemple, si vous souhaitez consulter uniquement le premier niveau d'appels, spécifiez un niveau de profondeur d'appel maximal de 1.

    Boîte de dialogue de génération de séquence

    Notes

    Le diagramme de séquence affichera le deuxième niveau d'appels en tant que messages n'ayant aucune ligne de vie cible, qui sont appelés messages perdus.Après avoir généré le diagramme, vous pouvez développer des messages perdus spécifiques.Pour plus d'informations sur les messages perdus, consultez Diagrammes de séquence UML : référence.

  4. Sous Inclure les appels dans, choisissez une portée dans le tableau suivant :

    Pour voir

    Choisissez

    Appels aux éléments dans le projet immédiat

    Projet actif

    Appels aux éléments dans la solution

    Solution actuelle (valeur par défaut)

    Appels aux éléments à l'intérieur et à l'extérieur de la solution

    Solution et références externes

    Par exemple, vous pouvez démarrer avec un diagramme de séquence simple en examinant uniquement les appels de méthode aux éléments dans le projet immédiat. Vous pouvez développer la portée du diagramme en générant un nouveau diagramme qui montre des appels aux éléments dans la solution. Si vous souhaitez consulter des appels aux éléments qui ne sont pas dans la solution, vous devez générer un diagramme qui inclut des références externes.

  5. Sous Exclure les appels de, vous pouvez simplifier davantage le diagramme en omettant les appels aux éléments suivants :

    Pour omettre des appels à

    Sélectionner

    Propriétés et événements

    Propriétés et événements (valeur par défaut)

    Espace de noms System

    Espace de noms système (valeur par défaut)

    Espaces de noms spécifiques

    Autres espaces de noms, puis taper les espaces de noms dans la zone en utilisant des virgules (,) pour les séparer. N'utilisez pas les caractères génériques (*) car ils ne sont pas pris en charge.

    Pour inclure des appels à ces éléments, désactivez leurs cases à cocher correspondantes.

  6. Cochez la case si vous souhaitez ajouter le diagramme au projet actuel.

  7. Lorsque vous avez terminé, choisissez OK pour générer le diagramme de séquence.

    Pour plus d'informations sur les problèmes liés à la génération de diagrammes de séquence, consultez Résolution des problèmes liés aux diagrammes de séquence.

    Notes

    Les déclarations de tableau n'apparaissent pas dans les diagrammes de séquence générés.

Pour identifier et communiquer les modifications que vous souhaitez effectuer sans affecter le code, vous pouvez explorer et modifier un diagramme de séquence généré. Par exemple, vous pouvez ajouter de nouvelles lignes de vie et utilisations d'interaction ainsi que de nouveaux messages et fragments. Pour créer et suivre des tâches dans le cadre d'un travail que vous souhaitez effectuer sur le code correspondant, créez ou liez des éléments de travail à des éléments du diagramme. Pour plus d'informations, consultez Lier des éléments de modèle et des éléments de travail.

Important

Une fois que le diagramme sera généré, aucune des modifications que vous lui apporterez n'apparaîtra dans le code. De plus, aucune des modifications que vous apporterez au code ne s'affichera dans le diagramme.Pour que ces modifications soient visibles, vous devez générer un nouveau diagramme de séquence.Vous pouvez générer un nouveau diagramme de séquence à partir de la même méthode autant de fois que vous le souhaitez.

Explorer le code dans les diagrammes de séquence

Un diagramme de séquence peut vous aider à explorer le code et à le présenter aux autres. Pour accomplir le diagramme le plus utile à ces fins, expérimentez des portées différentes lorsque vous générez le diagramme. Vous pouvez également modifier le diagramme après l'avoir généré. Par exemple, vous pouvez supprimer des messages qui n'ont pas d'intérêt pour présenter et discuter la conception.

Vous pouvez apporter les modifications suivantes au diagramme de séquence.

Pour

Exécuter ces étapes

Afficher le niveau d'appel suivant

Ouvrez le menu contextuel d'un message n'ayant aucune ligne de vie cible, puis choisissez Développer sortant.

Développer un message dans un nouveau diagramme

Ouvrez le menu contextuel d'un message, puis choisissez Générer un diagramme de séquence.

Le nouveau diagramme est ajouté au projet actuel.

Réduire un groupe de messages en une ligne de vie

Sélectionnez les lignes de vie que vous souhaitez regrouper, ouvrez le menu contextuel de la sélection, puis choisissez Réduire.

Vous pouvez renommer un groupe, mais le nom sera perdu lorsque vous le développerez.

Pour développer le groupe, ouvrez le menu contextuel du groupe, puis choisissez Développer.

Supprimer des éléments

Ouvrez le menu contextuel de la forme, puis choisissez Supprimer.

Améliorer la disposition

Ouvrez le menu contextuel d'une zone vide du schéma, puis choisissez Réorganiser la disposition.

Vous pouvez également annuler cette commande.

Mettre en surbrillance les éléments sélectionnés

Ouvrez le menu contextuel d'un élément, puis choisissez Propriétés. Dans la fenêtre Propriétés, définissez le champ Couleur.

Annoter le diagramme

Choisissez l'outil Commentaire, cliquez dans le diagramme, puis saisissez une remarque dans le commentaire. Utilisez l'outil Lien de commentaire pour connecter le commentaire à un ou plusieurs points sur les lignes de vie ou les fragments.

Modification du diagramme pour proposer des modifications de conception

Vous pouvez modifier le diagramme, en ajoutant et en supprimant des éléments pour vous aider à considérer d'autres conceptions. Vous pouvez également copier des parties du diagramme vers un diagramme de séquence UML que vous avez créé dans un projet de modélisation UML. Cela vous permet d'associer les lignes de vie aux types, composants et acteurs du modèle UML.

Le tableau suivant résume des modifications qui sont utiles pour la description de propositions de conception. Pour plus d'informations, consultez Diagrammes de séquence UML : indications.

Pour

Exécuter ces étapes

Mettre en surbrillance des lignes de vie, des messages et d'autres éléments

Modifiez la propriété Couleur de l'élément.

ou

Liez un Commentaire à l'élément :

  1. Dans la Boîte à outils, choisissez Commentaire, puis, sur le diagramme, cliquez près de l'élément.

  2. Dans la Boîte à outils, choisissez Lien de commentaire, puis, sur le diagramme, choisissez le commentaire, puis l'élément.

Déplacer les lignes de vie

Faites glisser une ligne de vie vers une zone différente du diagramme.

Pour déplacer un groupe de lignes de vie ayant perdu ou trouvé des messages, procédez aux étapes suivantes pour sélectionner les lignes de vie avant de les déplacer :

  • Dessinez un rectangle autour des lignes de vie.

    ou

    Appuyez sur la touche Ctrl et maintenez-la enfoncée lorsque vous choisissez chaque ligne de vie.

    Notes

    Si vous utilisez Sélectionner tout ou la combinaison de touches CTRL+A pour sélectionner toutes les lignes de vie, puis les déplacer, les messages trouvés ou perdus associés à ces lignes de vie ne seront quant à eux pas déplacés.Si ce scénario se produit, vous pouvez déplacer ces messages séparément.

Déplacer et trier à nouveau des messages

Faites glisser un message vers le haut ou vers le bas sur le diagramme.

  1. Sélectionnez un message, puis :

  2. Pour régler la position du message, utilisez les touches de direction HAUT et BAS.

  3. Pour modifier la séquence de messages, utilisez CTRL+HAUT et CTRL+BAS.

Ajouter une ligne de vie

Choisissez Ligne de vie dans la Boîte à outils, puis choisissez le diagramme.

Ajouter un message

Procédure de création de messages
  1. Dans la Boîte à outils, choisissez un message Synchrone ou Asynchrone.

    Pour ajouter un message trouvé ou un message perdu, utilisez un message Asynchrone. Un message trouvé vient d'une source d'événement inconnue et un message perdu est diffusé à un destinataire inconnu.

  2. Sur le diagramme, choisissez une ligne de vie source.

  3. Choisissez une ligne de vie cible.

    ou

    Pour créer un message trouvé ou perdu, choisissez une zone vide sur le diagramme situé respectivement derrière ou devant la ligne de vie source.

  4. Tapez un nouveau nom pour le message.

Copier les lignes de vie et les messages vers d'autres diagrammes ou à partir d'eux

Copiez-collez les lignes de vie.

Les messages entre eux seront également copiés automatiquement.

Notes

Lorsque vous copiez des lignes de vie à partir d'un diagramme de séquence UML dans un projet de modélisation vers un diagramme de séquence généré, seuls les en-têtes de ligne de vie peuvent s'afficher, ou vous devrez peut-être ajuster leurs couleurs.Pour résoudre ce problème, sélectionnez les lignes de vie collées et définissez leurs propriétés Couleur.

Joindre des messages dans un fragment combiné

  1. Sélectionnez un ou plusieurs messages.

  2. Ouvrez le menu contextuel de votre sélection, pointez sur Entourer de, puis choisissez un type de fragment combiné.

Utilisez des fragments combinés pour représenter d'autres séquences, boucles et autres compositions de messages.

Déplacer un message vers un nouveau diagramme

Ouvrez le menu contextuel d'un message, puis choisissez Déplacer vers le diagramme.

Un nouveau diagramme est créé, qui contient le message et ses messages auxiliaires. Sur le diagramme d'origine, le message est remplacé par une Utilisation d'interaction.

Copier le diagramme

Copiez le diagramme dans l'Explorateur de solutions ou copiez les fichiers dans l'Explorateur Windows. Il y a deux fichiers associés à chaque diagramme.

Un diagramme de séquence généré peut être modifié à l'aide de toute instance de Visual Studio Ultimate et peut être lu au moyen de Visual Studio Ultimate ou de Visual Studio Premium.

Ne pas mettre en surbrillance certaines modifications manuelles, telles que les ajouts et modifications de noms

  1. Ouvrez le menu contextuel de la surface de diagramme de séquence, puis choisissez Propriétés.

  2. Affectez à Afficher les modifications manuelles la valeur False.

Atteindre le code à partir du diagramme

Pour

Exécuter ces étapes

Naviguer d'une ligne de vie ou d'un message jusqu'à la définition de la classe ou méthode, respectivement

Ouvrez le menu contextuel de la ligne de vie ou du message, puis choisissez Atteindre la définition.

Rechercher la classe ou la méthode dans le navigateur de l'architecture

Ouvrez le menu contextuel d'une ligne de vie ou d'un message, puis choisissez Afficher dans le Navigateur de l'architecture.

Pour plus d'informations, consultez Mapper les dépendances dans votre code dans des graphiques de dépendance.

Lier un diagramme de séquence à des éléments de travail

Afin d'aider à la planification du travail d'implémentation d'une modification, vous pouvez lier des éléments de tout genre sur un diagramme de séquence aux éléments de travail dans Team Foundation Server. Avant de commencer, assurez-vous d'être connecté à Team Foundation Server. Pour plus d'informations, consultez Lier des éléments de modèle et des éléments de travail.

Pour

Exécuter ces étapes

Créer et lier des nouveaux éléments de travail à des lignes de vie, à des messages ou à d'autres éléments

  • Ouvrez le menu contextuel d'un ou plusieurs éléments, choisissez Créer un élément de travail, puis choisissez le type d'élément de travail que vous souhaitez créer.

    Un nouvel élément de travail s'ouvre afin que vous puissiez le remplir.

Lier des lignes de vie, des messages ou d'autres éléments aux éléments de travail

  1. Ouvrez le menu contextuel d'un ou plusieurs éléments, puis choisissez Lier aux éléments de travail.

  2. Dans la boîte de dialogue Lier aux éléments de travail, exécutez une requête pour rechercher un élément de travail ou entrez son ID directement. Vous pouvez sélectionner un nombre quelconque d'éléments de travail.

Vous pouvez répéter ultérieurement cette commande pour ajouter davantage de liens d'élément de travail au même élément de modèle.

Afficher les éléments de travail liés

Ouvrez le menu contextuel d'un ou plusieurs éléments, puis choisissez Afficher les éléments de travail.

Supprimer les liens vers les éléments de travail

  1. Ouvrez le menu contextuel d'un élément, puis choisissez Supprimer les éléments de travail.

  2. Dans la boîte de dialogue Supprimer les liens aux éléments de travail, choisissez les liens d'éléments de travail que vous souhaitez supprimer.

Les liens entre l'élément de modèle et les éléments de travail choisis sont supprimés. Les éléments de travail et les éléments de modèle ne sont pas supprimés.

Instructions relatives à l'utilisation des diagrammes de séquence générés

Les indications suivantes peuvent être utiles lorsque vous explorez du code avec des diagrammes de séquence générés.

Explorer le code

Générez des diagrammes de dépendance afin d'obtenir une image globale des dépendances et des regroupements majeurs dans un large corps de code. Générez ensuite des diagrammes de séquence pour vous concentrer sur les parties individuelles de la conception. Pour plus d'informations, consultez Mapper les dépendances dans votre code dans des graphiques de dépendance.

Interpréter le diagramme

L'algorithme qui crée le diagramme exécute de manière symbolique votre code. Quelques situations ne sont pas couvertes par cette technique. En particulier, ces situations sont les suivantes :

  • Deux ou plusieurs lignes de vie peuvent s'afficher dans le diagramme lorsque votre code en cours d'exécution ne traite qu'une instance. En général, une ligne de vie cible séparée est générée pour chaque message.

  • Le type d'une ligne de vie est le type déclaré dans le code du programme, même si votre code utilise toujours un sous-type.

Se concentrer sur un aspect de la conception

  • Choisissez un aspect de la conception sur lequel vous souhaitez vous concentrer. Vous pouvez générer des diagrammes différents pour vous concentrer sur différents aspects et effectuer des copies des fichiers de diagramme à toute étape de votre travail.

  • Pour obtenir un diagramme utile qui expose clairement un aspect de la conception, vous devrez peut-être essayer les filtres d'espace de noms et la génération.

  • Supprimez des messages qui ne sont pas pertinents à l'aspect de focus et développez des messages pertinents pour afficher davantage de détails.

  • Utilisez la commande Réduire pour grouper des lignes de vie qui représentent un groupe d'objets collaborant, à moins que leurs interactions internes soient intéressantes pour l'aspect sur lequel vous vous concentrez.

Mettre à jour la conception

  • Vous pouvez travailler de manière collaborative sur un diagramme à l'aide du contrôle de version. Nous vous recommandons de verrouiller un diagramme lorsque vous le modifiez, afin qu'une seule personne à la fois puisse le modifier.

  • À l'aide d'un diagramme de séquence généré, vous pouvez souvent identifier des fonctionnalités du code existant qui le rendent difficile à modifier ou à adapter. Par exemple, vous pouvez remarquer qu'une ligne de vie envoie tous les messages, mais que d'autres se contentent de répondre aux messages, sans en envoyer beaucoup en propre. Considérez si le travail qui est fait par cet objet peut être divisé plus efficacement entre les autres objets. Chaque classe d'objet doit avoir une tâche unique clairement définie. En général, cette stratégie simplifie l'identification des parties du programme qui doivent être modifiées lorsque les besoins des utilisateurs évoluent, ou la réorganisation des parties dans une variante différente de l'application.

  • Lorsqu'un diagramme se concentre sur un aspect spécifique de la conception, faites-en des copies et modifiez-les pour créer des propositions alternatives de modifications.

  • Vous pouvez copier des éléments de diagramme de séquence généré dans un diagramme de séquence UML. Vous devez d'abord créer le diagramme de séquence UML à l'intérieur d'un projet de modélisation UML. À ce moment-là, vous pouvez modéliser des vues différentes de la conception mise à jour, et vous pouvez lier les lignes de vie aux composants ou aux classes dans le modèle. Vous pouvez également étendre l'interaction pour inclure des acteurs externes.

Dépanner les diagrammes de séquence

Le tableau suivant décrit les problèmes qui peuvent survenir lors de la génération de diagrammes de séquence, et fournit des résolutions possibles :

Problème

Solution

Impossible de générer un diagramme de séquence.

La génération d'un diagramme de séquence peut ne pas être possible si l'espace de noms System est exclu, et si le code contient un appel à une méthode COM qui accepte les paramètres ref ou out, et passe un paramètre à l'aide du mot clé new. Pour éviter ce problème, modifiez le code, ou bien, lorsque vous générez le diagramme, incluez l'espace de noms System.

Un diagramme de séquence vide est généré après l'apparition du message d'erreur suivant :

« La référence d'objet n'a pas pour valeur une instance d'un objet. »

Ce problème se produit lorsqu'un diagramme de séquence est généré à partir de l'implémentation explicite d'une méthode d'interface et que le diagramme n'est pas ajouté automatiquement au projet source. Une implémentation explicite fait précéder le nom de la méthode du nom de l'interface et d'un point (.).

Par exemple, ce problème se produit lorsque vous générez un diagramme de séquence à partir de la signature ci-dessous, et n'ajoutez pas automatiquement le diagramme de séquence au projet :

void ILinkedWorkItemExtension.OnWorkItemCreated( ) {}

Si possible, n'incluez pas le nom d'interface et le point (.).

ou

Dans la boîte de dialogue de génération du diagramme de séquence, assurez-vous d'ajouter automatiquement le diagramme de séquence au projet.

La génération du diagramme de séquence est très longue.

ou

Le diagramme de séquence se bloque lors de sa réouverture.

En fonction de la configuration de votre ordinateur, le diagramme de séquence peut être trop volumineux pour être généré rapidement et ainsi provoquer une erreur de mémoire insuffisante dans Visual Studio, entraînant son blocage lors de la fermeture puis de la réouverture du diagramme. Par exemple, un diagramme de séquence contenant 390 lignes de vie et 19 000 messages aura pour résultat un fichier de diagramme dépassant 85 Mo.

Réduisez la portée du diagramme en diminuant la profondeur des appels, en éliminant par filtrage les espaces de noms inutiles, en supprimant des propriétés et des événements, et ainsi de suite.

Voir aussi

Référence

Diagrammes de séquence UML : référence

Concepts

Visualiser du code

Mapper les dépendances dans votre code dans des graphiques de dépendance

Créer des diagrammes de couche à partir du code