Upload
zoran-jeremic
View
493
Download
1
Embed Size (px)
Citation preview
Modelovanje stanja korišćenjem Statechart dijagrama (dijagrama stanja) Analiza i specifikacija informacionih sistema
dr Zoran Jeremić [email protected]
1
Sadržaj
Uvod u statechart dijagrame
Statechart gradivni blokovi Stanja Promene
Napredne karakteristike Složena stanja Paralelna stanja
Proces razvoja sistema
Faza Aktivnost Izlaz
Započinjanje Utvrđivanje poslovnih potreba Biznis dokumenta
Analiza Intervjuisanje stejkholdera, istraživanje sistemskog okruženja
Organizovana dokumentacija
Specifikacija Analiza inženjerskih aspekata sistema, definisanje koncepata sistema
Logički model sistema
Implementacija Programiranje, testiranje jedinica, integrisanje, dokumentovanje
Proverljiv sistem
Testiranje & Integracija
Integrisanje svih komponenti, verifikacija, validacija, instalacija, obuka
Resultati testiranja, funkcionalan sistem
Održavanje Popravljanje bagova, modifikacije, adaptacija Verzije sistema
Šta nedostaje u modelovanju ponašanja?
p : Product : ShooppingCart
addProduct (p)
customer display()
getPrice()
checkout ()
U dijagramu sekvence ne znamo kako se stanje šoping karte menja.
Modelovanje stanja
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
addNewProduct(p : Product, quantity : int)removeProduct(p : Product)
dateCreated : DatedateUpdated : Date
ShoppingCart
productId : Stringname : Stringphoto : Picture
Product
**
quantity
Item
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
Sadržaj
Uvod u statechart dijagrame
Statechart gradivni blokovi Stanja Promene
Napredne karakteristike Složena stanja Paralelna stanja
Stanja i klase
Order
status: {created, sent, received} hasProblems : boolean
gatherItems() updateInventory() sendOrder() received(customer) sendReciept()
created
sent
Pogled stanja Pogled klase
in gathering
is received
Stanje
Tranzicija
in problem
Aktivnosti
Dok se nalazi u određenom stanju, komponenta može izvršavati aktivnosti. Može biti neprekidna u
određenom ili neograničenom vremenu
Aktivnosti unutar stanja su sekvencijalne
Aktivnosti mogu biti prekinute
Postoje specijalni tipovi aktivnosti, klasifikovanih kao ulazne, izlazne i događaji
in gathering
do: gatherItems() do: updateInventory()
created
enter: set hasProblems to false do: init gathering list exit: clean log file
Tranzicije
x y događaj [uslov] | akcija
Događaj koji pokreće tranziciju
Uslov koji se mora ispuniti da bi došlo do tranzicije
Akcija koja će se desiti kada dođe do tranzicije
Događaji
Osnovni događaji Pozivi metoda: received(customer)
Signali događaja: inventoryReady
Vremenski događaji: Istek intervala; tm(3 days), tm(1000 ms)
kalendar/sat vreme; when(11:50)
Događaji promene: Promena vrednosti nekog
entiteta; false(hasProblems) true(hasProblems)
created
sent
in gathering
is received
inventoryReady
tm(3 days)
false(hasProblems)
received()
in problem
Uslovi
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)]
sent in gathering
gatheringFinished [all items were gathered]
in problem gatheringFinished [items are not found]
Uslovi - primer
Selling
Unhappy
bid [(value >= 100) AND (value < 200)]
Happy bid [value >= 200]
bid [value < 100]
Grananje statičkih uslova
Grafička prečica predstavljanje stabla odlučivanja
[(value >= 100) & (value < 200)]
[value >= 200]
[value < 100]
Selling
Unhappy
Happy
bid
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
Cleaning do: put water do: put soap
do: wash soap do: drain
doing nothing
Employee
rest[break]
work
Working do: shovel
Prazna tranzicija
work
Uslovi i događaji
Koja je razlika između dve mašine?
S1 S2 E1 S3 true(C)
S1 S2 E1 S3 [C]
Šta se dešava ako C promeni stanje u True ili False pre E1?
Akcije
Tipovi akcija Dodeljivanje promenljive:
Slanje signala:
Aktivnosti započinjanja ili zaustavljanja:
sent is received received() | status := received
sent is received received() | throw(InventoryUpdate)
sent is received | start(sendBill); stop(delivery); x := x+1
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
Mašina za pranje
off
idle
Do: light(soak)Do: pump(in)
soak
Do: light(rinse)Do: stir()
rinse
Do: light(drain)Do: pump(out)
drain
Do: light(dry)Do: stir()
dry
click(power) click(power)
click(start) [plan=regular]
click(start) [plan=delicate or super delicate]
tm(30 mins)
tm(30 mins)
Tm(5 mins) [plan=super delicate] | light(off)
tm(5 mins)[plan=not super
delicate]
Tm(10 mins) | light(off)
idle-prazan hod, soak-potapanje, rinse-ispiranje, drain-ceđenje. dry- sušenje, delicate-fino stir-mešanje
Sadržaj
Uvod u statechart dijagrame
Statechart gradivni blokovi Stanja Promene
Napredne karakteristike Složena stanja Paralelna stanja
Eksplozija stanja: Primer
off
idle
Do: light(soak)Do: pump(in)
soak
Do: light(rinse)Do: stir()
rinse
Do: light(drain)Do: pump(out)
drain
Do: light(dry)Do: stir()
dry
click(power) click(power)
click(start) [plan=regular]
click(start) [plan=delicate or super delicate]
tm(30 mins)
tm(30 mins)
Tm(5 mins) [plan=super delicate] | light(off)
tm(5 mins)[plan=not super
delicate]
Tm(10 mins) | light(off)
Šta ukoliko želimo da se vratimo u isto stanje iz koga smo izašli?
Šta ukoliko bi se off dugme moglo pritisnuti bilo kad?
Apstrakcija u statechart dijagramima
Pronalaženje zajedničkog ponašanja
Odvajanje nezavisnih regiona
Kompozitna stanja Paralelna stanja
Kompozitna stanja
On
off
idle
Do: light(soak)Do: pump(in)
soak
Do: light(rinse)Do: stir()
rinse
Do: light(drain)Do: pump(out)
drain
Do: light(dry)Do: stir()
dry
click(start) [plan=regular]
click(start) [plan=delicate or super delicate]
tm(30 mins)
tm(30 mins)
Tm(5 mins) [plan=super delicate] | light(off)
tm(5 mins)[plan=not super
delicate]
Tm(10 mins) | light(off)
click(power)click(power)
Kompozitna stanja + istorija
On
off
idle
Do: light(soak)Do: pump(in)
soak
Do: light(rinse)Do: stir()
rinse
Do: light(drain)Do: pump(out)
drain
Do: light(dry)Do: stir()
dry
click(start) [plan=regular]
click(start) [plan=delicate or super delicate]
tm(30 mins)
tm(30 mins)
Tm(5 mins) [plan=super delicate] | light(off)
tm(5 mins)[plan=not super
delicate]
Tm(10 mins) | light(off)
click(power)
click(power)
H
Duboka(deep) i plitka(shallow) istorija
Diagnosing
Diagnostic1
setup
Check blood pressure
Diagnostic2
Find a vein
Draw Blood
H*
H
Stop pause
return
return-full
Shift ended | clh()
clh() – brisanje istorije
Paralelna stanja
Ponekad su određeni aspekti entiteta nezavisni od drugih aspekata
single
married
divorced
Marital
Staff Member
Manager
employee
Označavanje paralelnih stanja
Kombinovanje višestrukih simultanih opisa
Staff Member
Manager
employee
Staff Member
Manager
employee
single
married
divorced
Martial
single
married
divorced
Martial