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
Dans Visual Studio, ouvrez le fichier de code qui contient la définition de méthode.
Ouvrez le menu contextuel n'importe où dans la définition de méthode, puis choisissez Générer un diagramme de séquence.
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.
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.
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.
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 :
|
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 :
|
Déplacer et trier à nouveau des messages |
Faites glisser un message vers le haut ou vers le bas sur le diagramme.
|
Ajouter une ligne de vie |
Choisissez Ligne de vie dans boîte à outils, puis choisissez le diagramme. |
Ajouter un 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.
Remarque
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é |
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 |
|
Navigation à 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 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 |
|
Lier des lignes de vie, des messages, ou d'autres éléments aux é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 |
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.
Exploration 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.
Interpré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.
Concentration 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.
Mise à 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 :
|
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