T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama

28
Modelovanje stanja korišćenjem Statechart dijagrama (dijagrama stanja) Analiza i specifikacija informacionih sistema dr Zoran Jeremić [email protected] 1

Transcript of T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama

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

Račvanje (fork) i spajanje (join) tranzicija

Credit Card verification

charging

Processing Sent Confirmed

shipping

Receipt Sent

In problem

[ok]

[not ok] spajanje račvanje