04 - Dijagrami mašine stanja
Dijagrami mašine stanja
  • Dijagram mašine stanja
  • Mašine stanja ponašanja
  • Pojmovi u dijagramima mašine stanja
  • Teme i prosto stanje
  • Kompozitno (složeno) stanje
  • Stanje podmašine i pseudostanje
  • Početno i završno pseudostanje, i ulazno i izlazno pseudostanje
  • Pseudostanja izbora, račvanja i spajanja
  • Pseudostanje spajanja (junction), istorija stanja i završno stanje
  • Prelaz ponašanja
  • Dijagram protokola mašine stanja
  • Protokol mašine stanja
  • Protokol prelaska stanja (tranzicije)
  • UML Dijagram stanja
  • Definisanje stanja i događaja
  • Hijerarhija stanja
  • Primer 1: Dijagram mašine stanja za stanja vode
  • Primer 2: Dijagram mašine stanja ponašanja ATM mašine
  • Primer 3: Dijagram mašine stanja korisničkog računa onlajn prodavnice
  • Primer 4: Protokol mašine stanja u primeru stanja niti u Javi
  • Primer 5: Mašina stanja ojekta sesije životnog ciklusa Java EJB
  • Primer 6: Protol mašine stanja životnog ciklusa DICOM aplikacije
  • Dijagram stanja (video)
  • Video predavanje za objekat "Dijagrami mašine stanja"
04
Dijagram mašine stanja
Dijagram mašine stanja prikazuje dsiretizovano ponašanje dela sistema

Dijagram mašine stanja je dijagram ponašanja koji pokazuje diskretizovano ponašanje dela sistema koji se projektuje primenom tranzicija u konačnom automatu, tj. u mašini konačnih stanja (finite state transitions). Mašine stanja se takođe mogu da koriste radi prikaza upotrebe protokola delova sistema. Postoje u UML-u dve vrste mašine stanja:

  • mašina stanja ponašanja (behavioral state machine), i
  • mašina stanja protokola (protocol state machine)

Sledeći čvorovi (nodes) i ivice (edges) se prikazuju u dijagramima mašine stanja:

  • stanje ponašanja (behavioral state),
  • prelazak ponašanja (behavioral transition),
  • stanje protokola (protocol state),
  • prelazak protokola ( protocol transition)
  • razlišita pseudostanja (different pseudostates).
Mašine stanja ponašanja
Mašina stanja ponašanja je specijalizovano ponašanje koje se upotrebljava radi specifikacije diskretnog ponašanje nekog dela sistema koji se projektuje pomoću prelaza konačnih stanja.

Mašina stanja ponašanja (behavioral state machine) je specijalizovano ponašanje koje se upotrebljava radi specifikacije diskretnog ponašanje nekog dela sistema koji se projektuje pomoću prelaza konačnih stanja (finite state transitions). Formalizacija mašine stanja koja se ovde koristi je objektno-orijentisana varijanta Herelovih dijagrama stanja (Harel statecharts)Ponašanje se modelira kao prelazak dijagrama stanja čvorova čvorova povezanih sa prelazima. Prelazci iz jednog u drugo stanje je pokrenuto javljanje serija događaja. Za vreme prelaska nekog objekta, na primer, u novo stanje, mašina stanja može da izvršava neke aktivnosti.

Mašina stanja ponašanja može da bude bude u funkciji klasifikatora ponašanja koji se naziva kontekstom. Kontekst (context) definiše signal i poziv pokretanja za ovu mašinu stanja, a koji atributi i operacije sa raspoložive u aktivnostima mašine stanja. Pokretači signala i trigeri pozivanja za mašinu stanja definišu se u skladu sa prijemima i operacijama ovog klasifikatora.

Mašina stanja može imati povezano svojstvo ponašanja i može da bude metod tog svojstva ponašanja. U tom slučaju mašina stanje specifikuje ponašanje tog svojstva ponašanja. Parametri mašine stanja se upoređuju sa parametrima svojstva ponašanja i obezbeđuje način pristupa parametrima svojstva ponašanja unutar mašine stanja.

Skladište događaja (evnt pool) mašine stanja je skladište istanci događaja u skladu sa kontekstom ponašanja klasifikatora, ili klasifikator poseduje svojstvo ponašanja za koje je mšina stanja metod. Klasifikator konteksta metoda svojstva ponašanja mašine stanja mora da bude klasifikator koji poseduje svojstvo ponašanja. Mašina stanja bez klasifikatora konteksta može da upotrebi trigere koji su nezavisni od prijema ili operacija klasifikatora, t.j., ili kao triger signala ili poziiva trigere kreirane na bazi operacija uzorka operacije parametrizovane mašine stanja

