UML: Casi d`uso

Transcript

UML: Casi d`uso
UML (ancora)
Contenuto:
Casi d’uso
Diagrammi di sequenza
Componenti
O
S
I
V
V
O
R
P
08 UML - 2010/11
G. Bucci
O
I
R
1
Casi d’uso






Oggi l’anaIisi dei casi d’uso è considerata uno dei passi
più importanti dell’intero processo di sviluppo.
Mostrano le relazioni tra “attori” e “casi d’uso” del
sistema.
Danno una rappresentazione del “comportamento” del
sistema
Mettono in evidenza le funzionalità di un sistema (o di
parte di sistema o di una classe) così come le
percepisce chi interagisce con esso dal mondo
esterno.
Un caso d’uso è schematizzato con una ellisse
contenente il nome del caso d’uso.
Centrati sull’utente
.
Caso d’uso
Attore
08 UML - 2010/11
G. Bucci
2
Cos’è un caso d’uso
Un caso d’uso è la
rappresentazione di
una coerente
funzionalità del
sistema
Un caso d’uso è
sempre una sequenza
di eventi/risposte
La sequenza può
essere anche avviata
dal sistema
Attore
1. Azione
Reazione
2. Azione
Reazione
Confine del sistema
08 UML - 2010/11
G. Bucci
3
Ruolo dei casi d’uso
Acquirente
effettua ordine
requisiti
Venditore
casi
prova
modelli di analisi e progetto
Ordine
0..*
08 UML - 2010/11
1
Acquirente
G. Bucci
4
Esempio
Attori
Attore
08 UML - 2010/11
G. Bucci
5
Diagramma
La linea che unisce un attore a un caso
d’uso costituisce una comunicazione.
 La comunicazione è l’unica relazione tra
attori e casi d’uso.
 Spesso la linea è orientata a indicare chi
inizia il caso d’uso.

08 UML - 2010/11
G. Bucci
6
Metodo




Identificare gli attori
Definire cosa un attore vuol fare
=> caso d’uso
I diagrammi servono a dare una visione
sintetica. Al diagramma di un caso d’uso
occorre aggiungere una descrizione testuale
La descrizione testuale si compone di
sequenza di statement del tipo:


L’attore fa <xx> il sistema fa <yy>
L’attore fa <aa> il sistema fa <bb>
08 UML - 2010/11
G. Bucci
7
Descrizione testuale







Numero e titolo
Breve descrizione
Attori
Precondizioni per l’esecuzione del CU
Flusso (scenario) principale
Flussi (scenari) alternativi
Postcondizioni
08 UML - 2010/11
G. Bucci
8
Formato (possibile)
08 UML - 2010/11
G. Bucci
9
08 UML - 2010/11
G. Bucci
10
Non sarebbe
mica male se ci
fosse anche un
“mockup” delle
videate
Menu Principale
Inserimento
08 UML - 2010/11
G. Bucci
11
Scenari
08 UML - 2010/11
G. Bucci
12
Scenario
secondario
08 UML - 2010/11
G. Bucci
13
Diagramma

Sono possibili le relazioni seguenti tra
casi d’uso (e sottocasi):
estensione
<<extend>>
 inclusione
<<include>>
 generalizzazione

08 UML - 2010/11
G. Bucci
14
Inclusione
Il caso incluso viene sempre fatto come parte del caso
includente
 Somiglia a una chiamata a sottoprogramma
08 UML - 2010/11
G. Bucci
15
Estensione
L’estensione può avere luogo o no
 Corrisponde a una situazione in cui il
verificarsi di una condizione porta a fare
qualcosa in più
08 UML - 2010/11
G. Bucci
16
Generalizzazione
Del tutto simile al concetto tra classi
08 UML - 2010/11
G. Bucci
17
Diciamo la verità

Sono piuttosto confusi

Come notazione
 Frecce

nei due versi tra include e extend
Come significato
 Estensione
o generalizzazione?
 Estensione o inclusione?

C’è chi sostiene di usare solo <<invoca>> e
<<precede>>
08 UML - 2010/11
G. Bucci
18
Attenzione!
Siamo sicuri che il diagramma sia corretto?
OK: Ci sono
interazioni tra attore
e sistema
Un algoritmo non è un caso d’uso!
Se non c’è interazione (“botta e risposta”)
con l’attore non è un caso d’uso
08 UML - 2010/11
G. Bucci
19
Un attore speciale


