Visualizzare il codice generando diagrammi di sequenza

In Visual Studio Ultimate è possibile generare un diagramma sequenza per visualizzare e capire come il codice implementa un particolare metodo.Un diagramma di sequenza descrive un'interazione tra oggetti come una serie di linee di vita e messaggi.Le linee di vita rappresentano le istanze degli oggetti e i messaggi rappresentano chiamate al metodo tra quegli oggetti.È possibile generare diagrammi sequenza dal codice Visual C# .NET o Visual Basic.

[!NOTA]

Un diagramma di sequenza generato mostra elementi simili a quelli su un diagramma di sequenza UML.Un diagramma sequenza generato dal codice esiste indipendentemente da un modello UML e può essere aggiunto a qualsiasi progetto .NET.Al contrario, un diagramma sequenza UML creato manualmente appartiene sempre al modello in cui lo si è creato.Per ulteriori informazioni, vedere Diagrammi di sequenza UML: riferimenti.

In questo argomento

  • Generazione di un diagramma di sequenza dal codice sorgente

  • Esplorazione del codice sui diagrammi di sequenza

  • Modifica del diagramma per proporre modifiche di progettazione

  • Spostamento dal diagramma

  • Collegamento a elementi dell'interazione a elementi di lavoro

  • Relazioni con altri diagrammi

  • Risoluzione dei problemi relativi ai diagrammi sequenza

Generazione di un diagramma di sequenza dal codice sorgente

Per generare un diagramma di sequenza dal codice

  1. In Visual Studio, aprire il file di codice contenente la definizione del metodo.

  2. Aprire il menu di scelta rapida in qualsiasi punto della definizione del metodo e quindi scegliere Genera diagramma sequenza.

    Finestra di dialogo Genera diagramma sequenza

  3. Nella casella Profondità massima delle chiamate della finestra di dialogo Genera diagramma sequenza specificare il livello massimo di chiamate che si desidera vedere.

    Ad esempio, se si desidera vedere solo il primo livello delle chiamate, specificare un livello di profondità di chiamata massimo di 1.

    [!NOTA]

    Il diagramma di sequenza mostrerà il secondo livello delle chiamate come messaggi che non dispongono di una linea di vita di destinazione che vengono chiamati messaggi persi.Dopo avere generato il diagramma, è possibile espandere specifici messaggi persi.Per ulteriori informazioni sulle messaggi persi, vedere Diagrammi di sequenza UML: riferimenti.

  4. Sotto Includi chiamate in, scegliere un ambito dalla tabella seguente:

    Per vedere

    Choose

    Chiamate a elementi nel progetto immediato

    Progetto corrente

    Chiamate a elementi nella soluzione

    Soluzione corrente (impostazione predefinita)

    Chiamate a elementi all'interno e all'esterno della soluzione

    Soluzione e riferimenti esterni

    Ad esempio, è possibile iniziare con un diagramma sequenza semplice esaminando solo le chiamate al metodo a elementi nel progetto immediato.È possibile espandere l'ambito del diagramma generandone uno nuovo che mostra le chiamate a elementi della soluzione.Per vedere le chiamate a elementi che non sono nella soluzione, è necessario generare un diagramma che include riferimenti esterni.

  5. Sotto Escludi chiamate, è possibile semplificare ulteriormente il diagramma omettendo le chiamate agli elementi seguenti:

    Per omettere le chiamate a

    Select

    Proprietà ed eventi

    Proprietà ed eventi (impostazione predefinita)

    Spazio dei nomi System

    Spazio dei nomi di sistema (predefinito)

    Spazi dei nomi specifici

    Altri spazi dei nomi, quindi digitare gli spazi dei nomi nella casella, utilizzando una virgola (,) per separarli.Non utilizzare caratteri jolly (*) in quanto non sono supportati.

    Per includere le chiamate a questi elementi, deselezionare le caselle di controllo corrispondenti.

  6. Al termine, scegliere OK.

    Visual Studio genera un diagramma di sequenza e l'aggiunge al progetto corrispondente.Per informazioni sui problemi relativi alla generazione dei diagrammi sequenza, vedere Risoluzione dei problemi relativi ai diagrammi sequenza.

    [!NOTA]

    Le dichiarazioni di matrice non sono visualizzate nei diagrammi sequenza generati.

