104
UML perusteet UML perusteet Pasi Kellokoski Pasi Kellokoski

UML perusteet

Embed Size (px)

DESCRIPTION

Unified Modeling Language perusteet

Citation preview

Page 1: UML perusteet

UML perusteetUML perusteet

Pasi KellokoskiPasi Kellokoski

Page 2: UML perusteet

Sisällys

UML yleiskatsaus

Tausta

Kaaviotyypit

Peruskäsitteet

Staattinen mallintaminen

Luokkakaavio

Dynaaminen mallintaminen

Sekvenssikaavio (skenaariokaavio)

Tilakaavio

Page 3: UML perusteet

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

Page 4: UML perusteet

Mallinnusmenetelmistä

Suosittuja menetelmiä:

Jacobson: OOSE (Object-Oriented Software Engineering)

Rumbaugh et al.: OMT (Object Modeling Technique)

Nokia/Jaaksi: OMT++

Page 5: UML perusteet

UML

Booch, Rumbaugh, Jacobson: Unified Modeling Language (UML)

Nykyisin OMG:n (Object Management Group)kehittämä standardoitu mallinnuskieli

Page 6: UML perusteet

UML (jatkoa)

Ohjelmiston mallien kuvaustapa, graafinen suunnittelukieli

Ei siis varsinainen menetelmä

Erittäin laaja

Page 7: UML perusteet

TilakaaviotAktiviteetti-

kaaviotSijoittelu-kaaviot

Komponentti-kaaviot

Luokka-kaaviot

Sekvenssi-kaaviot

Oliokaaviot

Rakenne Käyttäytyminen

Korkean tason toiminnalisuus

Käyttö-tapauskaaviot

Yhteistyö-kaaviot

Esimerkkejä

Ohjelmisto-kehitys

UML:n kaaviotyypit

Page 8: UML perusteet

UML:n kaaviotyypit (jatkoa)

Korkean tason toiminnallisuus

Käyttötapauskaaviot

Järjestelmän staattinen ja dynaaminen rakenne

Oliokaaviot

Luokkakaaviot

Sijoittelukaaviot

Komponenttikaaviot

Page 9: UML perusteet

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ää

Page 10: UML perusteet

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

Page 11: UML perusteet

Elementit Suhteet

LuokkaNimi

Tila

Pakkaus

Kommentti Teksti

jne.

Riippuvuus

Assosiaatio

Kooste

Yleistys(Periytyminen)

Toteutus

0..1*rooli

jne.

Nimi

Nimi

UML:n kaavioiden peruselementtejä ja -suhteita

Page 12: UML perusteet

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

Page 13: UML perusteet

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

Page 14: UML perusteet

Varaus

PalautusPalautus

Huolto

Asiakas Virkailija<<include>>

Ajoneuvojenvuokrausjärjestelmä

Käyttöönotto

Käyttötapauskaavio - Esimerkki

Page 15: UML perusteet

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

Page 16: UML perusteet

Kohde

ParkkiAlue

HenkilöAuto

Varasto

rekisterinumero

huolla(int km)palauta()

Talleta huolto-informaatio(palauta kutsuu)

KohdeHallintohallinnoi

*palautaKohde(Kohde, Varasto)varaaKohde(Kohde)otaKäyttöönKohde(Kohde)

palauta()varaa()otaKäyttöön()

Ohjain

1

11

Luokkakaavio - Esimerkki

Page 17: UML perusteet

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ä

Page 18: UML perusteet

auto1: HenkilöAuto

rekisterinumero = XYZ-999

: KohdeHallinto

auto2 : HenkilöAuto

rekisterinumero = ABC-123

Oliokaavio - Esimerkki

luokan ilmentymä:alleviivattu

Page 19: UML perusteet

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ä

Page 20: UML perusteet

: KohdeHallinto auto: HenkilöAuto

palauta()

UI

palauta(auto, parkki)

parkki: ParkkiAlue

varastoi(auto)

Sekvenssikaavio - Esimerkkialijärjestelmä

Page 21: UML perusteet

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

Page 22: UML perusteet

auto: Henkilöauto

parkki: ParkkiAlue

: KohdeHallinto

1: palauta(auto,parkki)