Nella specifica si legge: “alla mezzanotte il
sistema trasmette un messaggio di sollecito a
tutti i lettori che non hanno restituito nei
termini i libri in prestito”
E’ evidente che la trasmissione deve avvenire
in modo automatico, senza l’intervento del (presumibile)
bibliotecario, che a quell’ora dorme

Chi è l’attore? E’ il sistema ?
NO !! : Un caso d’uso è un’interazione con
un attore esterno. Il sistema svolge il caso
d’uso non è l’attore. Ma allora chi è
l’attore?
08 UML - 2010/11
G. Bucci
20
..Un attore speciale

L’attore non può che essere il Tempo

E’ un attore concettuale che a mezzanotte avvia il
caso d’uso.

08 UML - 2010/11
Il modo in cui il Tempo si manifesta non ci interessa;
sarà magari attraverso un componente software che lo
realizza, concettualmente esterno al nostro sistema
G. Bucci
21
Perché limitarsi?


Abbiamo considerato il caso d’uso solo in
riferimento allo svolgimento di una
funzionalità del sistema (interazione AttoreSistema)
Si può rappresentare di più: lo svolgimento
completo di un processo di business,
identificando:



Le attività che sono svolte dal sistema software
Le attività svolte per altra via
Se la procedura è complessa si può fare
ricorso ai diagrammi di attività
08 UML - 2010/11
G. Bucci
22
Esempio: apertura di un CC
1.
2.
3.
4.
5.
6.
il cliente si presenta in banca per aprire un nuovo c/c
l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.)
il cliente fornisce i propri dati all’addetto
l’addetto verifica se il cliente è censito in anagrafica
l’addetto crea il nuovo conto corrente
l’addetto segnala il numero di conto al cliente
Varianti:
3. (a) se il cliente non accetta il caso d’uso termina;
(b) se il conto va intestato a più persone vanno forniti i relativi
dati
4. (a) se il cliente (o uno dei diversi intestatari) non è censito
l’addetto provvede a registrarlo, richiede al cliente la firma dello
specimen e ne effettua la memorizzazione via scanner
08 UML - 2010/11
G. Bucci
23
Esempio: apertura di un CC
1.
2.
3.
4.
5.
6.
il cliente si presenta in banca per aprire un nuovo c/c
l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.)
il cliente fornisce i propri dati all’addetto
l’addetto verifica se il cliente è censito in anagrafica
l’addetto crea il nuovo conto corrente
l’addetto segnala il numero di conto al cliente
Varianti:
3. (a) se il cliente non accetta il caso d’uso termina;
(b) se il conto va intestato a più persone vanno forniti i relativi
dati
4. (a) se il cliente (o uno dei diversi intestatari) non è censito
l’addetto provvede a registrarlo, richiede al cliente la firma dello
specimen e ne effettua la memorizzazione via scanner
I corsivi non sono funzionalità informatiche
08 UML - 2010/11
G. Bucci
24
Esempio: apertura di un CC
1.
2.
3.
4.
5.
6.
il cliente si presenta in banca per aprire un nuovo c/c
l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.)
il cliente fornisce i propri dati all’addetto
l’addetto verifica se il cliente è censito in anagrafica
l’addetto crea il nuovo conto corrente
l’addetto segnala il numero di conto al cliente
Questi passi devono essere dettagliato nel modo
Varianti:
visto in precedenza
3. (a) se il cliente non accetta il caso d’uso termina;
(b) se il conto va intestato a più persone vanno forniti i relativi
dati
4. (a) se il cliente (o uno dei diversi intestatari) non è censito
l’addetto provvede a registrarlo, richiede al cliente la firma dello
specimen e ne effettua la memorizzazione via scanner
08 UML - 2010/11
G. Bucci
25
Questa non è accettabile !
1.
L’impiegato immette a video tutti i dati (nome cliente,
giorni di permanenza, numero di camera, accompagnatori……..e via
elencando)
2.
Il sistema effettua i controlli e presenta il conto

