Unified Modeling Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: fix citazione web (v. discussione) |
m Bot: inserimento portale (via JWB) |
||
(85 versioni intermedie di 53 utenti non mostrate) | |||
Riga 1:
{{Nota disambigua||UML (disambigua)|UML}}
[[File:UML logo.svg|frameless|right]]
[[File:UML Diagrams.jpg|thumb|upright=1.4|Raccolta di diagrammi UML]]
In [[ingegneria del software]], '''UML''' (''
== Storia ==▼
L'UML svolge un'importantissima funzione di "[[lingua franca]]" nella comunità della progettazione e programmazione a oggetti. Gran parte della letteratura di settore usa UML per descrivere soluzioni analitiche e progettuali in modo sintetico e comprensibile a un vasto pubblico.▼
I linguaggi per la modellazione
Fra
L'ultima versione del linguaggio, la 2.0, è stata consolidata nel [[2004]] e ufficializzata da OMG nel [[2005]]. UML 2.0 riorganizza molti degli elementi della versione precedente (1.5) in un quadro di riferimento ampliato e introduce molti nuovi strumenti, inclusi alcuni nuovi tipi di diagrammi. Sebbene OMG indichi UML 2.0 come la versione "corrente" del linguaggio, la transizione è di fatto ancora in corso; le stesse specifiche pubblicate da OMG sono ancora non completamente aggiornate e il supporto dei tool a UML 2.0 è, nella maggior parte dei casi, appena abbozzato.▼
Mentre "i tres amigos" operavano per unificare i propri approcci all'analisi e alla progettazione a oggetti, il progetto fu accolto sotto l'egida dell'[[Object Management Group|OMG (Object Management Group)]], un consorzio fondato con l'obiettivo di creare e gestire [[Norma tecnica|standard]] nel contesto dello sviluppo del software a oggetti. Nel
== Applicazioni ==▼
Di per sé, UML è solo un linguaggio di modellazione, e non definisce alcuna specifica [[metodologia]] per la creazione di modelli (o alcun [[processo software]]). UML può quindi essere utilizzato nel contesto di diversi approcci metodologici. La OMG gestisce uno standard metodologico, correlato a UML ma proposto come specifica indipendente, detto [[Rational Unified Process|RUP]].▼
La release 1.1 di UML contribuì a consolidare la semantica del linguaggio e incluse elementi tratti da una proposta avanzata indipendentemente all'OMG da un gruppo composto da [[IBM]], [[ObjectTime]], [[Ptech]] e altre.▼
UML consente di costruire [[modello|modelli]] object-oriented per rappresentare ''domini'' di diverso genere. Nel contesto dell'ingegneria del software, viene usato soprattutto per descrivere il dominio applicativo di un [[sistema software]] e/o il comportamento e la struttura del sistema stesso. Il modello è strutturato secondo un insieme di viste che rappresentano diversi aspetti della cosa modellata (funzionamento, struttura, comportamento, e così via), sia a scopo di [[analisi (ingegneria del software)|analisi]] che di [[progetto (ingegneria del software)|progetto]], mantenendo la [[tracciabilità (informatica)|tracciabilità]] dei concetti impiegati nelle diverse viste. Oltre che per la modellazione di sistemi software, UML viene non di rado impiegato per descrivere domini di altri tipi, come sistemi [[hardware]], strutture organizzative aziendali, [[processo di business|processi di business]].▼
== Descrizione ==
Lo standard UML, gestito da OMG, definisce una sintassi e delle regole di interpretazione; non si tratta quindi di una [[metodologia]] di progettazione e per questo motivo può essere adottato con diverse metodologie o in ambiti diversi da quello informatico.▼
▲
▲
== Caratteristiche generali ==▼
La notazione UML è semi-grafica e [[Linguaggio formale|semi-formale]]; un modello UML è costituito da una collezione organizzata di [[diagramma|diagrammi]] correlati, costruiti componendo elementi grafici (con significato formalmente definito), elementi testuali formali, ed elementi di testo libero. Ha una [[semantica (informatica)|semantica]] molto precisa e un grande potere descrittivo.▼
▲=== Caratteristiche generali ===
Il linguaggio è stato progettato con l'obiettivo esplicito di facilitare il supporto software alla costruzione di modelli e l'integrazione di questo supporto con gli [[Integrated development environment|ambienti integrati di sviluppo]]. OMG, in particolare, gestisce una famiglia di standard correlata a UML, detta [[Model Driven Architecture]] (MDA), che ha lo scopo di fornire le fondamenta concettuali e semantiche per lo sviluppo di ambienti evoluti di ''[[round-trip engineering]]'' in cui la modellazione UML, in qualche misura, possa sostituire di fatto la programmazione tradizionale. Sebbene questo obiettivo sia ancora da raggiungere, molti [[Integrated development environment|IDE]] comprendono strumenti di modellazione in UML e forniscono meccanismi automatici di traduzione parziale dei diagrammi UML in [[codice sorgente|codice]] e viceversa. Viceversa, molti ambienti software dedicati alla modellazione in UML consentono di generare codice in diversi linguaggi.▼
▲La notazione UML è semi-grafica e [[Linguaggio formale|semi-formale]]; un modello UML è costituito da una collezione organizzata di [[diagramma|diagrammi]] correlati, costruiti componendo elementi grafici
▲Il linguaggio è stato progettato con l'obiettivo esplicito di facilitare il supporto software alla costruzione di modelli e l'integrazione di questo supporto con gli [[Integrated development environment|ambienti integrati di sviluppo]].
UML è un linguaggio di modellazione ''general purpose'', che fornisce concetti e strumenti applicabili in tutti i contesti. Poiché particolari domini applicativi o famiglie di applicazioni potrebbero aver bisogno di concetti ulteriori e specifici, UML fornisce un meccanismo standard che consente di estendere il linguaggio. Una estensione di UML per un particolare contesto viene detta un [[profilo UML]].▼
▲UML è un linguaggio di modellazione
▲== Storia ==
▲I linguaggi per la modellazione object-oriented iniziarono a svilupparsi in diversi contesti a partire dagli [[anni 1980|anni ottanta]]. Si trattava di notazioni di varia natura, che consentivano di descrivere la struttura di un sistema software a oggetti (in termini di [[classe (informatica)|classi]] e relazioni fra classi) ed eventualmente il suo comportamento dinamico. La proliferazione di queste notazioni diede luogo a quelle che furono poi battezzate "guerre dei metodi" (''method wars''), con diversi progettisti, o organizzazioni, che adottavano e sostenevano una particolare notazione a scapito di altre adottate altrove. Intorno alla metà degli [[anni 1990|anni novanta]] diversi metodi e linguaggi iniziarono a fondersi, e si iniziò a delineare la possibilità di una integrazione dei principali formalismi in una notazione universalmente accettabile.
=== Aspetti della modellazione ===▼
▲Fra le metodologie e le notazioni più apprezzate e diffuse del periodo spiccavano [[Object Modeling Technique|OMT (Object Modeling Technique)]] di [[Jim Rumbaugh]], e il cosiddetto metodo [[Booch]] di [[Grady Booch]], entrambi ricercatori presso [[Rational Software]]. Il lavoro di unificazione iniziò con loro; in seguito si unì a questo sforzo Jacobson con la sua [[software house]] [[Objectory]]. Il primo risultato congiunto di questo ''team'' fu [[OOSE|OOSE (Object Oriented Software Engineering)]].
UML consente di descrivere un sistema secondo tre aspetti principali, per ciascuno dei quali si utilizzano diagrammi specifici
▲Mentre "i tres amigos" operavano per unificare i propri approcci all'analisi e alla progettazione a oggetti, il progetto fu accolto sotto l'egida dell'[[Object Management Group|OMG (Object Management Group)]], un consorzio fondato con l'obiettivo di creare e gestire [[standard]] nel contesto dello sviluppo del software a oggetti. Nel [[1995]], l'OMG raccolse tutti i principali metodologisti del settore in un incontro internazionale per discutere della notazione unificata. Nel [[1996]] l'OMG emise una [[Request for proposal|RFP (Request for Proposal)]] per tale notazione. Nello stesso anno, Booch, Rumbaugh e Jacobson misero a punto le ''[[release (informatica)|release]]'' 0.9 e 0.91 di UML. Il progetto fu ben accolto dalla comunità internazionale e innumerevoli grandi organizzazioni si unirono a Rational per proseguirlo (per esempio [[Digital]], [[Hewlett-Packard]], [[IBM]], [[Microsoft]], [[Oracle]] e [[Unisys]]). Questo gruppo esteso realizzò, nel [[1997]], UML 1.0, che fu sottoposto alla OMG come risposta alla RFP dell'anno precedente.
* il [[modello funzionale]] (''functional model'') rappresenta il sistema dal punto di vista dell'utente, ovvero ne descrive il suo comportamento così come esso è percepito all'esterno, prescindendo dal suo funzionamento interno. Questo tipo di modellazione corrisponde, in [[ingegneria del software]], all'[[analisi dei requisiti]]. La modellazione funzionale utilizza gli ''[[Use Case Diagram]]'' (diagrammi dei casi d'uso).▼
▲La release 1.1 di UML contribuì a consolidare la semantica del linguaggio e incluse elementi tratti da una proposta avanzata indipendentemente all'OMG da un gruppo composto da [[IBM]], [[ObjectTime]], [[Ptech]] e altre.
* il modello a oggetti (''object model'') rappresenta la struttura e sottostruttura del sistema utilizzando i concetti ''object-oriented'' di [[Classe (informatica)|classe]], [[Oggetto (informatica)|oggetto]], le relazioni fra classi e fra oggetti. In ingegneria del software, questo tipo di modellazione può essere utilizzata sia nella fase di [[analisi del dominio]]
* il modello dinamico (''dynamic model'') rappresenta il comportamento degli oggetti del sistema, ovvero la loro evoluzione nel tempo e le dinamiche delle loro interazioni. È strettamente legato al modello a oggetti e viene impiegato negli stessi casi. Utilizza i ''[[sequence diagram]]'' (diagrammi di sequenza),
=== UML 2.0 ===
La versione 2.0 di UML, ufficializzata da OMG nel
Fra le principali novità di UML 2.0
* ampliamento, razionalizzazione e revisione del metamodello, inclusa una definizione più rigorosa del concetto di [[stereotipo (UML)|stereotipo]] e dei meccanismi di estensione ([[profilo UML|profili]])
* introduzione del linguaggio formale [[Object Constraint Language|OCL]] come parte integrante di UML
* numerosi nuovi elementi per la costruzione dei diagrammi tradizionali
* alcuni nuovi tipi di diagrammi:
**
** [[Package Diagram]]
** [[Interaction Overview Diagram]]
** [[Timing Diagram|Diagramma temporale]]
* supporto per l'approccio [[
Alcuni elementi di modello e diagrammi hanno cambiato nome; per esempio, i
▲=== Applicazioni ===
▲== Aspetti della modellazione ==
▲
▲UML consente di costruire [[modello software|modelli]] object-oriented per rappresentare ''domini'' di diverso genere. Nel contesto dell'ingegneria del software, viene usato soprattutto per descrivere il dominio applicativo di un [[sistema software]] e/o il comportamento e la struttura del sistema stesso. Il modello è strutturato secondo un insieme di viste che rappresentano diversi aspetti della cosa modellata (funzionamento, struttura, comportamento
▲UML consente di descrivere un sistema secondo tre aspetti principali, per ciascuno dei quali si utilizzano diagrammi specifici (che possono poi essere messi in relazione fra loro):
▲Lo standard UML, gestito da OMG, definisce una sintassi e delle regole di interpretazione; non si tratta quindi di
▲* il [[modello funzionale]] (''functional model'') rappresenta il sistema dal punto di vista dell'utente, ovvero ne descrive il suo comportamento così come esso è percepito all'esterno, prescindendo dal suo funzionamento interno. Questo tipo di modellazione corrisponde, in [[ingegneria del software]], all'[[analisi dei requisiti]]. La modellazione funzionale utilizza gli ''[[Use Case Diagram]]'' (diagrammi dei casi d'uso).
▲* il modello a oggetti (''object model'') rappresenta la struttura e sottostruttura del sistema utilizzando i concetti ''object-oriented'' di [[Classe (informatica)|classe]], [[Oggetto (informatica)|oggetto]], le relazioni fra classi e fra oggetti. In ingegneria del software, questo tipo di modellazione può essere utilizzata sia nella fase di [[analisi del dominio]] che nelle varie fasi di [[progetto (ingegneria del software)|progetto]] a diversi livelli di dettaglio. Utilizza ''[[class diagram]]'' (diagrammi delle classi), ''[[object diagram]]'' (diagrammi degli oggetti), e ''[[deployment diagram]]'' (diagrammi di sviluppo).
▲* il modello dinamico (''dynamic model'') rappresenta il comportamento degli oggetti del sistema, ovvero la loro evoluzione nel tempo e le dinamiche delle loro interazioni. È strettamente legato al modello a oggetti e viene impiegato negli stessi casi. Utilizza i ''[[sequence diagram]]'' (diagrammi di sequenza), gli ''[[activity diagram]]'' (diagrammi delle attività) e gli ''[[statechart diagram]]'' (diagrammi degli stati).
== Struttura di un modello UML ==
Riga 59 ⟶ 61:
# Viste: mostrano i diversi aspetti del sistema per mezzo di un insieme di diagrammi.
# Diagrammi: permettono di descrivere graficamente le viste logiche.
# Elementi del modello: concetti che permettono di realizzare vari diagrammi (es. attori, classi,
=== Le Viste ===
Lo strato più esterno
# Vista dei casi d'uso (
# Vista di progettazione (
# Vista di implementazione (
# Vista dei processi (
# Vista di sviluppo (
=== I diagrammi classici (UML 1.x) ===
==== Diagramma dei casi d'uso ====
{{Vedi anche|
I diagrammi dei casi d'uso (UCD) modellano il ''comportamento esterno'' di un [[sistema]] in termini delle [[Funzione (informatica)|funzioni]] che esso mette a disposizione agli [[
====
{{Vedi anche|
====
{{Vedi anche|
====
{{Vedi anche|
====
{{Vedi anche|
====
{{Vedi anche|
====
{{Vedi anche|Diagramma di comunicazione}}
<small>'''Nota''': questo tipo di diagramma si chiamava "
====
{{Vedi anche|
====
{{Vedi anche|
====Relazioni fra diagrammi====
Il diagramma delle classi e i diagrammi di interazione vengono usati per modellare la realizzazione dei casi d'uso, mentre il diagramma dei componenti e quello di ''deployment'' permettono di specificare l'architettura di sistema che dovrà implementare i casi d'uso. Un ruolo specifico può essere svolto dai diagrammi di stato e di attività. È possibile utilizzare un diagramma di stato per rappresentare l'evoluzione degli stati, cioè delle condizioni in cui il sistema si può trovare durante l'esecuzione del caso d'uso. Inoltre è possibile rappresentare la sequenza dei passi e le condizioni che specificano uno o più scenari del caso d'uso con un diagramma di attività. I diagrammi UML permettono la modellazione della struttura statica e del comportamento dinamico di un sistema. Il sistema è rappresentato come un insieme di oggetti (moduli software) che collaborano e reagiscono a eventi esterni per eseguire attività a beneficio dei clienti (utilizzatori). Certi modelli UML enfatizzano alcuni aspetti del sistema e ne ignorano altri che possono essere evidenziati da altri modelli. Insieme, tutti i modelli forniscono una descrizione completa del sistema e possono essere classificati in tre gruppi:
# ''modelli dello stato'' (vista statica): descrivono le strutture statiche dei dati
# ''modelli del comportamento'' (vista operativa): descrivono la collaborazione tra oggetti. Ci sono molte tecniche di visualizzazione per la modellazione del comportamento, come il diagramma dei casi d'uso, il diagramma di sequenza, il diagramma di collaborazione e il diagramma di attività;
# ''modelli del cambiamento di stato'' (vista dinamica): descrivono gli stati permessi dal sistema nel tempo. La prima tecnica di visualizzazione è il diagramma degli stati, basato su un modello di evoluzione degli stati di un oggetto.
===
==== Package Diagram ====
Riga 133 ⟶ 125:
=== Estendibilità e profili ===
UML include tre meccanismi che consentono l'estensione della sua [[sintassi]] e della sua [[semantica]] da parte dell'utente: ''[[stereotipo (UML)|stereotipi]]'', ''[[tagged value]]
==
Esistono moltissimi strumenti software per la modellazione in UML
=== Strumenti
Si riportano qui alcuni strumenti [[
* [[ArgoUML]] [https://web.archive.org/web/20000607173157/http://argouml.tigris.org/] –
* [[Atlas Transformation Language|ATL]] [https://web.archive.org/web/20060411081917/http://www.sciences.univ-nantes.fr/lina/atl/]
*
* [[Dia (software)|Dia]] [http://dia-installer.de/] – uno strumento per creare diagrammi [[GTK+]]/[[GNOME]] che supporta anche UML [http://www.aarontrevena.co.uk/opensource/autodia/].
* [[Draw.io]] [https://www.draw.io/] - software di diagramma uml online gratuito.
* [[Eclipse (informatica)|Eclipse]] – con lo Eclipse Modeling Framework (EMF) e UML 2.0
* [[Fujaba]] [https://web.archive.org/web/20060207103104/http://wwwcs.uni-paderborn.de/cs/fujaba/] – piattaforma di sviluppo UML/Java; ne esiste una versione per Eclipse.
* [[Gaphor]] [https://gaphor.org/] - Programma in Python per UML, SysML, RAAML e modelli C4.
* [[GitMind]] [https://gitmind.com/it/] - esempi di diagrammi uml pronti all'uso gratuiti.
* [[MonoUML]] – progetto basato sulla piattaforma [[Mono (progetto)|Mono]], GTK+ e [[ExpertCoder]].
* [[NetBeans]] [http://uml.netbeans.org/] – plugin per l'ambiente NetBeans di Sun (non più disponibile da netbeans 6.7 in poi)
* [[StarUML]] [
* [[Umbrello UML Modeller]] – componente del [[KDE]].
* [[UML Pad]] [http://web.tiscali.it/ggbhome/umlpad/umlpad.htm] –
* [[UMLet]] [http://www.umlet.com/] –
* Violet UML Editor [http://alexdp.free.fr/violetumleditor/page.php <nowiki>[21]</nowiki>]
=== Strumenti
Si riportano [[software proprietario|strumenti proprietari]] per la modellazione UML.
* [[Altova UModel 2005]] [http://www.altova.com/products_umodel.html]
* [[ARTiSAN Studio]] [http://www.artisansw.it]
* [[Borland Together]]
* [[Cadifra UML Editor]]
* [[
* [[I-Logix Rhapsody]] [https://web.archive.org/web/20040630065716/http://www.ilogix.com/rhapsody/rhapsody.cfm]
* [[Jude (applicazione)|Jude]]
* [[NoMagic MagicDraw]] [http://www.magicdraw.com]
* [[Lucidchart]] [https://www.lucidchart.com/]
* [[Modelistic JME]]
* [[Microsoft Visio]]
* [[Objecteering/UML]] [https://web.archive.org/web/20060206023347/http://www.objecteering.com/products.php]
* [[OmniGraffle]]
* [[Poseidon for UML]]
Riga 172 ⟶ 171:
* [[SMARTDRAW]] [http://www.smartdraw.com/]
* [[Sparx Enterprise Architect]]
* [[Select Component Factory]] [http://www.selectbs.com/downloads/downloads.htm] {{Webarchive|url=https://web.archive.org/web/20060412022759/http://www.selectbs.com/downloads/downloads.htm |date=12 aprile 2006 }}
* [[Software Ideas Modeler]] [https://www.softwareideas.net]
* [[swREUSER]]
* [[Telelogic System Architect]] [https://web.archive.org/web/20051107232824/http://www.popkin.com/products/system_architect.htm]
* [[Unimodeler]] [http://www.unimodeler.com] {{Webarchive|url=https://web.archive.org/web/20041206025323/http://www.unimodeler.com/ |date=6 dicembre 2004 }}
* [[Visual Paradigm]] [
▲* [[Creately]] [http://www.creately.com/]
== Bibliografia ==
* {{RivistaVG|mc|180|126-128|1|1998|titolo=UML, ovvero verso lo standard}}
*
*
*
* {{en}} [[Martin Fowler]], ''Uml Distilled: Applying the Standard Object Modeling Language'', Addison-Wesley 2003 (tratta UML 2.0)
* {{en}} [[Craig Larman]]
* {{en}} [[Robert C. Martin]]
== Voci correlate ==
Riga 197:
* [[Progetto orientato agli oggetti]]
* [[Modello concettuale (informatica)]]
== Altri progetti ==
{{interprogetto|
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
{{Standard ISO}}
Riga 210 ⟶ 209:
{{Controllo di autorità}}
{{Portale|informatica}}
[[Categoria:UML|*]]▼
|