UML-notaatio staattinen ja dynaaminen mallintaminen Kalvot: Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo
Dynaaminen mallintaminen: Tilakaavio Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message).
Tilakaavio Käytettävissä Käytössä Huollossa Varattu alkutila palauta/ lopeta ajan lasku varaa otaKäyttöön/ aloita ajan lasku huolla exit/huoltoilmoitus valmis alkutila
Tilakaavio Tilakaavio on suunnattu verkko, joka koostuu tiloista (states) ja niitä yhdistävistä siirtymistä (transitions) eli tapahtumista. Tilakaavio kuvaa systeemin tilamuutokset nykyisen tilan ja tapahtuman funktiona.
Tilasuuntautuneet luokat Tilakaavio on mielekäs vain tilasuuntautuneille luokille, eli luokille, joiden ilmentymät ovat selvästi identifioitavissa tiloissa elinaikanaan usein vain harvat sovellukset luokat ovat tilasuuntautuneita tyypillisesti aktiiviset luokat ja sovelluksen kontrollia ohjaavat luokat ohjausolioita ovat mm. pelisovelluksen kontrolliolio ja graafisen käyttöliittymän tapahtumankäsittelystä vastaava olio joskus paikallaan muidenkin luokkien kohdalla, jos on tarpeen ymmärtää luokan dynaamista toimintaa
Alku- ja lopputilat alkutila = pieni musta ympyrä Salasanan luku help / nayta avuste do / nayta kehote entry / kaiutus pois exit / kaiutus päälle alkutila = pieni musta ympyrä jos olion ylimmän tason tilakaaviolla on alkutila, olio on tässä tilassa syntyessään (enintään yksi alkutila) ei alkutilaa: olion tila on aluksi määrittelemätön lopputila = kehän sisällä oleva musta ympyrä jos olion ylimmän tason tilakaaviolla on lopputila, ja olio joutuu siihen, se lakkaa olemasta yksi tai useampi
Tilasymbolin osat Tilaan voi liittyä: nimi toimia (action) aktiviteetteja (activity) sisäisiä siirtymiä (internal transition) viivästettyjä tapahtumia (deferred event) alitiloja Mikä tahansa näistä voi myös puuttua. SalasanaSyöttö entry/kaiutus pois exit/kaiutus päälle do/näytä kehote help/näytä avuste funktionäppäin/defer
Tilasymbolin osat Toimet Aktiviteetti mallin kannalta hetkellisiä, keskeytymättömiä toimintoja, joiden ei ajatella kuluttavan aikaa tulotoimen muoto: entry/toimi jättötoimen muoto: exit/toimi Aktiviteetti mallin kannalta aikaa kuluttava toiminta, jota suoritetaan tilassa ollessa aktiviteetin muoto: do/aktiviteetti SalasanaSyöttö entry/kaiutus pois exit/kaiutus päälle do/näytä kehote help/näytä avuste funktionäppäin/defer
Tilasymbolin osat Sisäiset siirtymät Viivästetyt tapahtumat sallivat reagoimisen tiettyyn tapahtumaan jättämättä kyseistä tilaa eroavat tilaan palaavasta tavallisesta siirtymästä (ei jättö- ja tulotoimia) sisäisen siirtymän muoto: tapahtuma {(parametrit)}} {[ehto]} {/toimet} Viivästetyt tapahtumat tapahtumaa ei käsitellä kyseisessä tilassa, mutta se säilytetään tapahtumapuskurissa viivästetyn tapahtuman muoto: tapahtuma/defer tuntemattomat tapahtumat sivuutetaan SalasanaSyöttö entry/kaiutus pois exit/kaiutus päälle do/näytä kehote help/näytä avuste funktionäppäin/defer
Yhteenveto määrittelyistä Tilaan liittyvät toiminnot voivat olla: aktiviteetteja, jotka kuvaavat tilan toimintaa do/aktiviteetti tulotoimia, jotka suoritetaan tilaan siirryttäessä entry/tulotoimet jättötoimia, jotka suoritetaan tilasta poistuttaessa exit/jättötoimet tilan sisäisiä siirtymiä, joissa sanoma liitetään tilan toimintoon tapahtuma/toimet viivästettyjä toimia tapahtuma/defer
Siirtymiin liittyvät määreet Siirtymä laukeaa (fire), kun olio on sen lähtötilassa, ja siirtymään liittyvä laukaisin aktivoituu. Tällöin olio: suorittaa lähtötilan jättötoimet, siirtyy siirtymän kohdetilaan, suorittaa kohdetilan tulotoimet, suorittaa tilan varsinaiset (tavalliset) toimet, sekä jää odottamaan seuraavan siirtymän laukeamista.
Siirtymiin liittyvät määreet Siirtymän laukaisin on yleisesti muotoa: {nimi:} {tapahtuma {(parametrit)}} {[ehto]} {/toimet} mikä hyvänsä laukaisimen osa voi puuttua Laukaisin aktivoituu, kun olio saa laukaisimessa annetun tapahtuman, ja ehto joko puuttuu tai on tosi. Siirtymätoimet ovat hetkellisiä toimia, jotka suoritetaan, kun siirtymä laukeaa.
Siirtymän laukaisimen merkinnöistä Laukaisimessa voi esiintyä seuraavia määreitä: sanoma(parametrit) [ehto] ^sanoman_oheislähetys /siirtymätoimi
Tapahtumat Tapahtumat: Signaali: ei sisäistä informaatiota tapahtuvat tiettyinä aikana hetkellisiä jaksottavat systeemin toiminnan tiloihin ovat joko signaaleja tai tapahtumaolioita Signaali: ei sisäistä informaatiota Tapahtumaolio: attribuutteja kuten oliolla Tapahtumaluokka: kuvaa tietyn tyyppiset tapahtumat
Tapahtumat Esimerkki: Esimerkki: Javan tapahtumankäsittely luokka: Koneen lähtö attribuutit: lennon numero lähtöaika lähtöpaikka tulopaikka tapahtumaolio: ”Lento AY835 lähtee Pariisiin Helsingistä, lähtöaika 17.30” Esimerkki: Javan tapahtumankäsittely
Liikennevalojen ohjaimen tilakaavio after(30s) [on vas. E-P] do/Vihreä valo E-P suunnalle do/Vihreä valo E-P suunnassa vasemmalle after(30s) [ei vas. I-L] after(30s) after(30s) [ei vas. E-P] after(30s) do/Vihreä valo I-L suunnassa vasemmalle do/Vihreä valo I-L suunnalle after(30s) [on vas. I-L]
Haarautumissymbolin käyttö do/Vihreä valo E-P suunnalle do/Vihreä valo E-P suunnassa vasemmalle after(30s) [on vas. E-P] [ei vas. E-P] [ei vas. I-L] after(30s) after(30s) do/Vihreä valo I-L suunnassa vasemmalle do/Vihreä valo I-L suunnalle [on vas. I-L] after(30s)
Tilakaaviot Tiloihin voidaan soveltaa periytymistä. Alitila perii ylitilansa lähtevät siirtymät Saapuvia siirtymiä ei voi periä, koska useampi kuin yksi alitila tekisi tilakaaviosta epädeterministisen. Jos ylitilaan on siirtymä, suoritus jatkuu alitilan alkutilasta Tilaa voidaan myös tarkentaa. Rinnakkaiset prosessit voidaan esittää tilan sisäisinä säikeinä, jotka erotetaan katkoviivoilla.
Koostetilan käyttö yhteisten siirtymien yhdistelyyn Aktiivinen entry/lue kortti exit/poista kortti kortti syötetty Tarkistus Vapaa [jatka] peruuta huolto Valinta Prosessointi Huollossa [lopeta] Kuitin tulostus
Rinnakkaistettu koostetila Huolto Testaus Komponenttien testaus Itsetesti Käyttövalmis huolla Komentotila näppäin(n) Odotus Komennon suoritus [lopetus] [ei lopetus]
Herätyskellon ohjausyksikön tilakaavio Soitto [aika=soittoaika] do/soita /tee alkuasetukset ALARM/sammuta valo ALARM Perustila Soittovalmis do/näytä aika do/näytä aika ALARM/sytytä valo SET painetaan SET painetaan M/ajan minuutti- lisäys Herätysasetus Aika-asetus do/näytä soittoaika M/soittoajan minuuttilisäys H/soittoajan tuntilisäys do/näytä aika H/ajan tunti- lisäys SET vapautetaan SET vapautetaan
Sanomakaaviot (OMT) Sanomakaavio ei kuulu UML-kaavioihin, mutta sitä voidaan käyttää sovelluksen tarkasteluun yleisemmällä tasolla. Sanomakaavio (event flow diagram) esittää yhteenvedon olioiden välisistä sanomista. Luokat kuvataan suorakaiteina. Luokkien välisiin nuoliin kirjoitetaan mahdolliset sanomat näiden luokkien välillä.
Sovelluksen täydellinen spesifikaatio Jos kaikilla sovelluksen olioilla on tilakaavio, näiden kaavioiden joukko on sovelluksen täydellinen toiminnallinen spesifikaatio. Jos annetut käyttötavat kattavat tarkasti kaikki sovelluksen mahdolliset käyttötavat, ne antavat saman informaation kuin tilakaavioiden joukko. ei kuitenkaan esitä suoraan yhden olion käyttäytymistä
Kaavioiden välisiä suhteita Skenaario (sekvenssikaavio) on yksi käyttötapauksen ilmentymä. Yhtä käyttötapausta vastaa (jopa ääretön) joukko skenaarioita. Skenaario vastaa myös tilakaavioiden joukon yhtä mahdollista suorituspolkua, eli on myös tilakaaviojoukon ilmentymä. --> kalvot