Sei sulla pagina 1di 22

Note sugli

Statechart Diagrams
Giacomo Gabrielli
Sorgente: [Bolognesi05]

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Diagrammi di Stato
|

I diagrammi di stato (statechart diagram)


permettono di descrivere il comportamento
dinamico di un oggetto o di un sistema
Descrivono tutti gli stati raggiungibili e come
cambia lo stato delloggetto in relazione
allaccadere degli eventi
Un diagramma di stato quindi composto
da stati e da transizioni fra stati

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Stati
|

Uno stato una situazione nella vita


delloggetto in questione in cui esso
soddisfa una qualche condizione,
esegue una qualche attivit o in
attesa di un qualche evento

Ogni stato etichettato con un nome


e possibilmente con: do / attivit

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Transizioni
|

Una transizione una relazione che lega


uno stato di partenza ed uno stato di arrivo
(non necessariamente distinti)

Ogni transizione etichettata con tre


elementi tutti opzionali:
Evento [Condizione] / Azione

Le transizioni che riportano nello stesso


stato sono dette self-transition

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Eventi e Condizioni
|

Evento (trigger): loccorrenza di


uno stimolo che pu innescare una
transizione fra stati

Condizione (guard): espressione


logica (booleana) da valutare. Se da
uno stato escono pi transizioni, le
loro condizioni devono essere
mutuamente esclusive

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Azioni e Attivit
|

Azione: associata alla transizione,


considerata un processo rapido, non
interrompibile da un evento (atomica)

Attivit: associata allo stato, pu


prevedere un lasso di tempo
considerevole, e pu essere interrotta
da un evento (non-atomica)

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

A Cosa Servono gli


Statechart Diagram?
|

Ogni oggetto in un sistema ha un certo ciclo


di vita. Tra la sua creazione e la sua
distruzione esso interagisce con altri
oggetti. Linterazione pu avvenire
attraverso semplici chiamate sincrone di
operazioni
z

Tipicamente linvocazione di metodi di una


classe

Il comportamento delloggetto non


necessariamente dipende dal suo passato e
dunque, in quel caso, non c bisogno di
una macchina a stati per specificarlo
Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

A Cosa Servono gli


Statechart Diagram? (ii)
|

In altri casi tuttavia loggetto dovr rispondere a


stimoli asincroni che gli arrivano dal suo
ambiente...
z Per esempio un cellulare deve essere
sempre pronto a rispondere a chiamate in
entrata
... oppure esistono oggetti il cui comportamento
dipende da certe condizioni di stato
z Per esempio, sempre in un cellulare,
allarrivo di una chiamata lattivarsi o meno
della suoneria dipende dalla modalit
(normale o silenziosa) in cui si trova
lapparecchio
Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

A Cosa Servono gli


Statechart Diagram? (iii)
|

Il comportamento di questi tipi di oggetti


(che spesso sono istanze di classi, ma
possono essere anche interi sottosistemi)
viene modellato attraverso luso di una
macchina a stati (statechart)

Se un oggetto sprovvisto di una macchina a


stati riceve un segnale, esso ignorato

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Stato: Notazione
Oltre allattivit, uno stato pu avere:
|
|
|

10

Entry action: azione eseguita ogni volta che si entra nello


stato (cio in risposta allevento entry)
Exit action: azione eseguita ogni volta che si lascia lo stato
(cio in risposta allevento exit)
Internal transition: transizione che gestisce un evento
senza cambiare stato (sono diverse dalle self-transition in
cui si esce dallo stato rientrando nello stesso in quanto nelle
self-transition si eseguono le eventuali exit e entry action)
Deferred event: sono eventi che non sono gestiti allinterno
dello stato, ma che non si vuole vadano persi. Perci la
risposta allevento posposta a quando il sistema entrer in
uno stato in cui tale evento gestito

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Esempio di Stato
Tracking
Entry
action

entry / setMode(onTrack)
exit / setMode(offTrack)
newTarget / tracker.Acquire()

Internal
transition

do / followTarget
selfTest / defer

Deferred
event
11

Exit
action

Attivit
dello stato
Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

Stato Iniziale e Stato Finale


|

12

Sono due stati particolari: il primo il punto


di partenza del diagramma ed il secondo il
punto di arrivo
Sono indicati rispettivamente con
e
Negli statechart diagram che modellano il
comportamento di sistemi destinati ad
evolversi continuamente (per esempio
sistemi embedded) lo stato finale pu non
essere presente
Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