Per identificare e comunicare le modifiche che è necessario apportare senza impatto sul codice, è possibile esplorare e modificare un diagramma sequenza generato.Ad esempio, è possibile aggiungere nuove linee di vita, messaggi, utilizzi dell'interazione e frammenti.Per creare e tenere traccia delle attività per il lavoro che si desidera eseguire sul codice corrispondente, è possibile creare o collegare elementi di lavoro agli elementi del diagramma.Per ulteriori informazioni, vedere Collegare elementi di modello ed elementi di lavoro.

Nota importanteImportante

Dopo avere generato il diagramma, qualsiasi modifica che si apporta al diagramma non verrà visualizzata nel codice e qualsiasi modifica che si apporta al codice non verrà visualizzata nel diagramma.Per visualizzare tali modifiche, è necessario generare un nuovo diagramma di sequenza.È possibile generare un nuovo diagramma di sequenza dallo stesso metodo tutte le volte che si desidera.

Esplorazione del codice sui diagrammi di sequenza

Un diagramma di sequenza consente di esplorare e presentare il codice.Per realizzare il diagramma più utile a tali scopi, sperimentare con ambiti diversi la generazione del diagramma.È inoltre possibile modificare il diagramma dopo averlo generato.Ad esempio, è possibile eliminare messaggi che non sono utili a presentare e discutere la progettazione.

È possibile apportare le seguenti modifiche al diagramma di sequenza.

Per

Eseguire questi passaggi

Mostrare il successivo livello di chiamata

Aprire il menu di scelta rapida per un messaggio che non dispone di una linea di vita di destinazione e quindi scegliere Espandi in uscita.

Espandere un messaggio in un nuovo diagramma

Aprire il menu di scelta rapida per un messaggio e quindi scegliere Genera diagramma sequenza.

Il nuovo diagramma viene aggiunto al progetto corrente.

Comprimere un gruppo di messaggi in una linea di vita.

Selezionare le linee di vita da raggruppare, aprire il menu di scelta rapida per la selezione e quindi scegliere Comprimi.

È possibile rinominare un gruppo, ma il nome verrà perso quando lo si espande.

Per espandere il gruppo, aprire il menu di scelta rapida di questo e quindi scegliere Espandi.

Eliminare elementi

Aprire il menu di scelta rapida per la forma quindi scegliere CANC.

Migliorare il layout

Aprire il menu di scelta rapida per un'area vuota del diagramma e scegliere Ridisponi layout.

È possibile annullare anche questo comando.

Evidenziare elementi selezionati

Aprire il menu di scelta rapida per un elemento e quindi scegliere Proprietà.Nella finestra Proprietà impostare il campo Colore.

Annotare il diagramma

Scegliere lo strumento Commento, fare clic nel diagramma, quindi digitare una nota nel commento.Utilizzare lo strumento Collegamento commento per connettere il commento a uno o più punti su linee di vita o frammenti.

Modifica del diagramma per proporre modifiche di progettazione

È possibile modificare il diagramma, aggiungendo ed eliminando elementi per considerare progettazioni alternative.È anche possibile copiare parti del diagramma in un diagramma di sequenza UML creato in un progetto di modello UML.In tal modo è possibile associare le linee di vita ai tipi, ai componenti e agli attori del modello UML.

Nella tabella seguente sono riepilogate le modifiche utili a descrivere proposte di progettazione.Per informazioni dettagliate, vedere Diagrammi di sequenza UML: linee guida.

Per

Eseguire questi passaggi

Evidenziare linee di vita, messaggi e altri elementi

Modificare la proprietà Colore dell'elemento.

In alternativa

Connettere un commento all'elemento:

  1. Nella Casella degli strumenti, scegliere Commento e quindi sul diagramma fare clic accanto all'elemento.

  2. Nella Casella degli strumenti, scegliere Collegamento commento, scegliere il commento, e poi scegliere l'elemento.

Spostare linee di vita

