Unified Modeling Language: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Link a voce Use Case Diagram
AdertBot (discussione | contributi)
m Sistemazione posizione template {{Vedi anche}}
 
(309 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{Nota disambigua||UML (disambigua)|UML}}
L''''UML''', '''Unified Modeling Language''', è un linguaggio grafico usato, di solito ma non necessariamente, nell'ambito della progettazione [[software]].
[[File:UML logo.svg|frameless|right]]
[[File:UML Diagrams.jpg|thumb|upright=1.4|Raccolta di diagrammi UML]]
In [[ingegneria del software]], '''UML''' (''Unified Modeling Language'', "linguaggio di modellizzazione unificato") è un [[linguaggio di modellazione]] e [[linguaggio di specifica|di specifica]] basato sul [[paradigma object-oriented|paradigma orientato agli oggetti]]. Il nucleo del linguaggio fu definito nel 1996 da [[Grady Booch]], [[Jim Rumbaugh]] e [[Ivar Jacobson]] (detti "i tre amigos") sotto l'egida dell'[[Object Management Group|Object Management Group (OMG)]], consorzio che tuttora gestisce lo standard UML.
 
== Storia ==
L'UML è un linguaggio che 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.
I linguaggi per la modellazione orientata agli oggetti 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.
 
Fra i metodi e le notazioni più apprezzati e diffusi 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 [[casa di sviluppo]] [[Objectory]]. Il primo risultato congiunto di questo ''team'' fu [[OOSE|OOSE (Object Oriented Software Engineering)]].
Nell'ambito della progettazione [[software]] è utilizzato per progettare e documentare un'applicazione ( un programma ) a diversi livelli di dettaglio e per diverse prospettive.
 
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 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 questa 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]]. Nel 1997 questo gruppo esteso realizzò UML 1.0 che fu sottoposto alla OMG come risposta alla RFP dell'anno precedente.
L'UML si basa sul disegno grafico di diagrammi; questi si possono dividere in diagrammi statici e diagrammi dinamici.
 
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.
I diagrammi di tipo statico danno una visione statica e strutturale del sistema che si sta descrivendo o progettando, mentre quelli dinamici cercano di coglierne gli aspetti evolutivi.
 
== Descrizione ==
I diagrammi di tipo statico previsti dall'UML sono gli [[Use_Case_Diagram|Use Case Diagram]], Class Diagram, Object Diagram, Component Diagram, Deployment Diagram.
Il linguaggio nacque con l'intento di unificare approcci precedenti, dovuti ai tre padri di UML e altri, raccogliendo le [[best practice|migliori prassi]] nel settore e definendo così uno [[industria del software|standard industriale]] unificato. 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.
 
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 [[Object Management Group|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. L'ultima versione è la 2.5, finalizzata nel 2013.
I diagrammi di tipo dinamico previsti dall'UML sono Statechart Diagram, Activity Diagram, Sequence Diagram, Collaboration Diagram.
 
=== Caratteristiche generali ===
Essendo un linguaggio e non una metodologia è buona regola utilizzano solo quei diagrammi che risultano utili alla definizione dello specifico sistema che si vuole analizzare; non è quindi obbligatorio utilizzare tutti i diagrammi previsti dall'UML per la descrizione di un sistema.
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.
 
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]]. In particolare, OMG 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 possa sostituire di fatto la programmazione tradizionale in qualche misura. Sebbene questo obiettivo sia ancora da raggiungere, molti [[Ambiente di sviluppo integrato|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.
==Voci correlate==
 
*[http://www.uml.org Sito ufficiale dell'UML]
UML è un linguaggio di modellazione generale 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. Un'estensione di UML per un particolare contesto viene detta un [[profilo UML]].
 
=== Aspetti della modellazione ===
 
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:
 
* 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]] sia 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), i [[Diagramma di attività|diagrammi delle attività]] e gli ''[[statechart diagram]]'' (diagrammi degli stati).
 
=== UML 2.0 ===
La versione 2.0 di UML, ufficializzata da OMG nel 2005, presenta numerose novità rispetto alla precedente versione 1.5, che resta comunque quella più diffusamente supportata dagli strumenti di modellazione e citata nella letteratura.
 
Fra le principali novità di UML 2.0 vi sono:
* 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:
**[[Composite Structure Diagram]]
** [[Package Diagram]]
** [[Interaction Overview Diagram]]
** [[Timing Diagram|Diagramma temporale]]
* supporto per l'approccio [[architettura guidata dal modello]]
 
