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 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
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.
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 - Esimerkki
alijä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 - Esimerkki

vastaa 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 - 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
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ä                     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
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 - Esimerkki
Huomaa: 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: Palautus
alijä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 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
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 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
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

UML perusteet

  • 1.
    UML perusteet Pasi Kellokoski
  • 2.
    Sisällys  UML yleiskatsaus  Tausta  Kaaviotyypit  Peruskäsitteet  Staattinen mallintaminen  Luokkakaavio  Dynaaminen mallintaminen  Sekvenssikaavio (skenaariokaavio)  Tilakaavio
  • 3.
    Mallinnusmenetelmistä  Tähän astikehitettyjen 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
  • 4.
    Mallinnusmenetelmistä  Suosittuja menetelmiä:  Jacobson: OOSE (Object-Oriented Software Engineering)  Rumbaugh et al.: OMT (Object Modeling Technique)  Nokia/Jaaksi: OMT++
  • 5.
    UML  Booch, Rumbaugh,Jacobson: Unified Modeling Language (UML)  Nykyisin OMG:n (Object Management Group) kehittämä standardoitu mallinnuskieli
  • 6.
    UML (jatkoa)  Ohjelmistonmallien 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 (usecase) 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 (usecase 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
  • 14.
    Käyttötapauskaavio - Esimerkki Ajoneuvojen vuokrausjärjestelmä Varaus Käyttöönotto Palautus Palautus Asiakas <<include>> Virkailija Huolto
  • 15.
    Luokkakaavio  Luokkakaavio (classdiagram, 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 (objectdiagram) 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 (sequencediagram) 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ä
  • 20.
    Sekvenssikaavio - Esimerkki alijärjestelmä UI : KohdeHallinto auto: HenkilöAuto parkki: ParkkiAlue palauta(auto, parkki) palauta() varastoi(auto)
  • 21.
    Yhteistyökaavio  Yhteistyökaavio (collaborationdiagram) 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 vastaaedellistä sekvenssikaaviota 1.1: palauta() auto: Henkilöauto : KohdeHallinto 1: palauta(auto,parkki) parkki: ParkkiAlue 1.2: varastoi(auto) UI
  • 23.
    Vuorovaikutuskaaviot  Sekvenssikaaviot jayhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Siksi niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi.
  • 24.
    Tilakaavio  Tilakaavio (statechartdiagram) 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 (activitydiagram) 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)  Kaavioonvoidaan 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 (componentdiagram) 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)  YleisestiUML: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 (deploymentdiagram) 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()
  • 38.
    Pakkaukset suljetussa muodossa <<import>> Tuki Tuki Tietokanta Tietokanta
  • 39.
    Stereotyypit  Stereotyypillä varustetullaperusosalla 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
  • 40.
  • 41.
    Lisätietomääreet  Lisätietomääre onUML: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
  • 42.
    Lisätietomääreitä luokkaan liitettyinä MyClass {version = 1.2 author = KK}
  • 43.
    Rajoitteet  Rajoitteet antavatmahdollisuuden 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  Luokkasymbolinosat:  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
  • 49.
    Luokkalaatikko Henkilö Henkilö nimi: String nimi: String ikä: Integer = 0 ikä: Integer = 0 ristiminen(n: String) ristiminen(n: String) ikä++ tervehdi() tervehdi() vanhene() vanhene()
  • 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ä
  • 51.
    Assosiaation perusrakenne  Assosiaatiollaon yleensä nimi  Nimen yhteyteen voidaan merkitä nuolisymboli, joka kuvaa nimen lukusuunnan 0..1 owns * Person Car
  • 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
  • 53.
    Roolinimet assosiaatiossa 0..1 * Yritys Henkilö työnantaja työntekijä :IWorker rajapinta
  • 54.
    Assosiaation kertautuminen  Rooliilmaisee 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  Josassosiaation kertautuminen on suurempi kuin 1, kutsumme assosiaatiota moninkertaiseksi Kurssi * 1..* Opettaja
  • 56.
    Assosiaatioluokka  Joskus assosiaatioonliittyy 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 assosiaatioonliittyy 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 voidaanliittää 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  Aitokooste (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
  • 64.
    Aito kooste 1..* Ministeri Valtioneuvosto
  • 65.
    Periytyminen  Periytyminen kuvaaerikoistus/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  Rajapintaesitetää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
  • 67.
    Periytymis- ja toteutussuhde Car Vehicle Car <<interface>> Vehicle
  • 68.
    Aktivinen luokka  Josluokan 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
  • 69.
    Aktiivinen luokka <<controller>> DeviceController currentConfiguration Signals deviceInterrupt userInterrupt seriousFlaw paksu reuna
  • 70.
    Dynaaminen mallintaminen  Dynaaminenmalli 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 (sequencediagram) 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ä
  • 72.
    Sekvenssikaavio: Palautus alijärjestelmä UI : KohdeHallinto auto: HenkilöAuto parkki: ParkkiAlue palauta(auto, parkki) palauta() varastoi(auto)
  • 73.
    Skenaariot  Skenaario kuvaayhden 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 (sequencediagram, 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  Useinsekvenssikaavio 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  Paluunuoleenvoidaan 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 jahä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ä
  • 78.
    Olion luominen jahävitys sekvenssikaaviossa x: C1 : C2 op1(x) op2() true
  • 79.
    Käyttäjä sekvenssikaaviossa  Järjestelmänulkoinen 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ääasiallinentarkoitus 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 kuvataansanomana, 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
  • 87.
    Dynaaminen mallintaminen: Tilakaavio Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message)
  • 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 onsuunnattu 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  Tilakaavioon 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  Tilaanvoi 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ä  Tilaanliittyvä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ö yhteistensiirtymien 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
  • 103.
    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]
  • 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