Partager via


Visualiser du code en générant des diagrammes de séquence

Dans Visual Studio Ultimate, vous pouvez générer un diagramme de séquence pour vous aider à visualiser et à comprendre comment le code implémente une méthode particulière.Un diagramme de séquence décrit une interaction entre des objets comme 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.

[!REMARQUE]

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.

Dans cette rubrique

  • Génération d'un diagramme de séquence à partir du code source

  • Exploration du code sur les diagrammes de séquence

  • Modification du diagramme pour proposer des modifications de conception

  • Navigation à partir du diagramme

  • Liaison des éléments d'interaction aux éléments de travail

  • Relations aux autres diagrammes

  • Résolution des problèmes liés aux diagrammes de séquence

Génération d'un diagramme de séquence à partir du code source

Pour générer un diagramme de séquence à partir du code

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

  2. Ouvrez le menu contextuel n'importe où dans la définition de méthode, puis choisissez Générer un diagramme de séquence.

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

  3. Dans la boîte de dialogue Générer un diagramme de séquence, 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.

    [!REMARQUE]

    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 l' Diagrammes de séquence UML : référence.

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

    Pour voir

    Choose

    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. Lorsque vous avez terminé, choisissez OK.

    Visual Studio génère un diagramme de séquence et l'ajoute au projet correspondant.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.

    [!REMARQUE]

    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.

Exploration du code sur 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 pour un message qui n'a aucune ligne de vie cible, puis choisissez Développer sortant.

Développer un message dans un nouveau diagramme

Ouvrez le menu contextuel pour 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 grouper, ouvrez le menu contextuel pour la sélection, puis 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 pour lui puis choisissez Développer.

Supprimer des éléments

Ouvrez le menu contextuel pour la forme puis choisissez Delete.

Améliorer la disposition

Ouvrez le menu contextuel pour une partie vide du diagramme, 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 pour un élément puis sélectionnez 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 tapez 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 boîte à outils, choisissez Commentaire, puis sur le diagramme, cliquez près de l'élément.

  2. Dans boîte à outils, choisissez Lien de commentaire, puis sur le diagramme, choisissez le commentaire, puis choisissez 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

    Maintenez enfoncée la touche CTRL pendant que vous cliquez sur chaque ligne de vie.

    RemarqueRemarque
    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 boîte à outils, puis choisissez le diagramme.

Ajouter un message

Procédure de création de messages
  1. Dans 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 derrière la ligne de vie source ou devant lui, respectivement.

  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.

RemarqueRemarque
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 pour votre sélection, pointez sur Entourer de, puis sélectionnez 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 pour 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 pour la surface de diagramme de séquence, puis choisissez Propriétés.

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

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 pour la ligne de vie ou un message, puis choisissez Atteindre la définition.

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

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

Pour plus d'informations, consultez Visualiser des dépendances de code sur les graphiques de dépendance.

Liaison d'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, vérifiez que vous êtes 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 éléments de travail à des lignes de vie, des messages, ou à d'autres éléments

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

    Un élément de travail s'ouvre afin que vous puissiez les effectuer.

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

  1. Ouvrez le menu contextuel pour un ou plusieurs éléments, puis choisissez Lien vers l'élément 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 pour 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 pour un élément, puis choisissez Supprimer les éléments de travail.

  2. Dans la boîte de dialogue Supprimer les liens vers les éléments de travail , choisissez l'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.

Indications pour l'utilisation de 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.

Ee317485.collapse_all(fr-fr,VS.110).gifExploration du 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 Visualiser des dépendances de code sur les graphiques de dépendance.

Ee317485.collapse_all(fr-fr,VS.110).gifInterprétation du 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.

Ee317485.collapse_all(fr-fr,VS.110).gifConcentration 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.

Ee317485.collapse_all(fr-fr,VS.110).gifMise à jour de 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.

Résolution des problèmes liés aux 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

Ré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

Visualisation et description du code

Visualiser des dépendances de code sur les graphiques de dépendance

Créer des diagrammes de couche à partir du code