UML: Introduzione
Corso IS I - 2002/03
Gianna Reggio
Versione 0.0
Cosa è UML
• UML = Unified Modelling Language
– MODELLI
* Il processo di sviluppo di un sistema software (o di una sua
parte) consiste essenzialmente nel produrre una serie di
elaborati (artifacts) che definiscono
˚ tale sistema a diversi livelli di astrazione, es. requisiti dal punto
di vista dell’utilizzatore del sistema, progetto (design)
˚ particolari aspetti di tale sistema, es. prestazioni (Quality Of
Service), dominio su cui opera il sistema
* quindi occorre produrre descrizioni di (particolari aspetti) (parti
di) sistemi software, i modelli
– LANGUAGE
* notazione visuale object-oriented per presentare modelli
– UNIFIED
* sviluppato dall’incontro dei “Three Amigos”
* in pratica una collezione di varie notazioni integrate tra di loro,
rese OO e “standardizzate”
versione 0.0
Storia di UML (1)
• linguaggi di programmazione OO
– Simula-67, Smalltalk-80, Java 1996, C# (200?)
• metodi OO di analisi e design
–
–
–
–
–
–
–
Shalaer&Mellor (1988)
Coad & Yourdon (1990,1991)
Booch (1991)
Rumbaugh et all (1991)
three amigos
Jacobson et all (1992)
…. moltissimi altri
differenti metodi, basati su differenti rappresentazioni
visuali per classi/oggetti/…
versione 0.0
Storia di UML (2)
• metà anni novanta affermazione di
* OMT-2 (Rumbaugh)
* Booch "Object-oriented Analysis and Design with Applications",
second edition, 1994
* Objectory (Jacobson)
– molte similarità, inorporano vari aspetti da altri metodi
• 1994 Rumbaugh e Booch iniziano a lavorare alla
Rational per unificare i loro metodi
• 1995 si unisce Jacobson
• sviluppo di UML e di “Unifed Software
Development Process”
• 1996 UML 0.9
versione 0.0
Storia di UML (3)
• 1996 OMG (Object Management Group) lanciò
una RFP per un linguaggio di modellazione OO
• Rational fonda un consorzio con IBM, HP,
Microsoft, Oracle,… per rispondere
• 1997 UML 1.1 accettato dall’OMG
• 1998 UML 1.2
• 1999 UML 1.3 nel corso useremo questa
• 2001 UML 1.4
• UML 2.0
– in corso di sviluppo (doveva già essere finito)
– importanti aggiunge e modifiche di parti problematiche
versione 0.0
UML: Overview (1)
• Object-oriented
• Visuale (diagrammi, non puro testo)
• Un gruppo di notazioni integrate
– class diagram
* classi (operazioni, attributi), associazioni, specializzazione,
aggregazione,… CONSTRAINTS
– collaboration diagram
* come alcuni oggetti collaborano tra di loro scambiandosi messaggi
(chiamate di metodi) per realizzare una qualche attività
– sequence diagram
* collaboration ma mostrando l’ordine temporale degli scambi di
messaggi
– statechart diagram
* comportamento dinamico di entità di vari tipi (oggetti, use case, metodi)
– activity diagram
* per descrivere workflow (attività e loro relazioni causali)
– use case diagram
* l’uso da parte dei fruitori di un sistema (prossimamente)
– altre che non vedremo
* component diagram, deployment diagram
versione 0.0
UML: Overview (2)
• estensibile, in realtà è una famiglia di linguaggi
– estremamente generale e molto ricco
* usarlo per particolari domini, particolari tipi di applicazioni,
particolari tecnologie implementative richiede di adattarlo
(terminologia: definire un profilo)
˚ per Corba (vedere Sistemi distribuiti ??)
˚ per Enterprise Java Beans (vedere TAPS)
* offre lui stesso i meccanismi per definire le sue varianti (es.
stereotypes)
– espressioni, tipi, azioni (statements) parzialmente definiti
è possibile usare il proprio linguaggio per tali parti
* linguaggio naturale
* di programmazione (Java, C++,…)
* OCL (Object Constraint Language) per espressioni e tipi
nel corso OCL + gli ovvi statement imperativi per il controllo del
flusso
versione 0.0
UML: come è definito (1)
• sintassi
– molto diverso dai soliti linguaggi (es. Java)
– astratta
* espressa in modo OO, utilizzando una semplicissima notazione
OO (sottoinsieme di UML)
frammento
* corrispondente definizione XML
– concreta
* diagrammi
esempio
versione 0.0
UML: come è definito (2)
• correttezza statica (well-formedness)
– constraints (proprietà, condizioni logiche) sulla sintassi
astratta
• semantica
– definita informalmente utilizzando il linguaggio naturale
– problemi
* incompletezza, ambiguità, inconsistenze, ...
versione 0.0
Cosa non è UML
• un modello del processo di sviluppo software
un metodo OO per produrre software
– esistono tantissimi metodi basati su UML
* RUP (Rational Unified Process)
* COMET (per sistemi distribuiti)
* quello che useremo in questo corso (Astesiano&Reggio)
• uno strumento CASE (Computer Aided Software
Engineering)
– esistono molti strumenti che supportano l’uso di UML
* Rational Rose
* Together (che useremo nel corso)
• un linguaggio di programmazione OO
– ma i tools aiutano a generare codice a partire dai modelli
versione 0.0
UML
Sources
• definizione ufficiale (http://www.omg.org/)
Unified Modeling Language Specification 1.3
(file 99-06-08.pdf nel sito del corso)
– per specialisti, o problemi specifici
– notare che
* Semantics
˚ sintassi astratta + semantica informale
* Notation guide
˚ sintassi concreta
• Libro usato nel corso
– UML, Bennet-Skelton-Lunn (serie Shaum’s Outlines)
[edizione italiana in biblioteca]
• Altri libri/materiale vedere sito corso
versione 0.0