Procedura: esplorare il codice con i 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. Per generare diagrammi sequenza dai progetti di sito Web di ASP.NET, installare Visual Studio 2010Feature Pack di visualizzazione e modellazione di Microsoft Visual Studio 2010.

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.

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 Procedura: collegare elementi di modello a elementi di lavoro.

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. Fare clic con il pulsante destro del mouse in un qualsiasi punto all'interno della definizione del metodo, quindi scegliere 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. 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.

    Nota

    Dopo avere generato il diagramma, è possibile espandere specifici messaggi persi.

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

    Per vedere

    Fare clic su

    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 dell'operazione, 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.

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

Fare clic con il pulsante destro del mouse su un messaggio che non dispone di una linea di vita di destinazione, quindi scegliere Espandi in uscita.

Espandere un messaggio in un nuovo diagramma

Fare clic con il pulsante destro del mouse su 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, fare clic con il pulsante destro del mouse sulla selezione, quindi scegliere Comprimi.

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

Per espandere il gruppo, fare clic con il pulsante destro del mouse su di esso e scegliere Espandi.

Eliminare elementi

Fare clic con il pulsante destro del mouse sulla forma, quindi scegliere Elimina.

Migliorare il layout

Fare clic con il pulsante destro del mouse su un'area vuota del diagramma, quindi scegliere Ridisponi layout.

È possibile annullare anche questo comando.

Evidenziare elementi selezionati

Fare clic con il pulsante destro del mouse su un elemento, quindi scegliere Proprietà. Nella finestra Proprietà impostare il campo Colore.

Annotare il diagramma

Fare clic sullo 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.

-oppure-

Connettere un commento all'elemento:

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

  2. Nella Casella degli strumenti, fare clic su Collegamento commento e quindi sul diagramma, sul commento e sull'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 fa clic su 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 nella Casella degli strumenti, quindi fare clic sul diagramma.

Aggiungere un messaggio

  1. Nella Casella degli strumenti, fare clic su un 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, fare clic su una linea di vita di origine.

  3. Fare clic su una linea di vita di destinazione.

    - oppure -

    Per creare un messaggio trovato o un messaggio perso, fare clic su 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. Fare clic con il pulsante destro del mouse sulla sezione, scegliere Racchiudi tra, quindi fare clic su 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

Fare clic con il pulsante destro del mouse su 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 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. Fare clic con il pulsante destro del mouse sulla superficie del diagramma di sequenza e 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

Fare clic con il pulsante destro del mouse sulla linea di vita o sul messaggio generato, quindi scegliere Vai a definizione.

Trovare la classe o il metodo in Esplora architettura

Fare clic con il pulsante destro del mouse su una linea di vita o su un messaggio generato, quindi scegliere Mostra in Esplora architettura.

Per ulteriori informazioni vedere Procedura: generare grafici di dipendenze per il codice .NET.

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. Per ulteriori informazioni vedere Procedura: collegare elementi di modello a elementi di lavoro.

Per

Eseguire questi passaggi

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

  1. Fare clic con il pulsante destro del mouse su 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

Fare clic con il pulsante destro del mouse su uno o più elementi, quindi scegliere Visualizza elementi di lavoro.

Rimuovere collegamenti a elementi di lavoro

  1. Fare clic con il pulsante destro del mouse su un elemento, 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.

Esplorazione 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 Procedura: generare grafici di dipendenze per il codice .NET.

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

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.

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

Aggiornamento 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 (.).

- 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

Attività

Procedura: creare diagrammi livello da elementi

Riferimenti

Diagrammi di sequenza UML: riferimenti

Concetti

Visualizzazione del codice esistente

Procedura: generare grafici di dipendenze per il codice .NET

Cronologia delle modifiche

Data

Cronologia

Motivo

Agosto 2010

Per generare diagrammi sequenza per i progetti di sito Web di ASP.NET, è necessario Feature Pack di visualizzazione e modellazione di Microsoft Visual Studio 2010.

Commenti e suggerimenti dei clienti.

Aprile 2011

I caratteri jolly (*) non sono supportati nella casella Altri spazi dei nomi.

Commenti e suggerimenti dei clienti.