Non dice niente di più di una ellisse del diagramma
Una descrizione deve mostrare una sequenza
dettagliata di passi

08 UML - 2010/11
G. Bucci
26
…Inoltre
 E’
sbagliata concettualmente:
 Se
viene immesso un dato sbagliato
c’è il rischio di dover reimmettere
tutto, a meno di non fare controlli
molto onerosi dei singoli campi, della
reimmissione ecc.
 Se si va per passi la logica risulta
semplificata
08 UML - 2010/11
G. Bucci
27
Diagrammi di interazione
Sequence diagrams : mostrano le
interazioni tra gli oggetti lungo le loro
linee di vita (cioè secondo un
ordinamento temporale)
 Communication diagrams : mostrano i
messaggi che vengono scambiati tra gli
oggetti che intervengono nell’espletare
una data funzionalità

(i primi sono di gran lunga più importanti)
08 UML - 2010/11
G. Bucci
28
Diagramma di sequenza - sintassi
08 UML - 2010/11
G. Bucci
29
Diagramma di sequenza - sintassi
: OggettoA
: OggettoB
: OggettoC
X
08 UML - 2010/11
G. Bucci
30
Diagramma di sequenza - sintassi
: OggettoA
: OggettoB
: OggettoC
Linee di vita
X
Attivazioni
08 UML - 2010/11
G. Bucci
31
Diagramma di sequenza - sintassi
: OggettoA
Stimolo Sincrono
Stimolo Asincrono
: OggettoB
Risposta
op_0()
op1()
<<create>>
opi()
: OggettoC
Autostimolo
opx(param)
op_as()
<<destroy>>
X
Ritorno
08 UML - 2010/11
G. Bucci
32
Stimoli, ritorni, ecc




Uno stimolo è di norma un messaggio (la
chiamata di un metodo) specialmente quando
è di tipo sincrono (cioè che attende il ritorno
da parte del chiamato)
Ma può essere anche un segnale
(generalmente nel caso di interazioni
asincrone)
La creazione e la distruzione sono essi
stessi degli stimoli
Imparare un tool adeguarsi alle sue regole!!!!
08 UML - 2010/11
G. Bucci
33
Esempio

Partiremo da questo diagramma delle
classi
GestoreOrdini
Ordine
gestisce
*
consulta
1
Catalogo
08 UML - 2010/11
G. Bucci
34
ai
N
ni
r
o
rit
ic
d
n
i
a
on
sce
ie
r
i
s
ltà ma è
a
,
re
In icarli
ind oso
g
bri
: Catalogo
: GestoreOrdini
: User
1 : apriOrdine()
<<create>>
2
: Ordine
loop Per ogni prodotto desiderato
3 : aggiungiProdotto()
4 : Prodotto := cercaProdotto()
5 : addProdotto()
6 : calcolaPrezzo()
7 : importoTotale := getCost()
9 : eliminaOrdine()
8 : ImportoTotale := getCost()
<<destroy>>
10
Questo è un Frame
(UML 2)
08 UML - 2010/11
G. Bucci
35
Un vantaggio dell’uso di un tool

Mettendo le operazioni sul diagramma queste
diventano metodi delle classi
Ma bisogna faticare un po’!!
GestoreOrdini
+getCost()
+apriOrdine()
+aggiungiProdotto()
+eliminaOrdine()
Ordine
gestisce
*
+getCost()
+addProdotto()
+calcolaPrezzo()
consulta
1
Catalogo
+cercaProdotto()
08 UML - 2010/11
G. Bucci
36
08 UML - 2010/11
G. Bucci
37
Frame
Servono a raggruppare parti di
diagramma (eventualmente a
richiamarle in altri diagrammi)
 esempi di frame

loop nome

Loop
alt
[if Prodotto scontato]

Alt

(guardare StarUML, combined fragment )
08 UML - 2010/11
[else]
G. Bucci
38
08 UML - 2010/11
G. Bucci
39
Diagrammi di comunicazione
08 UML - 2010/11
G. Bucci
40
08 UML - 2010/11
G. Bucci
41
Package

Meccanismo di raggruppamento
Azienda
Personale
Produzione
<<import>>
Utilities
Acquisti
Personale
<<access>>
Dirigenti
Dirett
Impiegati
Anagrafe
Consigliere
08 UML - 2010/11
G. Bucci
42
Componente