Veza između mašine stanja i njenog klasifikatora konteksta ili svojstva ponašanja nema posebno označavanje. Mašina stanja se može prikazati unutar okvira obeleženog kao mašina stanja (state machine) ili stm u skraćenom obliku. Sadržaj okvira čini mašina stanja, ali može da bude i bilo koji UML djagram.


Slika-1 Mašina stanja Bank ATM [1.4]
Pojmovi u dijagramima mašine stanja
Stanje je uslov ili situacija u toku života nekog objekta pri kojoj objekat zadovoljava neke uslove, izvršava neke aktivnosti ili čeka na neki događaj.

Stanje je uslov ili situacija u toku života nekog objekta pri kojoj objekat zadovoljava neke uslove, izvršava neke aktivnosti ili čeka na neki događaj. Objekat može da promeni svoje stanje ako se pojavi određeni događaj. U UML-u, stanje objekta se predstavlja pravougaonikom sa zaobljenim uglovima (slika 1 .a)

Dogadjaj je specifikacija neke značajne pojave koja ima lokaciju u vremenu i prostoru. Događaj se opisuje sa: signalom, vremenom i promenom stanja. Signal predstavlja imenovani objekat koji jedan objekat asinhrono šalje, a drugi objekat ga prima (slika 1 .b). Vremenski dogadjaj je dogadjaj koji predstavlja određeni vremenski trenutak. Dogadjaj promene je dogadjaj koji predstavlja promenu stanja ili zadovoljenje nekog uslova. Znači, kada pod određenim okolnosti objekat primi određeni signal, dolazi do promene njegovog stanja, tj. desio se određeni događaj. Promenom stanja, menjaju se vrednosti jednog ili više atributa objekta (slika 1 .c) .

Tranzicija (ili prelazak) je relacija između dva stanja koji pokazuje da objekat u prvom stanju izvršava neke akcije i ulazi u drugo stanje kada se navedeni događaj pojavi i kada se navedeni uslovi zadovolje (slika 1 .b),


Slika-2 Promena stanja objekta [1.1]

Dogadjaj okidanja – događaj čiji prijem kod objekta u početnom stanju izaziva tranziciju sposobnu da se realizuje, ako su njegovi povezani uslovi – zadovoljeni;

Uslovi čuvanja stanja (guard uslovi) – Logički izraz koji se izvršava kada je pokrenuta tranzicija prijemom događaja okidanja;

Akcija - Izvršavanje neke elementarne akcije koje direktno deluje na objekat koji poseduje mašinu stanja, i indirektno – na druge objekte koji su vidljivi objektu.

Teme i prosto stanje
Prosto stanje (simple state) je stanje koje nema podstanja - nema regiona i nema podmašinu stanja.

Teme (vertex) je imenovani element koji je apstrakcija čvora u dijagramu mašine stanja. On može da bude izvor ili odredište bilo kog broja prelazaka (tranzicija). Podklase od temena su: stanje i pseudostanje

Stanje je teme koje modelira situaciju za vreme važenja nekih (najčešće implicitnih) nepromenljivih uslova.

Prosto stanje (simple state) je stanje koje nema podstanja - nema regiona i nema podmašinu stanja. Prosto stanje je stanje prikazano pravougaonikom sa zaobljenim uglovima i sa imenom stanja unutar pravougaonika (slika 3).


Slika-3 Oznake stanja [1.4]

Opciono, stanje može da ima ime postavljeno unutar pridodatog taba. Tab s aimenom je pravougaoničkog oblika koji se obično nalazi van gornje strane stanja.

Prosto stanje može imati odeljke. Odeljci stanja su::

  • naziv odeljka (name compartment)
  • unutrašnje aktivnosti odeljka (internal activities compartment)
  • unutrašnje prelasci odeljka (internal transitions compartment)

Ime odeljka sadrži (opciono) naziv stanja, u vidu stringa (niza znakova). Stanja bez naziva se nazivaju anonimnim stanjima i smatraju se posebnim stanjima. Odeljak sa nazivom stanje se alternativno koristi sa tabom za naziv (ili jedno ili drugo). Ne preporučuje se da se u dijagramu na više mesta navodi isto stanje.

