Diagrammi livello: linee guida
È possibile descrivere l'architettura dell'applicazione a un livello elevato creando diagrammi livello in Visual Studio finale.Per assicurarsi che i coerenza del codice con la progettazione, convalidino il codice con un diagramma livello in Visual Studio ultimate o Visual Studio premium.È anche possibile includere la convalida dei livelli nel processo di compilazione.Vedere Video channel 9: Progetti e convalidare l'architettura utilizzando diagrammi livello.
Qual è un diagramma livello?
Analogamente a un diagramma dell'architettura tradizionale, un diagramma livello mostra le unità funzionali o i componenti principali della progettazione e le relative interdipendenze.Ogni nodo del diagramma, denominato livello, rappresenta un gruppo logico di spazi dei nomi, progetti o altri elementi.È possibile disegnare le dipendenze che devono esistere nella progettazione.Diversamente da un diagramma dell'architettura tradizionale, è possibile verificare che le dipendenze effettive nel codice sorgente siano conformi alle dipendenze specificate.Includendo la convalida nel normale processo di compilazione in Team Foundation Server, è possibile assicurarsi che il codice del programma sia sempre conforme all'architettura del sistema tramite modifiche future.Vedere Diagrammi livello: riferimento.
La progettazione o aggiornare l'applicazione ai diagrammi livello
Nei passaggi seguenti vengono forniti cenni preliminari sull'utilizzo di diagrammi livello all'interno del processo di sviluppo.Nelle sezioni successive di questo argomento ciascun passaggio verrà descritto in modo dettagliato.Se si sviluppa una nuova progettazione, omettere i passaggi che si riferiscono al codice esistente.
[!NOTA]
Questi passaggi vengono visualizzati in ordine approssimativo.Con ogni probabilità, le attività dovranno essere sovrapposte, riordinate in base alla situazione specifica e riviste all'inizio di ogni iterazione del progetto.
Creare un diagramma livello per l'intera applicazione o per un livello di essa.
Definire i livelli per rappresentare le aree o i componenti funzionali primari dell'applicazione.Assegnare un nome a questi livelli in base alla funzione, ad esempio, "Presentazione" o "Servizi".Se si dispone di una soluzione Visual Studio, è possibile associare ogni livello a una raccolta di elementi, ad esempio progetti, spazi dei nomi, file e così via.
Individuare le dipendenze esistenti tra i livelli.
Modificare i livelli e le dipendenze per mostrare la progettazione aggiornata che si desidera venga riflessa nel codice.
Progettare le nuove aree dell'applicazione creando livelli per rappresentare i componenti o i blocchi di architettura principali e definendo le dipendenze in modo da mostrare come ogni livello utilizza gli altri.
Modificare il layout e l'aspetto del diagramma per consentire di discuterlo con i colleghi.
Convalidare il codice rispetto al diagramma livello per evidenziare i conflitti tra il codice e l'architettura richiesta.
Aggiornare il codice per conformità alla nuova architettura.Sviluppare in maniera iterativa ed effettuare il refactoring del codice fino a che la convalida non illustri i conflitti.
Includere la convalida dei livelli nel processo di compilazione per assicurarsi che il codice sia sempre conforme alla progettazione.
Creare un diagramma livello
È necessario che il diagramma livello venga creato all'interno di un progetto di modello.È possibile aggiungere un nuovo diagramma livello a un progetto di modello esistente, creare un nuovo progetto di modello per il diagramma a livelli, o copiare un diagramma livello esistente nello stesso progetto di modello.
Importante |
---|
Non aggiungere, trascinare o copiare un diagramma livello esistente da un progetto di modello a un altro progetto di modello o a un altro percorso nella soluzione.Un diagramma livello copiato in questo modo disporrà degli stessi riferimenti del diagramma originale, anche se si modifica il diagramma.Ciò impedirà il corretto funzionamento della convalida dei livelli e potrebbe provocare altri problemi, quali la mancanza di elementi o altri errori quando si tenta di aprire il diagramma. |
Vedere Creare diagrammi livello dal codice.
Definire i livelli per rappresentare aree funzionali o componenti
I livelli rappresentano gruppi logici di elementi, quali progetti, file di codice, spazi dei nomi, classi e metodi.È possibile creare livelli dagli elementi da progetti Visual C# .NET and Visual Basic .NET o allegare specifiche o piani a un livello collegando documenti, ad esempio file di Word o presentazioni di PowerPoint.Ogni livello viene visualizzato come un rettangolo nel diagramma e indica il numero di elementi ad esso collegati.Un livello può contenere livelli annidati che descrivono attività più granulari.
Come regola generale, assegnare un nome a questi livelli in base alla funzione, ad esempio, "Presentazione" o "Servizi".Se gli elementi sono strettamente interdipendenti, posizionarli nello stesso livello.Se è possibile aggiornare gli elementi separatamente o utilizzarli in applicazioni separate, posizionarli in livelli diversi.Per informazioni sui modelli di livello, visitare il sito Web relativo ai modelli e alle procedure all'indirizzo https://go.microsoft.com/fwlink/?LinkId=145794.
Suggerimento |
---|
Alcuni tipi di elementi possono essere collegati a livelli, ma non supportano la convalida in base al diagramma livello.Per verificare se l'elemento supporta la convalida, aprire Esplora livello per esaminare la proprietà Convalida supporti del collegamento all'elemento.Vedere Gestire collegamenti tra livelli ed elementi. |
Quando si aggiorna un'applicazione non conosciuta, è possibile utilizzare i grafici delle dipendenze per facilitare l'esplorazione e la comprensione del codice.Questi grafici agevolano l'individuazione di cluster e dipendenze nel codice.È inoltre possibile utilizzare Esplora architettura per esplorare spazi dei nomi e classi, che spesso corrispondono correttamente ai livelli esistenti.In questo modo è più semplice assegnare gli elementi ai livelli.È quindi possibile utilizzare diagrammi livello per aggiornare il codice.
Per ulteriori informazioni, vedere i seguenti argomenti:
Individuare le dipendenze esistenti tra livelli
È presente una dipendenza laddove un elemento associato a un livello disponga di un riferimento a un elemento associato a un altro livello.Ad esempio, una classe di un livello dichiara una variabile che dispone di una classe in un altro livello.È possibile individuare le dipendenze esistenti eseguendone il reverse engineering.
[!NOTA]
Non è possibile decompilare dipendenze per determinati tipi di elementi.Ad esempio, non è possibile decompilare dipendenze da e verso un livello collegato a un file di testo.Per verificare quali elementi dispongono di dipendenze che è possibile decompilare, fare clic con il pulsante destro del mouse su uno o più livelli, quindi scegliere Visualizza collegamenti.In Esplora livello esaminare la colonna Supporta la convalida.Le dipendenze non verranno decompilate per elementi per i quali in questa colonna è indicato False.
Per decompilare dipendenze esistenti tra livelli
- Selezionare uno o più livelli, fare clic con il pulsante destro del mouse su un livello selezionato, quindi fare clic su Genera dipendenze.
In genere vengono visualizzate alcune dipendenze che non dovrebbero esistere.È possibile modificare queste dipendenze per allinearle con la progettazione desiderata.
Modificare livelli e dipendenze per visualizzare la progettazione desiderata
Per descrivere le modifiche da apportare al sistema o l'architettura desiderata, utilizzare i passaggi seguenti per modificare il diagramma livello.È inoltre possibile considerare di apportare alcune modifiche di refactoring per migliorare la struttura del codice prima di estenderlo.Vedere Miglioramento della struttura del codice.
Per |
Eseguire questi passaggi |
---|---|
Eliminare una dipendenza che non deve esistere |
Fare clic sulla dipendenza, quindi premere CANC. |
Modificare o limitare la direzione di una dipendenza |
Impostare la proprietà Direzione. |
Creare nuove dipendenze |
Utilizzare gli strumenti Dipendenza e Dipendenza bidirezionale. Per disegnare più dipendenze, fare doppio clic sullo strumento.Una volta completata l'operazione, fare clic sullo strumento Puntatore o premere ESC. |
Specificare che gli elementi associati a un livello non possono dipendere dagli spazi dei nomi specificati |
Digitare gli spazi dei nomi nella proprietà Forbidden Namespace Dependencies del livello.Utilizzare un punto e virgola (;) per separare gli spazi dei nomi. |
Specificare che gli elementi associati a un livello non devono appartenere agli spazi dei nomi specificati |
Digitare gli spazi dei nomi nella proprietà Forbidden Namespaces del livello.Utilizzare un punto e virgola (;) per separare gli spazi dei nomi. |
Specificare che gli elementi associati a un livello non devono appartenere a uno degli spazi dei nomi specificati |
Digitare lo spazio dei nomi nella proprietà Required Namespaces del livello.Utilizzare un punto e virgola (;) per separare gli spazi dei nomi. |
Miglioramento della struttura del codice
Le modifiche di refactoring sono miglioramenti che non influenzano il comportamento dell'applicazione, ma semplificano le operazioni future di modifica ed estensione del codice.Il codice ben strutturato presenta una progettazione che potrà essere facilmente sottoposta all'astrazione in un diagramma livello.
Ad esempio, se si crea un livello per ogni spazio dei nomi nel codice e si esegue il reverse engineering delle dipendenze, si otterrà un set minimo di dipendenze unidirezionali tra i livelli.Se si crea un diagramma più dettagliato utilizzando classi o metodi come livelli, il risultato rifletterà le stesse caratteristiche.
Se ciò non si verifica, il codice sarà più difficile da modificare in futuro e meno adatto alla convalida tramite i diagrammi livello.
Nuovi campi di progettazione dell'applicazione
Quando si inizia a sviluppare un nuovo progetto o una nuova area di un nuovo progetto, è possibile disegnare livelli e dipendenze per consentire l'individuazione dei componenti principali prima di iniziare a sviluppare il codice.
Visualizzare i modelli d'architettura identificabili nei diagrammi livello, se possibile.Ad esempio, un diagramma livello che descrive un'applicazione desktop potrebbe includere livelli quale Presentazione, Logica dominio e Archivio dati.Un diagramma livello che analizza una sola funzionalità all'interno di un'applicazione potrebbe disporre di livelli quale Modello, Visualizza e Controller.Per ulteriori informazioni su tali modelli, vedere Modelli e procedure: architettura dell'applicazione (informazioni in lingua inglese).
Se si creano spesso modelli simili, creare uno strumento personalizzato.Vedere Procedura: definire un elemento personalizzato della Casella degli strumenti di modellazione.
Creare un elemento del codice per ogni livello quale uno spazio dei nomi, una classe o un componente.Grazie a questa possibilità, risulterà più semplice seguire il codice e collegare gli elementi del codice ai livelli.Non appena viene creato un elemento, connetterlo al livello adatto.
La maggior parte delle classi e degli altri elementi non dovranno essere collegati ai livelli perché sono inclusi in elementi più grandi quali spazi dei nomi già collegati ai livelli.
Creare un nuovo diagramma per una nuova funzionalità.In genere, uno o più diagrammi livello descrivono l'applicazione intera.Se si progetta una nuova funzionalità all'interno dell'applicazione, non eseguire modifiche o aggiunte a diagrammi esistenti.Al contrario, creare un diagramma che rifletta le nuove parti del codice.I livelli del nuovo diagramma potrebbero includere la presentazione, la logica del dominio e i livelli del database per la nuova funzionalità.
Quando si compila l'applicazione, il codice sarà convalidato in base al diagramma complessivo e al diagramma della funzionalità più dettagliato.
Modificare il layout per la presentazione e la discussione
Per identificare più facilmente livelli e dipendenze o discuterne con i membri del team, modificare l'aspetto e il layout del diagramma nei modi seguenti:
Modificare le dimensioni, le forme e le posizioni dei livelli.
Modificare i colori dei livelli e delle dipendenze.
- Selezionare uno o più livelli o dipendenze, fare clic con il pulsante destro del mouse e scegliere Proprietà.Nella finestra Proprietà modificare la proprietà Colore.
Convalidare il codice rispetto al diagramma
Una volta modificato il diagramma, è possibile convalidarlo rispetto al codice manualmente in qualsiasi momento o automaticamente ogni volta che si esegue una compilazione locale o Team Foundation Build.
Vedere:
Includere la convalida del livello nel processo di compilazione
Aggiornare il codice per conformità alla nuova architettura
In genere, gli errori verranno visualizzati alla prima convalida del codice rispetto a un diagramma livello aggiornato.Le cause di questi errori possono essere molteplici:
Un elemento viene assegnato al livello errato.In questo caso, spostare l'elemento.
Un elemento, ad esempio una classe, utilizza un'altra classe in un modo che causa conflitti con l'architettura.In questo caso, eseguire il refactoring del codice per rimuovere la dipendenza.
Per risolvere questi errori, aggiornare il codice finché non verranno più visualizzati errori di convalida.Si tratta generalmente di un processo iterativo.Per ulteriori informazioni su questi errori, vedere Convalidare il codice con diagrammi livello.
[!NOTA]
Durante lo sviluppo o il refactoring del codice, potrebbe essere necessario collegare nuovi elementi al diagramma livello.Ciò potrebbe tuttavia non essere necessario, ad esempio nel caso in cui i livelli rappresentano spazi dei nomi esistenti e il nuovo codice aggiunge solo elementi a tali spazi dei nomi.
Durante il processo di sviluppo, potrebbe essere necessario eliminare alcuni conflitti segnalati durante la convalida.Ad esempio, è possibile eliminare gli errori che sono già stati corretti o che non sono attinenti allo scenario in questione.Quando si elimina un errore, è buona norma registrare un elemento di lavoro in Team Foundation.Per eseguire questa attività, vedere Convalidare il codice con diagrammi livello.
Includere la convalida dei livelli nel processo di compilazione
Per assicurarsi che le modifiche al codice apportate successivamente siano conformi ai diagrammi livello, includere la convalida dei livelli al processo di compilazione standard della soluzione.Ogni qualvolta gli altri membri del team compilano la soluzione, qualsiasi differenza tra le dipendenze del codice e del diagramma livello sarà riportata come errore di compilazione.Per ulteriori informazioni sull'inclusione di convalida dei livelli nel processo di compilazione, vedere Convalidare il codice con diagrammi livello.