28
SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagrami Robert Manger Sveučilište u Zagrebu PMF-Matematički odsjek Akademska godina 2018/2019.

SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

  • Upload
    others

  • View
    6

  • Download
    1

Embed Size (px)

Citation preview

Page 1: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

SOFTVERSKO INŽENJERSTVO

Vježbe 13: State machine dijagrami

Robert Manger

Sveučilište u Zagrebu

PMF-Matematički odsjek

Akademska godina 2018/2019.

Page 2: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 2

Sadržaj Vježbi 13

Općenito o state machine dijagramima

Stanja, akcije, aktivnosti

Prijelazi, njihovo povezivanje i grananje

Događaji, signali

Daljnje primjene state machine dijagrama

Page 3: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 3

Općenito o state machine dijagr

State machine dijagram modelira ponašanje objekta koji

reagira na događaje i prelazi iz stanja u stanje.

Otprilike je riječ o onome što se u matematici zove

konačni automat.

State machine dijagrami grade se od sljedećih

elemenata. Stanja u kojima se može naći objekt.

Događaji koji utječu na ponašanje objekta.

Prijelazi objekta iz jednog stanja u drugo, kao reakcija na

događaj.

Akcije i aktivnosti koje objekt izvršava kad se nalazi u nekom

stanju ili kad prelazi iz jednog stanja u drugo.

Page 4: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 4

Usporedba s activity dijagramima

State machine dijagram ima neke sličnosti s activity

dijagramom. Oba služe za opisivanje dinamike sustava.

Oba su zasnovana na “grafovskom” matematičkom modelu koji

se sastoji od čvorova i lukova.

No postoje i sljedeće razlike. Activity dijagrami služe za modeliranje jednog poslovnog procesa

u kojem sudjeluje više objekata.

State machine dijagrami služe za modeliranje ponašanja samo

jednog objekta, možda u raznim procesima.

Semantika activity dijagrama oslanja se na Petrijeve mreže.

Semantika state machine dijagrama oslanja se na konačne

automate.

Page 5: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 5

Primjer state machine dijagrama (1)

Sljedeći dijagram modelira ponašanje žarulje. Ona se može naći u dva stanja: ugašena (Off), upaljena (On).

Događaji koji utječu na promjene stanja su: okretanje prekidača u

jednom smjeru (turnOn), u drugom smjeru (turnOff), te pregaranje

žarulje (burnOut).

Page 6: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 6

Primjer state machine dijagrama (2)

Iz prethodnog dijagrama otprilike

je vidljiv način crtanja pojedinih

elemenata state machine-a.

Stanja su zaobljeni pravokutnici.

Prijelazi su strelice

Događaji su oznake na strelicama.

U svakom state machine

dijagramu također mora

postojati:

jedno početno stanje,

barem jedno završno stanje.

Page 7: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 7

Detaljnije o stanjima (1)

Stanje objekta mijenja se tokom vremena, no u

jednom trenutku ono je određeno s:

vrijednostima atributa tog objekta,

poveznicama prema drugim objektima,

aktivnostima koje objekt upravo obavlja.

Kod modeliranja ponašanja objekta ne smije se

pretjerati s brojem stanja. Naime:

Treba uočiti samo stanja koja zaista ima smisla razlikovati sa

stanovišta aplikacije.

Takva stanja zovemo “semantički značajna” za ponašanje

objekta.

Page 8: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 8

Detaljnije o stanjima (2) Primjerice, sljedeća slika prikazuje klasu Color čiji objekti

opisuju boje. Klasa ima tri atributa red, green, blue, od

kojih svaki može poprimiti vrijednost 0 – 255.

Samo na osnovi različitih kombinacija vrijednosti

atributa, mogli bi za klasu Color definirati 256 x 256 x 256

= 16777216 stanja. No takva stanja nema smisla

razlikovati jer ona sigurno nisu semantički značajna.

Page 9: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 9

Akcije, aktivnosti, unutarnji prijelazi Kad se nalazi u određenom stanju, objekt može izvršavati

određene akcije i aktivnosti, odnosno može obavljati

unutarnje prijelaze.

Između akcija i aktivnosti postoji sljedeća razlika. Akcija je dio posla koji se izvršava trenutno i ne može se prekinuti.

Aktivnost je dio posla koji troši određeno vrijeme i može se

prekinuti.

Postoje dvije posebne akcije. Ulazna akcija: izvršava se u trenutku ulaska u stanje (događaj

entry).

Izlazna akcija: izvršava se u trenutku izlaska iz stanja (događaj

exit).

Unutarnji prijelaz predstavlja reakciju objekta na određeni

događaj koja nije toliko značajna da bi je smatrali

prijelazom u novo stanje.

Page 10: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 10

Primjer stanja s akcijama, aktivnostima i unutarnjim prijelazima Sljedeći

dijagram

prikazuje stanje

objekta koji

učitava lozinku.

Vidljiva je UML-

ova sintaksa za

prikazivanje

akcija, aktivnosti

i unutarnjih

prijelaza. Uočite

ključne riječi

entry, exit, do.

