UML
Alberto Colombo
Fulvio Frati
Prima di iniziare...

Accedete a
\\Titano\Public\IngegneriaSW

Scaricate il file BOUML.zip

Decomprimete il file direttamente sul Z
Use Case Diagram (1)

Un caso d’uso è uno specifico modo di
utilizzare il sistema da parte di un attore per
eseguire una certa funzionalità del sistema
stesso

“un caso d’uso è una sequenza di
transazioni in un sistema il cui compito è di
conseguire un risultato di valore misurabile
per un singolo attore del sistema”
(Jacobson ‘92)
Use Case Diagram (2)

Rappresenta una funzionalità del sistema dal
punto di vista di chi la utilizza:



nasce, in genere, con la richiesta che un attore fa
al sistema
si conclude con la produzione di tutte le risposte
relative alla richiesta
definisce le interazioni tra attori e sistema relative
a questa funzionalità
Use Case Diagram (3)

Ogni caso d’uso può soddisfare più requisiti

Un requisito può dare origine a più casi d’uso

Ad ogni caso d’uso possono venire associati
più requisiti
Use Case Diagram (4)

I casi d’uso servono a:




chiarire i requisiti del committente in termini
comprensibili
trovare aspetti comuni (riuso)
individuare gli attori del sistema
individuare gli eventi a cui il sistema deve
rispondere
Attori
Gli attori sono rappresentati tramite il ruolo
che giocano nel caso d’uso e sono
normalmente indicati tramite l’icona:
<<Attore>>
Cassiere
Relazione tra attori
• E’ possibile definire gerarchie di attori
• Associare un attore ad uno o più attori specializzati
Utente Banca
Utente Sede Centrale
Utente Filiale
Relazioni tra casi d’uso:
generalizzazione/specializzazione

Associare un caso d’uso ad uno o più casi
d’uso specializzati
validare utente
validare password
validare badge
Relazioni tra casi d’uso:
include
<<include>> : mostra il comportamento comune a
uno o più casi d’uso
identificarsi al bancomat
<<include>>
prelevare
<<include>>
visualizzare saldo
Relazioni tra casi d’uso:
extend
<<extend>>: mostra il comportamento opzionale
(alternativo o relativo al trattamento di
condizioni anomale)
aprire conto corrente
<<extend>>
trattare condizioni particolari
Esercizio: Sportello Bancomat








Il Sistema sarà eseguito su uno sportello bancomat
automatico
L'utente deve essere in grado di depositare assegni sul suo
conto
L'utente deve essere in grado di prelevare i soldi dal suo
conto
L'utente deve poter interrogare il Sistema sul saldo del suo
conto
Se lo richiede, l'utente deve poter ottenere la ricevuta per la
transazione.
I tipi di transazione sono ritiro o deposito.
La ricevuta deve indicare la data della transazione, ilnumero
del conto, il saldo precedente e successivo la transazione
Dopo ogni transazione, il nuovo saldo deve essere
visualizzato all'utente
Esercizio: Soluzione
Class diagram


Rappresenta le classi che compongono il
sistema, cioè le collezioni di oggetti, ciascuno
con il proprio stato e COMPORTAMENTO
(attributi ed operazioni)
Specifica, mediante associazioni, le relazioni
fra le classi
Class diagram: le classi(1)


Una classe è una tipologia di oggetti, con
propri attributi e operazioni
Rappresentazione di una classe in UML:
Automobile
Nome
marca
modello
colore
targa
Attributi (proprietà)
cambiaTarga
cambiaColore
Operazioni (metodi)
Class diagram: le classi(2)



Nome: inizia con una lettera maiuscola, non è
sottolineato e non contiene underscore
Attributi: proprietà i cui valori identificano un
oggetto istanza della classe e ne
costituiscono lo stato; iniziano con una lettera
minuscola
Operazioni/Metodi: insieme di funzionalità che
esprimono il comportamento di un oggetto,
ovvero ciò che ogni oggetto di questa classe
può fare
Class diagram: associazioni(1)

Associazione: correlazione fra classi; nel
diagramma è una linea continua fra due classi, con
esplicita semantica nei due sensi



Aggregazione
Composizione
Molteplicità: numero di oggetti che partecipano
all’associazione. Esempi di molteplicità sono:
1
Esattamente una istanza
0..*
Nessun limite al numero di istanze
1..*
Almeno una istanza
n..m
Da n a m istanze
Class diagram: associazioni(2)
Clienti
1 emette
clienteDal
Ordini
dataOrdine
0..* stato
emesso da
getOrdini
calcolaTasse
calcolaTotale
setStato
1..*
Articoli
codice
descrizione
peso
prezzo
1
1
nell’ordine
riguarda atricolo
0..*
DettagliOrdine
quantità
calcolaPeso
calcolaPrezzo
Class diagram: aggregazione

