2 Mallinnus UML-yleiskatsaus Tule maalle - näe mullin malli. Tämän osan sisältö Mallinnus ohjelmistoprojekteissa Mallinnuskielet UML-yleiskatsaus Oliopohjainen ajattelu UML-kaaviot rakennetta kuvaavat käyttäytymistä kuvaavat vuorovaikutusta kuvaavat Kaavioiden käytöstä erilaisia näkymiä järjestelmään millä tuottaa UML-kaaviot Mallintaminen / Häkkinen A. / K2013 2-1 Mallintaminen / Häkkinen A. / K2013 2-2 Mallinnus ohjelmistoprojekteissa Ohjelmistot monimutkaisia ja sisältävät paljon yksityiskohtia häiritsee kokonaisuuden hahmottamista Kehittäjillä ja ohjelmiston sidosryhmillä erilaisia tarpeita projektin eri vaiheissa ennen suunnittelua on ymmärrettävä vaatimukset vaatimukset suhteutettava ympäristöön ja käytössä oleviin resursseihin Järjestelmää tarve mallintaa eri tarkkuustasoilla ja eri näkökulmista projektin eri vaiheissa Mallit ja kaaviot sallivat eri abstraktiotasot, laajuudet ja näkökulmat mahdollistavat todellisuuden yksinkertaistamisen kätkevät tarpeettomat yksityiskohdat toimivat vaihetuotteina suunnittelumenetelmissä auttavat ymmärtämään ja jäsentämään sovellusaluetta helpottavat kommunikointia koskien järjestelmää ja sovellusaluetta Yleisiä, kaikkiin tilanteisiin ja ympäristöön sopivia malleja ei ole käytä tarpeen mukaan, tilanteeseen sopivasti Mallinnuskielet kuvaustekniikkaa = käsitteistö + esitystapa ymmärtämisen, määrittelyn ja suunnittelun apuvälineitä Matemaattinen kieli esim. ohjelmiston formaali, matemaattinen määrittely täsmällistä ja vaativaa, lähinnä akateemista aherrusta Luonnollinen kieli esim. suloinen suomenkielinen teksti ongelma: voi jättää tulkinnanvaraisuutta, pitää olla ristiriidaton sopii mm. sanaston (glossary) laadintaan järjestelmän keskeisten käsitteiden luettelointia ja määrittelemistä apua muiden mallien laatimisessa (esim. olioluokkien löytäminen) myös ei-teknisen henkilön helppo ymmärtää Pseudokieli ohjelmointikielen ohjausrakenteita ja luonnollista kieltä sopii esim. algoritmien toiminnan yleiskuvaukseen Mallintaminen / Häkkinen A. / K2013 2-3 Mallintaminen / Häkkinen A. / K2013 2-4 Mallinnuskielet Visuaalinen / graafinen kieli esitetään graafisin kuvioin ja tekstein ensisijaisesti ihmisille esim. Tietovuokaavio (Data Flow Diagram, DFD) hierarkkinen, tarkentuva toiminnallinen ositus osajärjestelmiin tietovirta: input - prosessi - output historiallinen kuvaustapa ei käsitellä tällä kurssilla UML-YLEISKATSAUS esim. UML-kaaviot oliopohjaisuus tämän kurssin pihvit! Mallintaminen / Häkkinen A. / K2013 2-5 Mallintaminen / Häkkinen A. / K2013 2-6 Unified Modelling Language (UML) Ohjelmistojen määrittelyyn, suunnitteluun ja dokumentointiin tarkoitettu graafinen kieli visualisointi kuvaustapoja ja niiden käyttösääntöjä Ei liity suoranaisesti mihinkään tiettyyn suunnittelumenetelmään Standardoi ohjelmistomallien esitystavat yhtenäiset / yhteensopivat kuvausmenetelmät kaikkiin vaiheisiin laajassa käytössä: kirjallisuudessa, teollisuudessa, työkaluissa Tarkoitettu erityisesti oliopohjaisten ohjelmistojen mallintamiseen Pitkän kehitystyön tulos, kehittyy edelleen pohjana OMT-, Booch-, OOSE-suunnittelumenetelmät kehittäjänä alkujaan Rational Software Corp. ensimmäinen standardi vuonna 1997 uusin versio 2.4 (elokuu 2011) www.uml.org Laaja 13 kaaviotyyppiä UML-standardeja koordinoi Object Management Group (OMG) Oliopohjainen ajattelu Ohjelmisto koostuu itsenäisistä olioista, jotka tuottavat yhdessä ohjelmiston kokonaistoiminnallisuuden oliot kommunikoivat käyttämällä toistensa julkisia palveluja oliot toimivat mallinnuksen perustana eri abstraktiotasoilla Oliolla sisäinen tila (private) = muuttujat olion ominaisuudet, attribuutit, joita muut eivät näe (kapselointi) Oliolla julkisia palveluja (public) = metodit palvelun käyttäjä tietää niiden käytön, mutta ei kuinka toteutettu Palvelun käyttö voi muuttaa olion sisäistä tilaa olion ominaisuudet (eli muuttujien arvot) voivat muuttua Julkinen rajapinta, API (application programming interface) 1) palvelun nimi 2) mitä palvelulla saa aikaan 3) mitä tietoa kutsuja välittää kutsuttavalle käyttäessään palvelua (parametrit) 4) palauttaako kutsuttu tietoa kutsujalle (paluuarvo) Mallintaminen / Häkkinen A. / K2013 2-7 Mallintaminen / Häkkinen A. / K2013 2-8
Oliopohjainen ajattelu Luokka (class) sapluuna / template, joka kuvaa olion rakenteen ja toiminnan ("tyypin") esittelee luokan ominaisuudet = muuttujat = data määrittelee luokan tarjoamat palvelut = metodien toteutukset = koodi Olio (object) on luokan ajonaikainen ilmentymä luokan sapluunan mukaan luotu aktiivinen toimija Kukin erillinen olio saa syntyessään ikiomat muuttujat jokaisella oliolla oma erillinen tallealue koneen muistissa poikkeus: luokkamuuttujat Samasta luokasta luodut oliot käyttävät yhteisiä metodeja koodi vain kertaalleen koneen muistissa koodi ei muutu ajonaikana UML-kaaviot UML 2:ssa 13 kaaviotyyppiä Rakennetta kuvaavat kaaviot luokkakaavio (class diagram) komponenttikaavio (component diagram) oliokaavio (object diagram) * koostekaavio (composite structure diagram) * pakkauskaavio (package diagram) * sijoittelukaavio (deployment diagram) Käyttäytymistä kuvaavat kaaviot aktiviteettikaavio (activity diagram) käyttötapauskaavio (use case diagram) tilakaavio (state machine diagram) Vuorovaikutusta kuvaavat kaaviot sekvenssikaavio (sequence diagram) yhteistoimintakaavio (communication diagram) * Kuvaavat järjestelmän staattisen ja fyysisen rakenteen: luokat, oliot ja olioiden suhteet Kuvaavat järjestelmän dynaamista toimintaa ajoituskaavio (timing diagram) * kokoava vuorovaikutuskaavio (interaction overview diagram) * Vuorovaikutus on olioiden viestintää jossain järjestelmän toimintatilanteessa Mallintaminen / Häkkinen A. / K2013 2-9 Mallintaminen / Häkkinen A. / K2013 2-10 UML-kaaviot RAKENNETTA yleistys, periytyminen Mallintaminen / Häkkinen A. / K2013 2-11 Mallintaminen / Häkkinen A. / K2013 2-12 Luokkakaavio (class diagram) Kuvaa järjestelmän luokkarakenteen määrittely- ja suunnittelutasolla Mistä luokista ohjelma koostuu Mikä on luokkien välinen suhde koostuminen, periytyminen, assosiaatio Oliokaavio (object diagram) Kaavion muoto perustaltaan sama kuin luokkakaaviossa luokan nimen lisäksi mahd. myös olion nimi attribuuttityyppien paikalla todelliset arvot Kuvaa miten oliot nivoutuvat toistensa kanssa tietyssä tilanteessa suoritusaikainen rakenne Oliokaaviossa luokalla voi olla useita ilmentymiä Autonvuokrauskaavioiden lähde: Koskimies K. Oliokirja. Satku. 2000 Mallintaminen / Häkkinen A. / K2013 2-13 Mallintaminen / Häkkinen A. / K2013 2-14 Komponenttikaavio (component diagram) Ryhmittelee esim. luokat suurempiin kokonaisuuksiin, itsenäisiin ohjelmistoyksiköihin komponentin voi tarvittaessa korvata toisella toteutuksella Kuvaa komponenttien väliset toteutus- ja käyttösuhteet komponentin tarjoamat rajapinnat (pallo) komponentin tarvitsemat rajapinnat (kuppi) Voi kuvata kokonaisia järjestelmiä yhtä hyvin kuin jonkin (osa)komponentin toiminnallisuutta Koostekaavio (composite structure diagram) Laajennettu luokkakaavio, joka kuvaa luokkien välisiä suhteita luokkien sisään piirretty olioita ja komponentteja Yhdistää luokka- ja komponenttikaaviot, mutta ei keskity yksityiskohtiin tai sijoitteluun Kuvaa miten luokat muodostavat mahdollisesti monimutkaisia rakenteita Symboli muuttunut Mallintaminen / Häkkinen A. / K2013 2-15 Mallintaminen / Häkkinen A. / K2013 2-16
Sijoittelukaavio (deployment diagram) Kuvaa miten järjestelmän osat sijoitetaan fyysisiin laiteympäristöön (solmuihin), ja mitä ohjelmakomponenttia ajetaan milläkin laitteella Kuvaa millaisella yhteydellä / kommunikointitavalla solmut yhdistetty toisiinsa Pakkauskaavio (package diagram) Kuvaa miten luokkia ja rajapintoja ryhmitellään loogisiksi kokonaisuuksiksi Kuvaa UML-elementtien väliset suhteet ja määrittelyjen näkyvyydet Pakkaus on UML:n yleinen ryhmittely- ja kokoamisväline merkitystä vain mallinnuksen kannalta asiakaspiste:asiakas : GUI : Autonvuokraus «TCP/IP» ajoneuvorekisteri:palvelin :Xtietokantaliittymä :Xtietokanta Mallintaminen / Häkkinen A. / K2013 2-17 Mallintaminen / Häkkinen A. / K2013 2-18 Käyttötapauskaavio (use case diagram) KÄYTTÄYTYMISTÄ Kiteyttää järjestelmän toiminnalliset vaatimukset käyttötapaus = yksi toiminnallinen kokonaisuus ja sen kuvaus Kuvaa järjestelmää toimijoiden (käyttäjän / toisen järjestelmän) näkökulmasta Ei ota kantaa rakenteeseen tai toteutukseen Lähtökohtana useimmille muille kaavioille Mallintaminen / Häkkinen A. / K2013 2-19 Mallintaminen / Häkkinen A. / K2013 2-20 Aktiviteettikaavio (activity diagram) Kuvaa miten käyttäytyminen tai toiminta kulkee suorituksen edetessä Esittää vuorovaikutuksen yhteydessä olioiden tekemät tehtävät ja niiden ajallisen järjestyksen kullakin toimijalle oma "uimarata" Käytetään täydentämään käyttötapauksia Tilakaavio (state machine diagram) Kuvaa millaisia tiloja olioon tai järjestelmään liittyy sen elinkaaren aikana tila on esim. jonkun muuttujan arvo tietyllä hetkellä Kuvaa kuinka esim. olion tulee reagoida ulkoisiin herätteisiin milloin: tiettyjen ehtojen toteutuessa miten: toimintaa ja siirtyminen uuteen tilaan Mallintaminen / Häkkinen A. / K2013 2-21 Mallintaminen / Häkkinen A. / K2013 2-22 Sekvenssikaavio (sequence diagram) VUOROVAIKUTUSTA Vuorovaikutuskaavio, jossa keskitytään suorituksessa olevien olioiden välisten viestien järjestykseen kuvaa viestinvaihtoa aikaulottuvuudessa, aikajärjestyksessä Kullakin oliolla oma pystysuuntainen "elämänviiva" Tärkein ja samalla käytetyin vuorovaikutuskaavio Mallintaminen / Häkkinen A. / K2013 2-23 Mallintaminen / Häkkinen A. / K2013 2-24
Yhteistoimintakaavio (communication diagram) Kokoava vuorovaikutuskaavio (interaction overview diagram) Kuvaa tiettyyn käyttäytymiseen liittyen olioiden suhteita ja vuorovaikutusta viestejä, operaatiokutsuja vrt. sekvenssikaavio Ajallinen järjestys kuvataan linkkeihin liitetyillä numeroilla Yhdistelee useita sekvenssikaavioita samaan kuvaan Kuvaa yleisesti johonkin toimintoon liittyvien olioiden suhteita ja vastuita viestinnän aikana Mallintaminen / Häkkinen A. / K2013 2-25 Mallintaminen / Häkkinen A. / K2013 2-26 Ajoituskaavio (timing diagram) Viestien välityksen ajoitukseen liittyvä kuvaus esim. yhteydenmuodostuksen kättely Selventää vuorovaikutukseen kuluvaa aikaa KAAVIOIDEN KÄYTÖSTÄ Mallintaminen / Häkkinen A. / K2013 2-27 Mallintaminen / Häkkinen A. / K2013 2-28 Miten UML:ää käytetään? Kiinnitettyjen asioiden esittäminen tarkoitukseen sopivalla tavalla Kaaviot ei itsetarkoitus Rajaus: tarpeet kaivettava tarkastelijan näkökulmasta Hahmottelu eli luonnosten teko (sketch) Usein ohjelmiston elinkaaren alkuvaiheessa punnittaessa vaihtoehtoisia toteutustapoja Epätarkkoja ja yksityiskohdiltaan puutteellisia hahmotelmia Aluksi usein käsin paperille tai valkotaululle Tarkkojen suunnitelmien tekeminen (blueprint) Yleensä tietokoneella UML-piirto-ohjelmalla Esim. keskeisimpien kaavioiden puhtaaksikirjoitus Iteratiivisesti työstäen Samoihin kaavioihin palataan uudelleen ja uudelleen Lisää ja syvennä vaihe vaiheelta kaavioissa näytettävää tietoa Saadaan palautetta Tiedetään enemmän Kiinnitetään valintoja ja ratkaisuja Inkrementaalisesti työstäen Määrittele, suunnittele, toteuta, testaa, dokumentoi yksi osakokonaisuus kerralla Täydennä ja tarkenna kaavioita matkan varrella Saadaan palautetta Tiedetään enemmän Kiinnitetään valintoja ja ratkaisuja Ohjelmointikielenä, koodin generointi Kaupallisia ja ilmaisia piirtotyökaluja UML-kaaviosta halutun kielistä ohjelmakoodia (forward engineering) Lähdekoodista UML-kaavioita (reverse-engineering) Ei yksi yhteen -kuvaus, käsityötä riittää Mallintaminen / Häkkinen A. / K2013 2-29 Mallintaminen / Häkkinen A. / K2013 2-30 Kaavioiden käytöstä Kaavioita luodaan vaatimusmäärittelyn ja suunnittelun aikana muun dokumentaation tueksi Kaavioita päivitetään tarvittaessa vielä toteutuksenkin aikana Kaikille kaavioille ei ole suoraa käyttötarkoitusta "perusvaiheistuksessa" eivät pakollisia, eikä kaikissa projekteissa edes tarpeellisia Käytetyimmät kaaviot käyttötapauskaavio sekvenssikaavio luokkakaavio tilakaavio Hajautetuissa ja suurissa järjestelmissä lisäksi sijoittelukaavio komponenttikaavio Reaaliaikaisissa järjestelmissä (aikakriittisyys) ajoituskaavio yhteistoimintakaavio Millä tuottaa UML-kaavioita? Jos ei osaa tuottaa paperilla ja kynällä, ei välineestäkään ole apua Demot ja pikkuesimerkit antavat välineistä melko ruusuisen kuvan opeteltavaa riittää CASE-työvälineet (computer aided software engineering) perustuvat kuvauskantaan (tietokanta) tallettaa malliin liittyvät tiedot kaaviot ovat vain näkymiä tietokantaan ymmärtävät jossain määrin kaavioiden semantiikkaa tietämyksen siirtoa kaaviosta toiseen mahdollistaa koodirungon generoinnin tukevat dokumentointia esim. Rational Rose Modeler Visual Paradigm for UML MagicDraw UML Enterprice Architect OmniGraffle Prosa Mallintaminen / Häkkinen A. / K2013 2-31 Mallintaminen / Häkkinen A. / K2013 2-32
Millä tuottaa UML-kaavioita? Millä tuottaa UML-kaavioita? astah* Metropolian valinta UML-kaaviot, käsitekartat NetBeans (Linux, Windows) Visual Paradigm Streamlined Development Environment for NetBeans Community Edition (SDE CE-NB) free for non-commercial use ei sisällä kaikkia kaupallisen version piirteitä Sun Microsystems: JDeveloper Eclipse (Linux, Windows) plugin Help Install New Software -> Work with Galileo, ja sitten Modeling Visual Paradigm Streamlined Development Environment for Eclipse Community Edition (SDE CE-EC) free for non-commercial use Muut ilmaisohjelmistot pärs tuntumalta kelpo työkaluja, mutta näkyy, että kaupallisuus puuttuu eivät välttämättä tue kaikkia UML-kaaviotyyppejä, tai UML 2:ta monista sekä Linux- että Windows-versiot esim. StarUML - UML 2 Umlet - UML 2 Gaphor - UML 2 ArgoUML - UML 2-tuki tekeillä, Java Web Start Dia Umbrello - ei kaikkia kaavioita Tavalliset piirto-ohjelmat selvästi CASE-työkaluja edullisempia monissa nykyään myös UML-tukea valintana OK, jos ei tarvitse CASE-välineen tietokannan lisäetuja Täältä lisää vinkkejä: http://plg.uwaterloo.ca/~migod/uml.html Mallintaminen / Häkkinen A. / K2013 2-33 Mallintaminen / Häkkinen A. / K2013 2-34 Välikysymyksiä Miksi mallinnusta? Oliopohjainen ajattelu? UML-kaavioiden pääluokat? Tunnistatko mikä kaavio? 4+1 näkymää: kuka näkee ja mitä haluaa nähdä? Mallintaminen / Häkkinen A. / K2013 2-35