Lezione UML 2

Transcript

Lezione UML 2
Diagrammi
TIMING
DIAGRAMS: questo tipo di
diagrammi pongono l’accento sugli aspetti realtime di una interazione. Il loro scopo principale
è aiutare l’utilizzatore di essi a ragionare sul
tempo.
Con questi diagrammi si modella una finestra
di tempo in cui il sistema evolve e non tutto il
tempo, perché il tempo assoluto non è
accessibile agli sviluppatori.
Naturalmente il tempo che viene specificato è
più o meno un certo errore che è determinato
da fattori esterni come ad esempio
l’accuratezza dell’orologio di sistema.
Diagrammi
TIMING DIAGRAMS: esempio tratto dal libro
“UML 2and the Unified Process”, pg. 428.
Diagrammi
COMMUNICATION DIAGRAMS: mostrano
una collaborazione dinamica, come il sequence
diagram. Il communication diagram oltre a
mostrare lo scambio di messaggi (iterazione)
mostra anche gli oggetti e le loro relazioni (a
volte riferite col nome di contesto). La scelta se
usare i sequence o i communication diagrams
viene fatta tenendo presente che:
• se il TEMPO o la SEQUENZA è l’aspetto più
importante da valutare⇒SEQUENCE DIAGRAMS
• se il CONTESTO è l’aspetto più importante da
valutare ⇒ COMMUNICATION DIAGRAMS
I communication diagrams possono contenere
oggetti attivi, cioè in esecuzione concorrente
con altri oggetti.
Diagrammi
:Computer
1:Stampa(file)
:Coda
[Stampante occupata]
1.2:Accoda(file)
:ServerStampante [Stampante libera]
1.1:Stampa(file)
:Stampante
Diagrammi
ACTIVITY DIAGRAMS: mostrano i flussi
sequenziali delle attività. E’ usato per
descrivere le attività eseguite in una operazione
oppure per altri flussi di attività (use-case o
una interazione).
Un activity diagram è composto da stati di
azioni (ACTION STATES) che contengono una
specificazione o una azione da fare. Un action
state lascerà lo stato quando l’azione sarà stata
eseguita (c’è bisogno di un evento esplicito per
poter lasciare lo stato).
Diagrammi
Mostra il msg
“Disco pieno”
sullo schermo
[disco pieno]
PrintFile()
[spazio libero su disco]
Mostra il msg
“Stampa in corso”
sullo schermo
Rimozione msg
^Stampante.Stampa(file)
Creazione file
postscript
Diagrammi
INTERACTION-OVERVIEW
DIAGRAMS: questo tipo di diagramma
mostra quanto un comportamento
complesso è realizzato tramite un insieme
di interazioni semplici. Questo tipo di
diagramma è un caso speciale di
diagramma di attività nel quale i nodi si
riferiscono ad altre interazioni.
Questi diagrammi sono utili per
modellare il controllo del flusso
all’interno di un sistema.
Diagrammi
INTERACTION-OVERVIEW DIAGRAMS: esempio
tratto dal libro “UML 2and the Unified Process”, pg.
324.
Diagrammi
INTERACTION-OVERVIEW DIAGRAMS: Come si vede
dalla figura precedente questi diagrammi hanno la stessa sintassi
degli activity diagrams, eccetto che in questo caso si possono
mostrare interazioni in linea e occorrenze di iterazioni piuttosto
che nodi e oggetti di attività.
E’ possibile mostrare in questi diagrammi il branching, la
concurrency e il looping.
Azione
Interaction Overview
Diagram
Branching
Nodi di decisione e di
fusione
Concurrency
Nodi di fork e di join
Looping
Cicli nel diagramma
Diagrammi
COMPONENT DIAGRAMS: mostrano la
struttura fisica del codice in termini di
componenti di codice. Un componente contiene
informazione sulla classe o le classi logiche che
implementa, creando quindi un mapping dalla
logical view alla component view.
I component diagrams si usano nel lavoro di
programmazione pratico.
Diagrammi
Gestore
finestre
(whnd.cpp)
Gestore
comandi
(comhnd.cpp)
Liberia grafica
(graphic.dll)
Gestore
finestre
(whnd.obj)
Gestore
comandi
(comhnd.obj)
Classe
principale
(main.cpp)
Classe
principale
(main.obj)
Programma
client
(client.exe)
Diagrammi
DEPLOYMENT DIAGRAMS: mostrano l’architettura
fisica dell’hardware e del software del sistema. Si
possono vedere i computer reali e i dispositivi (detti
NODI), le connessioni che ci sono tra loro e i tipi.
ClientA:
Compaq
Pro PC
«TCP/IP»
Application
Server:
JRun
ClientB:
Compaq
Pro PC
«TCP/IP»
«JDBC»
Database
Server:
Oracle
Elementi di Modellazione
Sono i concetti utilizzati nei diagrammi.
Un elemento di modellazione è definito
tramite:
• la semantica;
• una definizione formale dell’elemento oppure
• il significato esatto di quello che rappresenta,
tramite “statements” non ambigui.
Essi hanno un corrispondente elemento
vista (view element) che ne è la
rappresentazione grafica
Essi possono esistere in diversi tipi di
diagrammi (ma seguendo delle regole)
Elementi di Modellazione Comuni:
Rappresentazioni Grafiche
Class
Attributes
Object
Attributes
State
Use Case
Operations
Operations
Interface
Note
Node
Package
Component
Elementi di Modellazione
Altri elementi di modellazione oltre a quelli standard (classe,
oggetto, stato, nodo, package, componente) sono, messaggi, azioni e
stereotipi e :
le RELAZIONI, servono per connettere altri elementi di
modellazione tra loro. I tipi più usati sono:
• L’ASSOCIAZIONE (connette elementi e collega istanze)
• LA GENERALIZZAZIONE (o ereditarietà, significa che un
elemento può essere la specializzazione di un altro e può
sostituire quest’ultimo)
• LA DIPENDENZA (un elemento dipende in qualche modo da
un altro e può essere influenzato dai cambiamenti dell’altro)
• L’AGGREGAZIONE (una forma di associazione in cui un
elemento è parte di altri elementi)
• LA COMPOSIZIONE (una forma di aggregazione molto più
forte che ha molti più vincoli)
• IL CONTENIMENTO (un elemento di partenza contiene un
altro elemento di destinazione)
• LA REALIZZAZIONE (l’elemento di partenza garantisce di
adempiere al contratto specificato dall’elemento destinazione)
Elementi di Modellazione:
Le Relazioni
Associazione
Generalizzazione
Dipendenza
Aggregazione
Composizione
Contenimento
Realizzazione
Meccanismi generali
Vengono usati in UML per dare
informazione addizionale nei diagrammi
Si usano anche per rappresentare tutto ciò
che non può essere rappresentato tramite gli
elementi di modellazione.
Essi sono:
• ADORMENTS (abbellimenti);
• NOTES;
• SPECIFICATIONS (specificazioni).
Meccanismi generali:
Adornments
Sono agganciati agli elementi di
modellazione nei diagrammi e ai nodi
aggiungendo semantica all’elemento (o al
nodo).
Class
unOggetto:
Class
Meccanismi generali:
Notes
Tutto quello che non può essere definito
attraverso il linguaggio di modellazione
può essere rappresentato con le NOTE.
Una nota può stare in qualunque parte del
diagramma e può contenere qualunque tipo
di informazione.
Essa è una stringa che non viene interpretata
dall’UML.
Le note hanno anche degli stereotipi che
descrivono il tipo di nota.
Meccanismi generali:
Notes
Opzioni dello Stock
TheorPrice()
MarketPrice()
ExpireDate()
Utilizzare la
formula di
Black&Schole
Meccanismi generali:
Specifications
Gli elementi di modellazione hanno proprietà
che contengono i valori dei dati per
quell’elemento.
Una proprietà è definita con un nome ed un
valore chiamato TAGGED VALUE (di un tipo
specifico).
Le proprietà vengono usate per aggiungere
specificazioni aggiuntive circa le istanze
dell’elemento che normalmente non sono visibili
nel diagramma (es.: una classe può essere descritta
con del testo che in modo più informale specifica le
responsabilità e le capacità della classe).
Meccanismi generali:
Specifications
Alcune estensioni per l’UML
L’UML può essere esteso o adattato ad
uno specifico metodo, organizzazione o
utente.
I meccanismi usati per farlo sono:
• stereotipi;
• tagged values;
• vincoli (constraints).
Stereotipi
Definiscono un nuovo tipo di elemento di
modellazione basandosi su un elemento di
modellazione esistente.
Gli stereotipi sono basati su tutti i tipi di
elementi: classi, nodi, componenti e note e
anche
sulle
relazioni:
associazioni,
generalizzazioni e dipendenze.
Esso è descritto mettendo il suo nome come
stringa tra virgolette angolate vicino al nome
dell’elemento.
Può
anche
avere
una
rappresentazione grafica.
Stereotipi
«Attore»
Cliente
Cliente
Cliente
Tagged Values
Proprietà degli elementi che contengono
coppie nome-valore di informazione su di
essi.
Qualunque tipo di informazione può essere
agganciata agli elementi.
Prodotto Finanziario
{abstract}
{autore=“HEE”}
{stato=draft}
Valore:int
expdate:Date
Vincoli (Constraints)
Il vincolo è una restrizione su un elemento
che limita l’uso dell’elemento o della
semantica (significato) dell’elemento.
Un vincolo o viene dichiarato nel tool (vedi
disegno delle specificazioni) e usato
ripetutamente nei diversi diagrammi o è
definito e applicato dove necessario in un
diagramma.
Vincoli (Constraints)
Gruppo
cittadini
anziani
0..1
{persona.età>60}
0..*
Persona
Modellazione con UML
Quando si costruiscono dei sistemi con
UML non ne viene costruito solamente un
singolo modello.
Ci sono modelli distinti nelle diverse fasi
dello sviluppo e gli obiettivi dei modelli
sono diversi.
Le fasi di modellazione di un sistema sono:
•
•
•
•
ANALISI;
PROGETTAZIONE;
IMPLEMENTAZIONE;
DEPLOYMENT.
Modellazione con UML: Analisi
e Progettazione
Analisi: obiettivo del modello è catturare I
requisiti del sistema e modellare le classi di
base e le collaborazioni del “mondo reale”.
Progettazione: obiettivo del modello è
espandere il modello di analisi in una
soluzione tecnica funzionante (operativa)
tenendo in considerazione l’ambiente di
implementazione.
Modellazione con UML:
Implementazione e Deployment
Implementazione: il modello qui è il codice
sorgente vero e proprio che viene
programmato e compilato in programmi.
Deployment: il modello consiste in una
descrizione che spiega come il sistema è
strutturato nell’architettura fisica.
Modellazione con UML
Modello del sistema
Analisi
Progettazione Implementazione Deployment
Modellazione con UML
Il cammino tra le fasi ed i modelli viene
mantenuto attraverso le proprietà e le
relazioni di raffinazione.
Nonostante i modelli visti in precedenza
siano diversi tra loro, essi vengono
normalmente costruiti espandendo i
contenuti dei modelli ad essi precedenti.
Modellazione con UML
UML è indipendente dalle fasi cioè lo stesso
linguaggio generico e gli stessi diagrammi
vengono usati per modellare cose diverse in
fasi diverse.
Lo scopo e il proposito che il modello deve
garantire lo decide chi modella il sistema.
Il linguaggio di modellazione dà soltanto la
possibilità di creare modelli in una maniera
espressiva e consistente.
Modellando con UML il lavoro dovrebbe
essere guidato da un metodo (o processo) che
sottolinei i diversi passi da fare e come devono
essere implementati.
Modellazione con UML
Il processo che abbiamo citato prima
tipicamente divide il lavoro in iterazioni
successive delle fasi di: ANALISI DEI
REQUISITI/ANALISI/PROGETTAZIONE/IMPLEM
ENTAZIONE/DEPLOYMENT.
Comunque c’è anche un processo più veloce di
questo riguardante il reale lavoro di
modellazione (vedi figura).
Input: conoscenza,
esperienza, descrizione del
problema, obiettivi, ecc.
Fase delle
idee
(brillanti)
Fase di
schematizzazione
(bozza)
[La schematizzazione assomiglia
ad un approccio pratico]
Organizzazione
Verifica
Validazione
Prototipizzato e testato
[Trovati dei difetti]
Organizza la
schematizzazione
informale in un tool per
produrre diagrammi più
formali
Specifica i dettagli del
diagramma (processo
iterativo quanto più si
acquisisce informazione
sul modello)
Specificazione
Integrazione
Uso di strumenti
informali come la
lavagna e i Post-it
Valutato
[Risultato soddisfacente]
Verifica il diagramma
insieme con gli altri
diagrammi, e verifica e
valida che i requisiti
vengano soddisfatti
correttamente
Costruisce un prototipo
e lo testa (si possono
prototipizzare un certo
numero di diagrammi
tutti insieme)
Valuta il risultato; torna
in dietro e corregge gli
eventuali difetti
Modellazione Use Case
Tecnica usata per descrivere cosa deve fare
un nuovo sistema o cosa può fare un
sistema già esistente;
I componenti principali di un modello use case sono:
• Il SISTEMA MODELLATO;
• Gli USE CASES;
• Gli ATTORI.
Modellazione Use Case
I confini del sistema sono definiti dalle
funzionalità che sono trattate dal sistema
Ogni use case rappresenta una funzionalità
completa. (Per rappresentare una funzionalità
completa lo use case deve descrivere l’intera funzione
dall’inizio scatenato da un attore esterno fino
all’esecuzione dell’intera funzionalità). Esso deve
sempre restituire un valore ad un attore che è
ciò che l’attore vuole avere dal sistema
L’attore è una qualsiasi entità esterna che ha
un certo interesse ad interagire con il sistema
(utente umano, altro sistema o altro dispositivo
hardware)
Modellazione Use Case
Nella modellazione use case il sistema è visto
come una scatola nera che fornisce delle
funzionalità (use cases)
Gli obiettivi primari degli use cases sono :
• DECIDERE e DESCRIVERE i requisiti funzionali del sistema
(accordo tra clienti e sviluppatori del sistema)
• Fornire una DESCRIZIONE CHIARA e CONSISTENTE di
quello che il sistema dovrebbe fare (il modello verrà così
utilizzato attraverso il processo di sviluppo per comunicare a
tutti gli sviluppatori quei requisiti idividuati)
• Fornire una base per l’esecuzione dei test di sistema e per la
sua verifica
• Fornire l’abilità di tracciare i requisiti funzionali nelle classi
effettive e nelle operazioni del sistema per semplificare i
cambiamenti e le estensioni al sistema (cambiando solo quei
particolari use cases che devono essere modificati)
Modellazione Use Case
Il lavoro da fare per la creazione di un modello use case
consiste nel:
•
•
•
•
•
Definire il sistema;
Trovare gli attori e gli use cases;
Descrivere gli use cases;
Definire le relazioni tra use cases;
E validare il modello.
Il modello use case è rappresentato da diagrammi use
cases che mostrano gli attori, gli use cases e le loro
relazioni
Questi diagrammi danno una panoramica generale del
modello ma la vera descrizione è testuale (devono
essere usati entrambi affinché i modelli visuali possano
fornire tutta l’informazione necessaria nel modello use
case)
Diagrammi Use Case
In UML, un modello use case viene descritto da un
numero di diagrammi use case
Un diagramma use case contiene gli elementi di
modellazione per il sistema, per gli attori e mostra le
diverse relazioni come:
• La generalizzazione;
• L’associazione;
• E la dipendenza
Tra questi elementi.
La descrizione dei contenuti viene fatta attraverso l’uso
del testo (in UML essa è la proprietà di
documentazione per gli elementi use case)
L’alternativa al testo è l’uso dei diagrammi di attività
(N.B.: Uno use case descritto tramite testo è di più
facile comunicazione sia al cliente che all’utente finale
del sistema)