State Machines

o stavových strojoch a statových diagramoch

About

Správanie rozličných systémov, aplikácií alebo zariadení, je možné charakterizovať ako stavové stroje (alebo konečnostavové automaty, konečnostavové stroje). Ich správanie vieme následne modelovať pomocou stavových strojov. Na tomto cvičení si niekoľko stavových diagramov nakreslíme.

Objectives

  • Naučiť sa opísať správanie systému/zariadenia/aplikácie pomocou stavov.
  • Naučiť sa reprezentovať správanie systému pomocou stavového diagramu.

Content

Not Too Short Introduction to State Diagrams

Stavový stroj reprezentuje model správania sa. Pozostáva z konečného počtu stavov, v ktorých sa zariadenie môže nachádzať, a prechodov medzi nimi. Stavový stroj sa môže vždy sa nachádzať práve v jednom stave. K prechodu medzi stavmi môže dôjsť na základe rôznych vstupov (napr. externých, ako je prijatie konkrétneho signálu/správy alebo interných, ako napr. vypršanie časovača).

Pre grafickú reprezentáciu správania stavových strojov používame stavové diagramy. Stavový diagram sa skladá z dvoch základných grafických komponentov:

  • z konečného počtu stavov, a
  • prechodov medzi stavmi.

Jednoduchý príklad diagramu stavov je možné vidieť na nasledujúcom obrázku. Diagram reprezentuje správanie sa dverí, ktoré môžu byť buď otvorené (prvý stav) alebo zatvorené (druhý stav).

State Diagram: The Door

O stavovom stroji, ktorý je reprezentovaný týmto diagramom, platí:

  • pozostáva z dvoch stavov: opened a closed
  • počiatočným stavom tohto stroja je stav closed
  • zo stavu opened sa do stavu closed dostaneme zatvorením dverí
  • zo stavu closed sa do stavu opened dostaneme otvorením dverí

Správanie stavového stroja je možné reprezentovať aj pomocou tabuľky prechodov stavov (z angl. state-transition table). V záhlaví tejto tabuľky sa nachádzajú:

  • východzie stavy, a
  • udalosti, ktoré odštartujú prechod do nasledujúceho stavu.

Výsledkom kombinácie týchto dvoch je nový stav, do ktorého sa systém dostane z východzieho stavu pri vzniku danej udalosti.

Príkladom tabuľky prechodov stavov pre dvere je táto tabuľka:

Tabuľka prechodov stavov pre dvere
state / event open close
opened closed
closed opened

Úloha

Rozšírte stavový diagram dverí o možnosť dvere zamykať.

Úloha

Pre vytvorený stavový diagram zostavte aj tabuľku prechodov stavov.

State Machine: Garage Doors

Tentokrát sa pokúsime opísať správanie garážových dverí. Tieto garážové dvere bude možné ovládať pomocou ovládača, ktorý má tri tlačidlá:

  • Otvoriť - Po jeho stlačení sa začnú garážové dvere otvárať.
  • Zatvoriť - Po jeho stlačení sa začnú garážové dvere zatvárať.
  • Stop - Po stlačení sa zastaví otváranie alebo zatváranie garážových dverí.

Otváranie ako aj zatváranie je možné spustiť vždy len vtedy, keď sa garážové dvere nehýbu (nesmú sa práve ani otvárať ani zatvárať).

Úloha

Nakreslite stavový diagram reprezentujúci správanie garážových dverí.

Úloha

Vytvorte pre vami navrhnutý stavový diagram aj prechodovú tabuľku stavov.

State Machine: Toaster

V tomto kroku sa pozrieme na ďalšie zariadenie, ktoré je možné charakterizovať ako stavový stroj - toaster. Budeme ho modelovať pomocou diagramu stavov ako aj prechodovou tabuľkou.

Red Toaster

Stavový diagram môže v grafickej notácii stavu okrem jeho názvu obsahovať aj ďalšie informácie:

  • entry - čo sa vykoná bezprostredne po vstúpení do daného stavu
  • exit - čo sa vykoná tesne predtým, ako sa daný stav opustí
  • do - čo sa bude v danom stave vykonávať
State and it’s Internal Activities

Okrem toho rozponávame aj dva pseudostavy:

  1. počiatočný stav - Slúži len na označenie stavu, v ktorom sa systém bude nachádzať po jeho zapnutí. Tento prechod môže byť nepomenovaný alebo pomenovaný.

    Initial Pseudostate
  2. koncový stav - Označuje stav, z ktorého už nevychádza žiadny prechod do iného stavu.

    Final State

Úloha

Nakreslite stavový diagram reprezentujúci správanie spotrebiča toaster.

Úloha

Vytvorte pre vami navrhnutý stavový diagram aj prechodovú tabuľku stavov.

Addiational Tasks

  1. Nakreslite stavový diagram pre dvere, ktoré sa automaticky zatvárajú a otvárajú napr. vo výťahoch alebo na benzinkách.

  2. Uvažujte o ďalších možnostiach navrhnutého toastera a zakreslenie tohto správania do stavového diagramu:

    • tlačidlo na okamžité vypnutie toastera (vystrelí toast a ukončí proces jeho toastovania)
    • zabezpečenie pred spustením toasteru naprádzno (bez toastu)
  3. Galiba. V areáli TUKE prasklo vodovodné potrubie. Aby bola situácia ešte zamotanejšia, kvôli jej oprave museli vodári rozkopať časť cesty v areáli, čím obmedzili premávku len do jedného jazdného pruhu (ehm - my tu máme jazdné pruhy? manager). Aby nebola ovplyvnená plynulosť premávky, vedenie rozhodlo na oboch stranách komunikácie umiestniť dostatočne inteligentné semafory, ktoré budú premávku riadiť. A pred ich samotnou inštaláciou chce vidieť model ich fungovania. Tentokrát ťa tvoja univerzita naozaj potrebuje…

Additional Resources

  • Modelovanie správania - Popis správania sa modelovaného systému pomocou UML diagramov správania.

  • State Machine Diagram Tutorial - A state diagram, sometimes known as a state machine diagram, is a type of behavioral diagram in the Unified Modeling Language (UML) that shows transitions between various objects.