Un'immagine vale più di mille parole. Ecco perché l'Unified Modeling Language (UML) è stato creato per fornire un linguaggio visivo comune nel complesso mondo dello sviluppo software, che fosse comprensibile anche agli utenti aziendali e a chiunque voglia capire un sistema. Questa guida copre tutto ciò che c'è da sapere sull'UML. Anche se hai incontrato l'UML per la prima volta durante una formazione aziendale e da allora non l'hai più usato molto, resta un modo pratico per mantenere comprensibili i sistemi complessi, specialmente se usato come documentazione viva piuttosto che come deliverable occasionale.
Cos'è l'UML?
L'Unified Modeling Language (UML) è stato creato per dare vita a un linguaggio di modellazione visiva comune, ricco dal punto di vista semantico e sintattico, per l'architettura, la progettazione e l'implementazione di sistemi software complessi, sia a livello strutturale che comportamentale.
È analogo ai progetti grafici utilizzati in altri settori e consiste in diversi tipi di diagrammi. Nel complesso, i diagrammi UML descrivono i confini, la struttura e il comportamento del sistema e degli oggetti al suo interno. Quando scrivi codice, un'applicazione contiene migliaia di righe ed è difficile tenere traccia delle relazioni e delle gerarchie all'interno di un sistema software. I diagrammi UML suddividono il sistema software in componenti e sottocomponenti.
Esistono quattro categorie di modelli di risoluzione dei problemi: linguaggi imperativi, funzionali, dichiarativi e orientati agli oggetti. Nei linguaggi orientati agli oggetti, gli algoritmi vengono espressi definendo degli "oggetti" e facendoli interagire tra loro. Tali oggetti sono elementi da manipolare ed esistono nel mondo reale. Può trattarsi di edifici, widget su un desktop o esseri umani.
I linguaggi orientati agli oggetti dominano il mondo della programmazione perché modellano gli oggetti del mondo reale. L'UML combina diverse notazioni orientate agli oggetti: progettazione orientata agli oggetti (object-oriented design), tecnica di modellazione degli oggetti (object modeling technique) e ingegneria del software orientata agli oggetti (object-oriented software engineering).
L'UML sfrutta i punti di forza di questi tre approcci per presentare una metodologia più coerente e facile da usare. Rappresenta le best practice per la creazione e la documentazione di diversi aspetti della modellazione di software e sistemi aziendali. Poiché l'UML è standardizzato, può essere applicato a diversi linguaggi di programmazione e processi di sviluppo, risultando ampiamente leggibile dalla maggior parte degli sviluppatori software.
In pratica, l'UML è anche una forma di documentazione visiva che può ridurre il tempo dedicato a rispiegare un sistema. Questa documentazione può aiutare gli ingegneri in molti modi, dall'inserimento di nuovi dipendenti alla fornitura agli stakeholder di una panoramica rapida del sistema, evitando agli sviluppatori di perdere tempo in riunioni.
La storia e le origini dell'UML
Grady Booch, James Rumbaugh e Ivar Jacobson, noti anche come "I tre amigos" dell'ingegneria del software, si sono uniti per fare chiarezza tra i programmatori creando nuovi standard.
I loro sforzi hanno portato alla pubblicazione dei documenti UML 0.9 e 0.91 nel 1996. Ben presto fu chiaro che diverse organizzazioni, tra cui Microsoft, Oracle e IBM, consideravano l'UML fondamentale per lo sviluppo del proprio business. Insieme a molte altre persone e aziende, hanno istituito risorse per sviluppare un linguaggio di modellazione completo. I tre amigos hanno pubblicato The Unified Modeling Language User Guide nel 1999 e un aggiornamento nel 2005, che include UML 2.0.
Il ruolo dell'Object Management Group (OMG) nell'UML
In base a quanto riportato sul sito web, l'Object Management Group® (OMG®) è un consorzio internazionale di standard tecnologici, senza scopo di lucro e aperto all'adesione di membri, fondato nel 1989. Gli standard OMG sono guidati da fornitori, utenti finali, istituzioni accademiche e agenzie governative. Le task force OMG sviluppano standard di integrazione aziendale per un'ampia gamma di tecnologie e un numero ancora maggiore di settori. I modelli standard di OMG, tra cui l'UML e la Model Driven Architecture® (MDA®), consentono una progettazione visiva, un'esecuzione e una manutenzione efficaci del software e di altri processi.
L'OMG supervisiona la definizione e la manutenzione delle specifiche UML. Questa supervisione offre a ingegneri e programmatori la capacità di utilizzare un unico linguaggio per molti scopi durante tutte lasi fasi del ciclo di vita del software, per sistemi di qualsiasi dimensione.
L'OMG definisce lo scopo dell'UML come segue:
-
Fornire ad architetti di sistema, ingegneri e sviluppatori software gli strumenti per l'analisi, la progettazione e l'implementazione di sistemi basati su software, nonché per la modellazione di processi aziendali e simili.
-
Far progredire lo stato del settore consentendo l'interoperabilità degli strumenti di modellazione visiva degli oggetti. Tuttavia, per consentire uno scambio significativo di informazioni sui modelli tra i vari strumenti, è necessario un accordo sulla semantica e sulla notazione.
L'UML soddisfa i seguenti requisiti:
-
Stabilire una definizione formale di un meta-modello comune basato sulla Meta-Object Facility (MOF) che specifichi la sintassi astratta dell'UML. La sintassi astratta definisce l'insieme dei concetti di modellazione UML, i loro attributi e le loro relazioni, nonché le regole per combinare questi concetti al fine di costruire modelli UML parziali o completi.
-
Fornire una spiegazione dettagliata della semantica di ogni concetto di modellazione UML. La semantica definisce, in modo indipendente dalla tecnologia, come i concetti UML debbano essere realizzati dai computer.
-
Specificare gli elementi di notazione leggibili dall'uomo per rappresentare i singoli concetti di modellazione UML, nonché le regole per combinarli in una varietà di tipi di diagramma diversi corrispondenti a differenti aspetti dei sistemi modellati.
-
Definire le modalità con cui gli strumenti UML possono essere resi conformi a questa specifica. Questo è supportato (in una specifica separata) da una specifica basata su XML dei formati di interscambio dei modelli corrispondenti (XMI) che deve essere realizzata dagli strumenti conformi.
Tipi di diagrammi UML
L'UML utilizza elementi e li associa in modi diversi per formare diagrammi statici (che rappresentano gli aspetti strutturali di un sistema) e diagrammi comportamentali (che ne rappresentano gli aspetti dinamici). Per i non addetti ai lavori potrebbe sembrare che esista un numero infinito di diagrammi UML ma, in realtà, gli standard UML identificano 14 tipi di diagrammi suddivisi in due gruppi, definiti di seguito.
Diagrammi UML strutturali
-
Diagramma delle classi: questo è il diagramma UML più comunemente utilizzato e la base principale di qualsiasi soluzione orientata agli oggetti. Mostra le classi all'interno di un sistema, gli attributi, le operazioni e le relazioni tra ciascuna classe. Nella diagrammazione di grandi sistemi, le classi vengono raggruppate per creare diagrammi delle classi. Una classe è rappresentata da un rettangolo diviso in tre sezioni sovrapposte verticalmente: la sezione superiore contiene il nome della classe ed è obbligatoria, mentre le due sezioni inferiori forniscono dettagli sugli attributi e sulle operazioni o sui comportamenti della classe.
-
Diagramma dei componenti: un diagramma dei componenti è essenzialmente una versione più specializzata del diagramma delle classi, e ad esso si applicano le stesse regole di notazione. Un diagramma dei componenti suddivide un sistema complesso in componenti più piccoli e visualizza le relazioni tra di essi.
-
Diagramma della struttura composita: questo tipo di diagramma rappresenta essenzialmente il progetto per la struttura interna di un classificatore. Può essere utilizzato anche per mostrare il comportamento di una collaborazione o le interazioni del classificatore con il suo ambiente attraverso le porte. Permette di rappresentare facilmente i componenti interni di qualsiasi hardware per comprenderne a fondo il funzionamento interno.
-
Diagramma di distribuzione: questi diagrammi sono particolarmente utili per gli ingegneri di sistema e mostrano in genere prestazioni, scalabilità, manutenibilità e portabilità. Quando i componenti hardware vengono visualizzati in relazione tra loro, è più facile tenere traccia dell'intera rete hardware e assicurarsi che tutti gli elementi siano considerati in una distribuzione.
-
Diagramma degli oggetti: i diagrammi degli oggetti mostrano esempi di strutture di dati in un momento specifico. È possibile utilizzare un diagramma delle classi per mostrare una struttura e quindi utilizzare i diagrammi degli oggetti come casi di test per verificare la completezza del diagramma delle classi. Oppure si può creare un diagramma degli oggetti per scoprire informazioni sugli elementi del modello e sui relativi collegamenti.
-
Diagramma dei pacchetti: i diagrammi dei pacchetti vengono utilizzati per mostrare delle dipendenze tra i diversi pacchetti di un sistema. Un pacchetto, rappresentato come una cartella di file, organizza gli elementi del modello, come i casi d'uso o le classi, in gruppi. Esistono due tipi speciali di dipendenze definite tra i pacchetti: importazione di pacchetti (package import) e fusione di pacchetti (package merge).
-
Diagrammi di profilo: anche i diagrammi di profilo fanno parte dello standard UML e vengono utilizzati principalmente quando è necessario adattare l'UML a un dominio particolare. Aggiunti di recente in UML 2.0, i diagrammi di profilo sono unici e raramente utilizzati nelle specifiche. Un diagramma di profilo va inteso come un meccanismo di estensibilità per personalizzare i modelli UML per domini e piattaforme specifici.
Diagrammi UML comportamentali
-
Diagramma di attività: i diagrammi di attività sono utilizzati come alternativa ai diagrammi della macchina a stati. Visualizzano i passaggi eseguiti in un caso d'uso; le attività possono essere sequenziali, ramificate o concorrenti. Questo tipo di diagramma UML viene utilizzato per mostrare il comportamento dinamico di un sistema, ma può essere utile anche nella modellazione dei processi aziendali.
-
Diagramma di comunicazione: i diagrammi di comunicazione, precedentemente chiamati diagrammi di collaborazione, mostrano la relazione tra gli oggetti. Modellano il modo in cui gli oggetti si associano e si connettono tramite messaggi all'interno del design architettonico di un sistema. Possono anche mostrare scenari alternativi all'interno di casi d'uso o operazioni che richiedono la collaborazione di diversi oggetti e interazioni.
-
Diagramma di panoramica dell'interazione: questo diagramma offre una panoramica del flusso di controllo tra i nodi interagenti. Include nodi iniziali, nodi finali del flusso, nodi finali dell'attività, nodi di decisione, nodi di unione (merge), nodi di biforcazione (fork) e nodi di giunzione (join).
-
Diagramma di sequenza: un diagramma di sequenza, a volte chiamato diagramma degli eventi o scenario di eventi, mostra l'ordine in cui gli oggetti interagiscono. In questo modo è possibile rappresentare visivamente semplici scenari di runtime.
-
Diagramma di stato: i diagrammi di stato, in parole povere, rappresentano stati e transizioni. Uno stato si riferisce alle diverse combinazioni di informazioni che un oggetto può contenere, e questo diagramma UML può visualizzare tutti i possibili stati e il modo in cui l'oggetto passa da uno stato all'altro.
-
Diagramma temporale: spesso descritto come un diagramma di sequenza invertito, un diagramma temporale mostra come gli oggetti interagiscono tra loro in un determinato intervallo di tempo. Utilizza questi diagrammi per vedere quanto tempo richiede ogni fase di un processo e individuare le aree di miglioramento.
-
Diagramma dei casi d'uso: i diagrammi dei casi d'uso modellano il modo in cui gli utenti, visualizzati come figure stilizzate denominate "attori", interagiscono con il sistema. Questo tipo di diagramma UML dovrebbe essere una panoramica di alto livello delle relazioni tra attori e sistemi, per cui rappresenta un ottimo strumento per spiegare il sistema a un pubblico non tecnico.
Glossario dei termini UML
Familiarizza con il vocabolario UML grazie a questo elenco tratto dal documento UML 2.4.1, pensato per aiutare chi non è membro dell'OMG a comprendere i termini di uso comune.
-
Conformità alla sintassi astratta: gli utenti possono spostare i modelli tra strumenti diversi, anche se utilizzano notazioni differenti.
-
Common Warehouse Metamodel (CWM): interfacce standard utilizzate per consentire l'interscambio di metadati di data warehouse e business intelligence tra strumenti di data warehouse, piattaforme di data warehouse e repository di metadati di data warehouse in ambienti eterogenei distribuiti.
-
Conformità alla sintassi concreta: gli utenti possono continuare a utilizzare una notazione che conoscono su strumenti diversi.
-
Core: nel contesto dell'UML, il core si riferisce solitamente al "pacchetto core", ossia un meta-modello completo progettato specificamente per un'elevata riutilizzabilità.
-
Language unit: consiste in una raccolta di concetti di modellazione strettamente accoppiati che offrono dagli utenti la possibilità di rappresentare aspetti del sistema in esame secondo un particolare paradigma o formalismo.
-
Livello 0 (L0): livello minimo di conformità per l'infrastruttura UML, un'unica unità linguistica che consente di modellare i tipi di strutture basate su classi riscontrabili nei linguaggi di programmazione orientati agli oggetti più diffusi.
-
Meta Object Facility (MOF): una specifica di modellazione OMG che fornisce la base per le definizioni dei meta-modelli nella famiglia di linguaggi MDA di OMG.
-
Meta-modello: definisce il linguaggio e i processi a partire dai quali formare un modello.
-
Costrutti di meta-modello (LM): secondo livello di conformità nell'infrastruttura UML, un'unità linguistica aggiuntiva per strutture avanzate basate su classi utilizzate per la costruzione di meta-modelli (utilizzando CMOF) come l'UML stesso. L'UML ha solo due livelli di conformità.
-
Model Driven Architecture (MDA): un approccio e un piano per ottenere un insieme coeso di specifiche tecnologiche guidate dai modelli.
-
Object Constraint Language (OCL): un linguaggio dichiarativo per descruire le regole applicate all'Unified Modeling Language. L'OCL integra l'UML fornendo termini e simboli di diagrammi di flusso più precisi rispetto al linguaggio naturale, ma meno difficili da padroneggiare rispetto alla matematica.
-
Object Management Group (OMG): un consorzio di specifiche del settore informatico senza scopo di lucro i cui membri definiscono e mantengono la specifica UML.
-
UML 1: prima versione dell'Unified Modeling Language.
-
Unified Modeling Language (UML): un linguaggio visivo per specificare, costruire e documentare gli artefatti dei sistemi.
-
XMI: una specifica basata su XML dei formati di interscambio di modelli corrispondenti.
Concetti di modellazione specificati dall'UML
Lo sviluppo del sistema si concentra su tre modelli di sistema complessivi differenti:
- Funzionale: si tratta dei diagrammi dei casi d'uso, che descrivono le funzionalità del sistema dal punto di vista dell'utente.
- Oggetto: si tratta dei diagrammi delle classi, che descrivono la struttura del sistema in termini di oggetti, attributi, associazioni e operazioni.
- Dinamico: i diagrammi di interazione, i diagrammi della macchina a stati e i diagrammi di attività vengono utilizzati per descrivere il comportamento interno del sistema.
Questi modelli di sistema sono visualizzati attraverso due diversi tipi di diagrammi: strutturali e comportamentali.
Concetti orientati agli oggetti nell'UML
Gli oggetti nell'UML sono entità del mondo reale che esistono intorno a noi. Nello sviluppo software, gli oggetti possono essere utilizzati per descrivere, o modellare, il sistema in corso di creazione in termini rilevanti per il dominio. Gli oggetti consentono inoltre di scomporre sistemi complessi in componenti comprensibili, permettendo di costruire un pezzo alla volta.
Ecco alcuni concetti fondamentali del mondo orientato agli oggetti:
- Oggetti: rappresentano un'entità e l'elemento costruttivo di base
- Classe: modello di un oggetto.
- Astrazione: comportamento di un'entità del mondo reale
- Incapsulamento: meccanismo per legare insieme i dati e nasconderli al mondo esterno
- Ereditarietà: meccanismo per creare nuove classi a partire da una già esistente
- Polimorfismo: definisce il meccanismo per esistere in forme diverse
Nei team moderni, in particolare in quelli che praticano metodologie Agile, questi concetti orientati agli oggetti sono spesso più facili da comunicare quando i diagrammi sono trattati come "documentazione principale" e aggiornati insieme al codice, anziché essere creati una sola volta e lasciati diventare obsoleti.
Perché i team utilizzano ancora i diagrammi UML (specialmente in Agile)
Se hai ricevuto una formazione formale sulla programmazione, probabilmente ti sarai imbattuto nei diagrammi UML a scuola. Ma quanto li hai usati dopo quel momento? Poiché i diagrammi UML richiedono un certo tempo per essere creati e diventano obsoleti abbastanza rapidamente in un ambiente Agile, molti sviluppatori di software se ne sono dimenticati.
Questa preoccupazione è fondata: i diagrammi che non si evolvono con il progetto perdono rapidamente valore. Ma se mantenuto aggiornato, l'UML può velocizzare lo sviluppo e rendere più chiara la comunicazione. Sebbene molti ingegneri temano i diagrammi, questi ultimi sono utili in un ambiente di sviluppo Agile, in quanto mantengono lo sviluppo produttivo e mirato. Invece di pensarli come un semplice elemento "bello da avere", tratta i diagrammi UML como aspetti centrali della documentazione.
I diagrammi UML possono aiutare i team di ingegneria a:
-
Inserire rapidamente nuovi membri del team o sviluppatori che cambiano team.
-
Esplorare il codice sorgente.
-
Pianificare nuove funzionalità prima dell'inizio della programmazione.
-
Comunicare più facilmente con un pubblico tecnico e non tecnico.
Tuttavia, i diagrammi che non si evolvono con un progetto sono inutili, quindi è necessario disporre di diagrammi in costante evoluzione. Un modo in cui i team riducono l'onere di manutenzione è generare diagrammi da input più leggeri (ad esempio, definizioni basate su testo), in modo che la documentazione rimanga flessibile al variare del sistema. Lucidchart può generare diagrammi di sequenza UML a partire da markup testuali, rendendo la diagrammazione automatica ed elastica.
Come creare un diagramma UML
I diagrammi UML seguono un insieme specifico di regole e forme e si potrebbe dedicare una notevole quantità di tempo a imparare come creare correttamente ciascun tipo. Fortunatamente, ti abbiamo facilitato il compito con tutorial semplici, a partire dai diagrammi delle classi, che ti guidano passo dopo passo nel processo.
Indipendentemente dagli strumenti, il flusso di lavoro pratico è coerente: scegli il tipo di diagramma corrispondente alla tua esigenza (struttura vs. comportamento), modella solo ciò di cui hai bisogno per il pubblico attuale e rivedi il diagramma al variare del codice e dei requisiti. Sia che tu stia mappando l'architettura statica di un nuovo sistema software o visualizzando le interazioni dinamiche degli utenti, segui questi passaggi per creare un modello efficace:
1. Definisci il tuo obiettivo
Determina esattamente cosa devi visualizzare. Chiediti se devi mappare la struttura statica di un sistema (strutturale) o mostrare come i componenti interagiscono e cambiano nel tempo (comportamentale).
2. Scegli il tipo di diagramma corretto
In base ai requisiti del tuo sistema, seleziona il diagramma UML appropriato. Ad esempio, usa un diagramma delle classi per la struttura di un sistema orientato agli oggetti, un diagramma di sequenza per le interazioni ordinate nel tempo o un diagramma dei casi d'uso per illustrare le funzionalità dell'utente. (Suggerimento: iniziare con uno dei modelli UML predefiniti di Lucidchart è il modo più rapido per cominciare).
3. Abilita le librerie di forme UML
Poiché l'UML utilizza un vocabolario visivo rigoroso, hai bisogno dei simboli corretti. In Lucidchart, fai clic su "Altre forme" in fondo al menu a sinistra, cerca "UML" e seleziona le caselle relative alle librerie di forme specifiche di cui hai bisogno (ad es. classe UML, stato UML, sequenza UML).
4. Aggiungi e definisci le tue forme
Trascina e rilascia entità, oggetti, nodi o attori nell'area di lavoro. Disponili in modo logico e fai doppio clic all'interno delle forme per aggiungere testo personalizzato, attributi specifici e operazioni ai tuoi oggetti.
5. Connetti i tuoi componenti
Stabilisci le relazioni tra le tue entità tracciando delle linee tra di esse. Personalizza i punti finali delle linee (frecce, rombi, ecc.) per riflettere accuratamente le relazioni UML specifiche, come ereditarietà, composizione, dipendenze o associazioni di base.
6. Rivedi e collabora
L'UML è progettato per fungere da linguaggio condiviso tra sviluppatori, ingegneri e stakeholder aziendali. Una volta creato il diagramma, utilizza le funzionalità di collaborazione in tempo reale di Lucidchart per invitare il tuo team a rivedere l'architettura, lasciare commenti e finalizzare il progetto grafico.
Diventa un evangelista dell'UML
A volte non basta essere gli unici a sostenere l'uso dei diagrammi UML. Dopotutto, in qualità di sviluppatore software, di solito lavori in team ed è importante coinvolgere anche tutti gli altri.
Se il tuo team è riluttante a integrare i diagrammi UML nel processo di sviluppo, proponi di utilizzarli inizialmente per un solo progetto. Una volta che il team avrà visto i vantaggi che i diagrammi UML apportano alla documentazione, sarà più propenso a renderli un passaggio necessario.
Inoltre, con Lucidchart, i diagrammi UML non sono un obbligo: sono una risorsa.

Tutto ciò di cui hai bisogno per creare un diagramma
Crea un diagramma curato e professionale gratuitamente con Lucidchart. Indipendentemente da ciò che hai in mente, abbiamo gli strumenti necessari per realizzarlo. Crea un account e inizia a creare diagrammi oggi stesso.
Iscriviti gratis



