Diagrammi dei componenti UML: linee guida
In Visual Studio Ultimate è possibile creare un diagramma dei componenti per mostrare la struttura di un sistema software. Per una dimostrazione video, vedere lo screencast sulla progettazione della struttura fisica tramite i diagrammi dei componenti.
Per creare un diagramma dei componenti UML, scegliere Nuovo diagramma dal menu Architettura.
Un componente è un'unità modulare sostituibile all'interno dell'ambiente. Dispone di elementi interni nascosti e di una o più interfacce fornite ben definite tramite cui è possibile accedere alle relative funzioni. Un componente può contenere anche interfacce richieste. Un'interfaccia richiesta definisce le funzioni o i servizi necessari presenti in altri componenti. Connettendo le interfacce fornite e richieste di diversi componenti, è possibile costruire un componente più grande. Un sistema software completo può essere considerato come un componente.
La creazione dei diagrammi dei componenti comporta diversi vantaggi:
Il concetto di progettazione in relazione ai blocchi principali consente al team di sviluppo di comprendere una progettazione esistente e di crearne una nuova.
Considerando il sistema come un insieme di componenti con interfacce fornite e richieste ben definite, è possibile migliorare la separazione tra i componenti. Questa operazione consente a sua volta di comprendere la progettazione più facilmente e di modificarla qualora vengano modificati i requisiti.
È possibile utilizzare un diagramma dei componenti per rappresentare la progettazione indipendentemente dalla lingua o dalla piattaforma utilizzata.
In questo argomento
Relazione con altri diagrammi
Procedura di base per la creazione di diagrammi dei componenti
Visualizzazione delle parti interne di un componente
Progettazione del componente
Nota
Per informazioni di riferimento sugli elementi presenti nei diagrammi dei componenti, vedere Diagrammi dei componenti UML: riferimento.
Relazione con altri diagrammi
È possibile utilizzare un diagramma dei componenti insieme ad altri diagrammi.
Altro diagramma |
Discussione e comunicazione dei seguenti aspetti della progettazione |
---|---|
Diagramma di sequenza UML |
Per ulteriori informazioni, vedere Diagrammi di sequenza UML: linee guida. |
Diagramma classi UML |
Per ulteriori informazioni, vedere Diagrammi classi UML: linee guida. |
Diagrammi di attività |
Per ulteriori informazioni, vedere Diagrammi di attività UML: linee guida. |
Diagrammi livello |
Per ulteriori informazioni, vedere Diagrammi livello: riferimento. |
Procedura di base per la creazione di diagrammi dei componenti
Per informazioni di riferimento sugli elementi presenti nei diagrammi dei componenti, vedere Diagrammi dei componenti UML: riferimento.
Per ulteriori informazioni su come utilizzare i diagrammi dei componenti nel processo di progettazione, vedere Modellazione dell'architettura di un sistema software.
Nota
I passaggi dettagliati per la creazione dei diagrammi di modellazione vengono descritti in Procedura: modificare un modello UML e i diagrammi.
Per creare un diagramma dei componenti
Scegliere Nuovo diagramma dal menu Architettura.
Nel riquadro Modelli fare clic su Diagramma componente UML.
Assegnare un nome al diagramma.
In Aggiungi a progetto di modello selezionare un progetto di modello esistente nella soluzione o scegliere Crea nuovo progetto di modello, quindi fare clic su OK.
Verrà visualizzato un nuovo diagramma dei componenti con la casella degli strumenti Diagramma componente UML. La casella degli strumenti contiene le relazioni e gli elementi necessari.
Creazione dei componenti
Creare un componente (1) per ogni unità funzionale principale nel sistema o nell'applicazione.
Gli esempi includono un'applicazione, un dispositivo hardware, un servizio Web, un assembly .NET, una classe o un gruppo di classi di programma oppure qualsiasi segmento separabile di un programma.
Per creare i componenti
Fare clic su Componente nella casella degli strumenti, quindi fare clic su una parte vuota del diagramma.
- oppure -
Copiare e incollare un componente esistente.
Trovare un componente esistente in un diagramma o in Esplora modelli UML.
Fare clic con il pulsante destro del mouse sul componente, quindi scegliere Copia.
Aprire il diagramma in cui si desidera che venga visualizzato il componente copiato.
Fare clic con il pulsante destro del mouse su una parte vuota del diagramma, quindi scegliere Incolla.
Verrà visualizzata una copia del componente con un nuovo nome.
Fare clic sul nome del componente per modificarlo.
Fare clic sulla freccia di espansione (5) se si desidera visualizzare solo l'intestazione del componente.
Visualizzazione delle porte di un componente
Una porta (2, 3) rappresenta un gruppo di messaggi o chiamate di operazioni che passano all'interno o all'esterno di un componente. Il gruppo viene descritto da un'interfaccia che definisce il tipo della porta. Una porta può fornire o richiedere un'interfaccia.
Una porta con un'interfaccia fornita (2) fornisce le operazioni implementate dal componente e che possono essere utilizzate da altri componenti.
Alcuni esempi sono un'interfaccia utente, un servizio Web, un'interfaccia .NET o un insieme di funzioni in qualsiasi linguaggio di programmazione.
Una porta con un'interfaccia richiesta (3) rappresenta il requisito di un componente per un gruppo di operazioni o servizi che deve essere fornito da altri componenti o sistemi esterni.
Ad esempio, un browser Web richiede server Web o un componente aggiuntivo dell'applicazione richiede i servizi dall'applicazione.
Un componente può contenere un qualsiasi numero di porte.
Per aggiungere le porte a un componente
Nella casella degli strumenti fare clic su Interfaccia fornita o Interfaccia richiesta.
Fare clic sul componente a cui si desidera aggiungere la porta.
Una porta verrà visualizzata sul limite del componente.
Una nuova interfaccia verrà creata come tipo della porta. Questa interfaccia viene visualizzata in Esplora modelli UML.
Trascinare la porta sul limite del componente per posizionarla nel punto desiderato.
Trascinare l'etichetta della porta per regolarne la posizione.
Fare clic sull'etichetta per modificarla. L'etichetta mostra il nome dell'interfaccia. Se si modifica l'etichetta, si modificherà il nome dell'interfaccia.
Collegamento tra componenti
Utilizzare una dipendenza (4) per mostrare che il requisito di un componente può essere soddisfatto dalle operazioni o dai servizi forniti da un altro componente.
Per mostrare che un'interfaccia fornita può soddisfare un'interfaccia richiesta
Nella casella degli strumenti fare clic su Dipendenza.
Fare clic sulla porta con l'interfaccia richiesta in un componente, quindi fare clic sulla porta con l'interfaccia fornita in un altro componente.
È consigliabile evitare di progettare cicli di dipendenza in cui ogni componente di un gruppo dipende da tutti gli altri componenti.
Per aggiungere una porta di un'interfaccia esistente a un componente
Individuare l'interfaccia in Esplora modelli UML, quindi trascinarla sul componente.
-oppure-
Copiare e incollare un riferimento a un'interfaccia da un diagramma.
In un diagramma classi o in un diagramma dei componenti fare clic con il pulsante destro del mouse sull'interfaccia, quindi scegliere Copia.
Nel diagramma dei componenti fare clic con il pulsante destro del mouse sul componente, quindi scegliere Incolla riferimento.
Un'interfaccia fornita verrà visualizzata nel componente e accanto viene visualizzato un tag azioni.
Nota
Se si utilizza Incolla anziché Incolla riferimento, verrà creata una nuova interfaccia con un nuovo nome.
Per creare un'interfaccia richiesta, fare clic sul tag azioni, quindi fare clic su Converti in interfaccia richiesta.
Visualizzazione delle parti interne di un componente
È possibile posizionare le parti (3) di un componente (1) in modo da mostrare come sia costituito da componenti più piccoli che interagiscono tra di loro.
Il diagramma nell'illustrazione indica che ogni istanza del tipo Dinner Now Web Service contiene un'istanza di Customer Server e un'istanza di Kitchen Server.
Una parte è una proprietà del componente padre, molto simile a un attributo appartenente a una classe ordinaria. Una parte dispone di un proprio tipo che generalmente è anche un componente. L'etichetta della parte ha lo stesso formato di un attributo ordinario:
+ partName : TypeName
Nel componente padre ogni parte mostra le interfacce fornite e richieste definite per il tipo (4, 5). Le operazioni o i servizi richiesti da una parte possono essere forniti da un'altra parte. È possibile utilizzare i connettori Assembly parti per illustrare il modo in cui le parti sono connesse tra loro (6).
È inoltre possibile illustrare che un'interfaccia del componente padre è in effetti fornita o richiesta da una delle relative parti. È possibile connettere una porta del componente padre a una porta di una parte interna utilizzando una relazione Delega (9). Le due porte devono essere dello stesso tipo (fornito o richiesto) e i tipi di interfaccia devono essere compatibili.
È possibile creare una nuova parte con un nuovo tipo o da un tipo esistente.
Per aggiungere le parti a un componente
Creare una parte per ogni unità funzionale principale che si considera parte del componente padre.
Fare clic su Componente nella casella degli strumenti, quindi fare clic all'interno del componente padre (1).
Una nuova parte (3) verrà visualizzata nel componente padre.
Un nuovo componente verrà creato in Esplora modelli UML. Si tratta del tipo della nuova parte.
- oppure -
Trascinare un componente esistente da Esplora modelli UML nel componente padre.
Una nuova parte (3) verrà visualizzata nel componente padre. Il tipo è il componente trascinato da Esplora modelli UML.
- oppure -
Fare clic con il pulsante destro del mouse su un componente in un diagramma o in Esplora modelli UML, quindi scegliere Copia.
Fare clic con il pulsante destro del mouse sul componente padre, quindi scegliere Incolla riferimento.
Una nuova parte (3) verrà visualizzata nel componente padre. Il tipo è il componente copiato.
Fare clic sul nome della nuova parte per modificarlo. Non è possibile modificarne il tipo.
È possibile aggiungere alla nuova parte le interfacce fornite e richieste (4, 5). Fare clic sullo strumento Interfaccia fornita o Interfaccia richiesta, quindi fare clic nella parte.
- oppure -
Trascinare un'interfaccia esistente da Esplora modelli UML sulla parte.
Le interfacce verranno aggiunte al tipo della parte e verranno visualizzate nella parte stessa. Se necessario, il componente padre modifica la dimensione.
Connettere le parti tra loro.
- Utilizzare lo strumento Dipendenza per connettere le porte di parti diverse (6).
Connettere le parti alle porte del componente padre:
Creare uno o più porte (7) nel componente padre. Fare clic su Interfaccia richiesta o Interfaccia fornita nella casella degli strumenti, quindi fare clic sul componente padre.
Delegare (9) la porta a una o più parti. Fare clic sullo strumento Delega, quindi su una porta nel componente padre e infine su una porta in una parte. È possibile connettere le porte che forniscono o richiedono le interfacce allo stesso modo.
Visualizzazione delle parti di una parte
Dopo avere scomposto un componente in parti, è possibile scomporre ogni tipo della parte nelle relative parti interne.
È più facile eseguire ogni livello di scomposizione in un diagramma dei componenti separato. È necessario innanzitutto individuare il tipo della parte. Ad esempio, nell'illustrazione una delle parti è denominata DNCustomerServer e il relativo tipo è un componente denominato CustomerServer. È possibile trovare il tipo in Esplora modelli UML e posizionarlo in un altro diagramma. È possibile quindi creare le relative parti interne.
Per posizionare il tipo di una parte in un diagramma
Determinare il nome completo del tipo della parte.
Fare clic con il pulsante destro del mouse sulla parte, quindi scegliere Proprietà.
Il nome del tipo verrà visualizzato nel campo Tipo della finestra Proprietà.
Individuare il tipo della parte in Esplora modelli UML.
Scegliere Altre finestre dal menu Visualizza, quindi fare clic su Esplora modelli UML.
Espandere il progetto e se necessario il pacchetto a cui appartiene il tipo.
Il tipo verrà elencato come Componente.
Se si desidera, è possibile modificarne il nome.
Aprire o creare un altro diagramma dei componenti.
Trascinare dal tipo in Esplora modelli UML nel diagramma.
Una visualizzazione del tipo apparirà come componente nel diagramma.
Avrà le stesse interfacce definite per la parte.
È ora possibile aggiungervi le parti.
Progettazione del componente
Descrizione del modo in cui collaborano le parti
È possibile creare un diagramma di sequenza per illustrare il modo in cui le parti collaborano in risposta a un messaggio che arriva nel componente padre.
È possibile utilizzare questi diagrammi sia per illustrare un componente esistente che per progettare un nuovo componente.
Se il componente è ancora in fase di progettazione, è possibile creare i diagrammi di sequenza prima di decidere le parti che conterrà. È possibile utilizzare i diagrammi di sequenza per sperimentare parti diverse, interfacce richieste e sequenze di messaggi. Creare i diagrammi di sequenza per i messaggi in arrivo più frequenti e più importanti. È possibile creare quindi le parti nel componente che corrispondono alle linee di vita scelte.
Utilizzare i diagrammi di sequenza per valutare il modo in cui il lavoro del sistema viene distribuito tra i diversi componenti.
Se su una parte viene caricato troppo lavoro, probabilmente sarà più difficile aggiornare l'applicazione, rispetto a una condizione in cui il carico di lavoro viene distribuito in modo uniforme.
Se invece il carico lavoro viene distribuito alleggerendo in maniera eccessiva le parti con molte interazioni, il sistema potrebbe venire eseguito in modo non corretto e la comprensione potrebbe risultare più complessa.
Per creare un diagramma di sequenza che illustri la collaborazione tra le parti
Creare un nuovo diagramma di sequenza.
Per ulteriori informazioni, vedere Diagrammi di sequenza UML: linee guida.
Creare una linea di vita per un componente esterno, un utente, un dispositivo o un altro attore (1) che invia messaggi a questo componente.
È possibile impostare la proprietà Actor di questa linea di vita su true per indicare che è esterna al componente in fase di analisi. Sopra la linea di vita viene visualizzata una figura stilizzata.
Creare una linea di vita per l'interfaccia fornita (2) di questo componente a cui l'attore scelto invia i messaggi.
Creare una linea di vita per ogni parte (3) del componente.
Creare una linea di vita per ogni interfaccia richiesta (4) del componente.
Creare i messaggi dall'attore esterno (5). Mostrare come il messaggio viene passato alle parti e come esse collaborano per rispondere al messaggio.
Se necessario, mostrare i messaggi inviati in un'interfaccia richiesta (6). Non mostrare alcun dettaglio all'interno dell'esecuzione del messaggio.
Il componente vale più delle relative parti?
In alcuni casi, un componente rappresenta solo un nome assegnato a un insieme di parti. Tutto il lavoro viene svolto dalle parti e in fase di esecuzione non è presente un codice né un altro elemento che rappresenti il componente.
È possibile indicare tale condizione nel modello impostando la proprietà Is Indirectly Instantiated del componente. In questo caso, tutte le interfacce del componente devono trovarsi sulle porte, con deleghe alle parti interne.
Descrizione del processo all'interno di ogni parte
È possibile utilizzare i diagrammi di attività per illustrare come un componente elabori ogni messaggio in arrivo. Per ulteriori informazioni, vedere Diagrammi di attività UML: linee guida.
Utilizzare la proprietà Accept Event Action (1) per indicare che un messaggio in arrivo avvia un nuovo thread.
Utilizzare i nodi dell'oggetto e i pin di input/output per mostrare il flusso di informazioni e dove vengono archiviate le informazioni. Nell'esempio un nodo dell'oggetto (2) viene utilizzato per mostrare gli elementi memorizzati nel buffer tra un thread e l'altro.
Definizione di dati e classi
È possibile utilizzare un diagramma classi UML per descrivere il contenuto dettagliato di:
Interfacce dei componenti.
Dati passati nei parametri delle operazioni delle interfacce.
Dati archiviati nei componenti, ad esempio come illustrato nei flussi dell'oggetto dei diagrammi di attività.
Dipendenze generali tra componenti
È possibile utilizzare un diagramma dei componenti solo per illustrare le parti principali della progettazione e le relative interdipendenze.
Utilizzare lo strumento Dipendenza per creare una dipendenza. In questo modo viene indicato che la progettazione di un componente si basa su un altro componente.
Tra i comuni tipi di dipendenza sono inclusi i seguenti:
Un componente chiama il codice all'interno di un altro componente.
Un componente crea un'istanza di una classe definita all'interno di un'altra classe.
Un componente utilizza le informazioni create da un altro componente.
È possibile utilizzare il nome della freccia di dipendenza per indicare un particolare tipo di utilizzo. Per impostare il nome, fare clic con il pulsante destro del mouse sulla freccia, quindi scegliere Proprietà e impostare il campo Nome nella finestra delle proprietà.
Vedere anche
Riferimenti
Diagrammi di sequenza UML: riferimenti
Concetti
Procedura: modificare un modello UML e i diagrammi
Diagrammi dei componenti UML: riferimento
Diagrammi casi di utilizzo UML: riferimento
Diagrammi classi UML: riferimento
Diagrammi dei componenti UML: riferimento
Altre risorse
Video sulla progettazione della struttura fisica tramite i diagrammi dei componenti