Alcuni elementi di modello e diagrammi hanno cambiato nome; per esempio, i ''collaboration diagram'' si chiamano ora ''communication diagram''.
 
=== Applicazioni ===
UML non definisce alcuno specifico metodo per la creazione di modelli. UML può quindi essere utilizzato nel contesto di diversi approcci. La OMG gestisce un metodo standard correlato a UML, ma proposto come specifica indipendente, detto [[Rational Unified Process|RUP]].
 
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), a scopo sia di [[analisi (ingegneria del software)|analisi]] sia 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 spesso impiegato per descrivere domini di altri tipi come sistemi [[hardware]], strutture organizzative aziendali, [[processo di business|processi di business]].
 
Lo standard UML, gestito da OMG, definisce una sintassi e delle regole di interpretazione; non si tratta quindi di un metodo di progettazione e per questo motivo può essere adottato con diversi metodi o in ambiti diversi da quello informatico.
 
== Struttura di un modello UML ==
 
Un modello UML è costituito da:
# 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, ''package'', oggetti, e così via).
 
=== Le Viste ===
Lo strato più esterno dell'UML è costituito dalle seguenti [[Vista (UML)|viste]]:
# Vista dei casi d'uso (''use case view'') utilizzata per analizzare i requisiti utente. Obiettivo di questo livello di analisi è studiare il sistema considerandolo come una scatola nera. È necessario concentrarsi su cosa il sistema deve fare astraendosi il più possibile dal come: è necessario individuare tutti gli attori, i casi d'uso e le relative associazioni. Importante è dettagliare i requisiti del cliente, capirne i desideri più o meno consapevoli, cercare di prevedere i possibili sviluppi futuri, ecc.
# Vista di progettazione (''design view'') descrive come le funzionalità del sistema devono essere realizzate; in altre parole analizza il sistema dall'interno (scatola trasparente).
# Vista di implementazione (''implementation view'') descrive i package, le classi e le reciproche dipendenze.
# Vista dei processi (''process view'') individua i processi e le entità che li eseguono sia per un utilizzo efficace delle risorse, sia per poter stabilire l'esecuzione parallela degli oggetti.
# Vista di sviluppo (''deployment view'') mostra l'architettura fisica del sistema e definisce la posizione delle componenti software nella struttura stessa.
 
=== I diagrammi classici (UML 1.x) ===
 
