3. Mallinnusmenetelmistä
Tähän asti kehitettyjen menetelmien antina on ollut lähinnä se
muoto, jossa analyysin ja suunnittelun tulokset esitetään
Vähemmän selkeämpi ja vakiintunut on se prosessi, jolla nämä
tulokset syntyvät
Muista: menetelmiä käytettävä soveltaen ja harkiten
5. UML
Booch, Rumbaugh, Jacobson:
Unified Modeling Language (UML)
Nykyisin OMG:n (Object Management Group)
kehittämä standardoitu mallinnuskieli
6. UML (jatkoa)
Ohjelmiston mallien kuvaustapa, graafinen suunnittelukieli
Ei siis varsinainen menetelmä
Erittäin laaja
7. UML:n kaaviotyypit
Korkean tason toiminnalisuus Ohjelmisto-
kehitys
Rakenne Käyttö- Käyttäytyminen
tapauskaaviot
Esimerkkejä Sekvenssi- Yhteistyö-
Oliokaaviot
kaaviot kaaviot
Sijoittelu- Luokka- Aktiviteetti-
Tilakaaviot
kaaviot kaaviot kaaviot
Komponentti-
kaaviot
8. UML:n kaaviotyypit (jatkoa)
Korkean tason toiminnallisuus
Käyttötapauskaaviot
Järjestelmän staattinen ja dynaaminen rakenne
Oliokaaviot
Luokkakaaviot
Sijoittelukaaviot
Komponenttikaaviot
9. UML:n kaaviotyypit (jatkoa)
Järjestelmän dynaaminen käyttäytyminen
Sekvenssikaaviot
Yhteistyökaaviot
Tilakaaviot
Aktiviteettikaaviot
Kaaviotyypit esitellään seuraavassa käyttäen esimerkkinä
autojen vuokrausjärjestelmää
10. UML:n kaavioiden
peruselementtejä ja -suhteita
Kaaviot koostuvat peruselementeistä ja niiden välisistä
suhteista
Elementit ovat geometrisia kuvioita
Elementeillä usein myös sisäinen rakenne (esimerkiksi luokan
attribuutit ja operaatiot)
Suhteet ovat elementtejä yhdistäviä viivoja
Suhteisiin voidaan liittää tarkempaa informaatiota (assosiaation
nimi, kertautuminen, roolit)
UML:n graafinen ulkoasu ei ole tarkasti määrätty
11. UML:n kaavioiden
peruselementtejä ja -suhteita
Elementit Suhteet
Nimi
Luokka Riippuvuus
0..1
Assosiaatio *
rooli
Tila Nimi
Kooste
Pakkaus Nimi
Yleistys
(Periytyminen)
Kommentti Teksti Toteutus
jne. jne.
12. Käyttötapaus
Käyttötapaus (use case) on kuvaus järjestelmän ja sen
käyttäjien välisestä vuorovaikutuksesta tietyn, käyttäjän
kannalta mielekkään tuloksen aikaansaamiseksi
Kuvaus annetaan usein tavallisena tekstinä, joka tarkennetaan
sekvenssikaavioiksi
Esimerkkejä käyttötapauksista: luottotarkistus, lainahakemus,
valmistelu
13. Käyttötapauskaavio
Käyttötapauskaavio (use case diagram) kuvaa järjestelmän
käyttötapausten väliset suhteet ja käyttötapauksiin osallistuvat
järjestelmän ulkopuoliset toimijat
Käytetään järjestelmän käyttöyhteyden ja vaatimusten korkean
tason kuvaukseen
Jos käyttötapaus sisältyy toiseen, laajemmasta piirretään
katkonuoli sisältyvään käyttötapaukseen päin
15. Luokkakaavio
Luokkakaavio (class diagram, static structure diagram) kuvaa
järjestelmään kuuluvia luokkia ja niiden välisiä suhteita
Luokkakaaviota käytetään järjestelmän staattisen rakenteen
kuvaukseen
16. Luokkakaavio - Esimerkki
Ohjain
1
Kohde 1
Varasto
palauta() hallinnoi KohdeHallinto
varaa() * 1
otaKäyttöön() palautaKohde(Kohde, Varasto)
varaaKohde(Kohde)
otaKäyttöönKohde(Kohde)
HenkilöAuto
rekisterinumero ParkkiAlue
Talleta huolto-
informaatio
huolla(int km)
(palauta kutsuu)
palauta()
17. Oliokaavio
Oliokaavio (object diagram) kuvaa olioita ja niiden välisiä
suhteita
Luokkakaavion mahdollinen ajoaikainen ilmenemismuoto
Oliokaavio antaa esimerkin järjestelmän dynaamisesta rakenteesta
tietyllä hetkellä
18. Oliokaavio - Esimerkki
: KohdeHallinto
luokan ilmentymä:
alleviivattu
auto1: HenkilöAuto auto2 : HenkilöAuto
rekisterinumero = XYZ-999 rekisterinumero = ABC-123
19. Sekvenssikaavio
Sekvenssikaavio (sequence diagram) koostuu tiettyyn
vuorovaikutukseen liittyvistä olioista ja niiden välisistä
sanomista (message)
Sekvenssikaaviota käytetään kuvaamaan oliojoukon välistä
vuorovaikutusta tietyssä tilanteessa
Aika kulkee ylhäältä alas
Vuorovaikutustapahtumat ovat vaakasuuntaisia nuolia
Osallistujat kuvataan pystyviivoina
Kuvaa usein olioiden vuorovaikutuksen tietyn käyttötapauksen
yhteydessä
21. Yhteistyökaavio
Yhteistyökaavio (collaboration diagram) kuvaa olioiden välistä
vuorovaikutusta
Aikaa ei edusta mikään tietty suunta
Olioiden yhteydet kuvataan symbolien välisinä viivoina
Sijoittelua voidaan käyttää ilmaisemaan loogisesti yhteen kuuluvia
olioita
Kontrollin kulun suunta voidaan ilmaista nuolella
Sanomien ajallinen järjestys voidaan antaa sanomiin liitettyinä
numeroina
Monitasoinen numerointi: sisäkkäiset operaatiokutsut
22. Yhteistyökaavio - Esimerkki
vastaa edellistä
sekvenssikaaviota 1.1: palauta()
auto: Henkilöauto
: KohdeHallinto
1: palauta(auto,parkki)
parkki: ParkkiAlue
1.2: varastoi(auto)
UI
23. Vuorovaikutuskaaviot
Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat
olioiden välistä vuorovaikutusta. Siksi niitä kutsutaan yhteisesti
vuorovaikutuskaavioiksi.
24. Tilakaavio
Tilakaavio (statechart diagram) kuvaa tietyn luokan
ilmentymien reagoimisen ulkoisiin tapahtumiin (message)
Käytetään tyypillisesti aktiivisten olioiden ajoaikaisen
käyttäytymisen spesifiointiin
Voidaan antaa tarvittaessa myös muille olioille, joiden
käyttäytyminen voidaan ymmärtää tilojen vaihtumisena
Koostuu tiloista (attribuuttien arvojen yhdistelmä tietyllä hetkellä)
ja niiden välisistä siirtymistä
Tilat pyöristettyjä suorakaiteita, siirtymät nuolia
Luokan ilmentymä on aina jossakin luokan tiloista
Voi sisältää alku- ja lopputilan
25. Tilakaavio - Esimerkki
alkutila
palauta/
Käytettävissä lopeta ajan lasku Käytössä
otaKäyttöön/
valmis huolla
aloita ajan lasku
Huollossa
exit/huoltoilmoitus Varattu
varaa
26. Aktiviteettikaavio
Aktiviteettikaavio (activity diagram) kuvaa tietyn tehtävän
sisäisen logiikan
Muodollisesti tilakaavion erikoistapaus
Kaavio voidaan jakaa sarakkeisiin, jotka vastaavat kutakin
suorittajaa
Koostuu toimenpidetiloista (sivureunat täysin pyöristettyjä, ei
nimiä) sekä niitä yhdistävistä ilman tapahtumaa olevista
siirtymistä
27. Aktiviteettikaavio (jatkoa)
Kaavioon voidaan liittää päätössymboleja (vinoneliö)
kuvaamaan kontrollin haarautumista jonkin ehdon perusteella
Kaaviolla voidaan myös kuvata rinnakkaisten suoritussäikeiden
haarautumista ja yhdistymistä
Kaavioon voidaan lisätä tietoalkioita (toiminnan kohteita)
olioina
Muistuttaa täydellisessä muodossaan läheisesti muissa
kuvausmenetelmissä käytettyjä tietovuokaaviota
Tietovuokaaviot eivät sinänsä kuulu UML:ään
28. Aktiviteettikaavio - Esimerkki
Asiakas Virkailija
Pyydä Tee
auto varaus
:Lasku
[avoin] Tee lasku
Maksa Valmistele
auto
:Lasku
[maks]
Ota auto Rekisteröi
vuokraus
29. Aktiviteettikaavio - Esimerkki
alkutila
Asiakas Virkailija
Pyydä Tee
säikeiden auto varaus
haarautu-
minen :Lasku
(fork) [avoin] Tee lasku
säikeiden
yhdisty-
minen
Maksa Valmistele
(join) auto
:Lasku
[maks]
Ota auto Rekisteröi
vuokraus
lopputila
30. Komponenttikaavio
Komponenttikaavio (component diagram) kuvaa komponentit ja
niiden väliset suhteet
Komponentti (UML-kaavioissa) voi olla:
Lähdekielinen tai binäärimuotoinen rajapinnan toteuttava
ohjelmayksikkö
Myös esimerkiksi datatiedosto, ohjelmatiedosto (mm. exe tai dll),
html-sivu, dokumentti, kirjasto tai jokin muu osa
31. Komponenttikaavio (jatkoa)
Yleisesti UML:n komponentti on lähes mikä tahansa
ohjelmistojärjestelmästä selkeästi erotettavissa ja
korvattavissa oleva osa (”fyysinen”, ei vain käsitteellinen)
Voidaan käsitellä kaavioissa luokan tavoin (assosiaatiot,
yleistyssuhteet, attribuutit, ...)
32. Komponenttikaavio - Esimerkki
toteuttaa
käyttää
GUI
Auton-
Vuokraus
VuokrausToiminta
Tietokanta-
liittymä
KohdeKanta
33. Sijoittelukaavio
Sijoittelukaavio (deployment diagram) kuvaa prosessointia
suorittavat laiteyksiköt, niiden yhteydet ja ohjelmistojen osien
sijoittumisen niihin
Tarvitaan vain silloin kun järjestelmään liittyy useita laiteyksiköitä
Prosessointiyksiköt (node) esitetään kuutioina ja niiden väliset
suhteet assosiaatioina
Prosessointiyksiköille voidaan antaa luokkien tapaan
yleistyssuhteita, niillä voi olla attribuutteja ja ilmentymiä ja ne
voivat olla osallistujina vuorovaikutuskaavioissa
34. Sijoittelukaavio - Esimerkki
Huomaa: prosessointiyksikön ilmentymä =
tietty laite, ei laitetyyppi
asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin
: XTietokanta-
: GUI
liittymä
<<TCP/IP>>
: Auton-
Vuokraus : XTietokanta
komponentin ilmentymä olio
35. Kaavioille yhteisiä piirteitä
Pakkaukset
Laajennosmekanismit, joilla voidaan määritellä
lisäominaisuuksia UML:n perusosille
Stereotyypit (stereotype)
Lisätietomääreet (tagged value)
Rajoitteet (constraint)
36. Pakkaus
Pakkaus (package) on UML:n yleinen ryhmittely- ja
kokoamisväline, jota voidaan käyttää kaikissa kaaviotyypeissä.
Piirretään suorakaiteena, jonka ylälaidassa on nimiuloke
Voi kuvata loogisen kokonaisuuden, alijärjestelmän, ...
Hakemiston vastine, voi sisältää myös toisia pakkauksia
Pakkaus edustaa nimiavaruutta
Pakkauksen elementtien näkyvyys ulospäin voidaan kuvata Java-
kielen tavoin
37. Pakkaukset - Esimerkki
Ohjain
Kohteet Tuki 1
Kohde 1
Varasto
palauta() hallinnoi KohdeHallinto
varaa() * 1
otaKäyttöön() palautaKohde(Kohde, Varasto)
varaaKohde(Kohde)
otaKäyttöönKohde(Kohde)
HenkilöAuto
rekisterinumero ParkkiAlue
huolla(int km)
palauta()
39. Stereotyypit
Stereotyypillä varustetulla perusosalla on oma laajennettu
merkitys
Täysin epäformaali tai esimerkiksi rajoitteilla määritelty
Stereotyypille voidaan antaa oma kuvake, joka esiintyy perusosan
symbolin yhteydessä tai korvaa sen
Hyödyllisiä hyvin yleisten UML-symbolien kohdalla: varsinkin
komponentit ja prosessointiyksiköt
Mekanismi sovelluskohtaisten notaatioiden tekemiseen
41. Lisätietomääreet
Lisätietomääre on UML:n perusosaan liitettävä määre, joka
koostuu nimestä ja arvosta
Määreen avulla mallin tiettyyn osaan voidaan liittää mielivaltaista
käyttäjän haluamaa informaatiota
Ei muuta mallin merkitystä, vaan liittyy enemmän mallin hallintaan
ja prosessointiin
43. Rajoitteet
Rajoitteet antavat mahdollisuuden määritellä lisävaatimuksia,
jotka mallin toteuttavan järjestelmän tulee täyttää
Kirjoitetaan aaltosulkujen sisään
Voi olla joko nimetty standardirajoite, OCL-kielellä kirjoitettu
ilmaus tai täysin epäformaali tekstinä annettu ehto
OCL on UML-määrittelyyn sisältyvä formaali rajoitekieli, jolla
voidaan antaa merkitykseltään täsmällisiä, analysointi- ja
suorituskelpoisia kuvauksia
44. Rajoitteita - Esimerkki
OCL-rajoite
* omistaa 1
Yritys Henkilö {(self.aviomies->size=1 implies
aviomies self.aviomies.sukupuoli = mies) and
{xor} 0..1 sukupuoli (self.vaimo->size=1 implies
0..1 self.vaimo.sukupuoli = nainen) and
vaimo not(self.vaimo->size=1 and
self.aviomies->size=1)}
Ministeriö 0..1 johtaa 1
45. Staattinen mallintaminen
Luokkakaavio (class diagram) kuvaa järjestelmään kuuluvia
luokkia ja niiden välisiä suhteita
Tärkein järjestelmän staattisen rakenteen mallinnusväline
46. Luokkakaavio - Esimerkki
Ohjain
1
Kohde 1
Varasto
palauta() hallinnoi KohdeHallinto
varaa() * 1
otaKäyttöön() palautaKohde(Kohde, Varasto)
varaaKohde(Kohde)
otaKäyttöönKohde(Kohde)
HenkilöAuto
rekisterinumero ParkkiAlue
Talleta huolto-
informaatio
huolla(int km)
(palauta kutsuu)
palauta()
47. Luokkasymbolin osat
Luokkasymbolin osat:
Attribuutit
{näkyvyysmääre} nimi {[kertautuminen]}
{: tyyppi} {= alkuarvo} {lisätietomääreet}
Näkyvyysmääreet: public +, protected #, private –
Attribuutit primitiivityyppejä, eivät mallissa olevia luokkia (nämä
kuvataan assosiaatioina)
Staattinen attribuutti alleviivattuna
Vakiot merkitään lisätiedolla {const}
48. Luokkasymbolin osat (jatkoa)
Luokkasymbolin osat:
Operaatiot
{näkyvyysmääre} nimi {parametrilista}
{: palautustyyppi} {lisätietomääreluettelo}
Parametreista annetaan tiedonvälityksen suunta (in, out, inout), nimi,
tyyppi sekä mahdollinen oletusarvo
Staattinen operaatio alleviivattuna
Avoin virtuaalioperaatio kursiivilla tai lisätiedolla {abstract}
Toteutus operaation kommenttina (esim. pseudokielellä), jos halutaan
50. Assosiaatiot
Assosiaatioilla (association) kuvataan luokkien väliset suhteet
Edustaa jotain sellaista luokkien välistä suhdetta, jolla on tietty
pysyvyys
Sellaiset hetkelliset suhteet, jotka kestävät vain tietyn operaation
suoritusajan, eivät yleensä ole edustettuna assosiaatiolla
Assosiaation ajoaikainen ilmentymä on linkki (link), joka vallitsee
kahden olion välillä
52. Roolit
Assosiaation pää on nimeltään rooli, jolla voi olla nimi
Jos assosiaatio liittyy molemmissa päissään samaan luokkaan,
molemmilla rooleilla on syytä olla nimi
Roolin yhteydessä voidaan myös ilmoittaa rajapinta muodossa
roolinimi:rajapintanimi
Roolin ilmentymä = olioliitos
54. Assosiaation kertautuminen
Rooli ilmaisee myös assosiaation kertautumisen
Kertautuminen ilmoitetaan listalla kokonaislukuvälejä
* tarkoittaa mielivaltaisen monta
0..1 tarkoittaa kertautumista "yksi tai ei yhtään”
0..* voidaan antaa lyhyesti *
i..i voidaan lyhentää i
Jos kertautumista ei ole merkitty, se on määrittelemätön (eikä siis
esimerkiksi 1
Jos olioliitoksilla on mallin kannalta olennainen keskinäinen järjestys,
rajoite "{ordered}" voidaan liittää rooliin
55. Moninkertainen assosiaatio
Jos assosiaation kertautuminen on suurempi kuin 1,
kutsumme assosiaatiota moninkertaiseksi
Kurssi * 1..* Opettaja
56. Assosiaatioluokka
Joskus assosiaatioon liittyy muutakin tietoa ja/tai
toiminnallisuutta, joka halutaan esittää luokkakaaviossa
Tällöin assosiaatioon voi liittää oman luokan, jossa annetaan
normaaliin tapaan attribuutteja ja operaatioita
Linkit ovat assosiaatioluokan ilmentymiä
Assosiaatioluokkaan voi liittyä puolestaan muita assosiaatioita
kuten mihin hyvänsä luokkaan
Assosiaatioluokalle ei tarvitse antaa nimeä, jos assosiaatiolla on
sellainen. Assosiaatioluokka liitetään itse assosiaatioon
katkoviivalla.
57. Assosiaatioluokka
* työskentelee *
Yritys
Yritys Henkilö
Henkilö
työnantaja työntekijä
nimi
nimi nimi
nimi päällikkö
osoite
osoite sosturvatunnus
sosturvatunnus
osoite
osoite 0..1
työsopimus
työsopimus
aika
aika
palkka
palkka johtaa
58. Yksilöinti
Jos assosiaatioon liittyy tieto, joka määrää assosiaation ilmentymien
toisessa päässä olevien olioiden joukon, tämä tieto voidaan esittää
nk. yksilöintinä (qualification)
Yksilöinti liittyy siis aina moninkertaiseen assosiaatioon
Tavallisesti yksilöinti muuttaa kertautuvan pään kertautumisen "1":ksi
(tai "0..1":ksi); tällöin yksilöinti määrää linkin toisessa päässä olevan
olion yksiselitteisesti
Yksilöinti merkitään luokkasymboliin liittyvänä pienenä laatikkona, jonka
sisään kirjoitetaan linkin yksilöivä tieto; yksilöinti tarkentaa olion
vastakkaisessa päässä
Usein yksilöivä tieto on vastakkaisella puolella olevan luokan attribuutti
59. Yksilöinti
Kirjasto
Kirjasto Henkilö
Henkilö
lainaa
lainaaja nro
lainaaja nro
kokoelma
kokoelma * 1 nimi
nimi
sijainti
sijainti osoite
osoite
60. Navigointi
Assosiaatioon voidaan liittää myös tieto siitä, että toteutuksen
on varmistettava navigoitavuus, ts. että assosiaation
ilmentymää voidaan käyttää helposti siirtymiseen oliosta
toiseen
Tämä tehdään piirtämällä nuolen kärki assosiaation päähän;
tällöin edellytetään, että navigointi on mahdollista toisesta
päästä tähän päähän
61. Kooste
Kooste (aggregation) on erityinen assosiaatiolaji
Kooste esittää suhteen "on-osa" tai "kuuluu" luokkien (ilmentymien)
välillä
Koska tämä suhde on merkittävä erikoistapaus, sille on oma symbolinsa:
pieni vinoneliö sisältävässä päässä (siis suhteen "A on-osa B:tä" B-
päässä)
Tämä symboli korvaa tavallisesti assosiaation ja roolien nimet.
Koosteeseen voidaan soveltaa normaaliin tapaan kertautumista ja
yksilöintiä
Koostesuhteen tulisi aina olla luonteeltaan transitiivinen ja asymmetrinen
62. Kooste (ja navigoitavuus)
3..*
Monikulmio
Monikulmio Piste
Piste
{ordered}
pinta-ala
pinta-ala x-koord
x-koord
y-koord
y-koord
63. Aito kooste
Aito kooste (composition) tarkoittaa koostesuhdetta, jossa
osaolio riippuu isäntäoliostaan kahdella tavalla:
Osa ei voi olemassa ilman isäntäänsä, ja
Osa voi olla vain yhden isännän osa
Tällöin isännän tulee yleensä huolehtia osan luonnista ja
hävittämisestä
Aito kooste merkitään kuten kooste, mutta vinoneliö on musta
65. Periytyminen
Periytyminen kuvaa erikoistus/yleistys-suhteen kahden luokan
(yliluokan ja aliluokan) välillä
Suhde piirretään kolmiokärkisenä yliluokkaan osoittavana nuolena
Jos luokalla on useita aliluokkia, nuolet voidaan piirtää joko
erikseen tai yhdistettynä samaan kärkeen
Moniperiytyminen on sallittua
66. Rajapinnan toteutus
Rajapinta esitetään joko stereotyypillä <<interface>>
varustetulla luokkasymbolilla tai pyöreällä rajapintasymbolilla
Jos luokka toteuttaa rajapinnan, piirretään edellisessä
tapauksessa toteutussuhdetta kuvaava nuoli (kuten periytyminen,
mutta katkoviivalla) luokasta rajapintaan
Jälkimmäisessä tapauksessa rajapintaympyrä yhdistetään
yksinkertaisella viivalla luokkasymboliin
Luokkasymbolin käyttäminen rajapinnan kuvaukseen on
hyödyllistä silloin, kun halutaan näkyville rajapinnan tarjoamat
operaatiot
68. Aktivinen luokka
Jos luokan ilmentymät ovat oman prosessin omaavia aktiivisia
olioita, kutsumme myös luokkaa aktiiviseksi
Aktiivinen luokka kuvataan luokkasymbolilla, jonka rajaviivat ovat
paksunnettuja
Vastaavasti aktiivisen luokan ilmentymä kuvataan
paksureunaisella oliosymbolilla
Aktiiviselle luokalle voidaan antaa ylimääräinen lohko, jossa
luetellaan signaalit, joihin luokan ilmentymät reagoivat
70. Dynaaminen mallintaminen
Dynaaminen malli kuvaa sovelluksen käyttäytymisen
suorituksen aikana
Sekvenssikaaviot (sequence diagram)
Kuvaavat, miten joukko olioita toimii yhteistoiminnassa
Korostavat olioiden välistä vuorovaikutusta
Tilakaaviot (statechart diagram)
Kuvaavat yhden olioluokan täydellisen käyttäytymisen
Korostavat yhden olion reagoimista ulkoa tuleviin tapahtumiin
71. Sekvenssikaavio
Sekvenssikaavio (sequence diagram) koostuu tiettyyn
vuorovaikutukseen liittyvistä olioista ja niiden välisistä
sanomista (message)
Sekvenssikaaviota käytetään kuvaamaan oliojoukon välistä
vuorovaikutusta tietyssä tilanteessa
Aika kulkee ylhäältä alas
Vuorovaikutustapahtumat ovat vaakasuuntaisia nuolia
Osallistujat kuvataan pystyviivoina
Kuvaa usein olioiden vuorovaikutuksen tietyn käyttötapauksen
yhteydessä
73. Skenaariot
Skenaario kuvaa yhden mahdollisen tapahtumasarjan
sovelluksen suorituksen aikana. Skenaariokuvaus keskittyy
olioiden vuorovaikutuksen esittämiseen.
Yleensä haarautumaton tapahtumajono
Voidaan kuvata tavallisena tekstinä
Käyttötapaus voidaan kuvata skenaariona
Kuvaa myös sovelluksen sisäistä toimintaa
74. Skenaariokaaviot
Skenaariokaavio (sequence diagram, event trace diagram,
interaction diagram, scenario diagram) on skenaarion formaali
kuvaus
UML:ssä käytetään sekvenssikaavioita
Käytöltään hyvin saman tapaisia (käytännössä samoja) kuin
sekvenssikaaviot, mutta skenaariokaavioilla on notaatiosta
riippuen erilaisia ominaisuuksia ja ulkoasuja
75. Sekvenssikaavion merkinnät
Usein sekvenssikaavio kuvaa olioiden välisiä operaatiokutsuja
Kontrollin omistus voidaan esittää paksunnettuna jaksona,
aktivaatiopalkkina, olioviivassa:
Oliolla on kontrolli, jos sen operaatiota on kutsuttu eikä
operaatiosta ole vielä poistuttu
Operaatioiden paluut voidaan haluttaessa esittää
katkoviivanuolina, joskin aktivaatiopalkki ilmaisee myös paluun
76. Sekvenssikaavion merkinnät
Paluunuoleen voidaan liittää mahdollinen paluuarvo,
vastaavasti kuin kutsunuoleen voidaan liittää kutsun todelliset
parametrit
Olio voi kutsua myös omaa operaatiotaan; tällöin kutsunuoli
tekee 180 asteen käännöksen
Kun olio kutsuu omaa operaatiotaan, sisemmän kutsun
aktivaatiopalkki siirtyy hieman oikealle
77. Olion luominen ja hävitys sekvenssikaaviossa
Olion luominen kuvataan sekvenssikaaviossa sanomana, joka
suuntautuu itse oliolaatikkoon
Vastaavasti olion hävittäminen kuvataan sanomana, joka
suuntautuu olioviivan lopussa olevaan vinoristiin
Vinoristi esittää olion häviämistä
79. Käyttäjä sekvenssikaaviossa
Järjestelmän ulkoinen toimija (kuten esimerkiksi käyttäjä) voi
olla myös osallistujana sekvenssikaaviossa
Käyttäjällä on oma ikoninsa, tikku-ukko
Käyttäjän toimenpiteet kuvataan sanomina käyttäjältä jollekin
järjestelmään kuuluvalle oliolle
Esimerkiksi käyttöliittymän kautta tapahtuvat valinnat, napin
painallukset ym.
Käyttäjälle annettava informaatio kuvataan sanomina joltain
järjestelmän oliolta käyttäjälle
Esimerkiksi ilmoitukset, dialogit, kyselyn tulokset ym.
80. Sanomat ja signaalit
Olioiden välinen sanoma sekvenssikaaviossa voi edustaa
synkronista operaatiokutsua tai asynkronista signaalin
lähettämistä
Aktiiviset, rinnakkaisia prosesseja edustavat oliot kommunikoivat
tyypillisesti signaalein pikemmin kuin operaatiokutsuin
Asynkroniselle signaalille voidaan haluttaessa käyttää omaa
nuolisymbolia, mutta yleensä tämä ei ole tarpeen: asia käy ilmi
yhteydestä
81. Sanomat ja signaalit
Myös käyttäjä edustaa omaa rinnakkaista prosessiaan, joka
kommunikoi järjestelmän kanssa signaalein
Aktiivisten olioiden tapauksessa aktivaatiopylväät eivät
useinkaan tuo uutta informaatiota, koska oliot ovat
periaatteessa jatkuvasti aktiivisia; tällöin pylväät kattavat olion
koko eliniän
82. Aikamerkinnät
Sekvenssikaavion aikaskaalalle (tiettyyn kohtaan kuviteltua
pystyssä olevaa aikajanaa) voidaan asettaa aikamerkkejä
(timing mark), jotka edustavat kyseistä ajanhetkeä
Näitä aikamerkkejä voidaan käyttää esimerkiksi rajoitteissa
kuvaamaan tiettyjä reaaliaikavaatimuksia
Myös sanoman lähettämisen viemää aikaa (esimerkiksi
maksimiaikaa) voidaan tällä tavoin spesifioida
Jos sanoman lähettämisen viemä aika on olennaista mallissa,
sanomanuoli piirretään vinoon alaspäin
83. Suorituslogiikka
Sekvenssikaavion pääasiallinen tarkoitus on kuvata yhtä
mahdollista tapahtumasarjaa järjestelmän toiminnassa eikä
määritellä tietyn toiminnan tai operaation yleistä
suorituslogiikkaa
Niinpä algoritmiset ilmaisut kuten ehdollisuus ja toisto eivät ole
periaatteessa välttämättömiä sekvenssikaavioissa
Silti tällaiset ilmaisut voivat olla joskus hyödyllisiä
lyhennysmerkintöjä: niiden avulla voidaan samalla
sekvenssikaaviolla kuvata useita mahdollisia tapahtumasarjoja
Tästä syystä myös UML:ssä on sekvenssikaavioihin otettu
mukaan ilmaisut ehdollisuudelle ja toistolle
84. Suorituslogiikka
Ehdollisuus kuvataan sanomana, joka haarautuu
lähtökohdastaan
Kumpaankin haaraan voidaan liittää hakasuluissa ehto, jonka
vallitessa tämä haara valitaan
Kukin haara edustaa omaa erillistä alisekvenssikaaviota haarojen
yhdistymiskohtaan saakka
Toisto kuvataan liittämällä sanoman nimen eteen toistomääre
muodossa *[...], missä hakasulkujen sisällä annetaan
mielivaltainen toistoa kuvaava ilmaus (esimerkiksi i = 1..n)
85. Herätyskellon sekvenssikaavio
SET M
0 9 3 0
ALARM H
: Ohjaus : SoittoYks : Valo
:User Näytä aika
Paina ALARM
sytytä
{t = soittoaika} aloita soitto
t
Paina ALARM
lopeta soitto
Paina ALARM
sammuta
86. Sekvenssikaavion ja
luokkakaavion yhteys
Vaikka sekvenssikaavio ja luokkakaavio kuvaavat varsin
erilaisia näkökulmia ohjelmistoon, niillä on myös yhtymäkohtia:
Jos sekvenssikaaviossa luokan A ilmentymä lähettää sanoman s
luokan B ilmentymälle, on s:n oltava joko B-luokan operaatio tai
jos B on aktiivinen luokka, B:n tunnistama signaali
Kummassakin tapauksessa s:n tulee esiintyä B:n yhteydessä
luokkakaaviossa ja mahdollisten todellisten parametrien tulee
täsmätä operaation kutsumuodon kanssa
Luokkien A ja B välillä on myös todennäköisesti oltava
assosiaatio, koska sanoman lähettäminen viittaa suhteeseen
näiden luokkien välillä
Jos A-olio kommunikoi usean eri B-olion kanssa
sekvenssikaavioissa, tulee assosiaation olla moninkertainen
88. Tilakaavio
alkutila
palauta/
Käytettävissä lopeta ajan lasku Käytössä
otaKäyttöön/
valmis huolla
aloita ajan lasku
Huollossa
exit/huoltoilmoitus Varattu
varaa
89. 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
Tila1 laukaisin Tila2
Tila3
90. 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
91. Alku- ja lopputilat
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
Salasanan luku
help / nayta avuste
do / nayta kehote
entry / kaiutus pois
exit / kaiutus päälle
92. Tilasymbolin osat
Tilaan voi liittyä:
SalasanaSyöttö
Nimi
entry/kaiutus pois
Toimia (action) exit/kaiutus päälle
do/näytä kehote
Aktiviteetteja (activity) help/näytä avuste
funktionäppäin/defer
Sisäisiä siirtymiä (internal transition)
Viivästettyjä tapahtumia (deferred event)
Alitiloja
Mikä tahansa näistä voi myös puuttua
93. Tilasymbolin osat
Toimet
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
94. Tilasymbolin osat
SalasanaSyöttö
Sisäiset siirtymät
entry/kaiutus pois
Sallivat reagoimisen tiettyyn exit/kaiutus päälle
do/näytä kehote
tapahtumaan jättämättä kyseistä tilaa
help/näytä avuste
Eroavat tilaan palaavasta tavallisesta siirtymästä funktionäppäin/defer
(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
95. 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
96. 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
97. 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
98. Siirtymän laukaisimen merkinnöistä
Laukaisimessa voi esiintyä seuraavia määreitä:
sanoma(parametrit)
[ehto]
^sanoman_oheislähetys
/siirtymätoimi
99. Tapahtumat
Tapahtumat:
Tapahtuvat tiettyinä aikana
Hetkellisiä
Jaksottavat systeemin toiminnan tiloihin
100. Liikennevalojen ohjaimen tilakaavio
after(30s)
[on vas. E-P] do/Vihreä valo
do/Vihreä valo
do/Vihreä valo
do/Vihreä valo E-P suunnassa
E-P suunnassa
E-P suunnalle
E-P suunnalle
after(30s) vasemmalle
vasemmalle
[ei vas. I-L]
after(30s) after(30s) after(30s)
[ei vas. E-P]
do/Vihreä valo
do/Vihreä valo do/Vihreä valo
do/Vihreä valo
I-L suunnassa
I-L suunnassa
after(30s) I-L suunnalle
I-L suunnalle
vasemmalle
vasemmalle [on vas. I-L]
101. Haarautumissymbolin käyttö
after(30s) [on vas. E-P] do/Vihreä valo
do/Vihreä valo
do/Vihreä valo
do/Vihreä valo E-P suunnassa
E-P suunnassa
E-P suunnalle
E-P suunnalle vasemmalle
vasemmalle
[ei vas. I-L] [ei vas. E-P]
after(30s) after(30s)
do/Vihreä valo
do/Vihreä valo
I-L suunnassa do/Vihreä valo
do/Vihreä valo
I-L suunnassa
vasemmalle I-L suunnalle
I-L suunnalle
vasemmalle [on vas. I-L] after(30s)
102. Koostetilan käyttö yhteisten siirtymien
yhdistelyyn
Aktiivinen
entry/lue kortti
kortti exit/poista kortti
syötetty
Vapaa Tarkistus
Tarkistus
[jatka]
peruuta
huolto
Valinta
Valinta Prosessointi
Prosessointi
Huollossa
Huollossa
[lopeta]
Kuitin
Kuitin
tulostus
tulostus
104. Herätyskellon ohjausyksikön tilakaavio
Soitto
[aika=soittoaika]
do/soita /tee alkuasetukset
ALARM/sammuta valo
ALARM Soittovalmis Perustila
do/näytä aika
do/näytä aika ALARM/sytytä valo
SET SET
painetaan M/ajan minuutti- painetaan
Herätysasetus lisäys
Aika-asetus
do/näytä
M/soittoajan soittoaika H/soittoajan do/näytä aika
minuuttilisäys tuntilisäys H/ajan tunti-
lisäys
SET
vapautetaan SET
vapautetaan