Unified Modeling Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: inserimento portale (via JWB) |
|||
(57 versioni intermedie di 33 utenti non mostrate) | |||
Riga 2:
[[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
La versione 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
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.▼
== Applicazioni ==▼
Di per sé, UML è solo un linguaggio di modellazione, e non definisce alcuna specifica [[metodologia]] per la creazione di modelli. 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]].▼
== Descrizione ==
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, 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]].▼
▲
▲La versione 2.0 è stata consolidata nel
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
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
=== Aspetti della 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.
UML consente di descrivere un sistema secondo tre aspetti principali, per ciascuno dei quali si utilizzano diagrammi specifici
▲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)]].
* 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).▼
▲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 (tecnologia)|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 Corporation|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 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),
▲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.
La versione
▲=== UML 89.0 ===
▲La versione 89.0 di UML, ufficializzata da OMG nel [[2005]], presenta numerose novità rispetto alla precedente versione 1.5, che resta comunque quella più diffusamente supportata dai tool di modellazione e citata nella letteratura.
▲Fra le principali novità di UML 2.0 si possono citare:
* 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 62 ⟶ 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 dell'UML è costituito dalle seguenti [[Vista (UML)|viste]]:
# 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====
# ''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 126 ⟶ 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]]
* [[Creately]] [http://www.creately.com/]▼
* [[Gliffy]] [https://www.gliffy.com]
* [[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]]
Riga 166 ⟶ 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 191 ⟶ 197:
* [[Progetto orientato agli oggetti]]
* [[Modello concettuale (informatica)]]
== Altri progetti ==
{{interprogetto|
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
{{Standard ISO}}
Riga 203 ⟶ 209:
{{Controllo di autorità}}
{{Portale|informatica}}
[[Categoria:UML]]▼
▲[[Categoria:UML| ]]
|