Unified Modeling Language (UML) Breve storia dell`UML

Transcript

Unified Modeling Language (UML) Breve storia dell`UML
Unified Modeling Language (UML)
UML
Lo standard emergente nella progettazione del
software (e non solo)
Perchè usare la progettazione visuale?
Perchè usare la progettazione visuale?
Ken Jacobs, Oracle Vice-president:
Mary Loomis, HP - Software Technology Laboratory:
“… Le definizioni dei dati per i database ad oggetti sono
“… la progettazione visuale e le tecniche di
di difficile comprensione se si esamina la loro
rappresentazione visuale (…) permettono di
espressione testuale. Con una rappresentazione
rappresentare le specifiche in un modo comprensibile sia
grafica si possono, invece, facilmente capire le
per le persone che per i tool di sviluppo”
relazioni tra essi ed il resto del DB.”
Perchè usare la progettazione visuale?
n
John Roskill, Microsoft - Director of Product
Marketing for Microsoft Visual Studio:
Breve storia dell’UML
“… Noi riteniamo la progettazione visuale molto
importante nello sviluppo delle applicazioni di livello
‘enterprise’ basate su componenti (…) perché permette
di gestire la complessità dell’applicazione.”
1
La storia dell’UML
Nov ‘97 UML viene approvato dall’OMG
Cosa è l’UML
Cosa è l’UML
Struttura dell’UML
Obiettivi dell’UML
UML: Unified Modeling
Language
Che cos’è l’UML?
UML è l’acronimo di
n
Unified Modeling Language
n
È un linguaggio visuale per la specifica,
la costruzione e la documentazione di
sistemi software complessi
n
n
n
n
UML: principi ispiratori
n
Modellazione (allo scopo di produrre software
migliore)
n
La modellazione è essenziale in ogni attività
ingegneristica complessa, in quanto permette di
astrarre e semplificare
n
n
“costruiamo modelli per comprendere meglio i sistemi
che stiamo sviluppando” [Booch et al: The UML User
Guide]
“costruiamo modelli di sistemi complessi altrimenti non
potremmo comprendere tali sistemi nella loro interezza”
Booch et al.
OMT (Rambaugh et al.)
OOSE (Jacobson et al.)
Gli autori di UML sono Booch, Rumbaugh e
Jacobson
Finalità della modellazione
n
n
Un linguaggio "standard" (accettato dall'OMG)
per la modellazione di sistemi software
UML deriva dalla "integrazione" di modelli
preesistenti (proposti nel contesto di
metodologie):
n
Visualizzazione del sistema (così com'è o come lo si
vorrebbe) in quanto “una figuravale più di mille parole”
Specifica della struttura e del comportamento di un
sistema in maniera precisa, completa e senza ambiguità
Definizione delle linee guida per la costruzione di un
sistema
n
n
n
n
forward engineering
reverse engineering
Documentazione delle decisioni prese
UML è stato pensato per supportare tutto questo
2
I diagrammi di UML
UML, questioni generali
n
n
n
n
i diagrammi sono una “rappresentazione” dei vari aspetti
dell’applicazione
ogni diagramma descrive una vista della applicazione secondo una
certa prospettiva
Use Case
Use Case
Diagrams
Sequence
Diagrams
Diagrams
Use Case
Use Case
Diagrams
Use Case
Diagrams
Diagrams
State
State
Diagrams
Object
Diagrams
Diagrams
Abbellimenti (adornments):
n
n
State
State
Diagrams
Class
Diagrams
Diagrams
Diagrammi e viste
per ogni costrutto esiste una notazione grafica base, cui possono
essere aggiunti dettagli e note
Scenario
Scenario
Diagrams
Collaboration
Diagrams
Diagrams
Distinzioni di base:
n
classe-oggetto (schema-istanza); notazione:
n
interfaccia-implementazione
n
n
classe
oggetto :classe
:classe
Scenario
Scenario
Diagrams
Statechart
Diagrams
Diagrams
oggetto
n
n
n
Diagramma delle classi (Class)
Diagramma degli oggetti (Object)
Diagramma dei casi di uso (Use case)
Diagrammi di interazione (Interaction)
n
n
n
n
n
n
Diagramma di sequenza (Sequence)
Diagramma di collaborazione (Collaboration)
Diagramma delle attività (Activity)
Diagramma degli stati (Statechart)
Diagramma dei componenti (Component)
Diagramma della distribuzione dei componenti
(Deployment)
Component
Component
Diagrams
Deployment
Diagrams
Diagrams
Activity
Diagrams
Obiettivi dell’UML
I diagrammi di UML (9 tipi diversi)
n
State
State
Diagrams
Component
Diagrams
Diagrams
Models
n
n
n
1) Fornire all’utente un
linguaggio di specifica
espressivo, visuale e pronto
all’uso
2) Offrire meccanismi di
estensibilità e specializzazione
del linguaggio
3) Essere indipendente dagli
specifici linguaggi di
programmazione e dai processi
di sviluppo
n
n
n
4) Incoraggiare la crescita dei tool
OO commerciali
5) Supportare concetti di sviluppo
ad alto livello come frameworks,
pattern ed i componenti
6) Integrare i migliori approcci.
Cosa non è l’UML
n
n
n
Non è un linguaggio di programmazione visuale
(è un linguaggio di specifica visuale)
Parti di UML
UML non è un modello per la definizione di
interfacce
UML non è dipendente dal paradigma di
sviluppo nel quale può essere utilizzato
3
UML
UML può essere suddiviso in due grandi
parti:
n Diagrammi
strutturali
n Diagrammi comportamentali
Diagrammi comportamentali
Diagrammi di attività:
Forniscono la sequenza di operazioni
“elementari” che definiscono un’attività più
complessa
Diagrammi comportamentali
Diagrammi strutturali
Diagrammi di classe: Descrivono le classi di
oggetti che compongono il sistema, ossia gli
aspetti che accomunano diversi oggetti nella loro
struttura e nel loro comportamento
Diagrammi di implementazione : Illustrano le
interazioni nel sistema organizzandole attorno
agli oggetti e ai legami tra gli oggetti
Diagrammi comportamentali
Use case diagrams
Specificano il comportamento del sistema, ossia come
il sistema agisce e reagisce dal punto di vista degli
attori (possibili figure di utenti del sistema)
Sequence diagrams
Forniscono una rappresentazione dei vari “scenari”
che possono verificarsi nel ciclo di vita del sistema
orientata a visualizzare in sequenza le interazioni tra
gli oggetti del sistema. Quando due oggetti
interagiscono? E cosa trasmettono l’uno all’altro?
Diagrammi comportamentali
Collaboration diagrams
Illustrano le interazioni nel sistema organizzandole
attorno agli oggetti e ai legami tra gli oggetti (come i
Sequence Diagrams descrivono i possibili scenari, ma
da un diverso punto di vista)
Component diagrams
Rappresentano come i moduli software del
sistema (le componenti) sono organizzati e
quali sono le loro dipendenze
Statechart diagrams (diagrammi di stato)
Descrivono il "ciclo di vita" degli oggetti del sistema,
visualizzando in che modo essi vengono modificati da
eventi che possono occorrere nella processo di
funzionamento del sistema
Deployment diagrams (diagrammi di allocazione)
Illustrano la dislocazione al run-time dei nodi
elaborativi, delle componenti, dei processi e
degli oggetti che risiedono presso di essi.
4
Diagramma dei casi d’uso
Use Cases Diagram
Ci sono modi diversi di guardare a un SISTEMA.
Ø"aprirlo" e guardarci dentro, per vedere come è
strutturato all'interno ( punto di vista del progettista)
Ø guardare a come può essere utilizzato. In questo caso
il sistema viene visto come una "black box", sigillata, ed
è possibile osservarne solo i comportamenti dall'esterno
( punto di vista dell'utilizzatore, e di tutto ciò che
interagisce con il sistema nell'ambito del suo
funzionamento).
Questo secondo punto di vista corrisponde al modello dei
casi d'uso.
Casi d’uso
Casi d’uso
§ Il termine "use case" è stato coniato dal
metodologo svedese Ivar Jacobson.
I casi d'uso svolgono un duplice ruolo nello
sviluppo di un sistema.
§ I casi d'uso sono semplicemente i modi in cui
il sistema può essere utilizzato.
§ nelle fasi iniziali della progettazione, servono
per chiarire cosa dovrà fare il sistema.
§ guidano l'intero progetto di sviluppo.
Caso d’uso
Modellare la realtà
Un caso d’uso rappresenta un’interazione tra un
utente ed il sistema: cattura le funzionalità del
sistema da realizzare così come esse sono
percepite dall’utente.
Registra voti
I casi d’uso sono le
azioni che un utente
intraprende in un
sistema
Un sistema è qualcosa che svolge una funzione
Secondo UML, modellare la realtà d’interesse
significa:
•
individuare tutti i possibili casi d’uso del
sistema
•
individuare tutti gli utenti dei singoli casi
d’uso (attori)
•
rappresentare le interazioni tra casi d’uso e
utenti
5
Attore – cosa è?
Qualcuno o qualcosa, esterno
al sistema, che interagisce con
i casi d’uso.
Ogni attore corrisponde ad un insieme
coerente di ruoli che i soggetti esterni
possono assumere interagendo con il sistema.
Individuazione Attore
Attore – cosa è?
Gli attori comunicano con il
sistema inviando o ricevendo
messaggi: forniscono lo stimolo
“trigger” agli use case; ciò
equivale a dire che ogni caso
d’uso deve essere avviato da
una esplicita richiesta di un
attore
Individuazione Attore
Primari (o attivi): avviano le funzionalità
proprie del sistema, forniscono uno stimolo
al sistema
Primari (o attivi): avviano le funzionalità
proprie del sistema, forniscono uno stimolo
al sistema
Secondari: fruiscono di informazioni o
notifiche generate da use case eseguiti da
altri attori, ricevono messaggi e non
forniscono un vero e proprio stimolo
Secondari: fruiscono di informazioni o
notifiche generate da use case eseguiti da
altri attori, ricevono messaggi e non
forniscono un vero e proprio stimolo
Sistema
E' l'entità i cui utilizzi vengono descritti dall'insieme
dei casi d'uso.
Un insieme completo di casi d'uso descrive in modo
completo gli utilizzi del sistema dall'esterno, ossia dal
punto di vista degli attori che interagiscono con esso,
senza rivelare la struttura interna del sistema
Sistema
Un confine ideale separa ciò che è interno al
sistema da ciò che ne è al di fuori.
i
casi
d'uso
rientrano
all'interno
del
contesto
del
sistema, mentre
tutti gli attori
sono esterni al
sistema.
6
Confini del Sistema
Il primo passo nella realizzazione dei modelli dei casi
n
d’uso consiste nello stabilire con precisione il confine del
sistema.
La definizione del contesto del sistema è una delle
Attori e casi d’uso
Ogni caso d'uso è collegato agli attori, uno o più, che
partecipano al caso d'uso stesso mediante una
associazione, che ha il significato di "comunicazione"
(rappresentata da una linea continua che collega attore
e caso d'uso).
n
attività più delicate di un progetto,
APPROCCIO ITERATIVO INCREMENTALE
Una buona idea consiste nell’individuare il “core” del nuovo
sistema (le funzionalità indispensabili).
Attori e casi d’uso
L'associazione può essere orientata (ed essere quindi
rappresentata con una freccia), per evidenziare la
direzione delle comunicazioni nell'interazione (si tratta
di una estensione definita nel profilo UML relativo al
Software Development Process).
comunicazione unidirezionale
Generalizzazione
comunicazione bi-direzionale
La comunicazione tra attori e casi d'uso, nei due sensi, avviene
tramite segnali, ed è pertanto da considerarsi asincrona.
Associazioni tra attori
L'unica associazione ammessa tra attori è la specializzazione o
generalizzazione.
ØL'attore specializzato eredita il comportamento del genitore
e loestende in qualche maniera
ØL'attore specializzato eredita la partecipazione a tutti i
casi d'uso con i quali comunica l'attore generico, ma può
partecipare ad ulteriori casi d'uso ai quali l'attore generico
non è collegato.
La relazione di specializzazione, in UML, è espressa graficamente
con una linea continua, e con una punta di freccia triangolare e
bianca.
Cattiva organizzazione gerarchica
attori
Un attore che ne specializza un altro può sempre
essere utilizzato al posto di quello esteso (genitore o
padre)
7
Diagramma ristrutturato
Esempio organizzazione gerarchica attori in un sistema
Associazioni tra casi d’uso
Ogni caso d'uso descrive un
utilizzo completo del sistema, e
non è quindi ammessa in UML la
possibilità che casi d'uso distinti
abbiano tra loro un'associazione
di comunicazione.
Associazioni tra casi d’uso
Le associazioni ammesse sono tre:
• Generalizzazione/Specializzazione
• extend
• include
L'effetto globale dell'utilizzo delle associazioni tra
casi d'uso è comunque quello di una frammentazione
del
singolo
caso
d'uso,
anche
se
basata
sull'"emersione" di particolarità (specializzazione ed
extend) o di comportamenti comuni (include).
Generalizzazione/Specializzazione
Associa un caso d'uso di tipo generale ad uno o più casi d'uso
specializzati .
Generalizzazione/Specializzazione
n
n
n
Ogni caso d'uso generale può avere
più figli (casi d'uso specializzati).
Ogni caso d'uso può avere più padri,
cioè specializzare diversi casi d'uso
generali.
L’esecuzione di use case “fratelli” può
avvenire solo in alternativa
8
Esempio
Generalizzazione/Specializzazione
n
n
Il diagramma indica la proiezione
statica delle funzionalità: specifica
che il caricamento di un ordine
richiede la validazione dell’utente e la
verifica dell’ordine stesso.
Il diagramma non specifica nulla circa
la dinamica dell’operazione
Diagramma degli eventi
n
Include
Generalizzazione/Specializzazione
n
n
Il comportamento specifico di un caso d’uso figlio
può essere indicato inserendo opportune sezioni o
sovrascrivendone altre nella sequenza di azioni
ereditate dallo use case genitore (in modo del
tutto analogo a quanto succede con i metodi nelle
classi)
Quando il caso d’uso geneitore è astratto lo use
case ereditante deve provvedere,
Codice cap 3 pag 41.
n
n
Casi d'uso diversi possono avere in comune una
sequenza di passi da svolgere. In questo caso
è possibile enucleare la sequenza comune, e
definirla come un caso d'uso a sé stante, da
"includere" nei casi d'uso originari.
Così facendo si evidenziano le parti comuni, e
si evitano le ripetizioni nelle descrizioni dei
casi d’uso.
9
Include
Include
n
In termini di sequenza di azioni, che ciascun caso
d’uso esegue per erogare il servizio, la relazione di
Include comporta l’esecuzione della sequenza di
azioni dello use case incluso sotto il controllo e
nella locazione specificata nello use case base.
Use case che
include
<<include>>
Use case incluso
•Ogni caso d'uso può includere un numero illimitato di
altri casi d'uso. Viceversa, ogni caso d'uso può essere
incluso in un numero illimitato di altri casi d'uso.
•L'associazione di inclusione è rappresentata da una
dipendenza (linea tratteggiata, punta della freccia
aperta) con lo stereotipo <<include>> , la cui direzione va
dal caso d'uso "includente" al caso d'uso "incluso".
Esempio
Include
n
Esempio
Il concetto di inclusione è per molti versi analogo a
quello di invocazione di una funzione: viene
eseguita la sequenza di azioni dello use case base
quando viene raggiunto un punto di inclusione il
controllo viene passato al caso d’uso ivi indicato
(incluso) e ne viene eseguita completamente la
sequenza di azioni, quindi il controllo ritorna allo
use case base.
Extend
n
n
n
L'associazione "extend" permette di definire che un
caso d'uso "base" può venire "esteso" con il
comportamento definito in un altro caso d'uso, detto
di estensione.
L'estensione riguarda un comportamento opzionale del
caso d'uso base, ed è soggetta ad una condizione di
attivazione.
Il caso d'uso base "ignora le proprie estensioni". La
sequenza dei passi che lo descrive è in sé completa, e
non contiene alcun riferimento alle condizioni ed ai
comportamenti definiti nel caso d'uso di estensione.
10
Extend
Extend
L'associazione di estensione è rappresentata da una
dipendenza (linea tratteggiata, punta della freccia
aperta) con lo stereotipo <<extend>> , la cui direzione
va dal caso d'uso "di estensione" al caso d'uso "base".
n
Use case che
estende
<<extend>>
Use case esteso
n
n
L'unica particolarità che contraddistingue un caso
d'uso soggetto ad estensioni è che nell'ambito della
sua sequenza vengono definiti uno o più punti di
estensione ("extension point"), che sono dei punti di
ancoraggio ai quali si agganceranno i casi d'uso di
estensione.
I punti di estensione possono essere rappresentati in
un comparto specifico dell'ellisse che rappresenta il
caso d'uso base.
Extend: funzionamento
n
Il funzionamento prevede che quando una
istanza dello use case base raggiunge una
locazione referenziata da un punto di
estensione la condizione viene valuatata :
n
n
Esempio
Se l’esito è positivo (valore TRUE) allora le azioni
specificate nel caso d’uso estendente vengono
eseguite
Altrimenti si procede con le successive istruzione
dello use case base
Extend: funzionamento
n
n
L’assenza di una condizione corrisponde ad un
valore sempre true.
Se una relazione ha più punti di estensione la
condizione viene verificata solo la prima volta
ossia prima dell’esecuzione del primo
frammento
11
Inclusione o Estensione?
Esempio
Opzionalità: se l’esecuzione del flusso di
azioni di uno use case invocato deve
avvenire solo al verificarsi di particolari
condizioni
(ossia
rappresentauna
variante al flusso di azione) bisogna
usare la relazione di estensione.
Inclusione o Estensione?
Se uno use case viene invocato solo da
un altro probabilmente è opportuno
usare l’estensione.
nSe può essere usato nel flusso di
azione di svariati casi d’uso allora è da
preferire la relazione di inclusione
n
Inclusione o Estensione?
Inclusione o Estensione?
La relazione di inclusione ricorda molto
l’invocazione di una procedura (o
metodo) e pertanto lo use case incluso
deve ricevere (dallo use case base) gli
eventuali attributi di cui necessita per
eseguire il flusso di azioni
n
Esempi
Lo use case esteso contiene il flusso
primario degli eventi e non ha
conoscenza diretta di eventuali altri
casi d’uso estendenti
n
12
FINE
13