1.2: varastoi(auto)

1.1: palauta()

UI

Yhteistyökaavio - Esimerkki

vastaa edellistä sekvenssikaaviota

Page 23: UML perusteet

Vuorovaikutuskaaviot

Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Siksi niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi.

Page 24: UML perusteet

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

Page 25: UML perusteet

Käytettävissä

HuollossaVarattu

Käytössäpalauta/lopeta ajan lasku

varaa

otaKäyttöön/aloita ajan laskuhuolla

exit/huoltoilmoitus

valmis

Tilakaavio - Esimerkki

alkutila

Page 26: UML perusteet

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ä

Page 27: UML perusteet

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

Page 28: UML perusteet

Aktiviteettikaavio - Esimerkki

Pyydäauto

Teevaraus

Tee lasku

Maksa Valmisteleauto

Rekisteröivuokraus

Asiakas Virkailija

Ota auto

:Lasku[avoin]

:Lasku[maks]

Page 29: UML perusteet

Pyydäauto

Teevaraus

Tee lasku

Maksa Valmisteleauto

Rekisteröivuokraus

Asiakas Virkailija

Ota auto

:Lasku[avoin]

:Lasku[maks]

Aktiviteettikaavio - Esimerkki

säikeidenhaarautu-minen (fork)

säikeidenyhdisty-minen (join)

alkutila

lopputila

Page 30: UML perusteet

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

Page 31: UML perusteet

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, ...)

Page 32: UML perusteet

GUI

Auton-Vuokraus

Tietokanta-liittymä

KohdeKanta

VuokrausToiminta

Komponenttikaavio - Esimerkki

toteuttaa

käyttää

Page 33: UML perusteet

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

Page 34: UML perusteet

asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin

: XTietokanta-liittymä

: XTietokanta

: GUI

: Auton-Vuokraus

<<TCP/IP>>

Sijoittelukaavio - Esimerkki

Huomaa: prosessointiyksikön ilmentymä =tietty laite, ei laitetyyppi

komponentin ilmentymä olio

Page 35: UML perusteet

Kaavioille yhteisiä piirteitä

Pakkaukset

Laajennosmekanismit, joilla voidaan määritellä lisäominaisuuksia UML:n perusosille

Stereotyypit (stereotype)

Lisätietomääreet (tagged value)

Rajoitteet (constraint)

Page 36: UML perusteet

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

Page 37: UML perusteet

Kohteet Tuki

Kohde

ParkkiAlue

HenkilöAuto

Varasto

rekisterinumero

huolla(int km)palauta()

KohdeHallintohallinnoi

*palautaKohde(Kohde, Varasto)varaaKohde(Kohde)otaKäyttöönKohde(Kohde)

palauta()varaa()otaKäyttöön()

Ohjain

1

1

1

Pakkaukset - Esimerkki

Page 38: UML perusteet

TukiTuki TietokantaTietokanta<<import>>

Pakkaukset suljetussa muodossa

Page 39: UML perusteet

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

Page 40: UML perusteet

Stereotyypit - Esimerkki

Page 41: UML perusteet

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

Page 42: UML perusteet

MyClass{version = 1.2author = KK}

Lisätietomääreitä luokkaan liitettyinä

Page 43: UML perusteet

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

Page 44: UML perusteet

Rajoitteita - Esimerkki

Henkilö

vaimo

aviomies0..1

0..1sukupuoli

{(self.aviomies->size=1 impliesself.aviomies.sukupuoli = mies) and(self.vaimo->size=1 impliesself.vaimo.sukupuoli = nainen) andnot(self.vaimo->size=1 and self.aviomies->size=1)}

{xor}

Ministeriö

Yritys

johtaa

omistaa

0..1

*

1

1

OCL-rajoite

Page 45: UML perusteet

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

Page 46: UML perusteet

Kohde

ParkkiAlue

HenkilöAuto

Varasto

rekisterinumero

huolla(int km)palauta()

Talleta huolto-informaatio(palauta kutsuu)

KohdeHallintohallinnoi

*palautaKohde(Kohde, Varasto)varaaKohde(Kohde)otaKäyttöönKohde(Kohde)

palauta()varaa()otaKäyttöön()