Trascinare una linea di vita in un'area diversa del diagramma.

Per spostare un gruppo di linee di vita contenenti messaggi trovati o persi, attenersi alla seguente procedura per selezionare le linee di vita prima di spostarle:

  • Disegnare un rettangolo intorno alle linee di vita.

    In alternativa

    Tenere premuto CTRL mentre si sceglie ciascuna linea di vita.

    NotaNota
    Se si utilizza Seleziona tutto o CTRL+A per selezionare tutte le linee di vita e quindi spostarle, i messaggi trovati o persi associati a tali linee di vita non verranno spostati.Se si verifica questo scenario, è possibile spostare questi messaggi separatamente.

Spostare e riordinare i messaggi

Trascinare un messaggio su o giù sul diagramma.

  1. Selezionare un messaggio e quindi:

  2. Per modificare la posizione del messaggio, utilizzare i tasti Freccia SU e Freccia GIÙ.

  3. Per modificare la sequenza dei messaggi, utilizzare CTRL+Freccia SU e CTRL+Freccia GIÙ.

Aggiungere una linea di vita

Scegliere Linea di vita in Casella degli strumentiquindi scegliere il diagramma.

Aggiungere un messaggio

Come creare messaggi
  1. Nella Casella degli strumenti, scegliere il messaggio Sincrono o Asincrono.

    Per aggiungere un messaggio trovato o un messaggio perso, utilizzare un messaggio Asincrono.Un messaggio trovato viene da un'origine evento sconosciuta e un messaggio perso viene trasmesso a un destinatario sconosciuto.

  2. Sul diagramma,scegliere la linea di vita di origine.

  3. Scegliere una linea di vita di destinazione.

    - oppure -

    Per creare un messaggio trovato o un messaggio perso, scegliere un'area vuota del diagramma dietro o davanti la linea di vita di origine, rispettivamente.

  4. Digitare un nuovo nome per il messaggio.

Copiare le linee di vita e i messaggi da o in altri diagrammi

Copiare e incollare le linee di vita.

Saranno copiati automaticamente anche i messaggi presenti tra esse.

NotaNota
Quando si copiano linee di vita da un diagramma di sequenza UML in un progetto di modello a un diagramma di sequenza generato, potrebbero essere visualizzate solo le intestazioni della linea di vita o potrebbe essere necessario regolare i colori.Per correggere questo problema, selezionare le linee di vita incollate e impostarne la proprietà Colore.

Includere messaggi in un frammento combinato

  1. Selezionare uno o più messaggi.

  2. Aprire il menu di scelta rapida per la selezione, scegliere Racchiudi traquindi scegliere un tipo di frammento combinato.

Utilizzare i frammenti combinati per rappresentare sequenze alternative, cicli e altre composizioni di messaggi.

Spostare un messaggio in un nuovo diagramma

Aprire il menu di scelta rapida per un messaggio e quindi scegliere Passa a diagramma.

Viene creato un nuovo diagramma contenente il messaggio e i messaggi sussidiari.Sul diagramma originale, il messaggio viene sostituito da un Utilizzo interazione.

Copiare il diagramma

Copiare il diagramma in Esplora soluzioni oppure copiare i file in Esplora risorse.A ogni diagramma vengono associati due file.

È possibile modificare un diagramma sequenza generato utilizzando qualsiasi istanza di Visual Studio Ultimate e leggerlo utilizzando Visual Studio Ultimate o Visual Studio Premium.

Non evidenziare determinate modifiche manuali, ad esempio le aggiunte e le modifiche del nome

  1. Aprire il menu di scelta rapida per la superficie del diagramma di sequenza e quindi scegliere Proprietà.

  2. Impostare la proprietà Mostra modifiche manuali su False.

Spostamento dal diagramma

Per

Eseguire questi passaggi

Passare da una linea di vita o un messaggio alla definizione della classe o del metodo, rispettivamente

Aprire il menu di scelta rapida per la linea di vita o il messaggio e quindi scegliere Vai a definizione.

Trovare la classe o il metodo in Esplora architettura

Aprire il menu di scelta rapida per una linea di vita o su un messaggio e quindi scegliere Mostra in Esplora architettura.