Page 11: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 11

Detaljnije o prijelazima (1)

Semantika ovog dijagrama može se izraziti pseudokodom:

On (event1 OR event2) if (guardCondition is true)

then perform anAction and immediately enter stateB

Prijelaz (transition) je promjena stanja objekta koja se

dešava kao reakcija na neki događaj.

UML-ova sintaksa za prikazivanje prijelaza vidljiva je na

sljedećem dijagramu.

Page 12: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 12

Detaljnije o prijelazima (2) Prijelaz se na dijagramu prepoznaje kao strelica između

dva stanja. Uz samu strelicu zapisani su sljedeći

opcionalni elementi. Nula jedan ili više događaja – to su događaji od kojih svaki

pobuđuje prijelaz.

Nula, jedan ili više uvjeta- stražara – to su Booleovski izrazi koji svi

moraju biti istina da bi se prijelaz zaista dogodio. Zapisuju se iza

događaja.

Nula, jedna ili više akcija – to su dijelovi posla koji se svi izvršavaju

u trenutku prijelaza.

Isti ovi elementi mogu se zadati i kod unutrašnjih prijelaza,

no tada su oni upisani unutar ikone stanja i nema strelice.

Ako kod prijelaza nije zadan nikakav događaj, tada je riječ

o automatskom prijelazu koji se aktivira sam od sebe čim

njegov uvjet-stražar postane istina.

Page 13: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 13

Povezivanje prijelaza (1) Prijelazi na dijagramu mogu biti povezani preko spojnog

pseudo-stanja (junction pseudo-state). To pseudo-stanje

predstavlja mjesto gdje se prijelazi sažimlju ili granaju.

Crta se kao puni krug.

Sljedeći dijagram prikazuje promjene stanja za objekt iz

klase Loan koji opisuje posudbu knjige iz knjižnice. Stanja odgovaraju situaciji kad je posudba u tijeku (OnLoan), kad

je došlo do kašnjenja s vraćanjem (Overdue), kad posuditelj mora

platiti globu (FineDue), te kad je knjiga napokon vraćena

(Terminated).

Događaji su vraćanje knjige (returnBook) i plaćanje globe (payFine)

Koristi se i uvjet-stražar koji automatski aktivira prijelaz čim prođe

rok posudbe.

Vidimo upotrebu jednog spojnog pseudo-stanja.

Page 14: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 14

Povezivanje prijelaza (2)

Spojno stanje može imati više od jednog izlaznog

prijelaza. No tada ti prijelazi moraju imati međusobno

isključujuće uvjete-stražare.

Page 15: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 15

Povezivanje prijelaza (3) Slijedi primjer spojnog stanja s više izlaznih prijelaza. Tu

smo proširili model ponašanja klase Loan tako da

omogućimo produljenje posudbe knjige. Da bi produljio

posudbu, posuditelj mora donijeti knjigu u knjižnicu.

Međusobno isključujući uvjeti-stražari su [extend] i [!extend].

Page 16: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 16

Grananje prijelaza (1) Ako želimo na dijagramu prikazati grananje prijelaza bez

spajanja, tada možemo koristiti pseudo-stanje za

grananje (choice pseudo-state). Ono se crta kao romb.

Sljedeći dijagram prikazuje promjene stanja za objekt iz

klase BankLoan koji opisuje bankovni kredit i njegovo

vraćanje. Stanja odgovaraju situaciji kad korisnik kredita još nije vratio dug

(UnPaid), kad je djelomično (PartiallyPaid) ili potpuno (FullyPaid)

vratio dug, ili kad je preplatio dug (OverPaid).

Događaji su primanje uplate kojom korisnik vraća dug

(acceptPayment) te refundacija preplate korisniku (makeRefund).

Vidimo upotrebu pseudo-stanja za grananje. Tri grane koje izlaze

iz pseudo-stanja zaštićene su međusobno isključivim uvjetima-

stražarima koji ispituju da li je korisnikova uplata veća, manja ili

jednaka preostalom dugu.

Page 17: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 17

Grananje prijelaza (2)

Page 18: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 18

Detaljnije o događajima Događaj (event) je nešto što se dogodilo u nekom trenutku

i na nekom mjestu te ima utjecaj na ponašanje objekta.

Događaj na UML dijagramu može biti prikazan: izvana na strelici koja predstavlja prijelaz,

iznutra unutar stanja (unutrašnji događaj).

Postoje četiri vrste događaja, od kojih svaka ima donekle

drukčiju semantiku. Događaj-poziv (call event). To je poziv da se izvrši neki skup akcija.

Obično je riječ o pozivu operacije iz pripadne klase.

Događaj-signal (signal event). Prijem signala, dakle asinkrone

poruke od nekog drugog objekta.

Događaj-promjena (change event). Dešava se kad neki Booleovski

izraz promijeni vrijednost iz false u true.

Vremenski događaj (time event). Dešava se nakon što protekne

zadani vremenski interval ili kad nastupi zadani trenutak.

Page 19: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 19

Događaji-pozivi (1) Događaj-poziv je najčešća vrsta događaja. Dešava se

