vuoi
o PayPal
tutte le volte che vuoi
State ......................................................................................................................................................... 11
Strategy .................................................................................................................................................... 12
Proxy ........................................................................................................................................................ 12
Adapter .................................................................................................................................................... 12
Decorator ................................................................................................................................................. 12
Abstract Factory ...................................................................................................................................... 13
Composite ................................................................................................................................................ 13
Façade ...................................................................................................................................................... 14
Observer .................................................................................................................................................. 14
MVC ............................................................................................................................................................. 14
Interaction diagram
Descrivono il comportamento dinamico di un gruppo di oggetti che “interagiscono” per risolvere un
problema. Tipicamente rappresentano il comportamento di uno specifico use case o scenario in termini di
specifiche entità (oggetti) e messaggi scambiati (metodi). UML propone due diversi tipi di interaction
diagram: sequence diagram e communication diagram.
Sequence diagram
Evidenziano la sequenza temporale delle azioni: oggetti partecipanti e sequenze (temporali) di messaggi
scambiati. Non si vedono le associazioni tra oggetti. Usabili in due forme diverse:
• la forma generica: tutte le sequenze (esecuzioni) possibili
• la forma d’istanza: una sequenza particolare (consistente con quella generica)
In ascissa sono disposti vari oggetti (istanze specifiche). L’ordinata rappresenta il tempo: in genere la scala
non importa, interessa solo la sequenza cioè il rapporto di precedenza tra eventi, non la loro distanza, ma
per sistemi real-time si può usare. Se necessario gli assi orizzontale e verticale possono essere scambiati.
Gli oggetti possono essere creati e distrutti.
Possono essere indicati come oggetti anche: istanze di attori, quando il sequence diagram è posseduto da
uno use case e altri elementi dai robustness diagrams.
Analisi di robustezza
Tre tipi di oggetti. Sostanzialmente il pattern Model View Control. Regole di comunicazione ben precise: ogni
tipo di oggetto può “parlare” solo con i suoi vicini nella gerarchia
• actor
• interface object
• entity object
• control object
Messaggi
Possono essere:
• completi (di risposta)
• lost or found
• sincroni o asincroni
• call o signal
Possono essere mandati da un oggetto a sé stesso.
Un messaggio è lost se non arrivano al destinatario stabilito, oppure se non se ne conosce il destinatario. Un
messaggio è found se arrivano da un mittente sconosciuto, oppure se arrivano da un mittente non indicato
nel diagramma.
Semantica di frammenti e composizione
• Alt: una scelta di comportamento, al più una delle opzioni sarà scelta, tra quelle con guardia
verificata. Se nessuna opzione ha una guardia vera, nessuna opzione viene eseguita.
• Opt: come alt con una sola opzione (o con due opzioni, di cui una vuota).
• Loop: l’operando viene ripetuto tante volte quanto indicato dalla guardia. La guardia può riportare
un numero minimo e massimo di iterazioni e una condizione booleana. Le iterazioni sono in numero
compreso tra il minimo e il massimo. Oltre il minimo si itera fintanto che la guardia è vera.
• Par: composizione parallela tra i comportamenti degli operandi.
• Critical (Regione Critica): la regione è trattata atomicamente dal frammento circostante quando si
determinano le sequenze possibili (tracce) di esecuzione.
• Neg: indica tracce non valide. Serve a escludere dei comportamenti indesiderati.
• Assert: le sequenze degli operandi dell’asserzione sono le uniche tracce valide. Le altre sono escluse.
Temporizzazione
Si indica tramite vincoli.
sendTime: individua l’istante di invio di un messaggio da parte di un oggetto. receiveTime: individua l’istante
di ricezione di un messaggio da parte di un oggetto.
Communication diagram
Simili ai diagrammi di sequenza, ma evidenziano le interazioni tra le parti, pongono maggior attenzione allo
scambio messaggi. Sono adatti per concorrenza e thread, invocazioni innestate e interazioni “sofisticate”.
Il tempo non è associato ad una dimensione precisa: le sequenze si scoprono usando la numerazione.
Sequenze alternative possono essere modellate sullo stesso diagramma.
Se si usa la numerazione “decimale” allora si ha un’ indicazione chiara su quale operazione chiama quale
altra.
Confronto tra sequence e comunication diagram
I Sequence Diagram mettono più enfasi sulla sequenza temporale delle operazioni. Indicano esplicitamente
la vita degli oggetti.
I comunication diagram indicano la connessione tra oggetti ma non sono proprio statici.
Automi a stati finiti
Rappresentano il comportamento dei singoli oggetti di una classe in termini di eventi a cui gli oggetti (la
classe) sono sensibili, azioni prodotte, transizioni di stato e identificazione degli stati interni degli oggetti.
Offrono la possibilità di descrivere evoluzioni parallele. Gli state Diagram rappresentano il comportamento
di una classe di oggetti, descrivendone i possibili stati e la reazione ad eventi esterni, in termini di
cambiamenti di stato e/o azioni svolte. I diagrammi di stato danno un'astrazione di stati, eventi e transizioni.
Stato
Uno stato rappresenta una situazione durante la quale una condizione (solitamente implicita) è verificata. La
condizione può rappresentare una situazione statica, come l’attesa di un evento esterno, o semplicemente
una situazione stabile che può essere modificata solo da un intervento esterno. Uno stato perdura nel tempo,
finché un evento non fa cambiare stato all’oggetto.
Macchine a stati
Le macchine astratte sono usate anche per modellare il protocollo di utilizzo di parte del sistema (Protocol
State machines). Indicano le transizioni legali che un classificatore può causare. La macchina a stati
rappresenta convenientemente il ciclo di vita degli oggetti, o un possibile ordine di invocazione delle sue
operazioni. Non escludono alcuna implementazione del comportamento, ma impongono gli scenari legali di
utilizzo, di conseguenza sono associate a classificatori (tipicamente classi), interfacce e porte.
Le macchine a stati (state machines) possono essere usate per descrivere il comportamento di una parte del
sistema. Il comportamento è modellato come l’attraversamento di un grafo di nodi-stati interconnessi da
archi-transizioni, causato dall’arrivo di una serie di eventi. Durante questo attraversamento, la macchina a
stati esegue una serie di attività associate ai vari elementi della macchina. Il classificatore cui è associata la
macchina a stati definisce quali segnali e chiamate sono definite per la macchina a stati, e quali attributi e
operazioni sono disponibili nelle attività della macchina: segnali e chiamate dipendono dalle operazioni e
‘reception’ definiti per il classificatore.
Stato determinato da condizione statica e stati dinamici
Lo stato determinato da condizione statica è l'insieme dei valori degli attributi e dei link posseduti da un
oggetto in un certo istante. È un dato astratto. Può corrispondere a diverse -anche infinite -combinazioni di
valori degli attributi. Lo stato influenza il comportamento: l'oggetto reagisce in modo qualitativamente
diverso agli eventi esterni, in funzione dello stato in cui si trova. Il comportamento quantitativo è influenzato
dal valore degli attributi, dei link e dei parametri delle operazioni.
La condizione verificata in uno stato può anche rappresentare la dinamica dell’oggetto (l’elemento entra
nello stato quando inizia una certa attività e lo lascia appena l’attività viene completata).
Identificare gli stati
Per ciascun oggetto occorre identificare tutti gli stati in cui può trovarsi. Suggerimenti: trascurare gli attributi
ininfluenti in quanto alcuni attributi non modificano in modo qualitativo il comportamento di un oggetto, ma
al più i valori degli eventi che l'oggetto produce, individuare le condizioni limite, trovare tutti i confini e i limiti
dello stato e definire un corretto livello di astrazione.
Lo scenario
Uno scenario è una sequenza di eventi occorsi durante una specifica esecuzione del sistema. Dà un’idea
dell’ordine degli eventi: talune coppie indicano un ordinamento necessario, altre un ordine casuale.
Ricavare il diagramma degli stati
Una collezione sufficientemente ricca di sequence diagram descrive tutte le possibili evoluzioni dell’oggetto
considerato: il fatto di poterle descrivere tutte deriva dalla capacità di astrazione. Ad esempio, in uno
scenario il chiamante riaggancia per primo, in un altro scenario riaggancia il ricevente: occorre rappresentare
la reazione dell’oggetto ad entrambi questi eventi.
Condizioni, operazioni ed eventi
Le condizioni sono funzioni booleane sui valori degli oggetti, valide in un intervallo di tempo, utili come
guardie delle transizioni di stato (non basta l'evento, deve essere verificata la condizione).
Durante la loro vita gli oggetti eseguono operazioni associate allo stato (attività), associate alle transizioni
(azioni).
Le azioni sono operazioni che hanno durata istantanea (rispetto alla granularità del tempo). Tipicamente
produzione di eventi. Sono associate alle transizioni di stato oppure all'ingresso o all'uscita da uno stato.
Le attività sono operazioni con durata significativa. Sono associate ad uno stato. Possono essere continue o
sequenziali.
Se uno stato ha una attività associata e una freccia senza eventi esce da questo, la freccia indica la transizione
svolta automaticamente al completamento dell’attività.
L’evento è uno stimolo esterno. Può causare nell'oggetto destinatario un cambio di valore, di stato o la
produzione di ulteriori eventi. Si intende che un evento ha una individualità ben definita: raggruppabili in
classi di