Tilakoneet

State machines

 

Olli Savolainen

http://savolai.net/

Taustaa: Ohjelmistokehitys ja koneiden ohjaaminen

Ohjelmistokehityksessä tulee usein vastaan tilanteita, joissa

  • Ohjelman tai laitteen käyttöä ohjaa jokin prosessi
     
  • Ohjelman täytyy pitää kirjaa siitä, missä kohtaa prosessia milläkin ajanhetkellä ollaan
     
  • Ohjelma käyttäytyy eri tavoilla riippuen siitä, missä tilassa, eli missä kohtaa prosessia ollaan

Tilakoneet toiminnan hallinnassa

Tilakone on ohjelmallinen kuvaus:
 

  • Prosessin vaiheista (tilat; esim toasting, baking)
  • Prosessin toimintaympäristön käyttäytymisestä (tapahtumat; esim DOOR_CLOSE)
  • Ohjelman tai laitteen käyttäytymisestä kyseisessä toimintaympäristössä; tilojen toiminnot, esim. set_temperature(0);

(Wikipedia)

Tilakoneiden perusteet

  • Tilakone alkaa umpinaisesta pallosta, josta on nuoli siihen tilaan, josta tilakoneen suoritus alkaa
     
  • Varsinaiset tilat ovat UML:ssä laatikoita
     
  • Ympäristön käyttäytyminen eli tapahtumat merkitään nuolin
     
  • Tilakoneen loppuminen voidaan merkitä umpinaisella pallolla, joka on ympyröity

Tilakone: Tilat

  • Tilat merkitään laatikoina
    • Tiloilla on nimi (laatikon yläosa)
       
    • Tilojen aiheuttama sovelluksen käyttäytyminen:
      • Tiloilla voi olla saapumis- ja poistumistoimintoja (laatikon alaosa, entered/entry: ja exit:)

 

Huom! Kaikki sovelluksen käyttäytyminen tulee olla ilmaistuna tilakoneessa: Jos sitä ei ole tilan entered/exit/tms. tapahtumana, sitä ei tapahdu!

Esimerkki: https://wiki.metropolia.fi/display/koneautomaatio/Yksinkertainen+Caps+Lock+-tilakonemalli

Tilakone: tapahtumat

  • Tilakoneessa siirtyminen tilasta toiseen onnistuu tapahtumien seurauksena
    • Tapahtuman nimi merkitään tilasta toiseen vedetyn nuolen yhteyteen
    • Jos nuolen yhteyteen ei ole merkitty tapahtumaa, kyseisestä tilasta toiseen ei voida koskaan siirtyä kyseistä nuolta pitkin
      • (poikkeuksena aloitustilapallo, josta siirrytään ensimmäiseen tilaan automaattisesti koneen käynnistyessä)

Tilakone: tapahtumat 2

Samasta tilasta ei voi lähteä montaa nuolta, jotka seuraavat samasta tapahtumasta

  • Toisin sanoen: tilakone ei voi siirtyä kahteen eri tilaan yhtäaikaa
     
  • (→ Jos järjestelmässä on N tapahtumaa ja M tilaa, nuolien [siirtymien] korkein mahdollinen määrä tilakoneessa on M×N)
     

Tilakoneiden käyttäytymisen ohjaus

Tilakoneen käyttäytyminen (tilasta toiseen siirtyminen)  voi vaihdella kahdella eri tavalla:

  • Tilasta on useampi siirtymänuoli, jotka reagoivat eri tapahtumiin ja johtavat eri tiloihin siirtymiseen
  • Tilakoneessa käytetään haarautumista (merkitään salmiakkikuviolla) joka johtaa eri tilaan riippuen totuusarvon vertailun tuloksesta

Tilakoneen käyttäytymisen ohjaus

Sisäiset muuttujat ja haarautuminen

  • Tilakoneen sisäiset muuttujat määritellään yleensä nuolen tilakoneen alkutilasta (umpinainen pallo) ensimmäiseen tilaan, esim KERROS=1, TAVOITEKERROS=1
     
  • Sisäisiä muuttujia voidaan käyttää haarautumisen (salmiakkikuvio) yhteydessä
  • Huomaa, että salmiakkikuvioon osoittavassa nuolessa oltava myös nimetty tapahtuma!

 

Tilakoneen käyttäytymisen ohjaus

Sisäiset muuttujat ja haarautuminen


Tavallisia ohjelmointikielen vertailuoperaattoreita (< > <= >= !) käytetään haarautumisen/salmiakkikuvion totuusarvovertailussa
(Salmiakkikuviosta pois johtava nuoli)

  • Esim. hissiesimerkki:
    • Salmiakkikuviosta lähtevä yksi nuoli, jossa lukee KERROS<TAVOITEKERROS, toinen jossa lukee KERROS>TAVOITEKERROS ja kolmas, jossa lukee KERROS==TAVOITEKERROS
    • Ks. myös Tuubissa:
      tivolikone-tiedote,
      pullonpalautuskone-
      tehtävä

 

Sisäkkäiset tilakoneet

  • Joskus on tarpeen tehtä monimutkaisempia tilakoneita, joissa jotkin tilat sisältävät kokonaisia erillisiä tilakoneita
     
    • → Ns. sisäkkäiset tai alitilakoneet
      (hierarkkiset tilakoneet)
       
    • Näin voidaan hahmottaa isompi kokonaisohjelma yhtenä tilakoneena (Esim. pullonpalautus),
      • ja yksittäinen alitehtävä sisäkkäisenä tilakoneena (esim. yksittäisen pullonpalautukseen syötetyn kappaleen/pullon tunnistaminen)

Yhtäaikaiset, paralleeliset tilakoneet

  • Joskus sisäkkäiset tilakoneet voivat olla paralleelisia eli yhtäaikaisia (ks. seuraava kalvo)

Ks. esim. http://www.dossier-andreas.net/software_architecture/fsm.html

Paralleelinen sisäkkäinen tilakone

Palautusnappulan käsittely käynnissä kappaleenkäsittelyn kanssa yhtäaikaisesti!

Made with Slides.com