Ohjain

1

11

Luokkakaavio - Esimerkki

Page 47: UML perusteet

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}

Page 48: UML perusteet

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

Page 49: UML perusteet

HenkilöHenkilö

nimi: Stringikä: Integer = 0

nimi: Stringikä: Integer = 0

ristiminen(n: String)tervehdi()vanhene()

ristiminen(n: String)tervehdi()vanhene()

ikä++

Luokkalaatikko

Page 50: UML perusteet

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ä

Page 51: UML perusteet

Assosiaation perusrakenne

Assosiaatiolla on yleensä nimi

Nimen yhteyteen voidaan merkitä nuolisymboli, joka kuvaa nimen lukusuunnan

Personowns

Car0..1 *

Page 52: UML perusteet

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

Page 53: UML perusteet

Yritystyönantaja

Henkilö0..1 *

työntekijä:IWorker

Roolinimet assosiaatiossa

rajapinta

Page 54: UML perusteet

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

Page 55: UML perusteet

Moninkertainen assosiaatio

Jos assosiaation kertautuminen on suurempi kuin 1, kutsumme assosiaatiota moninkertaiseksi

Kurssi Opettaja1..**

Page 56: UML perusteet

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.

Page 57: UML perusteet

HenkilöHenkilö

nimisosturvatunnusosoite

nimisosturvatunnusosoite

työskentelee *

työntekijäYritysYritys

nimiosoite

nimiosoite

*

työnantaja

työsopimusaikapalkka

työsopimusaikapalkka

päällikkö

0..1

johtaa

Assosiaatioluokka

Page 58: UML perusteet

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

Page 59: UML perusteet

KirjastoKirjasto

kokoelmasijainti

kokoelmasijainti

HenkilöHenkilö

nimiosoite

nimiosoite

lainaaja nrolainaaja nrolainaa

* 1

Yksilöinti

Page 60: UML perusteet

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

Page 61: UML perusteet

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

Page 62: UML perusteet

MonikulmioMonikulmio

pinta-alapinta-ala

PistePiste

x-koordy-koord

x-koordy-koord

3..*

{ordered}

Kooste (ja navigoitavuus)

Page 63: UML perusteet

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

Page 64: UML perusteet

ValtioneuvostoMinisteri1..*

Aito kooste

Page 65: UML perusteet

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

Page 66: UML perusteet

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

Page 67: UML perusteet

Car Vehicle

Car <<interface>>Vehicle

Periytymis- ja toteutussuhde

Page 68: UML perusteet

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

Page 69: UML perusteet

DeviceController

SignalsdeviceInterruptuserInterruptseriousFlaw

<<controller>>

currentConfiguration

Aktiivinen luokka

paksu reuna

Page 70: UML perusteet

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

Page 71: UML perusteet

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ä

Page 72: UML perusteet

: KohdeHallinto auto: HenkilöAuto

palauta()

UI

palauta(auto, parkki)

parkki: ParkkiAlue

varastoi(auto)

Sekvenssikaavio: Palautusalijärjestelmä

Page 73: UML perusteet

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

Page 74: UML perusteet

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

Page 75: UML perusteet

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

Page 76: UML perusteet

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

Page 77: UML perusteet

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ä

Page 78: UML perusteet

: C2

x: C1

op1(x)

op2()

true

Olion luominen ja hävitys sekvenssikaaviossa

Page 79: UML perusteet

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.

Page 80: UML perusteet

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ä

Page 81: UML perusteet

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

Page 82: UML perusteet

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

Page 83: UML perusteet

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

Page 84: UML perusteet

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)

Page 85: UML perusteet

SETSET

ALARMALARM

MM

HH

: SoittoYks

sytytä

: Valo

Paina ALARM

Näytä aika:User

: Ohjaus

aloita soitto

Paina ALARM

lopeta soitto

Paina ALARMsammuta

09 30

t{t = soittoaika}

Herätyskellon sekvenssikaavio

Page 86: UML perusteet

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

Page 87: UML perusteet

Dynaaminen mallintaminen: Tilakaavio

Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message)

Page 88: UML perusteet

Tilakaavio

Käytettävissä

HuollossaVarattu

