• Non ci sono risultati.

UML Diagramma macchina a stati (state machine diagram)

N/A
N/A
Protected

Academic year: 2022

Condividi "UML Diagramma macchina a stati (state machine diagram)"

Copied!
30
0
0

Testo completo

(1)

UML

Diagramma

macchina a stati

(s tate machine diagram)

Università di Padova

Facoltà di Scienze MM.FF.NN Informatica - anno 2009-10

Corso di Ingegneria del Software - B

v. 2.3

(2)

Diagramma di stato <=> macchina a stati

• Diagramma di stato (o macchina a stati ) è un grafo di stati e transizioni

• Di solito è associato ad una classe

• Descrive la risposta di un’istanza della classe agli eventi che riceve

• Può essere associato ad altre entità di

modellazione (use-case, attori, sottosistemi, operazioni, o metodi)

(3)

Diagramma di macchina a stati (Statechart Diagram)

• Specifica il ciclo di vita degli oggetti di una classe, definendo le regole che lo governano.

• Quando un oggetto si trova in un certo stato può essere interessato da determinati eventi (e non da altri)

• Come risultato di un evento l’oggetto può passare ad un nuovo stato (transizione)

• Utilizzato in situazioni dove le transizioni di stato sono provocate da eventi asincroni, per

(4)

• Una macchina il cui comportamento non è solo una

diretta conseguenza dell’evento corrente (input), ma anche della sua storia passata

• E’ caratterizzata da uno stato interno che rappresenta la sua passata esperienza

ONON

ON ONONONONON ONONON ON ONONONON

OFFOFF OFFOFF

Diagramma di macchina a stati

(5)

off on Lamp

Lamp OnOn Lamp Lamp

OnOn

Lamp Lamp

OffOff Lamp Lamp

OffOff off

on

ONON

ONON OFFOFFOFFOFF

(6)

Uscite e azioni

• Come la macchina cambia di stato, puo’

generare un’uscita

on

off Lamp On

Lamp On print(”on”) print(”on”)Lamp On Lamp On print(”on”) print(”on”)

Lamp Lamp

OffOff Lamp Lamp

OffOff off

on

Moore

on

off Lamp On

Lamp On Lamp On Lamp On

Lamp Lamp

OffOff Lamp Lamp

OffOff off

on/print(”on”)print(”on”)

Mealy

(7)

Extended State

• Aggiunta di variabili (extended state)

off on Lamp

Lamp OnOn Lamp Lamp

OnOn

Lamp Lamp

OffOff Lamp Lamp

OffOff off

on/ctr := ctr + 1

ctr : Integer ctr : Integer ctr : Integer ctr : Integer

(8)

• Una macchina estesa (modello Mealy) è definita da:

– un insieme di segnali di input (input alphabet) – un insieme di segnali di output (output alphabet) – un insieme di stati

– un insieme di transizioni

triggering signal

action

– un insieme di variabili di stato estese – uno stato iniziale

– un insieme di stati finali (se vi è terminazione)

(9)

top

Ready Ready Ready Ready

stop

/ctr := 0 stop

State State State State

Trigger Trigger Trigger Trigger

Action Action Action Action Initial

Initial pseudostate pseudostate

Initial Initial pseudostate pseudostate

Transition Transition Transition Transition

Final Final state state Final Final state state

DoneDone DoneDone

“top” statetop” state

top” statetop” state

(10)

Esempio di diagramma di stato

(11)

esempio

selecting

verifying downloading

checking schedule download course offerings

make a course selection

verify selection

check schedule

select another course make a different selection

unscheduled

scheduled

sign schedule

(12)

Comportamento

• Una macchina a stati è un modello di tutte le possibili tracce di un oggetto

• La macchina reagisce esclusivamente agli eventi sentiti dall’oggetto (inviati all’oggetto)

• La reazione consiste nel cambiamento

di stato ed una eventuale esecuzione

di un’azione

(13)

Diagramma di stato: esempio oggetto telefono

(14)

• Evento = un tipo di occorrenza osservabile

– interazioni:

• invocazioni di operazioni sincrone su oggetti (call event)

• ricezione di segnali asincroni (signal event)

– occorrenze di istanti di tempo (time event)

• terminazione di intervalli di tempo (interval expiry)

• calendario / clock

– il cambiamento del valore di una entità (change event)

• Instanza d’evento: capita ad un particolare istante e non ha durata

Comportamento pilotato dagli eventi

(15)

Evento

• Un evento è l’occorrenza di un fenomeno collocato nel tempo

• Un evento occorre istantaneamente

• Un’istanza (occorrenza) di un evento è chiamata istanza di un evento

