Tilakaaviot Tilakaavioilla on tietojärjestelmien kuvauksessa monenlaisia käyttökohteita. Niitä voidaan käyttää toimintojen kuvaamisessa, käyttöliittymien hahmottelussa, järjestelmään kuuluvien käsitteiden elinkaaren analysoinnissa jne. Luvussa esitellään tilakaaviotekniikka, joka pohjautuu alun perin Harelin esittämiin tilakaavioihin. Käsittely etenee yksinkertaisten tilakaavioiden periaatteista rinnakkaisuutta ja rakenteellisuutta sisältäviin tilakaavioratkaisuihin. Exit
Sisältö Tilakaaviot Tilakaavion käsitteitä Tilakaavioiden laatiminen Tilakone ohjauksen kuvaamisessa Tilakaavion toiminnan tarkastelua Tilasiirtymämatriisit UML tilakaavioiden ominaisuuksia UML-tilakaaviot Harelin tilakaavio Tilakaavion piirtäminen (Rational) Tilakaavion piirtäminen (Select) Tilakoneiden käyttömahdollisuuksia Esimerkki: toimintojen etsintä Esimerkki: editorin toimintokuvaus Esimerkki: näyttöjen suunnittelu Kertauskysymykset Tilakaaviot 2
Tilakaaviot - rakenneperiaate tilakone, tila-automaatti tilat + tilasiirtymät + siirtymiin / tiloihin / tilaan saapumiseen / tilasta poistumiseen liittyvät toiminnot spesifioinnin apuväline; käyttökohteita ovat mm.» tietoliikenneprotokollien mallintaminen» käsitteiden elinkaaren analysointi» algoritmien esittäminen useita eri notaatioita UML» perustuu Harelin kehittämään notaatioon SA-menetelmä (Ward & Mellor)» edellistä rajoittuneempi notaatio (erikoistapaus Harelin notaatiosta) Tilakaaviosta Tilakaaviosta käytetään käytetään synonyyminä synonyyminä myös myös termiä termiä tilakone. tilakone. Tilakaaviot 3
Yksinkertainen tilakaavio jäässä nesteenä höyrynä Tilakaaviot 4
Tilakaavion käsitteitä keskeiset käsitteet tilat tilasiirtymät tilasiirtymän laukaiseva heräte tilasiirtymää valvovat ehdot toiminnot (tilasiirtymässä / tilaan mentäessä / tilasta poistuttaessa) erilaisia tilakaavioita Mooren automaatit: toiminnot tilassa oltaessa Mealyn automaatit: toiminnot tilasiirtymässä» seuraavat esimerkit perustuvat tähän esitysmuotoon Tilakaaviot 5
Tilakaavioiden laatiminen erotettava toiminnan kannalta relevantit tilat ja siirtymät kuvauksen perusrakenne {tila, tilasiirtymä, tilasiirtymän laukaisuehto, tilaan (Moore) / siirtymään (Mealy) liittyvät toiminnot} alkutila mahdolliset tila(t) UML (Harel): myös tilaan saavuttaessa ja siitä lähdettäessä suoritettava toiminto transientit tilat tila, josta siirrytään pois välittömästi siihen tultua käyttö: havainnollisuuden parantaminen Tilakaaviot 6
Perusnotaatio tila siirtymä alkutila tila ehto/toiminto... (ehto/toiminto)... Tilakaaviot 7
Tilakoneen ositus ja osien synkronointi a1 / (a2, a3) a2 / (b1, b2) Kaksi Kaksi riippumatonta, riippumatonta, rinnakkain rinnakkain toimivaa toimivaa tilakonetta tilakonetta voidaan voidaan toiminnalisesti toiminnalisestisynkronoida synkronoida toisiinsa toisiinsa käyttämällä käyttämällä toisen toisen tilakoneen tilakoneen siirtymään siirtymään liittyvää liittyvää toimintoa toimintoa toisen toisen siirtymän siirtymän laukaisevana laukaisevana ehtona ehtona (esimerkissä (esimerkissä toiminto toiminto a2) a2) Tilakaaviot 8
Esimerkki: lampun toiminnan ohjaus / sammuta virta 50W langasta sammuta virta 100W langasta Tilakone Tilakone ohjaa ohjaa lamppua, lamppua, jossa jossa on on kaksi kaksi eri eri hehkulankaa. hehkulankaa. Alkutilassa Alkutilassa lamppu lamppu on on sammuksissa. sammuksissa. Hehkulangat Hehkulangat syttyvät syttyvät vetämällä vetämällä kytkimenä kytkimenä toimivaa toimivaa narua. narua. Veto Veto narusta narusta sytyttää sytyttää ensin ensin 50W 50W langan, langan, sen sen jälkeen jälkeen 100W 100W langan langan sammuttaen sammuttaen edellisen, edellisen, seuraavaksi seuraavaksi 50W 50W langan langan uudelleen uudelleen (molemmat (molemmat palavat) palavat) ja ja seuraavaksi seuraavaksi sammuttaa sammuttaa molemmat. molemmat. jouten veto narusta / kytke virta 50W lankaan veto narusta / sammuta virta 50W langasta sammuta virta 100W langasta 150W veto narusta / kytke virta 50W lankaan 50W veto narusta / sammuta virta 50W langasta kytke virta 100W lankaan 100W Tilakaaviot 9
Tilakone ohjauksen kuvaamisessa tilakaavio kuvaa tarkasteltavana olevan prosessin (lamppu) ohjauksen toimintaa ohjausprosessi» tilakaavion ehdot kuvaavat toimintaa ohjaavia (ulkoa tulevia) tietovirtoja ja toiminnot lampulle menevää ohjausta» sisäinen muisti, joka muistaa muutosketjun ohjattava prosessi» lamppu ottaa vastaan ohjauksen lähettämiä signaaleja Tilakaaviot 10
Ohjausprosessi: tietovirtakaavio veto narusta ohjaa lamppua sammuta 100W kytke 100W sammuta 50W lamppu kytke 50W Tilakone Tilakone muodostaa muodostaa ohjausprosessin. ohjausprosessin. Lamppu Lamppu on on ohjattava ohjattava toiminto. toiminto. Kuvauksessa Kuvauksessa näkyvät näkyvät pelkistettynä pelkistettynä ohjausta ohjausta ohjaavat ohjaavat ulkoiset ulkoiset signaalit signaalit sekä sekä ohjausprosessin ohjausprosessin ja ja ohjattavan ohjattavan prosessin prosessin välinen välinen vuorovaikutus. vuorovaikutus. Asiasta Asiasta tarkemmin tarkemmin kurssin kurssin kohdassa kohdassa Tietovirtakaaviot. Tietovirtakaaviot. Kyse Kyse on on myös myös järjestelmien järjestelmien kommunikaatiosta. kommunikaatiosta. Tilakaaviot 11
Ohjausprosessi: kommunikaatio Lampun ohjaus Lampun Lampun toiminnan toiminnan kuvauksen kuvauksen eri eri tasoja. tasoja. Kytkin Kytkin Lamppu Lamppu Tilakaaviot 12
Tilakaavion toiminnan tarkastelua ehto: ulkopuolelta tuleva signaali (ohjausvirta), ehtolauseke (muuttujat, signaalit), ajastimen laukeaminen toiminto ulospäin suuntautuva toiminto (ohjausvirta: enable / disable, trigger,...), ajastimen asetus, muuttujan asetus toiminnan periaatteita tilasiirtymään ei kulu aikaa toiminnot tapahtuvat samanaikaisesti Tilakaaviot 13
Esimerkki: luvun arvon laskenta luku = 1{d}n(.1{d}n) d = [0 1 2 3... 9] merkki = *mikä tahansa merkki, laskutoimituksessa sen numeroarvo (0...9)* arvo = * liukuluku, syötemerkkijonon numeroarvo* status = [OK FAIL] tai merkki on "."/ /s = 0 alku merkki on d/ s = merkki kok.osa merkki on d/ s = 10*s + merkki merkki on "." Tilakonetta Tilakonetta voi voi käyttää käyttää myös myös algoritmin algoritmin toiminnallisuuden toiminnallisuuden kuvaamiseen. kuvaamiseen. Vrt. Vrt. toimintokaaviot. toimintokaaviot. piste tai merkki on d/ merkki ="."/ s = s+merkki/10 k = 2 des.osa merkki on d/ s = s+merkki/10**k k = k+1 / / arvo = s arvo = s status = OK status = OK Tarvitaan Tarvitaan lisäselite! lisäselite! Lisäksi jokaisesta tilasta on siirtymä "jos merkki ei ole d eikä '.' / status=fail" tilaan. ** tarkoittaa potenssiin korottamista. Tilakaaviot 14
Esimerkki: puhelimessa toimiminen jouten nosta luuri / linja linjaauki auki ei linjaääntä / laske luuri keskeytys / laske luuri lopetus / laske luuri linjaääni / numeron valinta ei vastaa / laske luuri numero valittu / vastauksen odottelu / laske luuri puhu vastaus / ei hälytä / vikaa Transientti Transienttitila tila Tilakaaviot 15
Tilasiirtymämatriisit vaihtoehtoinen esitystapa tilakaaviolle sisältää saman informaation tilakaavion toiminnasta kuin kaavioesitys helpottaa systemaattista kaavion toiminnan tarkastamista 1{(lähtö,tulos,ehto,toimenpide)}n Tilakaaviot 16
tilasiirtymämatriisit siirtymäehdot lähtötila alkutila kok.osa piste des.osa merkki on d merkki on "." kok.osa s = merkki kok.osa s = 10*s+merkki des.osa s = s+merkki/10 k=2 des.osa s = s+merkki/10**k, k=k+1 piste arvo = s status = OK arvo = s status = OK merkki ei ole d eikä "." uusi tila toimenpiteet Tilasiirtymämatriisissa Tilasiirtymämatriisissa on on jossain jossain muodossa muodossa esitettävä esitettävä kaikkien kaikkien tilasiirtymien tilasiirtymien osalta osalta sama sama toiminnallisuus toiminnallisuus kuin kuin tilakaaviossakin. tilakaaviossakin. Tilakaaviot 17
tilasiirtymämatriisit lähtötila alkutila kok.osa piste des.osa ehto toiminnot seur. tila merkki on d muuten s = merkki kok.osa merkki on d merkki on "." muuten s = 10*s + merkki arvo = s, status = OK kok.osa piste merkki on d muuten s = s + merkki/10, k= 2 des.osa merkki on d s = s + merkki/10**k, k=k+1 des.osa arvo = s, status = OK muuten siirtymien kuvaukset Tilakaaviot 18
UML tilakaavioiden ominaisuuksia toiminnot tilaan tullessa tilassa oltaessa tilasta lähdettäessä tilasiirtymässä suoritettavat) rinnakkaiset tilat kaaviohierarkkia yli- ja alitilat (ali)tiloille yhteiset tilasiirtymät (ylitilan tasolla) tilasiirtymävahdit (guard) siirtymää vartioivat lisäehdot Tilakaaviot 19
UML-tilakaaviot: notaatio SalasanaSyöttö entry/kaiutus pois exit/kaiutus päälle do/näytä kehote help/näytä avuste funktionäppäin/defer Alkutila Suoritetaan, kun tullaan tilaan Suoritetaan, kun poistutaan tilasta Suoritetaan tilassa olon aikana Suoritetaan jättämättä tilaa Siirtymä laukeaa, vain jos arvo on tosi Suoritetaan, kun siirtymä laukeaa eventname(par)[guard]/action Lopputila Tapahtuma siirretään myöhemmin käsiteltäväksi Siirtymä virittyy kun tapahtuma tulee Tilakaaviot 20
Harelin tilakaavio: notaatio Event causes Transition between States : State-1 event State-2 Event with Attribute : State-1 event(attribute) State-2 Initial and Final States : Initial State Intermediate State Action on a Transition : State-1 event / action State-2 Guarded transition: State-1 event [guard] State-2 Output Event on a Transition : State-1 event1 / event2 State-2 Actions and Activity while in a State : Sending an event to another object : State Name event1 State-1 State-2 entry/entry-action do activity-a event2 event-1 / action-1 exit / exit-action Class-3 Tilakaaviot 21
Harelin tilakaavio State Generalization (Nesting) : Superstate Superstate Substate-1 Substate-2 Concurrent Subdiagrams : event3 event2 Superstate Superstate Substate-1 Substate-3 event1 Splitting of control : Substate-2 Substate-4 event0 Substate-1 Substate-3 Substate-2 event1 event2 Substate-4 event3 event4 Tilakaaviot 22
Tilakaavion piirtäminen (Rational) State6 State3 State7 State4 State2 State5 Piirto-ohjelmien Piirto-ohjelmien mahdollistama mahdollistama esitysmuoto esitysmuoto saattaa saattaa poiketa poiketa virallisesta virallisesta notaatiosta. notaatiosta. Tilakaaviot 23
Tilakaavion piirtäminen (Select) Piirto-ohjelmien Piirto-ohjelmien mahdollistama mahdollistama esitysmuoto esitysmuoto saattaa saattaa poiketa poiketa virallisesta virallisesta notaatiosta. notaatiosta. State 1 State 2 Result 1 State 3 State 4 Alitila Alitila ylitila ylitila --State State 33 ja jastate 44 tarkentavat tarkentavatstate State 1:tä 1:tä State 5 State 6 Rinnakkainen Rinnakkainen tila tila (kooste) (kooste) - - State State 5 5 ja ja State State 6 6 ovat ovat rinnakkaisia rinnakkaisia State State 4:n 4:n alitiloja alitiloja Tilakaaviot 24
Esimerkki: luvun arvo UMLtilakaaviona /s = 0 alku merkki on d/ s = merkki merkki on "." piste merkki on d/ s = s+merkki/10 k = 2 tai merkki ="."/ tai merkki on "."/ kok.osa / arvo = s status = OK merkki on d/ s = 10*s + merkki des.osa / arvo = s status = OK merkki on d/ s = s+merkki/10**k k =k+1 merkki on "."/ 6 merkki ei ole d eikä "."/ Yhteinen Yhteinen tilasiirtymä tilasiirtymä ylitilan ylitilan tasolla tasolla Tilakaaviot 25
Esimerkki: editorin toimintokuvaus Editorin Editorin toiminta: toiminta: Tiedoston Tiedoston nimeäminen nimeäminen ja ja editoitavan editoitavan tekstin tekstin muuttaminen muuttaminen ovat ovat toisistaan toisistaan riippumattomia riippumattomia (rinnakkaisia) (rinnakkaisia) toimintoja. toimintoja. nimetön lataa tai talleta nimetty talleta tyhjä editoi muutettu talleta lataa editoi talletettu lataa poistu [tyhjä tai talletettu] poistu [muutettu japoistu [muutettu ja nimetty]/ nimetön]/ varmista talletus Kuvauksen varmista talletus ja Kuvauksenkomponentteja komponentteja kysy tiedostolle nimi alkutila: alkutila: ylitilan ylitilanjajaalitilojen alitilojentasolla tasolla alitilat: alitilat: rinnakkaiset rinnakkaiset yhteinen yhteinentilasiirtymä: tilasiirtymä: ylitilan ylitilantasolla tasolla guard guard(vahti): lisäehto lisäehtotilasiirtymälle tilasiirtymälle Tilakaaviot 26
UML-tilakaavioiden toiminta sama tapahtuma voi aiheuttaa tilasiirtymän molemmissa osissa osien synkronointimekanismit voidaan toteuttaa siirtymäehtojen ja toimintojen synkronointia tukevalla valinnalla rinnakkaiset tilakoneet voidaan aina purkaa sarjallisiksi tilakoneiksi selkeys kärsii ja rakenne monimutkaistuu Tilakaaviot 27
Tilakoneiden käyttömahdollisuuksia toiminnon kuvaaminen: laitteiden toiminta toiminnan ohjaus (vrt. lamppuesimerkki) määrittelyn apuväline järjestelmässä tarvittavien tilatietojen ja toimintojen etsintä tarkastellaan olioiden elinkaarta; tila muuttuu vain toiminnon seurauksena (löydetään toiminnot) havainnollistamisen apuväline tarpeita kartoitettaessa käyttöliittymän spesifiointi Tilakaaviot 28
Esimerkki: toimintojen etsintä palautus lisäys tilattu hyllyssä lainaus lainassa poisto poistettu kadoksissa korjattavana Tästä Tästä voidaan voidaan määrittelytyössä määrittelytyössä kerätä kerätä luettelo luettelo toiminnoista, toiminnoista, joita joita järjestelmä järjestelmä toteuttaa. toteuttaa. Jokainen Jokainen tilasiirtymä tilasiirtymä on on vaste vaste jostain jostain järjestelmän järjestelmän kannalta kannalta relevantista relevantista toiminnosta. toiminnosta. Tilakaaviot 29
Esimerkki: käyttöliittymän kuvaus (editorista poistuminen) Exit [tyhjä tai talletettu] Exit [muutettu ja nimetty] Cancel Save OK do: kysy talletusta Editoi Exit [muutettu ja nimetön] Cancel Save OK do: kysy talletusta Käyttöliittymän Käyttöliittymän toiminnan toiminnan määrittelevä määrittelevä tilakaavio, tilakaavio, jota jota on on rikastettu rikastettu käyttöliittymän käyttöliittymän toteutuksen toteutuksen kuvauksilla. kuvauksilla. No Yes No OK Cancel Show Desktop.scf File name do: kysy nimeä No OK [uusi tiedosto] OK [tiedosto olemassa] Talletus do: talleta puskuri Yes Overwrite OK do: kysy päällekirjoitusta transientti tila Tilakaaviot 30
Esimerkki: näyttöjen välisten siirtymien suunnittelu aloitusnäyttö tilauksen syöttö uusi asiakas kysely peruuta tilaus tilauksen yksityiskohdat peruutuksen yksityiskohdat Tätäkin Tätäkin kaaviota kaaviota voisi voisi elävöittää elävöittää liittämällä liittämällä kuvaukseen kuvaukseen esimerkit esimerkit kustakin kustakin näytöstä. näytöstä. Lisäksi Lisäksi siirtymänuoleen siirtymänuoleen voisi voisi liittää liittää siirtymän siirtymän aiheuttavan aiheuttavan valinnan valinnan kuvauksen. kuvauksen. Tällaisenaankin Tällaisenaankin kaavio kaavio havainnollistaa havainnollistaa käyttöliittymää. käyttöliittymää. Tilakaaviot 31
Kertauskysymykset Mitä eroa on Mooren ja Mealyn tilaautomaateilla. Mitä tarkoitetaan transientilla tilalla. Selitä kurssimateriaaliin liittyvän lampun toiminta aohjaavan tilakaavion toiminta. Selitä kurssimateriaaliin liityvän lampun ohjausjärjestelmän tietovirtakaavio- ja kommunikointikuvaus. Mitä tarkoittavat ohjaussignaalit enable, disable, trigger tilakaavioiden yhteydessä. Tarkista että kurssimateriaaliin sisältyvä tilamatriisiesimerkit (luvun arvon laskenta) vastaavat ilmaisuvoimaltaan vastaavaa tilakaavioesimerkkiä (eli matriisi sisältää kaiki kaavion komponentit). Mitä ilmaisuvoimaa lisääviä piirteitä on Harelin tulakaavioissa verrattuna perinteisiin tilakaavioihin. Miten rinnakkaisten tilakaavioiden toiminnan eteneminen on mahdollista synkronoida toistensa kanssa, ts. toinen tilakaavio ohjaa toisen tilakaavion tilasiirtymää. Harjoitustehtäviä kirjasta Koskimies, Oliokirja. Anna yksinkertaisen taskulaskimen tilakaavio. Kurssimateriaalissa on esitetty tilakaavio, joka kuvaa luvun arvon laskentaa. Kaavio on esitetty kahdella eri tavalla (perinteinen notaatio, Harelin notaatio). Selitä ensin kaavioiden toiminta. Kuvaa sen jälkeen kaavioiden ilmaisuun liittyvät keskeiset erot. Tarkastele kurssimateriaaliin sisältyvän yksinjkertaisen editorin toimintaa kuvaavan tilakaavion käyttäytymistä erilaisilla esimerkkitilanteilla. Toimiiko editori kuvatussa muodossaan kaikissa tilanteissa oikein. Puhelinvastaajan käyttäytymisen kuvaavassa tilakaaviossa on tilat Suljettu, Nauhoituksen luku ja Viestin talletus. Anna täydellinen tilakaavio lisäämällä tarvittavat tilasiirtymät sekä seuraavat sanomat, toimenpiteet ja aktiviteetit: saapuva puhelu, vastaanota puhelu, soita nauha, talleta viesti, soittaja sulkee, viesti lopussa. Tilakaaviot 32
kertauskysymykset Digitaalikello näyttää samanaikaisesti kellonajan ja päivän. Kellon aika- ja päivänäyttöjä voidaan muuttaa kellon napeilla. Kellossa on kaksi nappia, "mode" ja "forward". Haluttaessa muuttaa aikaa painetaan kerran modenappia, jonka jälkeen aikaa voidaan muuttaa forward-napin avulla. Jos mode-nappia painetaan uudelleen, voidaan muuttaa päiväystä (forward-napilla). Jos mode-nappia painetaan vielä kerran, siirrytään jälleen normaalitilaan. Forwardnappia painettaessa näyttö siirtyy yhdellä yksiköllä (sekunti tai päivä) eteenpäin; mikäli nappia pidetään painettuna yli kaksi sekuntia, vaihtuu näyttö nopeasti (kerran 0.5 sekunnissa) eteenpäin niin kauan kuin nappi on alhaalla. Anna kellon ohjausyksikön tilakaavio. Pullonpalautuskoneeseen kuuluu ohjausyksikkö, pulloanturi, hihnayksikkö, summalaskuri, lopetusnappi, ja kuitinkirjoittaja. Anna a) normaalia ja b) poikkeuksellista käyttöä kuvaavat sekvenssikaaviot sekä c) ohjausyksikön tilakaavio. Tilakaaviot 33