UML (ancora)08 UML - 2010/11 G. Bucci 20 Un attore speciale Nella specifica si legge: “alla...
Transcript of UML (ancora)08 UML - 2010/11 G. Bucci 20 Un attore speciale Nella specifica si legge: “alla...
08 UML - 2010/11 G. Bucci 1
UML (ancora)Contenuto:Casi d’uso Diagrammi di sequenza Componenti
PROVVISORIO
08 UML - 2010/11 G. Bucci 2
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 3
Cos’è un caso d’usoUn 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
Confine del sistema
Reazione
2. Azione
1. Azione Reazione
Attore
08 UML - 2010/11 G. Bucci 4
Ruolo dei casi d’uso
requisiti
effettua ordineVenditore
Acquirente
modelli di analisi e progetto
casiprova
AcquirenteOrdine0..* 1
08 UML - 2010/11 G. Bucci 5
Esempio
Attore
Attori
08 UML - 2010/11 G. Bucci 6
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 7
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 8
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 9
Formato (possibile)
08 UML - 2010/11 G. Bucci 10
08 UML - 2010/11 G. Bucci 11
Non sarebbe mica male se ci fosse anche un “mockup” delle
videate
Menu Principale
Inserimento
08 UML - 2010/11 G. Bucci 12
Scenari
08 UML - 2010/11 G. Bucci 13
Scenario secondario
08 UML - 2010/11 G. Bucci 14
Diagramma
Sono possibili le relazioni seguenti tra casi d’uso (e sottocasi):
estensione <<extend>>
inclusione <<include>>
generalizzazione
08 UML - 2010/11 G. Bucci 15
InclusioneIl caso incluso viene sempre fatto come parte del caso
includente
Somiglia a una chiamata a sottoprogramma
08 UML - 2010/11 G. Bucci 16
EstensioneL’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 17
GeneralizzazioneDel tutto simile al concetto tra classi
08 UML - 2010/11 G. Bucci 18
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 19
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 20
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 21
..Un attore speciale
L’attore non può che essere il Tempo
E’ un attore concettuale che a mezzanotte avvia il caso d’uso.
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
08 UML - 2010/11 G. Bucci 22
Perché limitarsi?
Abbiamo considerato il caso d’uso solo in riferimento allo svolgimento di una funzionalità del sistema (interazione Attore- Sistema)
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 23
Esempio: apertura di un CC
1. il cliente si presenta in banca per aprire un nuovo c/c2. l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.)3. il cliente fornisce i propri dati all’addetto4. l’addetto verifica se il cliente è censito in anagrafica5. l’addetto crea il nuovo conto corrente6. 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 24
Esempio: apertura di un CC
1. il cliente si presenta in banca per aprire un nuovo c/c2. l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.)3. il cliente fornisce i propri dati all’addetto4. l’addetto verifica se il cliente è censito in anagrafica5. l’addetto crea il nuovo conto corrente6. 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 25
Esempio: apertura di un CC
1. il cliente si presenta in banca per aprire un nuovo c/c2. l’addetto riceve il cliente e fornisce spiegazioni (condizioni, ecc.)3. il cliente fornisce i propri dati all’addetto4. l’addetto verifica se il cliente è censito in anagrafica5. l’addetto crea il nuovo conto corrente6. 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
Questi passi devono essere dettagliato nel modo visto in precedenza
08 UML - 2010/11 G. Bucci 26
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 27
…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 28
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 29
Diagramma di sequenza
-
sintassi
08 UML - 2010/11 G. Bucci 30
Diagramma di sequenza
-
sintassi
: OggettoA
: OggettoC
X
: OggettoB
08 UML - 2010/11 G. Bucci 31
Diagramma di sequenza
-
sintassi
: OggettoA
: OggettoC
X
: OggettoB
Linee di vita
Attivazioni
08 UML - 2010/11 G. Bucci 32
Diagramma di sequenza
-
sintassiStimolo Sincrono
opi()
op_0()
opx(param)
op1()
: OggettoA
: OggettoC
X
: OggettoB Stimolo AsincronoRisposta
<<create>>
<<destroy>>
Ritorno
op_as()
Autostimolo
08 UML - 2010/11 G. Bucci 33
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 34
Esempio
Partiremo da questo diagramma delle classi
GestoreOrdini Ordinegestisce
*
Catalogo
consulta
1
08 UML - 2010/11 G. Bucci 35
Questo è un Frame(UML 2)
Non indica i ritorni
Per ogni prodotto desideratoloop
: User
: GestoreOrdini
: Ordine
: Catalogo
1 : apriOrdine() 2<<create>>
3 : aggiungiProdotto()4 : Prodotto := cercaProdotto()
5 : addProdotto()
6 : calcolaPrezzo()
7 : importoTotale := getCost()8 : ImportoTotale := getCost()
9 : eliminaOrdine()10
<<destroy>>
In realtà si riesce a
indicarli, ma è
brigoso
08 UML - 2010/11 G. Bucci 36
Un vantaggio dell’uso di un tool
Mettendo le operazioni sul diagramma queste diventano metodi delle classi
GestoreOrdini
+getCost()+apriOrdine()+aggiungiProdotto()+eliminaOrdine()
Ordine
+getCost()+addProdotto()+calcolaPrezzo()
gestisce
*
Catalogo
+cercaProdotto()
consulta
1
Ma bisogna faticare un po’!!
08 UML - 2010/11 G. Bucci 37
08 UML - 2010/11 G. Bucci 38
Frame
Servono a raggruppare parti di diagramma (eventualmente a richiamarle in altri diagrammi)
esempi di frame
Loop
Alt
(guardare StarUML, combined fragment )
nomeloop
alt [if Prodotto scontato]
[else]
08 UML - 2010/11 G. Bucci 39
08 UML - 2010/11 G. Bucci 40
Diagrammi di comunicazione
08 UML - 2010/11 G. Bucci 41
08 UML - 2010/11 G. Bucci 42
Package
Meccanismo di raggruppamento
Azienda
Produzione
Acquisti
Personale
DirigentiImpiegati
PersonaleUtilities<<import>>
Anagrafe<<access>>
Dirett
Consigliere
08 UML - 2010/11 G. Bucci 43
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 44
Componenti
Notazione UML 2 (corrente)
AccountManagementNotazione UML 1.4 superata
AccountManagement<<component>>
AccountManagement<<component>>
IDVerif
TransLog
08 UML - 2010/11 G. Bucci 45
Dipendenza tra componenti
AccountManagement<<component>>
CreditCardServices<<component>>
Logger<<component>>
IDverif<<interface>>
TransLog<<interface>>
AccountManagement<<component>>
Port1 Port2Port1 Port2
CreditCardServices<<component>>
Logger<<component>>
Port1Port1
IDverifTransLog
08 UML - 2010/11 G. Bucci 46
ComponentiPorta: Punto di connessione (di un classificatore) con
l’esterno
InterfacciaUtente<<component>>
ServerApplicazione<<component>>
Port1Port1
Applicazione<<componente>>
Driver<<componente>> BaseDati
<<componente>>
<<delegate>><<delegate>>
08 UML - 2010/11 G. Bucci 47
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 48
Artifact
Realizzazione concreta di un qualche elemento
file sorgente, librerie, file eseguibili
Nome<<artifact>>
Un artifact è la manifestazione di un elemento UML: Login.jar è la manifestazione del componente LoginSubsystem.
Si usa lo stereotipo <<manifest>>
Logging.jar<<artifact>>
+numLoggers
Possono avere attributi
LoggingSubsystem<<component>>
Logging.jar<<artifact>>
+numLoggers
<<manifest>>
08 UML - 2010/11 G. Bucci 49
ArtifactStudente
Docente
Valutazione
Orario
Corso
Studente.java<<artifact>>
Docente.java<<artifact>>
Valutazione.java<<artifact>>
Corso.java<<artifact>>
Orario.java<<artifact>>
<<manifest>>
<<manifest>>
<<manifest>>
<<manifest>>
<<manifest>>
Studente.class<<artifact>>
Docente.class<<artifact>>
Valutazione.class<<artifact>>
Corso.class<<artifact>>
Orario.class<<artifact>>
Persone.jar<<artifact>>
Dati.jar<<artifact>>
Persone<<component>>
Docente
Studente
Docente
Studente
Persone.jar<<artifact>>
<<manifest>>
Dati<<component>>
Corso
Orario
Valutazione
Corso
Orario
Valutazione Dati.jar<<artifact>><<manifest>>
08 UML - 2010/11 G. Bucci 50
Diagrammi di Deployment
Mostrano l’allocazione del software sull’hardware.
Nodo: entità che può eseguire software
Dispositivo
Ambiente di esecuzione
WebServer<<device>>
J2EE<<excecution env>>
ApplicationServer<<device>>
PersoneDatiLoggingSubsystem
components
Logging.jarPersone.jarDati.jar
artifacts
DataBase<<device>>
1*Repository
08 UML - 2010/11 G. Bucci 51
Diagrammi di Deployment
ApplicationServer<<device>>
DataBase<<device>>
1*Oracle
<<execution environment>>
Persone.jar<<artifact>>
Dati.jar<<artifact>>
Logging.jar<<artifact>>
<<deploy>>
<<deploy>><<deploy>>
08 UML - 2010/11 G. Bucci 52
Esempi