Käytössäpalauta/lopeta ajan lasku

varaa

otaKäyttöön/aloita ajan laskuhuolla

exit/huoltoilmoitus

valmis

alkutila

Page 89: UML perusteet

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 Tila2

Tila3

laukaisin

Page 90: UML perusteet

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

Page 91: UML perusteet

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 avustedo / nayta kehoteentry / kaiutus poisexit / kaiutus päälle

Page 92: UML perusteet

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 poisexit/kaiutus päälledo/näytä kehotehelp/näytä avustefunktionäppäin/defer

Page 93: UML perusteet

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 poisexit/kaiutus päälledo/näytä kehotehelp/näytä avustefunktionäppäin/defer

Page 94: UML perusteet

Tilasymbolin osat

Sisäiset siirtymät

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 poisexit/kaiutus päälledo/näytä kehotehelp/näytä avustefunktionäppäin/defer

Page 95: UML perusteet

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 toimintoontapahtuma/toimet

Viivästettyjä toimiatapahtuma/defer

Page 96: UML perusteet

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

Page 97: UML perusteet

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

Page 98: UML perusteet

Siirtymän laukaisimen merkinnöistä

Laukaisimessa voi esiintyä seuraavia määreitä:

sanoma(parametrit)

[ehto]

^sanoman_oheislähetys

/siirtymätoimi

Page 99: UML perusteet

Tapahtumat

Tapahtumat:

Tapahtuvat tiettyinä aikana

Hetkellisiä

Jaksottavat systeemin toiminnan tiloihin

Page 100: UML perusteet

do/Vihreä valoE-P suunnalle

do/Vihreä valoE-P suunnalle

do/Vihreä valoI-L suunnassavasemmalle

do/Vihreä valoI-L suunnassavasemmalle

do/Vihreä valoI-L suunnalle

do/Vihreä valoI-L suunnalle

do/Vihreä valoE-P suunnassa

vasemmalle

do/Vihreä valoE-P suunnassa

vasemmalle

after(30s)after(30s)[ei vas. E-P]

after(30s)[ei vas. I-L]

after(30s)[on vas. E-P]

after(30s)[on vas. I-L]

after(30s)

Liikennevalojen ohjaimen tilakaavio

Page 101: UML perusteet

do/Vihreä valoE-P suunnalle

do/Vihreä valoE-P suunnalle

do/Vihreä valoI-L suunnassavasemmalle

do/Vihreä valoI-L suunnassavasemmalle

do/Vihreä valoI-L suunnalle

do/Vihreä valoI-L suunnalle

do/Vihreä valoE-P suunnassa

vasemmalle

do/Vihreä valoE-P suunnassa

vasemmalle

after(30s)[ei vas. E-P][ei vas. I-L]

[on vas. E-P]

[on vas. I-L]

after(30s)

after(30s)

after(30s)

Haarautumissymbolin käyttö

Page 102: UML perusteet

HuollossaHuollossa

Vapaa

ProsessointiProsessointiValintaValinta

TarkistusTarkistus

KuitintulostusKuitin

tulostus

[jatka]

[lopeta]

Aktiivinenentry/lue korttiexit/poista kortti

huolto

korttisyötetty

peruuta

Koostetilan käyttö yhteisten siirtymien yhdistelyyn

Page 103: UML perusteet

Huolto

OdotusOdotus

ItsetestiKäyttövalmis

huolla

Testaus

Komponenttientestaus

Komennonsuoritus

Komennonsuoritus

näppäin(n)

[lopetus][ei lopetus]

Komentotila

Rinnakkaistettu koostetila

Page 104: UML perusteet

SETpainetaan

do/näytä aika

Perustila

M/ajan minuutti-lisäys

H/ajan tunti-lisäys

SET vapautetaan

/tee alkuasetukset[aika=soittoaika]

Soittovalmis

Soitto

do/soita

ALARM/sytytä valo

ALARM/sammuta valo

Aika-asetus

do/näytä aika

Herätysasetus

do/näytäsoittoaika

ALARM

SETpainetaan

do/näytä aika

M/soittoajan minuuttilisäys

H/soittoajantuntilisäys

SET vapautetaan

Herätyskellon ohjausyksikön tilakaavio