Per ulteriori informazioni, vedere Visualizzare le dipendenze di codice nei grafici dipendenze.

Connessione di un diagramma di sequenza a elementi di lavoro

Per pianificare il lavoro di implementazione di una modifica, è possibile collegare elementi di qualsiasi tipo su un diagramma di sequenza agli elementi di lavoro in Team Foundation Server.Prima di iniziare, assicurarsi di essere connessi a Team Foundation Server.Per ulteriori informazioni, vedere Collegare elementi di modello ed elementi di lavoro.

Per

Eseguire questi passaggi

Creare e collegare elementi di lavoro ad una linee di vita, a messaggi, o altri elementi

  • Aprire il menu di scelta rapida per uno o più elementi, scegliere Crea elemento di lavoroquindi scegliere il tipo di elemento di lavoro che si desidera creare.

    Un elemento di lavoro verrà aperto in modo da poter essere completato automaticamente.

Collegare linee di vita, messaggi o altri elementi a elementi di lavoro

  1. Aprire il menu di scelta rapida per uno o più elementi quindi scegliere Collega a elemento di lavoro.

  2. Nella finestra di dialogo Collega a elementi di lavoro, eseguire una query per trovare un elemento di lavoro o immetterne direttamente l'ID.È possibile selezionare un numero illimitato di elementi di lavoro.

È possibile ripetere in un secondo momento questo comando per aggiungere più collegamenti di elementi di lavoro allo stesso elemento del modello.

Visualizzare elementi di lavoro collegati

Aprire il menu di scelta rapida per uno o più elementi quindi scegliere Visualizza elementi di lavoro.

Rimuovere collegamenti a elementi di lavoro

  1. Aprire il menu di scelta rapida per un elemento e quindi scegliere Rimuovi elementi di lavoro.

  2. Nella finestra di dialogo Rimuovi collegamenti a elementi di lavoro fare clic sull'elemento di lavoro che si desidera rimuovere.

I collegamenti tra l'elemento del modello e gli elementi di lavoro scelti vengono eliminati.Gli elementi di lavoro e gli elementi del modello non vengono rimossi.

Linee guida per l'utilizzo di diagrammi di sequenza generati

Le linee guida seguenti potrebbero essere utili quando si esplora il codice con i diagrammi di sequenza generati.

Ee317485.collapse_all(it-it,VS.110).gifEsplorazione del codice

Generare diagrammi di dipendenza per ottenere un'immagine complessiva dei raggruppamenti e delle dipendenze principali in un corpo del codice di grandi dimensioni.Quindi generare i diagrammi di sequenza per concentrarsi su parti singole della progettazione.Per ulteriori informazioni, vedere Visualizzare le dipendenze di codice nei grafici dipendenze.

Ee317485.collapse_all(it-it,VS.110).gifInterpretazione del diagramma

L'algoritmo che crea il diagramma esegue un'esecuzione simbolica del codice.Ci sono alcune situazioni che questa tecnica non supporta.In particolare, queste situazioni includono:

  • Due o più linee di vita potrebbero essere visualizzate nel diagramma dove il codice in esecuzione esegue solo un'istanza.In generale, una linea di vita di destinazione separata viene generata per ogni messaggio.

  • Il tipo di una linea di vita è il tipo dichiarato nel codice del programma, anche se il codice utilizza sempre un sottotipo.

Ee317485.collapse_all(it-it,VS.110).gifAttenzione su un aspetto della progettazione

  • Scegliere un aspetto della progettazione su cui concentrarsi.È possibile generare diagrammi diversi per concentrarsi su aspetti diversi e fare copie dei file di diagramma in qualsiasi fase del lavoro.

  • Per ottenere un diagramma utile che espone chiaramente un aspetto della progettazione, potrebbe essere necessario eseguire esperimenti con i filtri dello spazio dei nomi e la generazione.

  • Eliminare i messaggi che non sono attinenti all'aspetto dello stato attivo ed espandere i messaggi attinenti per mostrare più dettagli.

  • Utilizzare il comando Comprimi per raggruppare linee di vita che rappresentano un gruppo di collaborazione di oggetti, a meno che le interazioni interne siano interessanti per l'aspetto su cui concentrarsi.

