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
In Visual Studio aprire il file di codice contenente la definizione del metodo.
Fare clic con il pulsante destro del mouse in un qualsiasi punto all'interno della definizione del metodo, quindi scegliere Genera diagramma sequenza.
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.
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.
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.
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:
|
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:
|
Spostare e riordinare i messaggi |
Trascinare un messaggio su o giù sul diagramma.
|
Aggiungere una linea di vita |
Scegliere Linea di vita nella Casella degli strumenti, quindi fare clic sul diagramma. |
Aggiungere un 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 |
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 |
|
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 |
È 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 |
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:
|
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. |