Una parte (modulare) logica o fisica del sistema il cui
comportamento esterno è descritto attraverso le
interfacce che esso presenta o richiede
Un componente non dipende da altri componenti, ma
solo dalle interfacce che esso offre o richiede
Un componente può essere sostituito da un altro se
le interfacce sono le stesse
08 UML - 2010/11
G. Bucci
43
Componenti
AccountManagement
<<component>>
AccountManagement
<<component>>
AccountManagement
Notazione UML 1.4 superata
Notazione UML 2 (corrente)
TransLog
IDVerif
08 UML - 2010/11
G. Bucci
44
Dipendenza tra componenti
<<component>>
AccountManagement
Port1
IDverif
Port2
TransLog
<<component>>
AccountManagement
Port1
<<component>>
CreditCardServices
<<component>>
Logger
<<interface>>
IDverif
<<component>>
CreditCardServices
08 UML - 2010/11
G. Bucci
<<interface>>
TransLog
<<component>>
Logger
45
Componenti
Porta: Punto di connessione (di un classificatore) con
l’esterno
<<component>>
InterfacciaUtente
Port1
<<component>>
ServerApplicazione
<<delegate>>
<<delegate>>
<<componente>>
Applicazione
08 UML - 2010/11
<<componente>>
Driver
G. Bucci
<<componente>>
BaseDati
46
Porte



Una porta è il modo in cui un classificatore
implementa le interfacce (offerte o richieste)
verso l’esterno
delegation connector collega una porta
(esterna) con elemento interno
Le porte permettono di modificare la struttura
interna di un classificatore senza effetti sul
mondo esterno (purchè le interfacce sulle
porte siano correttamente soddisfatte)
08 UML - 2010/11
G. Bucci
47
Artifact

<<artifact>>
Nome
Realizzazione concreta di un qualche
elemento

file sorgente, librerie, file eseguibili
<<artifact>>
Logging.jar
+numLoggers
<<manifest>>
<<component>>
LoggingSubsystem
Un artifact è la manifestazione di
un elemento UML: Login.jar è la
manifestazione del componente
LoginSubsystem.
Si usa lo stereotipo <<manifest>>
<<artifact>>
Logging.jar
+numLoggers
08 UML - 2010/11
G. Bucci
Possono avere
attributi
48
Artifact
Studente
<<manifest>>
<<artifact>>
Studente.java
<<artifact>>
Studente.class
Docente
<<manifest>>
Valutazione
<<manifest>>
<<artifact>>
Valutazione.java
<<artifact>>
Valutazione.class
Corso
<<manifest>>
<<artifact>>
Corso.java
<<artifact>>
Corso.class
Orario
<<manifest>>
<<artifact>>
Docente.java
<<artifact>>
Docente.class
<<artifact>>
Orario.java
<<component>>
Dati
Corso
<<manifest>>
<<artifact>>
Persone.jar
<<manifest>>
Valutazione
Studente
08 UML - 2010/11
<<artifact>>
Dati.jar
<<artifact>>
Orario.class
<<component>>
Persone
Docente
<<artifact>>
Persone.jar
<<artifact>>
Dati.jar
Orario
G. Bucci
49
Diagrammi di Deployment


Mostrano l’allocazione del software
sull’hardware.
Nodo: entità che può eseguire software


Dispositivo
Ambiente di esecuzione
<<device>>
WebServer
Repository
<<device>>
ApplicationServer
components
Persone
Dati
LoggingSubsystem
*
1
<<device>>
DataBase
artifacts
<<excecution env>>
J2EE
08 UML - 2010/11
Logging.jar
Persone.jar
Dati.jar
G. Bucci
50
Diagrammi di Deployment
<<device>>
DataBase
<<device>>
ApplicationServer
1
*
<<execution environment>>
Oracle
<<deploy>>
<<artifact>>
Persone.jar
<<deploy>>
<<artifact>>
Logging.jar
08 UML - 2010/11
<<deploy>>
<<artifact>>
Dati.jar
G. Bucci
51
Esempi
08 UML - 2010/11
G. Bucci
52