Ee317485.collapse_all(it-it,VS.110).gifAggiornamento della progettazione

  • È possibile collaborare su un diagramma utilizzando il controllo della versione.Si consiglia di bloccare un diagramma quando lo si modifica, in modo che solo una persona alla volta possa modificarlo.

  • Utilizzando un diagramma di sequenza generato, è spesso possibile identificare funzionalità del codice esistente che lo rendono difficile da modificare o cambiare.Ad esempio, è possibile notare che una linea di vita invia tutti i messaggi, ma altre rispondono a messaggi senza inviarne molti per loro conto.Considerare se il lavoro eseguito da questo oggetto possa essere diviso più efficacemente tra gli altri oggetti.Ogni classe di oggetto deve disporre di una sola attività definita chiaramente.In generale, questi criteri semplificano l'identificazione delle parti del programma da modificare quando cambiano le necessità degli utenti o da ridisporre in una variante diversa dell'applicazione.

  • Quando si dispone di un diagramma che riguarda un aspetto specifico della progettazione, eseguire copie del diagramma e modificarle per creare proposte alternative per le modifiche.

  • È possibile copiare elementi di un diagramma di sequenza generato in un diagramma di sequenza UML.È necessario prima creare il diagramma di sequenza UML in un progetto di modello UML.Quindi, è possibile modellare visualizzazioni diverse della progettazione aggiornata ed è possibile collegare le linee di vita a componenti o classi nel modello.È anche possibile estendere l'interazione per includere attori esterni.

Risoluzione dei problemi relativi ai diagrammi sequenza

Nella tabella seguente sono descritti i problemi che potrebbero verificarsi quando si generano diagrammi sequenza e le possibili risoluzioni:

Problema

Risoluzione

Impossibile generare il diagramma sequenza.

Potrebbe non essere possibile generare un diagramma sequenza quando non è incluso lo spazio dei nomi System e il codice contiene una chiamata a un metodo COM che accetta i parametri ref o out e passa un parametro mediante la parola chiave new.Per evitare questo problema, modificare il codice oppure, quando si genera il diagramma, includere lo spazio dei nomi System.

Un diagramma sequenza vuoto viene generato dopo che viene visualizzato il messaggio seguente:

"Riferimento a un oggetto non impostato su un'istanza di oggetto."

Questo problema si verifica quando un diagramma sequenza viene generato da un'implementazione esplicita di un metodo di interfaccia e il diagramma non viene aggiunto automaticamente al progetto di origine.Un'implementazione esplicita precede il nome del metodo con il nome dell'interfaccia e un punto (.).

Questo problema si verifica, ad esempio, quando si genera un diagramma sequenza dalla seguente firma e non lo si aggiunge automaticamente al progetto:

void ILinkedWorkItemExtension.OnWorkItemCreated( ) {}

Quando possibile, non includere il nome dell'interfaccia e il punto (.).

In alternativa

Nella finestra di dialogo per la generazione del diagramma sequenza, assicurarsi di aggiungere automaticamente il diagramma sequenza al progetto.

La generazione del diagramma sequenza richiede molto tempo.

- oppure -

Il diagramma sequenza si arresta in modo anomalo alla riapertura.

A seconda della configurazione di computer, le dimensioni significative del diagramma sequenza potrebbero impedirne la rapida generazione, nonché causare l'esaurimento della memoria e l'arresto anomalo di Visual Studio quando si chiude e quindi si riapre il diagramma.Ad esempio, un diagramma sequenza contenente 390 linee di vita e 19.000 messaggi comporta un file di diagramma di dimensioni superiori a 85 MB.

Ridurre l'ambito del diagramma diminuendo la profondità della chiamata, filtrando gli spazi dei nomi non necessari, rimuovendo proprietà ed eventi e così via.

Vedere anche

Riferimenti

Diagrammi di sequenza UML: riferimenti

Concetti

Visualizzazione e comprensione del codice

Visualizzare le dipendenze di codice nei grafici dipendenze

Creare diagrammi livello dal codice