Aggregazione: tipo particolare di associazione;
esprime concetto “è parte di ” (part of ), che si
ha quando un insieme è relazionato con le
sue parti.
Class diagram: composizione

E’ un caso particolare di aggregazione in cui:
 la parte (componente) non può esistere da
sola, cioè senza la classe composto
 una componente appartiene ad un solo
composto
Class diagram:
aggregazione/composizione
Università
Docenti
aggregazione
composizione
Dipartimenti
Class diagram: ereditarietà
Persone
nome
cognome
indirizzo
cambiaIndirizzo
Clienti
superclasse
simbolo di
ereditarietà
PotenzialiClienti
codiceCliente
clienteDal
numVisite
contaOrdini
sottoclassi
Esercizio:
Struttura Universitaria

Le entità coinvolte sono:






Persone
Docenti
Studenti
Frequenze
Esami
Corsi
Esercizio: soluzione
Persone
nome
Docenti
Frequenze
Studenti
periodo
matricola
1
*
1
*
*
sostiene
relativo a
di
1..*
insegna
tenuto da
Corsi
nome
durata
1
Esami
1
del corso
voto
data
Sequence Diagram






Evidenziano la sequenza temporale delle azioni
Non si vedono le associazioni tra oggetti
Le attività svolte dagli oggetti sono mostrate su linee
verticali
La sequenza dei messaggi scambiati tra gli oggetti è
mostrata su linee orizzontali
Possono corrispondere a uno scenario specifico o a
un intero caso d’uso (aggiungendo salti e iterazioni)
Si possono annotare con vincoli temporali
Sequence Diagram(2)



Oggetto: è rappresentato come un box in alto
con un nome sottolineato e una linea
tratteggiata verticale detta linea di vita
dell’oggetto. Il tempo scorre dall’alto verso il
basso
Messaggio: è una freccia con un nome
Chiamata interna (self-call): riferimento
ricorsivo di un oggetto a se stesso, per
chiamare una delle sue funzioni
Sequence Diagram(3)
Instance:Class
Oggetto
in questo
intervallo di
tempo
l’oggetto è in
vita e attivo
Cancellazione
Linea di vita
tempo
Box di
attivazione
Sequence diagram:
componenti

Condizione: è associata ad un messaggio: solo
se è soddisfatta il messaggio viene generato

Iterazione: indica che un messaggio viene
inoltrato più volte ad oggetti diversi di uno stesso
gruppo

Ritorno: indica il valore restituito all’oggetto
chiamante e non un nuovo messaggio; può
essere omesso

Distruzione: deallocazione di un oggetto come
metodo interno o tramite messaggio da un altro
oggetto
[ha disponib]
Sequence diagram: messaggi

In generale un messaggio rappresenta il
trasferimento del controllo da un oggetto
ad un altro

Se l’oggetto che invia il messaggio rimane
in attesa che l’oggetto ricevente ritorni, si
ha un messaggio sincrono

Se invece l’oggetto che invia il messaggio
prosegue la propria elaborazione in
parallelo all’oggetto chiamato, siamo in
presenza di un messaggio asincrono.
Esempio
Esercizio: ordine prodotto
Supponiamo di dover illustrare il seguente caso:

La finestra Inserisci Ordine manda un “messaggio di
preparazione” ad un Ordine

L’Ordine invia messaggi di preparazione a tutte le Linee
d’Ordine contenute nell’Ordine

Ciascuna Linea controlla la disponibilità del proprio Articolo:


se è presente lo rimuove dal magazzino e crea un prodotto da
consegnare
se la disponibilità del prodotto è scesa al di sotto di una certa soglia
l’oggetto Articolo genera una richiesta di un nuovo ordine
Esercizio: soluzione
una finestra
“Inserisci Ordine”
un Ordine
una Linea
d’Ordine
un Articolo
preparazione()
Condizione
preparazione()
controlloDisp()
[haDisponib]
remove()
Iterazione
deveRiordina()
Ritorno
Chiamata
interna
Creazione
[deveRiordinare]
do
Nuovo
ordine
Cancellazione
[haDisponib] do
un Prodotto da
Consegnare
Collaboration diagram(1)



