Diagramma dei componenti: modellazione di sistema efficiente con moduli software

L’Unified Modeling Language, in italiano “linguaggio di modellazione unificato”, offre uno standard ISO universale per lo sviluppo di software e architetture di sistema complesse. Il linguaggio di modellazione, abbreviato in “UML”, utilizza diversi tipi di diagramma per progettazioni e processi di sviluppo nella programmazione orientata agli oggetti.

Nell’attuale versione (UML 2.5) si fa una differenza tra 14 tipi di diagramma, grosso modo suddivisi in diagrammi comportamentali e strutturali. Al secondo sottogruppo appartengono i diagrammi dei componenti. Vi spiegheremo cos’è un diagramma dei componenti, a cosa serve e come si crea con un esempio concreto.

Registra il tuo dominio
  • Certificato SSL Wildcard incluso
  • Registrazione di dominio sicura
  • Indirizzo e-mail professionale da 2 GB

Cos’è un diagramma dei componenti?

I diagrammi dei componenti UML rappresentano le relazioni tra singoli componenti di sistema in una vista di progettazione statica. Nel farlo possono essere considerati aspetti di modellazione sia logici che fisici.

Nel contesto UML, i componenti sono parti modulari di un sistema, che sono indipendenti e possono essere sostituiti da componenti equivalenti. Sono chiusi in sé e incapsulano tutte le strutture complesse desiderate. Per gli elementi incapsulati sono possibili contatti con altri componenti solo tramite interfaccia. I componenti possono mettere a disposizione le proprie interfacce, ma anche ricorrere a interfacce di altri componenti, per avere accesso ad esempio alle loro funzioni o servizi. Allo stesso tempo, in un diagramma dei componenti, le interfacce documentano le relazioni e interdipendenze di un’architettura software.

Fatto

Con l’incapsulamento si impedisce l’accesso diretto alla struttura dati interna, per proteggere ad esempio i dati da un accesso non controllato. Interfacce definite regolano l’accesso e rendono fruibili ad un utente solo quei metodi ed elementi di dati di un oggetto rilevanti per l’utente stesso.

I componenti incapsulano di norma delle classi e vengono quindi definiti anche come sottosezioni o specializzazioni di una classe. Come una classe dispongono di una struttura composita e possono essere definiti in maniera più dettagliata tramite attributi, metodi e operazioni. I componenti possono essere un insieme di classi e nel tempo, ad esempio, implementati da una o più classi. Anche se i componenti vengono spesso equiparati alle classi ci sono anche differenze: mentre i componenti hanno bisogno sostanzialmente di interfacce per l’interazione, in una classe si può anche avere accesso diretto a un metodo.

Fatto

Una classe, in una programmazione orientata agli oggetti, funge da modello astratto, che descrive una quantità di oggetti dello stesso tipo. Questi dispongono ad esempio degli stessi attributi, operazioni e relazioni.

Il concetto di componente è molto ampio in UML. Fanno parte dei componenti diversi elementi del sistema come banche dati, pacchetti (packages), file e librerie (per es. Dynamic Link Libraries/DLLs). Oltre ai componenti di tipo tecnico, come per l’accesso ad una banca dati, ci sono anche componenti specializzati, che possono ad esempio fare riferimento a settori o processi di attività. Per comprendere tali relazioni, che possono anche essere di ampio respiro, UML prevede lo stereotipo <<subsystem>>.

Dato che i diagrammi dei componenti modellano un sistema orientato all’attuazione, esistono speciali componenti di implementazione che selezionano in maniera mirata singoli aspetti della realizzazione. I componenti possono essere utilizzati ad esempio per implementare altri componenti, come gli Executables (file eseguibili con estensione*.exe) in Windows.

Fatto

Con implementazione si intende l’attuazione concreta di un software sviluppato o di un sistema progettato in precedenza. Può trattarsi della realizzazione concreta di programmi ideati o di singole funzionalità e algoritmi.

Tirando le fila, più componenti creano un’architettura di sistema ampia. I componenti possono includere anche altri componenti così come disporsi uno sull’altro; un componente, quindi, può anche presupporre l’esistenza di altri componenti (relazione di dipendenza). Inoltre i moduli software possono riferirsi a diverse fasi di realizzazione: alcuni componenti servono soprattutto alla pianificazione e progettazione in fase di bozza, mentre altri si sviluppano solamente all’esecuzione del software. A tal proposito si parla di componenti di progetto e componenti di runtime.

Fatto

Il termine esecuzione (ingl. runtime) indica il periodo di tempo in cui un programma viene eseguito e risolve un compito.

Per cosa si utilizzano i diagrammi dei componenti UML?