Odeljak za unutrašnje aktivnosti sadrži listu unutrašnjih akcija ili stanja aktivnosti (ponašanja) koje se izvršavaju dok je element u tom stanju. Oznaka aktivnosti utvrđuje okolnosti pod kojim se poziva ponašanje određeno izrazom aktivnosti. Izraz ponašanja (behaviour expression) može da koristi atribute i krajeve veza koje su u sklopu entiteta koji ih poseduje.U slučaju lista sa praznim elementom, opciono se koristi separator u obliku kosa crta (slash) .

Odeljak za unutrađnje prelaske sadrži listu unutrašnjih prelazaka u formi trigera. Svaki događaj se može pojavti više puta ako su uslovi zaštite različiti. Parametri događaja i uslovi zaštite su opcioni. Ukoliko događaj ima parametre, oni se mogu koristiti u izrazu preko trenutne promenljive događaja.

Kompozitno (složeno) stanje
Kompozitno stanje (composite state) se definiše kao stanje koje ima podstanja (povezana stanja).

Kompozitno stanje (composite state) se definiše kao stanje koje ima podstanja (povezana stanja). Podstanja (substates) mogu biti sekvencijalna ili paralelna (istovremena).


Slika-4 Oznaka kompozitnog stanja sa podstanjima (a) i bez prikaza podstanja (b) [1.4]

Ortogonalno kompozitno stanje (orthogonal composite state) ima više regiona. Svaki region ima skup uzajamno isključivih potemena i skup prelazaka. Dato stanje se može dekomponovati na jedan od ovih načina.

Svako stanje unutar regiona kompozitnog stanja se zove postanjem kompozitnog stanja. Zove se direktno podstanje kada nije sadržano ni u jednom drugom stanju. U suprotnom, smatra se da je indirektno postanje.

Svaki region kompozitnog stanja može da ima iicijalni pseudokod i krajnje stanje. Prelazak (tranzicija) u zatvoreno stanje predstavlja prelazak na početno pseudostanje u svakom regiona. Novokreiran objekat uzima

njegove najviše početno definisane prelazke, koji potiču od najviših početnih pseudo stanja svakog regiona.

Kompozitno stanje može da ima naziv stanja upisano u unutrašnjost pridodatog taba sa imenom. Tab sa imenom je pravougoni, obični postavljen spolja, iznad najviše strane stanja.

Kompozitno stanje može da ima odeljke koji sadrže:

  • naziv odeljka (name compartment)
  • odeljak za uutrašnje aktivnosti (internal activities compartment)
  • odeljak za unutrašnje prelazke (internal transitions compartment)
  • odeljak dekompozicije (decomposition compartment)

Prva tri odeljka su ista kao i u slučaju prostih stanja.

Odeljak dekompozicije pokazuje kompoziciju strukture stanja u vidu dijagrama povezivanja regiona, stanja i prelazaka. Tekstualni odeljak može se horizontalno suziti unutar grafičkog regiona.

U slučaju da se želi da se skloni dijagram povezivanja podstavanja (možda zbog složenosti), može se kompozitno stanje prikazati kao na sliaci 4.b. Ikoba u donjem desnom uglu označava da postoji prikriven dijagram povezivanja podstanja.

Stanje podmašine i pseudostanje
Stanje podmašine (submacine state) određuje umetanje specifikacije podmašine mašine stanja.

Stanje podmašine (submacine state) određuje umetanje specifikacije podmašine mašine stanja. Mašina stanja koja sadrži podmašinu mašine stanja naziva sa sadržajna mašina stanja (containing state machine). Isto stanje mašine može da bude podmašina više puta u kontekstu jedne sadržajne mašine stanja.

Stanje podmašine je semantički ekvivalentno kompozitnom stanju. Regioni podmašine mašine stanja su regioni kompozitnog stanja. Ulaz, izlaz i akcije ponašanja i unutrađnji pelsci se definišu kao deo stanja. Stanje podmašine je mehanizam dekompozicije koji dozvoljava ponovnu upotrebu faktorizaciju zajedničkih ponašanja.

Naziv odeljka sadrži (opcioni) naziv stanja, u vidu stringa. Naziv mašine stanja se prikazuje kao sring iz dve tačke ':' posle naziva stanja.

Region je ortogonalni deo ili kompozitnog stanja ili mašine stanja. Region sadrži stanja i prelazka (tranzicije).

Kompozitno stanje ili mašina stanja sa regionima se prikazuje pločice sa graf regiona stanja ili mašine stanja upotrebom isprekidanih linija radi podele u regione. Svaki region može opciona da ima naziv i sadrži povezane nepovezana stanja u prelske između njih. Odeljci sa tekstom celog stanja su odvojeni od ortogonalnih regiona punom linijom.

