Statechart Diagrams
Sviluppo di statechart complessi
In COMET
Cosa vedremo…
Modellazione statechart complessi
Statechart gerarchici
Statechart concorrenti
Linee guida per sviluppo di statechart
Sviluppo di statechart da Use case
Sviluppo dello statechart piatto
Raffinamento con eventi alternativi
Sviluppo degli statechart gerarchici
Sviluppo degli statechart concorrenti
Modellazione di statechart
complessi
Come modellare i vari aspetti di un sistema?
Sviluppare più statechart da correlare fra loro
COMET suggerisce:
Decomposizione gerarchica degli stati
Utilizzo di statechart concorrenti
Statechart gerarchici
COMET: statechart gerarchici
UML 1.3: statechart composti
Si utilizza la scomposizione gerarchica
per ridurre la complessità
Statechart gerarchici semanticamente
equivalenti agli statechart piatti
Statechart gerarchici
Scomposizione di stati
Scomposizione in:
Superstati
Sottostati
Scomposizione di tipo “or”:
Se uno stato è attivo, soltanto un suo
sottostato è attivo
Scomposizione di stati
Insufficient Cash
Closed Down
Superstato
Startup
Card
Inserted
Closedown
Processing
After(Elapsed Time) [Closedown Not Requested]
Idle
Customer Input
Processing
Customer Input
Terminating Transaction
Waiting for PIN
Cancel
Terminating
Waiting for PIN
PIN Entered
Card
Inserted
After (Elapsed Time) [Closedown Was Requested]
Cancel
Invalid PIN
Third Invalid, Stolen
Third Invalid, Stolen
Sottostati
Validating PIN
Validating PIN
Confiscating
Processing
Transaction
Valid PIN
Waiting for
Customer
Choice
Card
Ejected
Card Confiscaded
Transfer
Selected
Query
Selected
Processing
transfer
Rejected
Valid PIN
Waiting for
Customer
Processing
Choice
Query
Ejecting
Transfer
Printing
Selected
Transfer OK
Query OK
Query
Selected
Withdrawal OK
Withdrawal
Selected
Processing
Withdrawal
Receipt
Printed
Withdrawal
Selected
Cash
Dispensed
Dispensing
Statechart gerarchici
Aggregazione di transizioni
Le transizioni
possono essere
riferite ai sottostati
Card
Inserted
Processing
Customer Input
Waiting for PIN
Cancel
Third Invalid, Stolen
Quelle comuni a
tutti i sottostati
vengono aggregate
in un’unica
transizione
Validating PIN
Valid PIN
Waiting for
Customer Choice
Transfer
Selected
Query
Selected
Withdrawal
Selected
Statechart concorrenti
Scomposizione di tipo “and”
Due definizioni:
Statechart ortogonali
Utilizzati per modellare aspetti
concorrenti di un sistema
Statechart concorrenti
Utilizzati solo per la vera
concorrenza
Statechart concorrenti
Esempio
ATM Control
ATM Processing
ATM
Processing
Superstate
Closedown request condition
Closedown Not Requested
Startup
Closedown
Closedown Not Requested
Sviluppo di statecharts
Linee guida per lo sviluppo di
statecharts
Sviluppo di statechart da Use Case
Esempio
Linee guida per sviluppo di
statecharts
STATI
Nome dello stato deve riflettere un
intervallo di tempo reale
Nome dello stato unico
Deve essere possibile uscire da ogni
stato
Attivazione dei sottostati in base al
tipo di scomposizione
Linee guida per sviluppo di
statecharts
AZIONI EVENTI
Non confondere evento (causa) con
azione (effetto)
Nomi di eventi e azioni non ambigui
Condizioni sugli eventi hanno valore
booleano
Azioni e condizioni sono opzionali: da
usare solo se necessario
Sviluppo di statechart da Use Case
Scegliere percorso tipico nella
descrizione fornita dallo Use case
Evento ambiente - use case causa
transizione a nuovo stato
Azioni, se necessario
Considerare sviluppi alternativi
Si aggiungono nuovi stati, transizioni e
azioni.
Sviluppo di statechart da Use Case
Esempio: Control Speed Use Case
Attore: Guidatore
Riassunto: Questo Use Case descrive il
sistema di guida automatico di un’autovettura
che viene comandato da guidatore
(acceleratore, freno) e componenti del motore
Precondizione: Il guidatore ha acceso il motore
e sta guidando in modo manuale
Descrizione: ...
Postcondizione: vettura ferma, motore spento
Control Speed Statechart
Primo sviluppo
Si comincia dalla precondizione (stato
IDLE)
Si aggiungono gli stati in base agli
eventi esterni
Si costruisce uno statechart piatto
Primo sviluppo
Initial
Engine On / Clear
Desired Speed
Idle
1: Accel [Brake Off] /
2E: Enable "Increase
Speed"
Accelerating
16: Engine Off
7: Brake Pressed/ 8D: Disable
"Maintain Speed"
Cruising
Off
14: Off / 15D: Disable
"Maintain Speed"
9: Resume [Brake Off] /
10E: Enable "Resume
Cruising"
Resuming
11: Reached Cruising /
12D: Disable "Resume
Cruising" 13E: Enable
"Maintain Speed"
Cruising
3: Cruise / 4D: Disable "Increase Speed"
5: Select Desired Speed, 6E: Enable
"Maintain Speed"
Control Speed Statechart
Primo raffinamento
Si semplifica lo statechart
Azioni entry / exit vengono associate ai
rispettivi stati
Si complica lo statechart
Si considerano gli eventi e le azioni
alternative
Prima raffinamento (si semplifica…)
Initial
Initial
Engine On
Engine
On/ /Clear
Clear
Desired
Speed
Desired Speed
Idle
Idle
1: Accel [Brake Off] /
2E:
"Increase
1: Enable
Accel [Brake
Off]
Speed"
Accelerating
Accelerating
2E, 4D:
Do / Increase Speed
Engine
16:16:
Engine
Off Off
7: Brake Pressed/ 8D: Disable
"Maintain
7: Brake
PressedSpeed"
Cruising
Cruising
Off
Off
9:
[BrakeOff]
Off] /
9:Resume
Resume [Brake
10E: Enable "Resume
Cruising"
Resuming
Resuming
10E,
12D:
Do / Resume
cruising
14: 14:
OffOff
/ 15D: Disable
"Maintain Speed"
11: Reached Cruising /
12D: Disable "Resume
Cruising" 13E: Enable
Cruising
"Maintain Speed"
11: Reached
Cruising
6E, 8D,
13E, 15D:
Cruising
Do / Maintain Speed
3: Cruise / 4D: Disable "Increase Speed"
3: Cruise
/
5: Select Desired
Speed,
6E: Enable
5: Select
Desired
Speed
"Maintain
Speed"
Prima raffinamento (si complica…)
Engine On / Clear Desired Speed
Initial
Idle
Engine Off
Accel [Brake Off]
Engine Off
Engine Off
Accelerating
Accel [Brake Off]
Cruising
Off
Do / Increase Speed
Brake Pressed
Off
Brake Pressed / Select
Desired Speed
Resume [Brake Off]
Accel
Engine Off
Off
Resuming
Do / Resume
cruising
Accel
Cruise / Select Desired
Speed
Brake Pressed
Engine Off
Cruising
Do / Maintain Speed
Reached Cruising
Control Speed Statechart
Statechart gerarchico
Raggruppamento di stati che hanno
caratteristiche comuni (Accelerating,
Resuming e Cruising)
Raggruppamento basato anche su
aggregazione di transizioni
Statechart gerarchico
Engine On / Clear Desired Speed
Idle
Engine Off
Engine Running
Initial
Off
Cruising Off
Accel
[Brake Off]
Accel [Brake Off]
Resume
[Brake Off]
Off
Brake
Pressed
Automatic Control
Accelerating
Accel
Do / Increase Speed
Cruise / Select
Desired Speed
Resuming
Do / Resume Cruising
Accel
Cruising
Do / Maintain Speed
Reached Cruising
Control Speed Statechart
Statechart ortogonale
Modellazione dei vari aspetti del
sistema
Si aggiungono altri statechart che
vengono attivati contemporaneamente
Statechart ortogonale
Cruise control
Auto Cruise Control
Auto Cruise
Control
Superstate
Brake Condition
Brake Off
Brake Pressed
Brake Released
Brake On
Scarica

innocenti