UML -mallinnus TILAKAAVIO
SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat 3.6 Tilakaaviosta C++ -koodista
3. Tilakaavio Tilakaavio rakennetaan luokan oliolle Tilakaaviossa kuvataan yhden olion tilat olion elinaikana Tilakaavio kuvaa olion toiminnan ja sen, miten tapahtumat muuttavat olion tilaa Tapahtumat, jotka voivat muuttaa olion tilaa ovat - viestit eli funktiokutsut - ajan kuluminen eli ajastimet (timer) - ehtojen toteutuminen - tilassa suoritettavien tehtävien päättyminen - virheet
3. Tilakaavio Tilakaavio rakennetaan sellaisille luokille, joiden olioille löydetään eri tiloja (enemmän kuin 1) olion elinaikana Tilakaavion avulla voidaan olion käyttäytyminen kuvata ja se miten ne vaihtavat tilaansa ollessaan vuorovaikutuksessa ympäristönsä kanssa Tiloja sisältävät luokat ovat tyypillisesti aktiiviset luokat (kontrolli-/ohjausluokat, joiden oliot ohjaavat muiden olioiden toimintaa) Muillekin luokille voidaan rakentaa tilakaavio, jos se auttaa ymmärtämään luokan olion dynaamista luonnetta
3. Tilakaavio Kaikilla olioilla on tila, joka on aikaisempien olioon kohdistuneiden toimien tulos (vaikka tiloja olisi vain yksi) Esimerkkejä olion tiloista - Lasku (olio) on maksettu (tila) - Auto (olio) on liikkuu (tila) - Moottori (olio) on käynnissä (tila) - Ohjausyksikkö (olio) kuuntelee (tila) - Anturi (olio) lähettää viestin (tila) - Laitteen näppäin (olio) lähettää merkin (tila)
3.1 Tilakaavion alku- ja lopputilat Tilakaavio kuvaa luokan ilmentymien (olioiden) dynaamisen käyttäytymisen (tilat ja tilojen vaihdon) Alkutila Tilasiirtymä TILA1 Tila Tilan nimi TILA2 Lopputila
3.1 Tilakaavion alku- ja lopputilat Tilakaaviolla on alkutila ja tarvittaessa lopputila Alkutila on ensimmäinen tilakaavion tila joka suoritetaan Yhdelle oliolle/luokalle voidaan mallintaa monta tilakaaviota, joilla kaikilla on oma alkutilansa Alkutila kuvataan täytetyllä ympyrällä Lopputila on tilakaavion viimeinen tila joka suoritetaan Lopputila kuvataan kehän sisällä olevalla täytetyllä ympyrällä Alkutilaan ei ole saapuvia siirtymiä, eikä lopputilasta ole lähteviä siirtymiä.
3.2 Tilan nimi, muuttujat ja toiminnot Kuhunkin tilaan voi tilan nimen lisäksi liittyä - tilamuuttujia - toimintoja - tilasiirtymiä Tilan nimi -Tilan nimi on aina hyvä kuvata mahdollisimman lyhyesti, kuvaavasti ja selkeästi Lahetetaan signaali Ei laheteta signaalia
3.2 Tilan nimi, muuttujat ja toiminnot Tilamuuttujat - Tilamuuttujia voidaan käyttää tiloissa ja tilasiirtymissä - Tilamuuttuja voi olla luokkaan kuuluva attribuutti, paikallismuuttuja tai ajastin
3.2 Tilan nimi, muuttujat ja toiminnot Tilan toiminnot (actions) koostuvat yhdestä tai useammasta toimenpiteestä Tilan toiminnot voivat olla - entry (tulotoiminnot), - exit (jättötoiminnot) tai - do toiminnot Entry toiminnot suoritetaan aina kun tilaan tullaan Do toimintoja suoritetaan tilassa ollessa Exit toimintoja suoritetaan kun tilasta poistutaan
3.2 Tilan nimi, muuttujat ja toiminnot Tulo- ja jättötoiminnot annetaan muodossa: - entry/toiminnot tai entry/toiminnot;toiminnot;toiminnot - exit/toiminnot tai exit/ toiminnot;toiminnot - mallin kannalta on selkeintä esitellä jokainen toiminto erikseen entry, exit tai do sanalla erikseen Esimerkkejä: - entry/printf( Ollaan tultu tilaan ) - entry/olionnimi->kutsuttavafunktio() - entry/muuttuja=olionnimi->kutsuttavafunktio(parametri1) - exit/printf( Poistutaan tilasta ) - exit/olionnimi->kutsuttavafunktio() - exit/muuttuja=olionnimi->kutsuttavafunktio(parametri1)
3.2 Tilan nimi, muuttujat ja toiminnot Do -toiminnon suoritus loppuu, kun kyseinen tehtävä tulee loppuun suoritetuksi, tai kun tilasiirtymä keskeyttää sen suorituksen Tilan do -toiminto annetaan muodossa - do/toiminto tai do/toiminto; toiminto do -toiminto voi olla jokin kyseissä tilassa suoritettava toiminto (muuttujan arvon asettaminen, funktiokutsu) tai toisessa tilassa tai tilakaaviossa suoritettava tehtävä esimerkkejä: - do/printf( Suorita toiminto ) - do/olionnimi->kutsuttavafunktio() - do/muuttuja=olionnimi->kutsuttavafunktio(parametri1) - do/laskuri=0 - do/timer++
3.3 Tilasiirtymä Tilasiirtymässä tila siirtyy toisesta tilasta toiseen Tapahtumat, jotka voivat muuttaa olion tilaa ovat - viestit eli funktiokutsut - ajan kuluminen - ehtojen toteutuminen - tilassa suoritettavien tehtävien päättyminen - virheet
3.4 Tilasiirtymän vai tilan toiminnot Tilassa suorittavat toiminnot vievät aina aikaa, kun tilan toimintoja suoritetaan - Entry toiminnot suoritetaan aina kun tilaan tullaan - Do toimintoja suoritetaan tilassa ollessa - Exit toimintoja suoritetaan kun tilasta poistutaan Aikakriittisissä tiloissa täytyy tarkkaan miettiä kuinka paljon toimintoja laitetaan itse tilaan vai laitetaanko iso osa toimintoja tilasiirtymiin, jolloin itse tilassa ollessa ei kuluteta aikaa Ohjelman rakenne määrää monesti sen laitetaanko osa toiminnoista tilasiirtymiin Suorittamalla perusteellista testausta ohjelman eri osille, pystytään selvittämään missä ohjelman osassa eri toiminnot on hyvä suorittaa
3.5 Tilasiirtymän tapahtumat Sulautetuissa reaaliaika -järjestelmissä tapahtumat ohjaavat järjestelmän toimintaa Tapahtuma liittyy joko järjestelmään tai ympäristöön ja järjestelmän on reagoitava siihen jotenkin Järjestelmän toiminta tapahtuman sattuessa on määriteltävä Toiminta liittyy usein jonkin olion tilaan tai tilasiirtymään
3.5 Tilasiirtymän tapahtumat Ajan kuluminen muuttaa olion tilaa Ajan kulumista seurataan ehtolauseella Ehdot kuvataan tilasiirtymässä hakasulkujen avulla [timer==10] Käytössä ovat operaattorit ==, &&, ja!= sekä sulut. Tilasiirtymiä voi olla useita ja näissä omat ehtolauseet timer=0 Odottaa Tilasiirtymään voidaan liittää toimintoja Action ominaisuuden avulla. [timer==10] do/timer++ Lahettaa signaalia do/anturiolio->lahetasignaali(timer) exit/timer=0 Jos ehto [timer==10] ei toteudu, suoritetaan ohjelmassa Else -lause. Tämä kuvataan ilman ehtolausetta.
3.6 Tilakaaviosta C++ -koodiksi TILA1 switch (TILATIETO) { case TILA1: break; TILA2 } case TILA2: break;