A Semantic-rich Framework for Learning Software Patterns
T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
1. Modelovanje stanja korišćenjem Statechart
dijagrama (dijagrama stanja)
Analiza i specifikacija informacionih sistema
dr Zoran Jeremić
zoran.jeremic@gmail.com
1
2. Sadržaj
Uvod u statechart dijagrame
Statechart gradivni blokovi
Stanja
Promene
Napredne karakteristike
Složena stanja
Paralelna stanja
3. Proces razvoja sistema
Faza Aktivnost Izlaz
Biznis
Započinjanje Utvrđivanje poslovnih potreba
dokumenta
Intervjuisanje stejkholdera, istraživanje Organizovana
Analiza sistemskog okruženja dokumentacija
Analiza inženjerskih aspekata sistema, Logički model
Specifikacija definisanje koncepata sistema sistema
Programiranje, testiranje jedinica, Proverljiv
Implementacija integrisanje, dokumentovanje sistem
Resultati
Testiranje & Integrisanje svih komponenti, verifikacija, testiranja,
Integracija validacija, instalacija, obuka funkcionalan
sistem
Popravljanje bagova, modifikacije,
Održavanje adaptacija
Verzije sistema
4. Šta nedostaje u modelovanju ponašanja?
p : Product : ShooppingCart
customer
display()
getPrice()
addProduct (p)
checkout ()
U dijagramu sekvence ne
znamo kako se stanje
šoping karte menja.
5. Modelovanje stanja
ShoppingCart
Product
dateCreated : Date
dateUpdated : Date * * productId : String
name : String
addNewProduct(p : Product, photo : Picture
quantity : int)
removeProduct(p : Product)
Item
quantity
Kako možemo modelovati stanje šoping
karte?
Zavisi od:
Stanja objekta (npr. kreiran, ugašen)
Dodeljivanja vrednosti promenljivima
Stanja relacije (npr. broj artikala)
Operativnih metoda i procesa
Istorije
6. Automata
Mašina čije izlazno ponašanje nije samo direktna
posledica trenutnog ulaza, već i nekih ranijih ulaza.
Karakteriše ga interno stanje koje predstavlja njegovo
ranije iskustvo.
Ako je telefon uključen,
pritisak na dugme će ga
isključiti
Ako je telefon uključen,
pritisak na dugme će ga
uključiti
7. Sadržaj
Uvod u statechart dijagrame
Statechart gradivni blokovi
Stanja
Promene
Napredne karakteristike
Složena stanja
Paralelna stanja
8. Stanja i klase
Pogled klase Pogled stanja Stanje
created
Order Tranzicija
status: {created, sent,
in gathering
received}
hasProblems : boolean
gatherItems()
sent
updateInventory()
sendOrder()
received(customer)
sendReciept()
is received in problem
9. Aktivnosti
Dok se nalazi u određenom
in gathering
stanju, komponenta može
izvršavati aktivnosti. do: gatherItems()
Može biti neprekidna u do: updateInventory()
određenom ili neograničenom
vremenu
Aktivnosti unutar stanja su
created
sekvencijalne
Aktivnosti mogu biti prekinute enter: set hasProblems to false
do: init gathering list
Postoje specijalni tipovi
exit: clean log file
aktivnosti, klasifikovanih kao
ulazne, izlazne i događaji
10. Tranzicije
događaj [uslov] | akcija
x y
Akcija koja će se
desiti kada dođe
Događaj koji Uslov koji se mora do tranzicije
pokreće ispuniti da bi došlo
tranziciju do tranzicije
11. Događaji
Osnovni događaji
Pozivi metoda: received(customer)
Signali događaja: inventoryReady created
Vremenski događaji: inventoryReady
Istek intervala; in gathering
tm(3 days), tm(1000 ms)
kalendar/sat vreme; when(11:50) false(hasProblems)
Događaji promene: sent
Promena vrednosti nekog received()
tm(3 days)
entiteta; false(hasProblems)
true(hasProblems)
in problem
is received
12. Uslovi
gatheringFinished [all items were gathered]
sent
in gathering
in problem
gatheringFinished [items are not found]
Boolean iskazi.
Proveravaju se kada je tranzicija aktivirana
Tipovi uslova:
Jednostavan: [hasProblems], [x > 0]
Kombinovani:
[¬hasProblems ∨ (hasProblems ∧ order.sum < 100]
Uslovi nad aktivnostima: [active(gatherItems)]
15. Prazne tranzicije
Tranzicija može imati bilo kakvu kombinaciju događaja,
uslova i akcija (uključujući i ništa)
Kada tranzicija nema događaj, ona se dešava kada su
sve aktivnosti završene Prazna
Employee tranzicija
rest[break] Cleaning
Working do: put water
do: put soap doing nothing
do: shovel work do: wash soap
do: drain
work
16. Uslovi i događaji
Koja je razlika između dve mašine?
E1 true(C)
S1 S2 S3
E1 [C]
S1 S2 S3
Šta se dešava ako C promeni stanje u
True ili False pre E1?
17. Akcije
Tipovi akcija
Dodeljivanje promenljive:
received() | status := received
sent is received
Slanje signala:
received() | throw(InventoryUpdate)
sent is received
Aktivnosti započinjanja ili zaustavljanja:
| start(sendBill); stop(delivery); x := x+1
sent is received
18. Kako mašina za veš funkcioniše?
On / Off dugme. Start dugme
(Nema stop dugmeta.)
Povratna poruka se daje o
trenutnom stanju (potapanje,
ispiranje, ceđenje, sušenje)
Tri plana:
Regularni
Osetljivi (bez potapanja)
Super osetljivi (bez potapanja,
bez sušenja)
Off se može pritisnuti samo pre
početka ili nakon završetka
20. Sadržaj
Uvod u statechart dijagrame
Statechart gradivni blokovi
Stanja
Promene
Napredne karakteristike
Složena stanja
Paralelna stanja
21. Eksplozija stanja: Primer
off Šta ukoliko bi se off dugme
moglo pritisnuti bilo kad?
click(power) click(power)
idle Tm(10 mins) | light(off)
click(start) [plan=regular]
soak
click(start) [plan=delicate
Do: light(soak)
or super delicate]
Do: pump(in)
Tm(5 mins) [plan=super delicate] | light(off)
tm(30 mins)
rinse drain dry
tm(5 mins)
Do: light(rinse) tm(30 mins) Do: light(drain) [plan=not super Do: light(dry)
Do: stir() Do: pump(out) delicate] Do: stir()
Šta ukoliko želimo da se
vratimo u isto stanje iz
koga smo izašli?
22. Apstrakcija u statechart dijagramima
Pronalaženje zajedničkog Odvajanje nezavisnih regiona
ponašanja
Kompozitna stanja Paralelna stanja
23. Kompozitna stanja
off
click(power)
click(power)
On
idle Tm(10 mins) | light(off)
click(start) [plan=regular]
soak
click(start) [plan=delicate
Do: light(soak)
or super delicate]
Do: pump(in)
Tm(5 mins) [plan=super delicate] | light(off)
tm(30 mins)
rinse drain dry
tm(5 mins)
Do: light(rinse) tm(30 mins) Do: light(drain) [plan=not super Do: light(dry)
Do: stir() Do: pump(out) delicate] Do: stir()
24. Kompozitna stanja + istorija
off
click(power)
click(power)
On
H
idle Tm(10 mins) | light(off)
click(start) [plan=regular]
soak
click(start) [plan=delicate
Do: light(soak)
or super delicate]
Do: pump(in)
Tm(5 mins) [plan=super delicate] | light(off)
tm(30 mins)
rinse drain dry
tm(5 mins)
Do: light(rinse) tm(30 mins) Do: light(drain) [plan=not super Do: light(dry)
Do: stir() Do: pump(out) delicate] Do: stir()
25. Duboka(deep) i plitka(shallow) istorija
Shift ended | clh()
Stop
pause
Diagnosing
return
H Diagnostic1 Diagnostic2
return-full
H* setup Find a vein
clh() – brisanje Check blood
istorije Draw Blood
pressure
26. Paralelna stanja
Ponekad su određeni aspekti entiteta nezavisni od
drugih aspekata
employee
Marital
single Staff
Member
married
Manager
divorced
27. Označavanje paralelnih stanja
Kombinovanje višestrukih simultanih opisa
Martial employee
single
Staff
Member
married
Martial employee
single Manager
divorced
Staff
Member
married
divorced Manager
28. Račvanje (fork) i spajanje (join) tranzicija
shipping
Processing Sent Confirmed
Credit Card [ok]
verification Receipt Sent
račvanje spajanje
[not ok] charging
In problem