• Un evento può avere dei parametri che lo caratterizzano

(16)

Una gerarchia di eventi: InputEventname

<<signal>>

UserInput device

<<signal>>

Mouse Button location

<<signal>>

Keyboard Button character

<<signal>>

Mouse Button Down

<<signal>>

Mouse Button Up

<<signal>>

Parametri dei segnali

(17)

Stato

• Uno stato descrive un periodo di tempo durante la vita di un oggetto

• Può essere caratterizzato come:

– Un insieme di valori qualitativamente simili – Un periodo di tempo durante il quale un

oggetto attende il verificarsi di un evento – Un periodo di tempo durante il quale un

oggetto svolge un’attività

(18)

• Scomparto del nome

Questa sezione contiene il nome dello stato

• Scomparto delle transizioni interne

Questa sezione contiene una lista di azioni, o attività interne, che sono effettuate in quello stato.

Gestione password

entry / set echo invisibile exit / set echo normale digit / elabora carattere

Uno stato può essere opzionalmente suddiviso in scomparti:

(19)

Esempio di stati e transizioni

(20)

Altri tipi di stato

• Iniziale

• Finale

concurrent composite state

sequential composite state

(21)

Transizione

• Una transizione collega tra loro due stati

• L’uscita da uno stato definisce la risposta dell’oggetto all’occorrenza di un evento

• Una transizione è associata a un evento, una condizione (opzionale), un’azione

(opzionale), e uno stato di arrivo.

• Sintassi: evento [condizione] / azione

(22)

Esempi di transizioni

in attesa

processa l’ordine

cancella ordine valuta

ricevi ordine [ ammontare < 25$]

ricevi ordine [ ammontare > 25$]

evento condizione

accetta /addebita( ) rifiuta

azione

(23)

Tipi di transizione

• Azione di ingresso: un’azione eseguita all’ingresso in uno stato

• Azione di uscita: azione eseguita all’uscita di uno stato

• Transizione esterna: risposta a un evento che causa un cambio di stato e l’esecuzione delle opportune azioni

• Transizione interna: risposta a un evento che causa solo l’esecuzione di opportune azioni

(24)

Esempi di transizioni e azioni

Gestione password

entry / set echo to star; password.reset( ) exit / set echo normal

digit / handle character clear / password.reset( ) help / dispay help

Azione di ingresso Azione di uscita Transizioni interne

(25)

Tipi di stato

• Semplice

• Composto

sequenziale:

uno attivo per ogni istante

• Composto parallelo:

i sottostati sono attivi contemporaneamente

nome dello stato

sott.st.1 sott.st.2

Nome stato

sottostato 1 sottostato 2

(26)

removeReservation( R : Reservation ) [ reservations.size() > 1 ] / reservation.remove ( R )

Not reserved

entry: reservations.clear()

Reserved removeReservation( R : Reservation )

[ reservations.size() == 1 ] / reservations.remove( R )

addReservation( R : Reservation ) / reservations.add( R )

addReservation( R : Reservation ) / reservations.add( R )

Esempio: prenotazione di un libro

(27)

Esempio: concorrenza

(28)

Esempio: concorrenza

(29)

Esempio: splitting e joining condizionati

(30)

Bibliografia e riferimenti:

- Reference manual UML 1.5 e 2.0 - Slide “UML Tutorial Series”

tratte dal sito: www.omg.org documento: 01-03-03.ppt

Riferimenti

Documenti correlati

La modellazione ha portato alla realizzazione di un modello tridimensionale agli elementi finiti della porzione di struttura oggetto di studio sul quale si sono

All these elements may derive from personal experience or from the observation of the behaviour of others (De Beni &amp; Moè, 2000). Control and self-regulating mechanisms, on

Descrivere, dal punto di vista dell’utente di un sistema operativo, cosa sono i file, e che vantaggi presenta il loro utilizzo rispetto all’accesso diretto alla memorie di massa.

tempo si è già rivelato, con maggiore valenza di sempre, come una naturale infrastruttura in grado di contribuire alla mitigazione del rischio, alla luce della integrazione di

Come gruppo di scienziati, amministratori, gestori e ambientalisti che hanno un interesse specifico nelle acque di transizione nell’area CADSES, abbiamo pensato che

ciclo CHAR(15) anno INTEGER nome CHAR(20) cognome CHAR(20) matricola INTEGER Studente.

La lunghezza d’ onda e’ quindi molto lunga, e quindi la. differenza di fase tra due punti qualsiasi dell’

• E’ un grafo che rappresenta le entità di un modello come classi e interfacce assieme ai loro contenuti (campi e/o metodi) e alle loro relazioni statiche.. • Una