UML (ancora)08 UML - 2010/11 G. Bucci 20 Un attore speciale Nella specifica si legge: “alla...

Post on 18-Mar-2020

2 views 0 download

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