Kompozitno stanje ili stanje mašine sa samo jednim regionom se prikazuje sa povezanim dijagramom stanja unutar grafa regionom.

Radi označavanja da je nasleđeni region je proširen, ključna reč <<extended>> ; je povezana sa nazivom regionom.

Pseudostanje (pseudostate) je apstraktno teme koje obuhvata različite tipove prelaznih temena u grafu mašine stanja. Pseudostanja se koriste za povezivanje višestručkih prelazaka u složenije pitanje prelazka stanja.

Pseudostanje uključuje:

  • Početmo pseudostanje (initial pseudostate)
  • Zavšni pseudo stanje ( terminate pseudostate)
  • Ulazua tačku (entry point)
  • Izlaznu tačku ( exit point)
  • Izbor (choice)
  • Spoj join)
  • Račvanje ( fork)
  • Spajanje (junction)
  • Površnu istoriju pseudostanja ( shallow history pseudostate)
  • Duboku istoriju i pseudostanje (deep history pseudostate)
Početno i završno pseudostanje, i ulazno i izlazno pseudostanje
Daje se definisanje početnog, završnog, ulaznog i izlaznog pseudostanja.

Početno pseudostanje ( initial pseudostate) predstavlja početno postavljeno teme koje je izvor prelaska u početno stanje kompozitnog stanja. Oznaka početnog pseudostanja je prikazana na slici 5.a. U regionu stanja mašine stanja klasifikatora , prelazak od početnog pseudostanja može biti označen sa događajem trigera koji kreira objekat, ako ne, mora biti neoznačen. Ako je neoznačen, on predstavlja bilo koji prelazak od zatvorenog stanja.

Završni pseudostanje (terminate pseudostate) podrazumeva da izvršenje ove mašine stanja znači završetak njegovog kontekst objekta. Mašina stanja ne daje nikakvo stanje niti izvodi nikakvu izlaznu akciju sem onih koje su povezane sa prelaskom koje vode do završnog pseudodatnja. Ulazak u završno pseudostanje je ekvivalentno poziva metoda DestryObjectAction. Na slici 5.b prikazana je oynaka završnog pseudostanja.

Ulazno pseudostanje (entry point pesudostate) je ulazna tačka mašine stanja kompozitnog stanja. Svaki region mašine stanja ili kompozitno stanje ima najviše jedna pojedninačan prelazak u jedno teme u istom regionu. Ilazna tačka dijagrama stanja se prikazuje kao mali krug na granici mašine stanja ili kompozitno stanje. sa povezanim imenom. Ulazno pseudostanje se prikazuje kao na slici 5.c.

Izlazna tačka pseudostanja (exit point pseudostate) je izlazna tačka mašine stanja ili složenog stanja. Ulaskom u izlaznu tačku unutar nekog regiona kompozitnog stanja ili mašine stanja, a koje se ukazuje iz stanja podmašine dovodi do izlaza iz kompozitnog stanja ili stanja podmašine i pokretanje prelaska na izlaznu tačku, kao izvora u mašini stanja koja zatvara (obuhvata) podmašinu ili kompozitno stanje.

Izlazna tačka se prikazuje malim krugom sa ukrštenim linijama kao X na granicidijagrama mašine stanja ili kompozitnog stanja, sa nazivom koji je povezan za njega, kao što je prikazano na slici 5.d.


Slika-5 Prikaz početnog, završnog, ulaznog i izlaznog pseudostanje [1.4]
Pseudostanja izbora, račvanja i spajanja
Pseudostanje izbora realizuje dinamičku uslovnu granu, pseudostanje račvanja bezuslovno deli ulayni prelaz u više izlaznih prelaza, a pseudostanje spajanja spaja nekoliko prelaza u jedan.

Izbor pseudostanja (choice pessudostate) realizuje dinamičku uslovnu granu. Ono ocenjuje zaštite (guards) trigera izlaznih prelaza (tranzicija) i vrši izbor samo jednog izlazno prelaza. Ova odluka izbora puta je funkcija rezultata akcija izvršenih u prthodnim koracima. Dinamički izbor (choice) treba razlikovati od statičkog spajanja (junction) tačaka granja. Pseudostanje se prikazuje u obliku zarotiranog romba (slika 6.a).Ako se koristi više uslovno postavljenizh zaštita (guards), proizvoljno se bira jedna od njih. Ako se nijedna zaštita ne izvršava, onda model nije dobro formiran. Da bi se to izbeglo, definišite jedan izlazan prelaz se predefiisanim "else" zaštitom kada je to mogućno.

