SlideShare ist ein Scribd-Unternehmen logo
1 von 104
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

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