Evidenzia la collaborazione fra gli oggetti, ma lo
svolgimento temporale complessivo risulta meno chiaro
rispetto ai sequence diagrams.
I componenti del diagramma sono sempre oggetti e
messaggi ma questa volta non è modellato
esplicitamente in maniera grafica lo scorrere del tempo. Gli
oggetti sono disposti liberamente, e in modo da rendere
chiare le interazioni più importanti
Ogni oggetto ha il formato
NomeOggetto: NomeClasse
ma è possibile indicare solo l’uno o l’altro
Collaboration diagram(2)

A differenza del sequence diagram, i
messaggi sono numerati, in modo da
evidenziare esattamente la sequenza

I messaggi sono accompagnati da frecce per
capire quale oggetto invia il messaggio e
quale lo riceve
Collaboration diagram:
esempio
Esercizio: ordine prodotto
Supponiamo di dover illustrare il seguente caso:

La finestra Inserisci Ordine manda un “messaggio di
preparazione” ad un Ordine

L’Ordine invia messaggi di preparazione a tutte le Linee
d’Ordine contenute nell’Ordine

Ciascuna Linea controlla la disponibilità del proprio Articolo:


se è presente lo rimuove dal magazzino e crea un prodotto da
consegnare
se la disponibilità del prodotto è scesa al di sotto di una certa soglia
l’oggetto Articolo genera una richiesta di un nuovo ordine
Esercizio: soluzione
:Finestra di Inserimento Ordine
Oggetto
1: preparazione()
Messaggio
:Ordine
2: [per tutte le linee d’ordine]
preparazione()
Linea X : Linea d’Ordine
Articolo Xx : Articolo
3: controlloDisp()
4: [haDisponib] remove()
7: [ha Disponib] new
:Prodotto da consegnare
Numero di
sequenza
:Riordine Articolo
Activity Diagram(1)



Servono per la modellazione di workflow e per
descrivere processi con una forte componente di
computazione parallela
Il componente principale è l’Attività: si può definire
in maniera informale come il “fare qualcosa”, cioè un
processo del mondo reale (es. compilare un ordine)
o l’esecuzione di una procedura software (es.
metodo di una classe)
Il diagramma consiste in una sequenza di attività e
supporta l’esecuzione di cicli,l’esecuzione parallela
e quella condizionale
Activity Diagram(2)

Oltre alle Attività le altre componenti sono le
Transizioni

Le transizioni non hanno condizioni e sono
innescate semplicemente dal termine
dell’attività precedente
Activity Diagram(3)

Un Activity Diagram può essere associato:



A una classe
All’implementazione di un’operazione
Ad uno Use Case
Activity Diagram:
Componenti(1)

Action state
action
azione
fatta nello
stato

Stato
Iniziale
Transizioni scatenate da completion
events
action1
action2
scatta quando
action1 termina
Stato
Finale
Activity Diagram:
Branch & Merge

Branch: diramazione con una transizione entrante e più di una uscente, con
condizioni mutuamente esclusive
 Non è possibile che valgano entrambe (comportamento ambiguo) o
nessuna comportamento bloccato)
 Se le condizioni sono più di due deve comunque esserne verificata ogni
volta una e una soltanto
 Merge: giunzione con più transizioni entranti ed una sola uscente, termina il
blocco aperto dal Branch
Activity Diagram:
Fork e Join



Fork: divisione con una
transizione entrante e più di una
uscente che si eseguono in
parallelo
Join: unione con più transizioni
entranti ed una sola uscente che
può scattare solo dopo che sono
terminate le attività degli stati
corrispondenti alle transizioni
entranti
Fork e Join si devono
corrispondere!
Combinazione di Fork e Join
Activity diagram: Esempio
Slide Aggiuntive
Swimlanes(1)



I diagrammi delle attività documentano bene
ciò che accade,ma non chi fa che cosa
Un modo di risolvere il problema, indicando le
responsabilità per le attività, è l’uso delle
swimlanes
Le swimlanes sono corsie verticali separate
da linee continue, in cui ogni corsia è coperta
dalla responsabilità di una particolare classe
(o sottosistema)
Swimlanes(2)


Ogni attività deve
essere contenuta
in una singola
swimlane
Le transizioni
invece possono
attraversare le
linee verticali di
demarcazione
Esercizio

Sistema di autenticazione ad un servizio:


Richiesta password
Verifica password
Esercizio: soluzione(1)
Richiesta
connessione
Richiesta
password
Introduzione
password
[corretta]
Accetta
connessione
[errata]
[corretta]
Richiesta
ri-immetere
password
[errata]
Connessione
negata
Esercizio: soluzione(2)
CLIENT
SERVER
Richiesta
connessione
Richiesta
password
Introduzione
password
[errata]
Richiesta
password
seconda volta
[corretta]
Accetta
connessione
[corretta]
[errata]
Connessione
negata
Scarica

UML