Ako sve zaštite povezane sa trigerima prelaza koje se nalaze naizlazu pseudostanja izlaza i imaju binarne izraze koji imaju isti levi operant, može se okda koristitu uprođeno označavanje takvog pseudostanja izbora. Levi operant se postavlja unutar simbola izbora (slika 6.b) a ostali deo izraza zaštite se postavlja na izlaznim prelazima.

Račvanje temena pseudostanja (fork pseudostate vertices) služe za deljenje ulaznog prelaza (tranzicije) na dve ili više prelaza koje se završavaju na ortogonalnim ciljnim temenima (temena u različitim regionima kompozitnog stanja). Segmenti koji izlaze sa temena račve ne smeju da imaju zaštite ili trigere. Oynaka račve je kratka vertikalna debela liija (slika 6.c) sa jednom ili više strelom na izlazu.

Spajanje pseudostanja (join pseudostate) spaja nekoliko prelaza koji polaze od izvornih temena u različitim ortogonalnim regijama. Prelazi koji ulaze u temespojanja (join vertex) ne smeju da imaju zaštite ili trigere.

Oznaka spoja je kratka debela vertikalna linija koja ima jednu ili više ulaznih strelica koje dolaze sa izvornih stanja u odnosu na debelu liniju (slika 6.d).


Slika-6 UML oznake pseudostanja izbora (a i b), račvanja (c) i spajanja (d) [1.4]
Pseudostanje spajanja (junction), istorija stanja i završno stanje
Pseudo stanje spajanja spaja više puteva prelaza stanja, a može i da deli ulazni put u uviše uslovljenih izlaznih puteva prelaza stanja.

Spajanje temena pseudostanja (junction pseudostate vertices) su temena koja se koriste za povezivanje više prelaza (tranzicija). Koriste se radi formiranja spojenih puteva prelaza između stanja. Mogu se koristiti da dele ulazne prelaza u više izlaznih prelaza sa različitim uslovima zaštite (slika 7). Teme spajanja realizuje statičku uslovljenu granu.

Pridefinisanju uslova zaštite potrebno je definisati uslove sa "else" u najviše jednom uslovu prelaza. Taj prelaz se realizuje u slučaju da se nijedan drugi izlazni prelaz ne aktivira na spoju. Statičke uslovljene grane se razlikuju od dinamičkih uslovljenih grana koje realizuju temena izbora (choice). Spoj (junction) se predstavlja malim crnim krugom (slika 7).


Slika-7 Spoj (junction) koji spaja više ulaznih prelaza i iz koga izlazi više uslovljenih prelaza [1.4]

Stanje istorije se koristi radi podsećanja na prethodno stanje u mašini stanja, pre prekida. Sledeći dijagram pokazuje istoriju korišćenja stanja.


Slika-8 Stanje istorije stanja na primeru jedne mašine za pranje veša [1.4]

Krajnje stanje (final state) je specijalna vrsta stanja koje kompletira region okruženja (enclosing region). Ako se region okruženja direktno nalazi u mašini stanja i ako svi ostali regioni mašine stanja su takože završeni (došli u svoje završno stanje) onda je i završena ukupna mašina stanja. Krajnj atačka se predstavlja malim grugom sa crnim krugom u unutrašnjosti (slika 8).


Slika-9 Prelazak u završno stanje [1.4]
Prelaz ponašanja
Prelaz iz postojećeg u sledeće stanje označava linija sa strelicom na kraju na kome se nalazi sledeće stanje. Prelaz stanja može da ima triger, uslovljenu zaštitu i efekat.

Prelaz iz postojećeg u sledeće stanje se označava linija sa sttrelicom na kraju na kome se nalazi sledeće stanje. Prelaz stanja može da ima triger, uslovljenu zaštitu i efekat, kao što je prikazano na donjoj slici


Slika-10 Prelazak iz postojećeg u sledeće stanje [1.4]

Triger, tj. okidač (trigger) prouzrokuje prelaz stanja i može biti signal, ili događaj promene nekog uslova, ili vremesnki događaj.

Stražar (guard) je uslov koji mora da bude istinit (zadovoljen) da bi triger prouzrokovao prelaz stanja (tranziciju).

Efekat (effect) je akcija koje sa aktivira direktno na objektu koji poseduje mašinu stanja kao rezultat tranzicije, tj. prelaza stanja.

Složeni prelazak (compound transition) prebacuju mašinu stanja iz jednog stanja konfiguracije u drugo, predstavljajući kompletan odgovor mašine stanja na javljanje nekog događaja određenog tipa.