Un diagramma dei componenti ha lo scopo di fornire una panoramica di sistema che dia una visione d’insieme, che documenti l’organizzazione dei componenti del sistema e delle relazioni e interdipendenze tra gli stessi. I diagrammi dei componenti offrono un punto di vista orientato all’esecuzione, danno quindi allo sviluppatore informazioni relative al funzionamento del sistema nel suo insieme e sul raggiungimento dei suoi compiti e obiettivi.

Importanti obiettivi e scopi d’uso del tipo di diagramma sono la modellazione di sistemi software basati sui componenti, la specifica di un’architettura software e la suddivisione di un sistema in sottosistemi (ad es. interfacce grafiche/GUI, area business e persistenza con banche dati relazionali). Inoltre, alle sottoaree e alle loro interfacce vengono attribuiti compiti e funzioni concrete all’interno di un sistema.

I diagrammi dei componenti UML sono un elemento importante in economia per lo scambio con i clienti, dato che una riduzione di complessità rende i progetti più facilmente comprensibili e comunicabili. Inoltre i diagrammi dei componenti supportano e semplificano la gestione dello sviluppo software, in quanto riuniscono le classi in componenti gestibili.

L’approccio modulare del tipo di diagramma contribuisce inoltre all’economicità e all’efficienza dei progetti, visto che i sistemi di software possono essere modellati anche come relazioni strutturate di funzioni formate da componenti riutilizzabili. I diagrammi dei componenti visualizzano in modo chiaro quali elementi usare ripetutamente e in quali posizioni di un’architettura. I progetti di sistema possono essere orientati in maniera ottimale verso la riutilizzabilità dei componenti e la loro interazione efficiente.

I sistemi di software basati sui componenti consentono di risparmiare tempo e costi nella fase di pianificazione e attuazione dei sistemi, visto che si può attingere a quanto già presente. Inoltre moduli software provati e testati diminuiscono i rischi e riducono le fonti di errore, soprattutto per la realizzazione di progetti complessi. Per la creazione di sistemi è possibile acquistare anche moduli di produttori terzi, perciò si riesce a compensare anche la mancanza di un proprio know-how.

Quali elementi formano un diagramma dei componenti?

Il linguaggio di programmazione UML utilizza una notazione standardizzata per la creazione dei diagrammi dei componenti, che si basa su una propria scorta di segni e simboli. Nella seguente tabella vi illustriamo gli elementi più importanti per i diagrammi dei componenti nella versione UML 2.0:

A partire da questi elementi di base è possibile ad esempio creare un semplice diagramma dei componenti tramite il software open source gratuito JGraph.

La creazione di un diagramma dei componenti spiegata con un esempio

Nel nostro esempio di diagramma dei componenti vi mostriamo come viene visualizzata la struttura e la funzionalità di un software per e-mail. Il modello dei componenti chiarisce come tre moduli base interagiscono tramite interfaccia:

  • gestione mail (1)
  • ingresso mail (2)
  • uscita mail (3)

La gestione mail (1) è il centro operativo del sistema, che interagisce con utenti e altri moduli software tramite diverse interfacce e porte di servizio. Per permettere all’utente di monitorare il regolare funzionamento, vengono messi a disposizione dell’amministrazione di sistema un’interfaccia e una porta di servizio (porta di gestione). La freccia con la linea tratteggiata indica che l’utente è dipendente da questa interfaccia per lo svolgimento delle sue attività amministrative.

Sistemi e componenti al di fuori dell’architettura modellata possono agganciarsi tramite l’interfaccia “recupero mail”. Le funzionalità e i dati necessari al modulo uscita mail (3), vengono messi a disposizione dal modulo di gestione tramite l’interfaccia “invia mail”. Il modulo di gestione ricorre anche a servizi e funzionalità in cui utilizza l’interfaccia “ricevi mail” del modulo d’ingresso (2). I collegamenti tra i componenti vengono rappresentati in forma grafica attraverso i simboli dell’interfaccia a cerchio (lollipop) e a semicerchio (socket) interconnessi.

Il grafico esplicativo mostra le componenti di sistema in una cosiddetta vista black box, ignorando le procedure interne a favore di una maggior chiarezza. Con una vista white box i diagrammi dei componenti si rivolgono alla struttura interna dei componenti. Così i componenti di gestione (1) potrebbero essere dotati tra l’altro di sottocomponenti funzionali “frontend” e “systemadministration”, che assistono l’amministratore nella gestione del sistema:

La profondità di rappresentazione di un diagramma dei componenti può essere ampliata definendo in maniera ancora più dettagliata gli elementi che ne fanno parti tramite uno standard UML ancora più preciso. Una classe utilizzata può essere definita più da vicino tramite attributi e operazioni. Il nostro articolo sui diagrammi di classe illustra in maniera chiara le opzioni per una specificazione dettagliata delle classi. Altre opzioni di progettazione e modellazione sono offerti dai diagrammi dei casi d’uso e dai diagrammi di stato.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top