5. Kuvaustekniikat Miksi kuvaustekniikoita? Tämä luku perustuu Sommervillen lisäksi seuraaviin kirjoihin: Martin Fowler, UML Distilled - Second Edition. Addison-Wesley, 2000. Roger S. Pressman, Software Engineering, A Practitioner s Approach. McGraw-Hill, 1997 tai uudempi (tietovuokaaviot). (Kirjat löytyvät kurssikirjahyllystä eikä niitä tarvitse hankkia erikseen.) Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 1 Nimensä mukaisesti vaatimusanalyysiin kuuluu analyysivaihe. Tässä vaiheessa on järkevää rakentaa yksi tai useampi malli järjestelmästä. Malli toimii sekä kuvauksena järjestelmästä korkean tason komponentteineen että vaatimusanalyysin ja suunnittelun välisenä siltana. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 2 Abstrahointi Mallinnuksen tärkein piirre on abstrahointi. Kaikkea tietoa ei näytetä mallissa, vaan mallit esitetään eri tarkkuuksilla, eli abstraktiotasoilla. Korkein abstraktiotaso on käyttäjän vaatimusten taso. Matalin ohjelmistotuotannon abstraktiotaso on kirjoitettu koodi. Abstraktiotasot Vaatimusten ja koodin välissä meillä on abstraktiotasoja, joiden kuvaamiseen voidaan käyttää graafisia ja tekstipohjaisia malleja. Jokainen malli näyttää yhden näkymän järjestelmästä. Mallien näkymät ovat erilaiset, mutta kaikki kuvaavat samaa järjestelmää. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 3 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 4 UML Unified Modeling Language (UML) on nykyisin de facto standardi oliojärjestelmien kuvaustapa. Se määrittelee useita kieliä, joita voidaan käyttää prosessin työvaiheissa kuvaamaan ohjelmiston näkymiä ja abstraktioita. Käsiteltävät UML-kaaviot Tällä kurssilla esittelemme seuraavat UML-kaaviot: käyttötapauskaaviot, luokkakaaviot, tilasiirtymäkaaviot ja aktiviteettikaaviot. Lisäksi esittelemme UML:n ulkopuolelta tietovuokaaviot. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 5 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 6 Verkamo, Taina 1
5.1.Käyttötapauskaavio Käyttötapauskaavion rakenne Käyttötapauskaavio kuvaa yhden tai useamman käyttötapauksen, tapausten toimijat tai roolit (actors) ja tapauksien keskinäiset ja roolien väliset suhteet. Kaaviotekniikka selkeyttää käyttötapausten keskinäisiä suhteita ja käyttötapauksiin liittyviä toimijoita. Silti sanalliset kuvaukset ovat käyttötapausten ydin. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 7 Kuvattava käyttötapaus on jokin toimijan ja järjestelmän välinen toiminta alusta loppuun. Alku: Tila juuri ennen käyttötapausta. Esim. henkilö on käynnistämässä ohjelmaa. Loppu: Tila käyttötapauksen päätyttyä. Esim. henkilö sulkee käyttämänsä ohjelman. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 8 Toimijat Toimija tai rooli liittyy yhteen tai useampaan käyttötapaukseen, ja yhteen käyttötapaukseen liittyy yksi tai useampi toimija. Yksi henkilö voi olla useassa eri roolissa eli useana eri toimijana käyttötapauksessa. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 9 Erikoistapaukset Käyttötapauksista voidaan tehdä erikoistapauksia Yleistys-relaatiolla. Näitä käytetään esimerkiksi silloin, kun halutaan kuvata oikein toimittuun käyttötapaukseen liittyviä virheellisiä toimintoja. Relaatio on Yleistys, koska varsinainen käyttötapaus on yleistys erikoistuneesta käyttötapauksesta. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 10 Sisältyvyydet Käyttötapauskaavion symbolit Toisena käyttötapausten välisenä relaationa UML määrittelee sisältyvyyden (include). Se tarkoittaa, että useat käyttötapaukset voivat sisältää yhteisiä osia, jotka on eroteltu omaksi käyttötapaukseksi. Sisältyvyys on eräänlainen käyttötapauskaavion alikaavio, jota voidaan käyttää ylemmän tason kaavioista. Toimija/rooli (actor) Käyttötapaus (Use Case) Yleistys (generalization) Käyttötapaus (Use Case) <<include>> Sisältyvyys Käyttötapaus (Use Case) Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 11 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 12 Verkamo, Taina 2
Käyttötapauskaavioesimerkki 5.2. Luokkakaaviot Asiakas Automaatille Lainaus Varaus Palautus Tiskille Teos myöhässä Laskutus Kirjastojen välinen teoshakemisto Kirjastonhoitaja Luokkakaavio on UML:n yleisimmin käytetty kuvauskieli. Luokkakaavioita voidaan käyttää järjestelmäanalyysista aina testaukseen asti. Varsinkin korkeilla abstraktiotasoilla luokkakaavioiden lisäksi käytetään täydentäviä (UML:n ulkopuolisia) kuvaustekniikoita. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 13 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 14 Luokkakaavionäkökulmat Luokkakaavionäkökulmat - II Luokkakaavioihin on kolme näkökulmaa: Käsitenäkökulma (conceptual): kuvataan järjestelmää, sen komponentteja, suhteita muihin järjestelmiin ja käyttäjiin. Tämä on vaatimusanalyysin näkökulma. Määrittelynäkökulma (specification): kuvataan ohjelmistoa, mutta keskitytään rajapintoihin toteutuksen sijaan. Tämä on korkean tason suunnittelun näkökulma. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 15 Toteutusnäkökulma (implementation): kuvataan ohjelmistoa, sen toteutusta, navigointia oliosta toiseen, olioiden tarjoamia palveluja ja kutsutapoja. Tämä on matalan tason suunnittelun näkökulma. Malliin sopivan näkökulman tunnistus auttaa sekä piirtämään että ymmärtämään luokkakaavioita. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 16 Luokkakaavion sisältö UML:n luokkakaaviot on kuvattu yksityiskohtaisesti Johdatus sovellussuunnitteluun -kurssilla, joten meille riittää kertaus. Luokkakaavio sisältää: Luokkia (classes). Jokainen luokka esittää kokoelmaa abstrakteja tai todellisia olioita. Samaan luokkaan kuuluvat oliot näyttävät samalta ja toimivat samoilla säännöillä. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 17 Luokkakaavion sisältö - II Yhteyksiä (associations). Luokkien välillä voi olla yhteyksiä. Yhteys kuvaa jonkin suhteen, joka pätee kahden luokan olioiden välillä - tai saman luokan, jos yhteys on rekursiivinen. Yleistyksiä (generalizations). Jokin luokka voi erikoistapaus toisesta. Tällöin erikoistapausluokan oliot ovat myös yleisemmän luokan olioita. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 18 Verkamo, Taina 3
Luokka ja yleistys Luokka sisältää tietoa siihen kuuluvien olioiden ominaisuuksista (attribuuteista) ja tietoa siihen kuuluvien olioiden toiminnoista. Yleistys sisältää viittauksen yliluokkaan: mistä yleistetään viittauksen aliluokkaan: mikä on yleistetyn luokan erikoistapaus. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 19 Yhteys Yhteys sisältää asteet: montako oliota kustakin luokasta voi/täytyy osallistua tähän yhteyteen ja roolit: miten yhteyteen osallistuvat luokat esiintyvät yhteydessä. UML määrittelee kaksi erityistä yhteyttä: aggregaatin (aggregate) ja komposition (Composite). Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 20 Erityisiä yhteyksiä Aggregaattiyhteys (kokouma, yhdistelmä) on eräänlainen sisältää-suhde: auto sisältää osinaan moottorin ja pyörät. Komposiittiyhteys (kooste) on aggregaattia vahvempi yhteys. Se määrittelee rakenteisen suhteen: osat kuuluvat täsmälleen yhteen kokonaisuuteen. Kokonaisuus ja osat elävät ja kuolevat yhdessä. Yhteysesimerkki Esim. Jos meillä on aggregaattiyhteys autorengas, niin tulkintana on, että autossa on renkaat, mutta renkaita voidaan säilyttää erillään autosta (esimerkiksi talvirenkaat). Sen sijaan komposiittiyhteytenä auton renkaat ovat erottamaton osa autoa eikä niitä voida esimerkiksi ottaa erilleen, kun auto viedään romuttamolle. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 21 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 22 Luokkakaavioesimerkki 5.3. Tietovuokaaviot Aviovaimo Kihlasormus Avioitunut 1..* henkilö 1 1 Aviomies 1 1..2 1 Isä 0..1 Äiti 1 Ydinperhe 0..1 0..1 2..* Lapsi Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 23 Äiti 1 * * Avioliiton kautta tullut sukulainen Tietovuokaavioiden avulla pyritään selvittämään, miten tieto kulkee järjestelmässä ja mitä muutoksia siihen kohdistuu. Tietovuokaavioita pidetään joskus vanhanaikaisina, mutta ne sopivat yleensä järjestelmäsuunnitteluun ja vaatimusanalyysin korkeiden abstraktiotasojen mallinnukseen. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 24 Verkamo, Taina 4
Tietovuokaavioiden rakenne Tietovuokaavioiden komponentit ovat seuraavat: Ulkoiset oliot eli sidosryhmät. Ulkoiset oliot tuottavat järjestelmään tietoa ja syötteitä ja toisaalta ottavat tulosteet vastaan. Prosessit. Prosessi on järjestelmän sisäinen komponentti, joka muokkaa tietoa toiseen muotoon. Kaikki tiedon käsittely tapahtuu prosesseissa. Tietovuokaavioiden rakenne - II Tietovuot. Tietovuo kuvaa tiedon kulkua ulkoiselta oliolta järjestlemän sisälle ja järjestelmän sisällä prosessista toiseen. Tietovuossa liikkuu nimensä mukaisesti tieto. Tietovarastot. Tietovarasto on tiedon pysyvä tai väliaikainen talletuspaikka. Tietovaraston toteutustapaa ei ole kiinnitetty. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 25 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 26 Kaaviot Korkeimmalla tasolla oleva tietovuokaavio on yhteyskaavio. Siinä kuvataan sidosryhmät ja niistä järjestelmään tulevat ja lähtevät tietovuot. Itse järjestelmä kuvataan prosessina. Ensimmäinen varsinainen tietovuotaso on yleiskaavio. Siinä kuvataan järjestelmän tärkeimmät prosessit ja niiden väliset tietovuot. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 27 Kaaviohierarkia Kaaviot ovat hierarkkisia. Järjestelmän prosesseja tarkennetaan kunnes päästään halutulle tarkkuustasolle. Haluttu tarkkuustaso riippuu käytöstä. Vaatimusanalyysissä pyritään yleensä sellaiselle tasolle, että tietovuokaaviosta havaitaan jakamattomat tehtävät. Tietovuokaavioita voidaan käyttää esim. yhdessä käyttötapausten kanssa. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 28 Kaavioiden tarkennus Tietovuokaavioiden elementit Tarkennuksessa valitaan tarkennettavasta tietovuokaaviosta jokin prosessi, joka sitten kuvataan useana osaprosessina uudessa tietovuokaaviossa. Tietovuokaavioiden tarkennuksessa informaatiota ei synny eikä häviä. Rooli Tehtävä Tieto Tieto Ulkoinen olio Prosessi Tietovuo Tietovarasto Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 29 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 30 Verkamo, Taina 5
Tietovuokaavioesimerkki 5.4. Tilasiirtymäkaaviot Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 31 Kaikilla järjestelmilläja olioilla on tila: toteutuneiden tapahtumien vaikutus. Järjestelmä siirtyy tilasta toiseen, kun saapuva tapahtuma (event) vaikuttaa sen tilaan. Tilasiirtymäkaavioita käytetään kuvaamaan järjestelmän, osajärjestelmän tai olion kaikkia tiloja ja siirtymisiä tilasta toiseen. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 32 Tilasiirtymäkaavion käyttö Tilasiirtymäkaavio voidaan piirtää koko järjestelmästä, sen osasta tai oliosta. Periaate on aina sama. Vain mittakaava muuttuu. Tilasiirtymäkaavioilla voidaan esimerkiksi kuvata olion tai (osa)järjestelmän koko elinkaari. Tilat Tilasiirtymäkaavioita käytetään kuvaamaan, miten järjestelmä reagoi tapahtumiin ja miten tapahtumat muuttavat järjestelmän tilaa. Esimerkiksi tällä PowerPoint-esityksellä on tila: kulloinkin näytettävä kalvo. Kun painan välilyöntinäppäintä, siirrän samalla esityksen uuteen tilaan, eli seuraavalle kalvolle. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 33 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 34 UML:n tilasiirtymäkaavio UML:ssa tilasiirtymäkaavion tiloja kuvataan pyöreäreunaisella suorakulmiolla ja siirtymiä nuolilla. Lisäksi tilasiirtymäkaaviolla voi olla lähtöpiste ja useita päätepisteitä. Lähtöpiste kuvataan mustalla ympyrällä ja päätepiste avoimella ympyrällä, missä on musta keskipiste. Tilan rakenne Jokaisella tilalla on tilan merkityksen kertova nimi. Lisäksi tilalla voi olla tilariippuvia muuttujia, kuten laskureita, ja tilassa tapahtuvia toimintoja selittäviä tapahtuma/toiminto -pareja. Käyttäjä voi määritellä omia tapahtumia, joiden toteutuessa toimitaan vastaavan toiminnon mukaan. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 35 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 36 Verkamo, Taina 6
Vakiotapahtumat UML määrittelee kolme vakiotapahtumaa: entry, exit ja do. entry -toiminnot suoritetaan, kun järjestelmä tulee tilaan. exit-toiminnot suoritetaan, kun järjestelmä poistuu tilasta. do-toiminnot suoritetaan, kun järjestelmä on tilassa. Siirtymän rakenne Siirtymä kuvataan nuolella lähtötilasta maalitilaan. Lisäksi siihen voi kuulua tieto siirtymän aiheuttaneesta tapahtumasta ja laukaisimesta. Laukaisin (trigger) on ehto, jonka täytyy toteutua, jotta järjestelmä voi siirtyä tapahtuman tullessa tilasta toiseen. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 37 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 38 Siirtymän rakenne - II Tilasiirtymäkaavion komponentit Laukaisinten avulla kuvataan ehdollisia siirtymiä. Siirtymän toteutuminen vaatii sekä saapuneen tapahtuman että toteutuneen laukaisimen. Sekä tapahtuma että laukaisin voivat yksin aktivoida siirtymän. Molempien ei ole pakko olla mukana. Lähtöpiste Päätepiste Nimi Muuttujat tapahtuma/toiminto tapahtuma/toiminto tapahtuma [laukaisin] Tila Siirtymä Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 39 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 40 Tilasiirtymäesimerkki (hissi) 5.5. Aktiviteettikaaviot Menossa ensimmäiseen kerrokseen perillä Ensimmäisessä kerroksessa Menossa alas ylös (kerros) perillä alas (kerros) Menossa ylös perillä [ajastin = maksimi odotusaika]/alas (ensimmäinen kerros) Odottaa ajastin = 0 do/kasvata ajastinta help/anna opastusta ylös (kerros) Aktiviteettikaavio kuvaa tietyn tehtävän sisäisen logiikan. Tehtävä voi olla yksittäinen operaatio tai jokin korkeamman tason tehtävä, kuten käyttötapauksen skenaario. Aktiviteettikaavio on sukua tilasiirtymäkaaviolle, mutta näkökulmana on tällä kertaa tehtävien keskinäinen sisäinen logiikka. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 41 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 42 Verkamo, Taina 7
Aktiviteettikaavion osat Aktiviteettikaavion komponentit Lähtö- ja päätepiste. Suoritettavia toimintoja (aktiviteetteja). Siirtymiä aktiviteetista toiseen. Siirtymään voi liittyä siirtymän aktivoiva ehto. Tehtävien synkronointejaa, joilla mallinnetaan tehtävien rinnakkaisuutta. Haaraumia, joilla mallinnetaan vaihtoehtoja Ratoja (swimlanes), joilla mallinnetaan toimijoita. Lähtöpiste Päätepiste Synkronointi Toimija Rata Toiminto [ehto] Aktiviteetti Siirtymä Haarauma Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 43 Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 44 Aktiviteettikaavioesimerkki Asiakas Anna kirja Hyräile Kirjastonhoitaja [Myöhässä] Kirjaa myöhästyminen Tarkista palautus Kirjaa palautus [else] Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 45 5.6. Muut UML:n kaaviot Edellä esiteltyjen kaaviotekniikkojen lisäksi UML:n nykyinen versio määrittelee seuraavat kaaviot: Sekvenssikaavio (sequence diagram): Tällä kaaviolla kuvataan olioiden välistä dynaamista yhteistyötä. Kaaviosta selviää, missä järjestyksessä oliot kutsuvat toistensa palveluja tietyllä hetkellä ja mitä viestejä/palvelupyyntöjä oliot lähettävät toisilleen. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 46 Muut UML:n kaaviot - II Yhteistyökaavio (collaboration diagram): Myös tällä kaaviolla kuvataan olioiden välistä yhteistyötä, mutta järjestys ei ole aikaan sidottu. Osallistujat voidaan asetella esimerkiksi loogisesti yhteenkuuluviksi kokonaisuuksiksi. Oliokaavio (object diagram): Oliokaavio kuvaa olioita ja niiden välisiä suhteita. Kaavio esittää luokkakaavion mahdollista ajoaikaista ilmentymää. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 47 Muut UML:n kaaviot - III Komponenttikaavio (component diagram): Tällä kaaviolla kuvataan fyysisiä ohjelmistokomponentteja. Kaavio kuvaa komponentit ja niiden väliset suhteet. Sijoittelukaavio (deployment diagram): Kaavio näyttää laitteiston ja ohjelmiston fyysisen arkkitehtuurin. Tämä on UML:n työkalu järjestelmäsuunnitteluun, mitä voidaan käyttää luokkakaavioiden ja tietovuokaavioiden sijaan tai rinnalla. Syksy 2004 Ohjelmistotuotanto / Verkamo, Taina 48 Verkamo, Taina 8