Prelazak ponašanja se opisuje na sledeći način:

transition ::= [ triggers ] [ guard ] [ '/' izraz ponašanja ]
triggers ::= trigger [ ',' trigger ]*
guard ::= '[' constraint ']'

Uslov zaštite se logički iskaz sa parametrima događaja okidanja i atributa i veza konteksta objekta. Uslov zaštite može da testira ortogonalna stanja trenutne mašine stanja ili stanje nekog objekta (npr. "Active State"). "Stražar" ustvari prestavlja uslov u vidu logičkog izraza. Ako on daje istinutu logičku vrednost, onda se aktivira triger za aktiviranje sledećeg stanja. Ako ima više "stražara", onda se aktivira ono sledeže stanje za koje je yadovoljen postavljen uslov prelaska stanja. Nije defisan redosled provere uslova.

Grupni prelazak je onaj koji je iniciran složenim događajem i složenim tekućim stanjem. Izvršavaju se sva podstanja, počev od najdubljeg unutrašnjeg stanja. To je složen (compound) prelazak stanja.

Unutrašnji prelazak je onaj koji ne vodi izlaznom stanju.Završetak prelaska (tranzicije) koja kreće od stanja ili krajnje tačke bez eksplicitnog trigera. Unutrašnjui prelayak je

Dijagram protokola mašine stanja
Dijagram protolpa mašine stanja pokazuje koje operacije klasifikatora se mogu pozivati u svakom stanju posle prelaska klasifikatora u ciljno stanje.

Dijagrami protokola mašine stanja se koriste da pokažu upotrebu protokola ili životnog ciklusa nekog klasifikatora (npr. objekta) . DIjagram protolpa mašine stanja pokazuje koje operacije klasifikatora se mogu pozivati u svakom stanju posle prelazaka klasifikatora u ciljno stanje.

Kako ovi dijagrami prikazuju životni ciklus stanja nekog klasifikatora (npr. objekta) oni su korisni za pokazivanje različitih stabilnih stanja klasa objekata koja mogu da postoje u nekom vremenu i da objasne kako objekti bi mogli da promene svoje stanje tokom vremena.

Glavni elementi dijagrama protokola mašine stanja predstavljaju protokole stanja, prelaza i različite pseudostanja, kao što je prikazano na slici.

Protokol dijagrama mašine stanja je virtualni sinonim protokola mašine stanja, jer jedan dijagram najčešće prikazuje protokol jedne mašine stanja.


Slika-11 Dijagram protokola mašine stanja, sa prikazom objašnjenja njegovih elemenata. [1.4]
Protokol mašine stanja
Protokol mašine stanja je specijalizacija mašine stanja ponašanja i koristi se za iskaz protokola upotrebe ili životnog ciklusa jednog klasifikatora (npr. objekta).

Protokol mašine stanja je specijalizacija mašine stanja ponašanja i koristi se za iskaz protokola upotrebe ili životnog ciklusa jednog klasifikatora (npr. objekta). On navodi koje operacije klasifikator može da poziva u nekom stanju i pod kojim uslovima, što onda određuje i dozvoljeni redosled operacija klasifikatora. Protokol mašine stanja izražava ispravan prelazak (tranziciju) koju može da pokrene klasifikatorom (pomoću trigera).

Protokol mašine stanja se uvek definiše u kontekstu klasifikatora. Jedan klasifikator može da ima nekoliko protokola mašine stanja. Svi prelazsci stanja (tranzicije)protokola mašine stanja moraju da budu prelasci protokola. Protokol mašine stanja se označava slično kao i mašina stanja ponašanja. Mora se navesti ključna reč {protocol} blizu imena mašine stanja da bi se pokazala razlika dijagrama protokola mašine stanja od dijagrma mašine stanja ponašanja.


Slika-12 Protokol mašine stanja za URLConnection [1.4]

Stanje protokola mašine stanja predstavlja spoljni pogled klase koja je izložena svojim klijentima. Zavisno od konteksta, stanja protokola odgovaraju unutrašnjim stanjima instanci iskazanim od strane mašina stanja ponašanja, ili oni mogu biti različiti.

Stanja protokola mašina stanja se prikazuju korisnicima njihovih klasifikatora konteksta. Jedan protokol stanja predstavlja izloženu stabilnu situaciju svog konteksta klasifikatora. Kada se istanca klasifikatora ne izvršava niejdnu operaciju, korisnici instance mogu uvek da znaju njeno stanje konfiguracije.