Esempio
Partenza

Azione
/prendi primo articolo
[Non tutti gli articoli controllati]
/prendi articolo successivo

Controllo
do/controlla
articolo

[Tutti gli articoli controllati &&


tutti gli articoli disponibili]

o
o
ut disp
v
c e li
Ri tico
r
lo
co gli a
i
t
Ar tti
[ tu

[Tutti gli articoli controllati &&


non tutti gli articoli disponibili]
Articolo Ricevuto
[non tutti gli articoli disponibili]

ili ]
b
i
n

Attesa
Cancellato

Attivit
Spedizione
do/inizia
consegna
Consegnato

Transizione
Cancellato

Cancellato

self-transition
Cancellato

13

Stato

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Consegnato

Transizioni Triggerless
|

Una transizione che non abbia nessun


evento ad innescarla detta triggerless
A

do / Attivit_A

do / Attivit_B

triggerless trans.
|

14

Al termine dellAttivit_A si passa


automaticamente nello stato B, si pu dire cio
che il termine dellattivit ad innescare la
transizione fra stati
Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

Eventi Temporali
|

Sono eventi legati esplicitamente allo scorrere


del tempo
z after + <intervallo temporale>
z when + <condizione>
command

Active

Idle

do /

after (10 secondi) /


self_Test

15

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Sottostati
|

Il comportamento di uno stato pu essere


modellato anchesso con una macchina a
stati e questo a qualsiasi livello di profondit
z

16

Troppi livelli penalizzano la leggibilit del


diagramma

Uno stato composito (cio che contiene


sottostati) pu possedere entry action, exit
action e deferred event con lo stesso
significato che essi hanno negli stati
semplici
Una transizione che parte da un superstato
rappresenta una transizione da ogni
sottostato
Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

Esempio
/prendi primo articolo

[Non tutti gli articoli controllati]


/prendi articolo successivo

Ordine

[Tutti gli articoli controllati &&


tutti gli articoli disponibili]

Controllo
do/controlla
articolo

li ]
ibi
n
to ispo
u
v
d
c e li
Ri tico
olo ar
tic i gli
r
A tt
[ tu

[Tutti gli articoli controllati &&


non tutti gli articoli disponibili]
Articolo Ricevuto
[non tutti gli articoli
disponibili]

Spedizione
do/inizia
consegna

Superstato

Consegnato

Attesa

{entry / action}
Cancellato

questa transizione pu
avere come stato di
partenza qualunque
dei
17
sottostati

Cancellato

Consegnato

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Stati Concorrenti
|

I diagrammi di stato sono ottimali per


descrivere comportamenti concorrenti

Es.: controllo e spedizione di articoli in


un ordine ed il suo effettivo
pagamento da parte dellacquirente
...

18

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Stati Concorrenti: Esempio


Partenza
sottostato

Ordine completo
Ordine

Cancellato

Attesa

Controllo

Fine
sottostato
Spedizione

Consegnato

Pagamento
Autorizzazione

Partenza
sottostato
19

Cancellato

Autorizzato

Fine
sottostato
Le attivit degli stati
sono state tralasciate
per semplicit Giacomo Gabrielli, corso di "Ingegneria dei
Sistemi Software", A.A. 2007/2008

Rifiutato

History State
|

|
|

20

In generale quando, per effetto di una transizione, si


entra in uno stato composito, la state machine
innestata comincia dal suo stato iniziale (a meno che
la transizione non specifichi come target uno specifico
sottostato)
Esistono per situazioni in cui vorremmo poter
memorizzare quale sottostato era attivo nel momento
in cui si abbandonato lo stato composito
Lo scopo quello di riprendere da quel punto le attivit
una volta che si rientrati nello stato composito
Lo stato H detto history state

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

History State: Esempio


History
state

stato
iniziale
BackingUp

Command
Query

Collecting

Copying

se la state
machine innestata
raggiunge uno
stato finale la
storia si annulla
21

Cleaning Up

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Riferimenti
[Bolognesi05] T. Bolognesi, Slides per il corso di Ingegneria
del Software, A.A. 2005/2006, Universit di Siena

22

Giacomo Gabrielli, corso di "Ingegneria dei


Sistemi Software", A.A. 2007/2008

Potrebbero piacerti anche