UML perusteet
Upcoming SlideShare
Loading in...5
×
 

UML perusteet

on

  • 1,914 views

Unified Modeling Language perusteet

Unified Modeling Language perusteet

Statistics

Views

Total Views
1,914
Views on SlideShare
1,912
Embed Views
2

Actions

Likes
1
Downloads
4
Comments
0

2 Embeds 2

http://www.linkedin.com 1
http://www.docseek.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

UML perusteet UML perusteet Presentation Transcript

  • UML perusteet Pasi Kellokoski
  • Sisällys UML yleiskatsaus  Tausta  Kaaviotyypit  Peruskäsitteet Staattinen mallintaminen  Luokkakaavio Dynaaminen mallintaminen  Sekvenssikaavio (skenaariokaavio)  Tilakaavio
  • 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
  • Mallinnusmenetelmistä Suosittuja menetelmiä:  Jacobson: OOSE (Object-Oriented Software Engineering)  Rumbaugh et al.: OMT (Object Modeling Technique)  Nokia/Jaaksi: OMT++
  • UML Booch, Rumbaugh, Jacobson: Unified Modeling Language (UML)  Nykyisin OMG:n (Object Management Group) kehittämä standardoitu mallinnuskieli
  • UML (jatkoa) Ohjelmiston mallien kuvaustapa, graafinen suunnittelukieli Ei siis varsinainen menetelmä Erittäin laaja
  • 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
  • UML:n kaaviotyypit (jatkoa) Korkean tason toiminnallisuus  Käyttötapauskaaviot Järjestelmän staattinen ja dynaaminen rakenne  Oliokaaviot  Luokkakaaviot  Sijoittelukaaviot  Komponenttikaaviot
  • 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ää
  • UML:n kaavioidenperuselementtejä 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
  • UML:n kaavioidenperuselementtejä ja -suhteita Elementit Suhteet Nimi Luokka Riippuvuus 0..1 Assosiaatio * rooli Tila Nimi Kooste Pakkaus Nimi Yleistys (Periytyminen) Kommentti Teksti Toteutus jne. jne.
  • 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
  • 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
  • Käyttötapauskaavio - Esimerkki Ajoneuvojen vuokrausjärjestelmä Varaus Käyttöönotto Palautus Palautus Asiakas <<include>> Virkailija Huolto
  • 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
  • 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()
  • 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ä
  • Oliokaavio - Esimerkki : KohdeHallinto luokan ilmentymä: alleviivattu auto1: HenkilöAuto auto2 : HenkilöAuto rekisterinumero = XYZ-999 rekisterinumero = ABC-123
  • 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ä
  • Sekvenssikaavio - Esimerkkialijärjestelmä UI : KohdeHallinto auto: HenkilöAuto parkki: ParkkiAlue palauta(auto, parkki) palauta() varastoi(auto)
  • 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
  • Yhteistyökaavio - Esimerkkivastaa edellistäsekvenssikaaviota 1.1: palauta() auto: Henkilöauto : KohdeHallinto 1: palauta(auto,parkki) parkki: ParkkiAlue 1.2: varastoi(auto) UI
  • Vuorovaikutuskaaviot Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Siksi niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi.
  • 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
  • Tilakaavio - Esimerkkialkutila palauta/ Käytettävissä lopeta ajan lasku Käytössä otaKäyttöön/ valmis huolla aloita ajan lasku Huollossa exit/huoltoilmoitus Varattu varaa
  • 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ä
  • 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
  • Aktiviteettikaavio - Esimerkki Asiakas Virkailija Pyydä Tee auto varaus :Lasku [avoin] Tee lasku Maksa Valmistele auto :Lasku [maks] Ota auto Rekisteröi vuokraus
  • Aktiviteettikaavio - Esimerkki alkutila Asiakas Virkailija Pyydä Teesäikeiden auto varaushaarautu-minen :Lasku (fork) [avoin] Tee laskusäikeidenyhdisty-minen Maksa Valmistele (join) auto :Lasku [maks] Ota auto Rekisteröi vuokrauslopputila
  • 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
  • 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, ...)
  • Komponenttikaavio - Esimerkki toteuttaa käyttää GUI Auton- Vuokraus VuokrausToiminta Tietokanta- liittymä KohdeKanta
  • 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
  • Sijoittelukaavio - EsimerkkiHuomaa: prosessointiyksikön ilmentymä =tietty laite, ei laitetyyppi asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin : XTietokanta- : GUI liittymä <<TCP/IP>> : Auton- Vuokraus : XTietokanta komponentin ilmentymä olio
  • Kaavioille yhteisiä piirteitä Pakkaukset Laajennosmekanismit, joilla voidaan määritellä lisäominaisuuksia UML:n perusosille  Stereotyypit (stereotype)  Lisätietomääreet (tagged value)  Rajoitteet (constraint)
  • 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
  • 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()
  • Pakkaukset suljetussa muodossa <<import>> Tuki Tuki Tietokanta Tietokanta
  • 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
  • Stereotyypit - Esimerkki
  • 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
  • Lisätietomääreitäluokkaan liitettyinä MyClass {version = 1.2 author = KK}
  • 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
  • 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
  • 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
  • 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()
  • 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}
  • 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
  • Luokkalaatikko Henkilö Henkilö nimi: String nimi: String ikä: Integer = 0 ikä: Integer = 0 ristiminen(n: String) ristiminen(n: String) ikä++ tervehdi() tervehdi() vanhene() vanhene()
  • 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ä
  • Assosiaation perusrakenne Assosiaatiolla on yleensä nimi Nimen yhteyteen voidaan merkitä nuolisymboli, joka kuvaa nimen lukusuunnan 0..1 owns * Person Car
  • 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
  • Roolinimet assosiaatiossa 0..1 * Yritys Henkilö työnantaja työntekijä :IWorker rajapinta
  • 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
  • Moninkertainen assosiaatio Jos assosiaation kertautuminen on suurempi kuin 1, kutsumme assosiaatiota moninkertaiseksi Kurssi * 1..* Opettaja
  • 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.
  • 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
  • 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
  • Yksilöinti Kirjasto Kirjasto Henkilö Henkilö lainaa lainaaja nro lainaaja nro kokoelma kokoelma * 1 nimi nimi sijainti sijainti osoite osoite
  • 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
  • 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
  • Kooste (ja navigoitavuus) 3..* Monikulmio Monikulmio Piste Piste {ordered} pinta-ala pinta-ala x-koord x-koord y-koord y-koord
  • 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
  • Aito kooste 1..* Ministeri Valtioneuvosto
  • 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
  • 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
  • Periytymis- ja toteutussuhde Car Vehicle Car <<interface>> Vehicle
  • 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
  • Aktiivinen luokka <<controller>> DeviceController currentConfiguration Signals deviceInterrupt userInterrupt seriousFlaw paksu reuna
  • 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
  • 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ä
  • Sekvenssikaavio: Palautusalijärjestelmä UI : KohdeHallinto auto: HenkilöAuto parkki: ParkkiAlue palauta(auto, parkki) palauta() varastoi(auto)
  • 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
  • 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
  • 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
  • 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
  • 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ä
  • Olion luominen ja hävitys sekvenssikaaviossa x: C1 : C2 op1(x) op2() true
  • 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.
  • 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ä
  • 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
  • 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
  • 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
  • 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)
  • 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
  • Sekvenssikaavion jaluokkakaavion 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
  • Dynaaminen mallintaminen: Tilakaavio Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message)
  • 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
  • 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
  • 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ä  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
  • 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
  • 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
  • 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
  • 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:  Tapahtuvat tiettyinä aikana  Hetkellisiä  Jaksottavat systeemin toiminnan tiloihin
  • 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]
  • 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)
  • Koostetilan käyttö yhteisten siirtymienyhdistelyyn 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
  • Rinnakkaistettu koostetila Huolto Testaus Komponenttien Itsetesti testaus Käyttövalmis huolla Komentotila näppäin(n) Komennon Komennon Odotus Odotus suoritus suoritus [ei lopetus] [lopetus]
  • 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