Stanja protokola mašine stanja ne može da ima ulazne, izlazne ili izvršne akcije. Protokol mašina stanja takođe ne mogu da imaju istoriju pseudostanja. Protokol mašine stanja mogu d aimaju stanja podmašine, kompozitna stanja i istovremene regione.


Slika-13 UML prikaz prostog i kompozitnog stanja [1.4]
Protokol prelaska stanja (tranzicije)
Protokol prelaza je specijalizacija prelaska ponašanja upotrebljen za protokol mašine stanja koji određuje ispravan prelazak na operaciju.

Protokol prelaza (protocol transition) je specijalizacija prelaska ponašanja upotrebljen za protokol mašine stanja koji određuje ispravan prelazak na operaciju. Protokl prelaska ima sledeća svojstva: preduslov (stražar, guard), triger i post-uslov.

Protokol prelaza je obično povezan sa nekim operacijama koje pripadaju kontekstu klasifikatora protokola mašine stanja. Protokol prelaza (tranzicije) određuje se povezana operacija može da se pozove za instancu u početnom stanju pod početnim uslovima i onim na kraju prelaza, stanje destinacije se postiže sa zadovoljenim post-uslovom.

Sloežn prelaz može se takođe upotrebiti za protokol mašina stanja.

Protokol preaska se prikazuje kao strelica prelaska usmerena od izvornog temena ka ciljnom temenu, sa opcionim tekstom opisa prelaska.


Slika-14 Protokol prelaska sa stanja New u stanje Active [1.4]

Tekstualna oznaka za protokol prelaska se opisuje sledećim pravilom sintakse (ovo nije definisano u UML 2.5)

protocol-transition ::= [ pre-condition ] trigger '/' [ post-condition ]
pre-condition ::= '[' constraint ']'
post-condition ::= '[' constraint ']'

Zaštita (uslov) prelaza ponašanja za protokol prelaza se naziva pre-condition i postavlja se pre trigera. Post-condition se dodaje protokoluprelaza posle trigera. Protokol prelazaka nema izraz ponašanja.

UML Dijagram stanja
Modeliranje vođeno događajima pokazuje kako sistem odgovara na eksterne i unutrašnje događaje. UML podržava modeliranje podržano događajima sa dijagramom stanja.

Modeiranje vođeno događajima pokazuje kako sistem odgovara na eksterne i unutrašnje događaje. Polazi se od pretpostavke da sistem ima konačan broj stanja i da događaji (kao podsticaji) prouzrokuju prelazak sistema iz jednog stanja u drugo. Ovo se naročito primenjuje kod sistema koji rade u realnom vremenu (tzv. sistemu u realnom vremenu).

UML podržava modeliranje podržano događajima upotrebom dijagrama stanja i događaja, vrše prelazak sistema iz jednog stanja u drugo. Oni ne pokazuju tok podataka unutar sistema, ali mogu da sadrže dodatne informacije vezane za proračune koji se rade u svakom stanju. Na slici 2 dat je primer dijagrama stanja u cilju modeliranjaa rada mikrotalasne peći, metodama modelovanja vođenim događajima. Svako stanje je označeno pravougaonikom sa zaobljenim uglovima.

.

Strelice pokazju podsticaje (događaje) koji dovode do promene stanja sistema. Krgovi pokazuju početak i kraj promene stanja.


Slika-15 Dijagram stanja u mikrotalasnoj peći [1.2]
Definisanje stanja i događaja
Stanje je definisano vrednostima atributa objekta. Događaji dovode do promene stanja objekta.

U Tabeli 1i 2 prikazana su stanja i podsticaji u radu mikrotalasne peći


Slika-16 Tabela podsticaja [1.2]

Slika-17 Tabela stanja [1.2]
Hijerarhija stanja
Super stanje sadrži više posebnih stanja.

Problem kod modelovanja stanja sistema je u tome što se broj mogućih stanja brzo povećava sa složenošću sistema. Kod velikih sistema, dijagram stanja, zbog toga, ne može da prikaže sve detalje, već samo pokazuje samo najvažnije informacije. Da bi se ovaj problem rešio, mogu se koristiti stanja na više nivoa, tj. koristiti tzv. super stanja. To znači da super stanje sadrži više posebnih stanja. U dijagramu stanja, super stanje izgleda kao i svako drugo stanje, ali se ono na „dodir“, može detaljnije prikazati sa svim detaljnim stanjima (kao pod stanjima). Stanje „Radi“ na slici 1 je na slici 3 prikazano, kao super stanje, u detaljnom obliku, sa svojim posebnim (pod) stanjima.