==== Diagramma dei casi d'uso ====
{{Vedi anche|Diagramma dei casi d'uso}}
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 [[Actor (UML)|attori]] che interagiscono con essi (utenti, altri sistemi software, ecc.). Gli UCD sono il diagramma principale nella [[Use Case View|vista dei casi d'uso]]. In molti [[Modello di sviluppo del software|modelli di sviluppo software]] basati su UML, i casi d'uso sono la vista principale del sistema (processi "use case driven").
 
==== Diagramma delle classi ====
{{Vedi anche|Diagramma delle classi}}
 
==== Diagramma degli oggetti ====
{{Vedi anche|Diagramma degli oggetti}}
 
==== Diagramma degli stati UML ====
{{Vedi anche|Diagramma degli stati UML}}
 
==== Diagramma di attività ====
{{Vedi anche|Diagramma di attività}}
 
==== Diagramma di sequenza ====
{{Vedi anche|Diagramma di sequenza}}
 
==== Diagramma di comunicazione ====
{{Vedi anche|Diagramma di comunicazione}}
<small>'''Nota''': questo tipo di diagramma si chiamava "diagramma di collaborazione" (collaboration diagram) in UML 1.x</small>
 
==== Diagramma dei componenti ====
{{Vedi anche|Diagramma dei componenti}}
 
==== Diagramma di deployment ====
{{Vedi anche|Diagramma di deployment}}
 
====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 e si possono ottenere utilizzando per esempio i diagrammi delle classi;
# ''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.
 
=== Diagrammi introdotti in UML 2.0 ===
 
==== Package Diagram ====
{{Vedi anche|Package Diagram}}
 
==== Composite Structure Diagram ====
{{Vedi anche|Composite Structure Diagram}}
 
==== Timing Diagram ====
{{Vedi anche|Timing Diagram}}
 
==== Interaction Overview Diagram ====
{{Vedi anche|Interaction Overview Diagram}}
 
=== 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]]'' e ''[[constraint]]''. Questi strumenti possono essere usati nel contesto di un modello per esprimere concetti altrimenti non rappresentabili in UML, o non rappresentabili in modo chiaro, sufficientemente astratto, e così via. I [[profilo UML|profili UML]] sono collezioni di stereotipi, ''tagged value'' e ''constraint'' che specializzano il linguaggio per particolari [[dominio applicativo|domini applicativi]] o per l'uso di UML in congiunzione con particolare tecnologie. Fra i profili riconosciuti ufficialmente da OMG si trovano profili per [[CORBA]], per i [[calcolo distribuito|sistemi distribuiti]], per sistemi con vincoli di [[Quality of Service|QoS]] e per [[sistema real-time|sistemi real-time]].
 
== Software per UML ==
 
Esistono moltissimi strumenti software per la modellazione in UML e moltissimi [[Integrated development environment|ambienti integrati di sviluppo]] che includono funzioni di modellazione in UML.
 
=== Strumenti liberi ===
Si riportano qui alcuni strumenti [[free and open source software|liberi ed open source]] per la modellazione in UML. Si veda anche il [http://www.uml.org sito ufficiale di UML] per un elenco aggiornato. La maggior parte di questi strumenti supporta solo parzialmente o non supporta la versione 2.0 di UML.
* [[ArgoUML]] [https://web.archive.org/web/20000607173157/http://argouml.tigris.org/] – uno strumento UML basato su [[Java (linguaggio di programmazione)|Java]]
* [[Atlas Transformation Language|ATL]] [https://web.archive.org/web/20060411081917/http://www.sciences.univ-nantes.fr/lina/atl/]
*[[BOUML]] [http://www.bouml.fr], licenza nuovamente libera dalla versione 7.0; supporta anche UML 2.0
* [[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]] [https://sourceforge.net/projects/staruml/] – Piattaforma [[Model Driven Architecture|MDA]] UML ''[[open source]]'' (in [[GNU General Public License|GPL]])
* [[Umbrello UML Modeller]] – componente del [[KDE]].
* [[UML Pad]] [http://web.tiscali.it/ggbhome/umlpad/umlpad.htm] – strumento sviluppato in [[wxWidgets]] leggero e senza installazione (compresso in un file zip).
* [[UMLet]] [http://www.umlet.com/] – uno strumento basato su Java.
* Violet UML Editor [http://alexdp.free.fr/violetumleditor/page.php <nowiki>[21]</nowiki>] – uno strumento visuale basato su Java.
 
=== Strumenti proprietari ===
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]]
* [[Objecteering/UML]] [https://web.archive.org/web/20060206023347/http://www.objecteering.com/products.php]
* [[OmniGraffle]]
* [[Poseidon for UML]]
* [[Rational Rose]], di [[Rational Software]], è di gran lunga lo strumento più noto e diffuso. È anche il primo ambiente UML della storia: due dei tre padri di UML lavoravano inizialmente per la Rational Software.
* [[Rational Software Architect]] – come sopra
* [[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]] [https://www.visual-paradigm.com/]
 
== Bibliografia ==
* {{RivistaVG|mc|180|126-128|1|1998|titolo=UML, ovvero verso lo standard}}
* {{en}} [[Grady Booch]], [[James Rumbaugh]], [[Ivar Jacobson]], ''Unified Modeling Language User Guide'', Addison-Wesley 1999
* {{en}} Ivar Jacobson, Grady Booch, James Rumbaugh, ''Unified Software Development Process'', Addison-Wesley 1999
* {{en}} James Rumbaugh, Ivar Jacobson, Grady Booch, ''Unified Modeling Language Reference Manual'', Addison-Wesley 2004 (tratta UML 2.0)
* {{en}} [[Martin Fowler]], ''Uml Distilled: Applying the Standard Object Modeling Language'', Addison-Wesley 2003 (tratta UML 2.0)
* {{en}} [[Craig Larman]], ''Applying Uml and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process'', Prentice Hall 2005
* {{en}} [[Robert C. Martin]], ''UML for Java Programmers'', Addison Wesley, 2003 (UML e la programmazione in [[Java (linguaggio di programmazione)|Java]])
 
== Voci correlate ==
* [[Programmazione orientata agli oggetti]]
* [[Analisi (ingegneria del software)]]
** [[Analisi dei requisiti]]
** [[Analisi del dominio]]
** [[Analisi orientata agli oggetti]]
* [[Design pattern]]
* [[Progetto (ingegneria del software)]]
* [[Progetto orientato agli oggetti]]
* [[Modello concettuale (informatica)]]
 
== Altri progetti ==
{{interprogetto|preposizione=sullo}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
 
{{Standard ISO}}
 
{{Controllo di autorità}}
 
[[Categoria:UML| ]]