kad netko pozove određenu operaciju nad objektom.

Sljedeći dijagram djelomično prikazuje promjene stanja

objekta iz klase SimpleBankAccount koji opisuje bankovni

račun. Pretpostavlja se poslovno pravilo da na računu uvijek mora

postojati nenegativni iznos novaca. Dakle, dizanje novaca koje

bi dovelo račun u minus bit će odbijeno.

Vidimo unutrašnje i vanjske događaje-pozive. Njihova signatura

se poklapa sa signaturom odgovarajućih operacija iz klase

SimpleBankAccount.

Stanja odgovaraju situaciji kad je iznos na računu pozitivan

(InCredit), situaciji kad se podizanje novaca mora odbiti

(RejectingWithdrawal), odnosno situaciji kad se podizanje novaca

prihvaća (AcceptingWithdrawal).

Vidimo ulazne akcije i unutarnje prijelaze.

Page 20: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 20

Događaji-pozivi (2)

Page 21: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 21

Događaji-signali (1) Signal je informacija koju jedan objekt asinkrono šalje

drugom. Modelira se kao klasa bez operacija sa

stereotipom <<signal>>. Informacija koja se prenosi nalazi

se u atributima te klase.

Sljedeća slika prikazuje signal koji objekt iz klase

SimpleBankAccount šalje objektu iz klase Bank, da bi javio da

je korisnik pokušao podići previše novaca.

U nastavku slijedi dopunjena

verzija state machine dijagrama

za SimpleBankAccount, gdje

bankovni račun šalje signal

banci kad god je podizanje

novaca bilo odbijeno.

Page 22: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 22

Događaji-signali (2)

Slanje

signala

prikazano

je konve-

ksnim

petero-

kutom, s

upisanim

imenom

signala.

Page 23: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 23

Događaji-signali (3) Dalje imamo dio state machine dijagrama za klasu Bank.

Banka prima signal o odbijenoj transakciji kojeg je

poslao bankovni račun, a zatim ulazi u stanje gdje šalje

obavijest korisniku. Događaj primanja signala crta se kao konkavni peterokut s

upisanom operacijom koja prima signal kao svoj parametar.

Prijem signala može se također prikazati pomoću standardne

notacije imeDogađaja / akcija, na strelici ili unutar stanja.

Page 24: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 24

Događaji-promjene (1) Događaj-promjena je promjena vrijednosti zadanog

Booleovog izraza iz false u true. U tom Booleovom

izrazu mogu se pojavljivati konstante, globalne varijable,

atributi ili operacije odgovarajuće klase.

Događaj-promjena prikazuje se na dijagramu tako da na

mjesto gdje inače upisujemo događaj (iznad strelice ili

unutar stanja) upišemo odgovarajući Booleov izraz.

Slijedi dopunjena verzija state machine dijagrama za

SimpleBankAccount. Unutar stanja InCredit dodan je

događaj-promjena koji će se aktivirati onda kad stanje

na računu dosegne 5000. Kad se događaj desi, šalje se obavijest menadžeru.

Nakon toga menadžer može obavijestiti klijenta o drugim

opcijama za investiranje.

Page 25: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 25

Da bi se

događaj-

promjena

ponovo

desio,

vrijednost

Booleovog

izraza se

iz true

najprije

mora

vratititi u

false, pa

zatim opet

u true.

Događaji-promjene (2)

Page 26: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 26

Vremenski događaji (1)

Vremenski događaji se dešavaju kad nastupi zadani

trenutak, ili nakon što protekne zadani vremenski

interval.

Na dijagramu su označeni ključnom riječi when ili after, s

vremenskim izrazom u zagradama.

Izraz uz when određuje vremenski trenutak kad će se

događaj aktivirati. Na primjer: when(date=07/10/2009).

Izraz uz after određuje vremenski interval nakon kojeg će

se događaj aktivirati. Na primjer after(3 months).

U vremenskom izrazu mogu se pojaviti konstante, globalne

varijable, te atributi ili operacije dotične klase.

Page 27: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 27

Vremenski događaji (2)

Sljedeća slika

prikazuje dio

state machine

dijagrama za

klasu

CreditAccount

koja opisuje

tekući račun.

Ako je račun u

minusu više od

3 mjeseca, on

se zamrzava.

Page 28: SOFTVERSKO INŽENJERSTVO Vježbe 13: State machine dijagramiweb.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-13.pdf · V-13 Softversko inženjerstvo 3 Općenito o state machine

V-13 Softversko inženjerstvo 28

Daljnje primjene state machine dijagrama

State machine dijagrami kojima smo se mi bavili

zapravo se preciznije zovu behavioral state

machines, budući da oni opisuju ponašanje.

Osim njih, u UML 2 postoje i takozvane protocol

state machines, koje služe za definiranje protokola.

Također, state machine dijagrami kojima smo mi se

bavili opisuju ponašanje objekata.

UML 2 inače dozvoljava da dijagram opisuje i

ponašanje nekog drugog klasifikatora, na primjer

komponente ili podsustava.