Jedan od načina modelovanja dinamičkih aspekata sistema u UML-u je preko mašina stanja (konačnih automata). Dijagrami aktivnosti i dijagrami interakcije korisni su za opisivanje ponašanja. Dok interakcije modeluju neku grupu objekata koja zajedno radi na nekom problemu, dotle mašine stanja (konačni automati) modeluju jedan objekat tokom njegovog životnog veka. Ovaj objekat može biti konkretan objekat neke klase, korisničke funkcije ili čitavog sistema.
Veoma često potrebno je modelirati stanja objekta i događaje koji prouzrokuju njihovu promenu. Tada treba koristiti dijagram mašine stanja (State Machine), koji se još i naziva dijagram stanja.
Dijagrami stanja se često koriste za opis specijalnih slučajeva softverskih i hardverskih sistema uključujući:
Drugi tip mašine stanja koji se naziva Protocol State Machine ne modelira ponašanje ali je korisno za modeliranje protokola kao što je mrežni komunikacijski protokol.
Dijagram mašine stanja je deo logičkog modela sistema. Logički pogled daje apstraktni opis sistema, opisujući kada i kako delovi mogu biti u različitim stanjima.
Stanje je situacija u toku životnog veka entiteta u kojoj entitet može da postoji. U jednom stanju entitet može da:
Primeri:
Grafička notacija stanja je sledeća:
Podautomat stanja – stanje koje reprezentuje automat stanja koji se može pojaviti na više mesta unutar dijagrama stanja.
Primer na slici prikazuje dijagram stanja koji modeluje prekidač za svetlo:
Podizanjem prekidača za svetlo (Lift Switch) svetlo se pali. Spuštanjem prekidača (Lower Switch) svetlo se gasi.
Dijagram stanja se sastoji od stanja koji se prikazuju kao pravougaonici sa zaobljenim ivicama i prelaza koji se prikazuju kao strelice koje spajaju stanja.
Tranzicija (prelaz) predstavlja promenu stanja, ili kako se prelazi iz jednog stanja u drugo. Stanje je aktivno (Active) kade tranzicija ulazi u njega, a neaktivno kada tranzicija izlazi iz njega.
Događaj koji prouzrokuje promenu stanja (Triger), je napisan duž tranzicijske strelice. Npr. svetlo na slici ima dva stanja Off i On. Ono menja stanje kada se desi trigger Lift Switch (podignut prekidač) ili Lower Switch (spušten prekidač).
Često je korisno da vidimo stanja i tranzicije u formi tabele, kao što je to prikazano:
State/Trigger |
Light switch lifted | Light switch lowered |
Off | On | - |
On | - | Off |
U levoj koloni su stanja i duž gornjeg reda su trigeri. Tabela se interpretira na sledeći način: Kada je objekat u stanju prijema Trigera, objekat se pomera u rezultujuće stanje specificirano u ćeliji. Crtica - znači da se tranzicija nije desila ili da je kombinacija nemoguća.
Prikaz stanja i tranzicije u formi tabele je od pomoći kada se radi na brzinu, ali detalji o stanjima i tranzicije mogu biti veoma kompleksni pa je tada lakše raditi sa dijagramima stanja.
Dijagram stanja prikazuje:
Da bi demonstrirali prikaz mašine stanja posmatrajmo rad nekog klima uređaja sa termostatom koji je podešen na datu temeratruru. Na dijagramu su prikazane: oznake za početak i kraj, zaobljeni pravougaonici koji prikazuju stanja, ugnježdena stanja (stanja Aktivan i Pokretanje), događaji (npr. suvišeHladno sa parametrom - željenaTemperatura), kao i akcije kao što je spreman/uključi().