Super stanje „Radi“ sadrži više pod-stanja. Rad počinje sa proverom statusa, i ako ima problema uključuje se alarm i zaustavlja se kuvanje. Kuvanje se odvija uključivanjem generatora mikro talasa u određenom trajanju. Kad je vreme trajanja kuvanja isteklo, zujalica zuji. Ako se vrata otvore za vreme rada, sistem odmah prelazi u stanje prekida rada, kao što je prikazano na slici 3.


Slika-18 Hijerarhija stanja [1.2]
Primer 1: Dijagram mašine stanja za stanja vode
Primer dijagrama mašine stanja za agregatna stanja vode

Voda može da postoji u nekoliko agregatna stanja -

  • tečna voda
  • Vodena para
  • Led
  • Plazma

Slika-19 Dijagram mašine stanja za agregatna stanja vode [1.4]
Primer 2: Dijagram mašine stanja ponašanja ATM mašine
Primer dijagrama mašine sanja ponašanja koji opisuje rad bankomata (ATM) na najvišem nivou stanja mašine

ATM (Automated Teller Machine) je u staru isključen. Posle uključenje struje, ATM izvršava akcije uključenja i i ulazi u stanje Self Test (samotestiranje). AKo test autotestiranja spremnosti za rad bude negativan , ATM dobija stanje Out od Service (sistem je u kvaru). Ako je test pozitivan, počinje prelay (bez trigera( u stanje Idle (čekenje). U ovom stanju ATM čeka interakciju korisnika.


Slika-20 Dijagram mašine stanja ponašanja ATM [2.1]
Primer 3: Dijagram mašine stanja korisničkog računa onlajn prodavnice
Primer dijagrama protokola mašine stanja životnog ciklusa korisničkog računa onljn prodavnice

Svaka kompanija ima kupce koji održava račune kupaca i podržava njihov životni ciklus, od njihovog otvaranja do zatvaranja . Postoje razlike u u određivanju šta je jedno stanje računa kupaca u toku njihovog životnog cilusa, i koji uslovi ili događaji dovode dopromene stanja ovih računa.


Slika-21 Dijagram mašine stanja računa kupca onlajn prodavnice [2.1]
Primer 4: Protokol mašine stanja u primeru stanja niti u Javi
Primer UML dijagrama protokola mašine stanja koji prikzuje stanja i životni ciklus niti za klasu Tread u Javi

Nit je laki proces i najmanja jedinica poređana za izvršenje. Instance (objekat) klase Thread može da bude u jednom od sledećih stanja: new (novo), runable (u izvršenju), u čekanju sa vremenskim rjanjem, u čekanju, blokiran, završeno.


Slika-22 Dijagram protokola mašine stanja Java niti [1.4]
Primer 5: Mašina stanja ojekta sesije životnog ciklusa Java EJB
Prikazan je životni ciklus EJB onjekata sesije sa stanovišta lokalnog ili udaljenog klijenta upotrebom ECP 2.1 i ranijih API pogleda klijenata.

Objekat sesije ne postoji dok ne bude kreiran. . Kada klijent kreira objekat sesije, klijent ima referencu interfejsa komponenta novokreiranog objekta sesije.


Slika-23 Dijagram protokola mašine stanja objekta sesije Java EJB [2.1]
Primer 6: Protol mašine stanja životnog ciklusa DICOM aplikacije
Protokol mašine stanja objekta DICOM aplikacije.

Digital Imaging and Communications in Medicine (DICOM) je DICOM standard, u medicini za razmenu podataka.

Application Hosting API je interfejs između dve softverske aplikacije (deo 19 standarda):

  • Hosting System, tj. serverski sistem sa servisma DICOM aplikacija
  • Hosted Application, DICOM aplikacije instalirane na serverskom sistemu i korisnik njegovih servisa

Oni razmenjuju madicinske podatke sistema.

Serverski sistem inicijalizuje DICIM aplikaciju sa run ili exec komandom. Aktivirana aplikacija prolazi kroz stanja: Idle (neaktivan), InProgress (Radi), Completed (Završeno) ili Canceled (Poništeno). Exit stanje je stanje izlaska sistema iz rada.


Slika-24 Dijagram protokola mašine stanja DICOM aplikacije [2.1]
Dijagram stanja (video)
Trajanje: 12:56 min.

Video predavanje za objekat "Dijagrami mašine stanja"
Trajanje video snimka: 28min 15sek