Condividi tramite


Visualizzare il codice sui diagrammi di sequenza

Per visualizzare il modo in cui il codice distribuisce un metodo specifico, creare un diagramma sequenza da un metodo in Visual Studio Ultimate. Il diagramma sequenza mostra l'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 .NET, ma non dai progetti che condividono il codice tra più applicazioni.

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 altre informazioni, vedere Diagrammi di sequenza UML: riferimenti.

  • Generare un diagramma di sequenza dal codice sorgente

  • Esplorare il codice sui diagrammi di sequenza

  • Modificare il diagramma per proporre modifiche di progettazione

  • Passare al codice dal diagramma

  • Connettere un diagramma di sequenza a elementi di lavoro

  • Relazioni con altri diagrammi

  • Risoluzione dei problemi relativi ai diagrammi sequenza

Generare un diagramma di sequenza dal codice sorgente

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

  2. Passare alla definizione del metodo, fare clic con il pulsante destro del mouse all'interno dell'editor, quindi scegliere Genera diagramma sequenza.

  3. Nella casella Profondità massima delle chiamate specificare il livello massimo di chiamate da vedere. Ad esempio, se si desidera vedere solo il primo livello delle chiamate, specificare un livello di profondità di chiamata massimo di 1.

    Finestra di dialogo Genera diagramma sequenza

    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 altre informazioni sui messaggi persi, vedere Diagrammi di sequenza UML: riferimenti.

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

    Per vedere

    Scegliere

    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

    Seleziona

    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, usando una virgola (,) per separarli. Non usare caratteri jolly (*) in quanto non sono supportati.

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

  6. Selezionare la casella se si vuole aggiungere il diagramma al progetto attuale.

  7. Al termine, scegliere OK per generare il diagramma di sequenza.

    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 altre informazioni, vedere Collegare elementi di modello ed elementi di lavoro.

Importante

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.

Esplorare il 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, quindi scegliere Espandi in uscita.

Espandere un messaggio in un nuovo diagramma

Aprire il menu di scelta rapida per un messaggio, 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, 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 relativo, quindi scegliere Espandi.

Eliminare elementi

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

Migliorare il layout

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

È possibile annullare anche questo comando.

Evidenziare elementi selezionati

Aprire il menu di scelta rapida per un elemento, 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. Usare 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 altri dettagli, 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.

-oppure-

Connettere un commento all'elemento:

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

  2. Nella Casella degli strumenti scegliere Collegamento commento, scegliere il commento, quindi 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.

    -oppure-

    Tenere premuto CTRL mentre si sceglie ciascuna linea di vita.

    Nota

    Se si usa 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, usare Freccia SU e Freccia GIÙ.

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

Aggiungere una linea di vita

Scegliere Linea di vita nella Casella degli strumenti, quindi 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, usare 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 rispettivamente un'area vuota del diagramma dietro o davanti la linea di vita di origine.

  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.

Nota

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 tra, quindi scegliere un tipo di frammento combinato.

Usare 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, 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 usando qualsiasi istanza di Visual Studio Ultimate e leggerlo usando 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 sequenza, quindi scegliere Proprietà.

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

Passare al codice 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, 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 per un messaggio, quindi scegliere Mostra in Esplora architettura.

Per altre informazioni, vedere la Mappare le dipendenze nel codice su grafici di dipendenze.

Connettere 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 altre informazioni, vedere Collegare elementi di modello ed elementi di lavoro.

Per

Eseguire questi passaggi

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

  • Aprire il menu di scelta rapida per uno o più elementi, scegliere Crea elemento di lavoro, quindi scegliere il tipo di elemento di lavoro da creare.

    Un elemento di lavoro verrà aperto in modo che sia possibile 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, quindi scegliere Rimuovi elementi di lavoro.

  2. Nella finestra di dialogo Rimuovi collegamenti a elementi di lavoro scegliere l'elemento di lavoro da 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.

Esplorare il 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 altre informazioni, vedere la Mappare le dipendenze nel codice su grafici di dipendenze.

Interpretare il 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 programma, anche se il codice usa sempre un sottotipo.

Attenzione 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.

  • Usare 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.

Aggiornare la progettazione

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

  • Usando 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 (.).

-oppure-

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

Visualizzare codice

Mappare le dipendenze nel codice su grafici di dipendenze

Creare diagrammi livello dal codice