UMLnotaatio staattinen ja dynaaminen mallintaminen Kalvot Olioperustainen ohjelmistokehitys

  • Slides: 44
Download presentation
UML-notaatio staattinen ja dynaaminen mallintaminen Kalvot: Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo

UML-notaatio staattinen ja dynaaminen mallintaminen Kalvot: Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo SE-02

Mallinnusmenetelmistä • Vaatimusmäärittelyä pitäisi nyt hyödyntää olioanalyysissa ja –suunnittelussa. • Sitä varten onkin syytä

Mallinnusmenetelmistä • Vaatimusmäärittelyä pitäisi nyt hyödyntää olioanalyysissa ja –suunnittelussa. • Sitä varten onkin syytä vähän tutkailla, että mitä mokomien analyysien ja suunnitelmien pitäisi olla. • Alamme esittelemällä UML-kielen, jota voi käyttää oliomallien rakentamiseen analyysissä ja suunnittelussa. SE-02

Mallinnusmenetelmistä • Muista: menetelmiä käytettävä soveltaen ja harkiten • Tällä kurssilla tarkastellaan olioanalyysiä ja

Mallinnusmenetelmistä • Muista: menetelmiä käytettävä soveltaen ja harkiten • Tällä kurssilla tarkastellaan olioanalyysiä ja suunnittelua sitoutumatta tiettyyn menetelmään SE-02

Mallinnusmenetelmistä • Kurssilla esitettävään yksinkertaistettuun menetelmään ovat vaikuttaneet lähinnä: – Rumbaugh et al. :

Mallinnusmenetelmistä • Kurssilla esitettävään yksinkertaistettuun menetelmään ovat vaikuttaneet lähinnä: – Rumbaugh et al. : OMT (Object Modeling Technique) – Nokia/Jaaksi: OMT++ – Jacobson: OOSE (Object-Oriented Software Engineering) • Booch, Rumbaugh, Jacobson: Unified Modeling Language (UML) – Nykyisin OMG: n (Object Management Group) kehittämä standardoitu mallinnuskieli SE-02

UML: n kaaviotyypit Ohjelmistokehitys Korkean tason toiminnalisuus Rakenne Esimerkkejä Sijoittelukaaviot Käyttötapauskaaviot Käyttäytyminen Oliokaaviot Sekvenssikaaviot

UML: n kaaviotyypit Ohjelmistokehitys Korkean tason toiminnalisuus Rakenne Esimerkkejä Sijoittelukaaviot Käyttötapauskaaviot Käyttäytyminen Oliokaaviot Sekvenssikaaviot Yhteistyökaaviot Luokkakaaviot Tilakaaviot Aktiviteettikaaviot Komponenttikaaviot SE-02

UML: n kaaviotyypit • Korkean tason toiminnallisuus – käyttötapauskaaviot • Järjestelmän staattinen ja dynaaminen

UML: n kaaviotyypit • Korkean tason toiminnallisuus – käyttötapauskaaviot • Järjestelmän staattinen ja dynaaminen rakenne – – oliokaaviot luokkakaaviot sijoittelukaaviot komponenttikaaviot SE-02

UML: n kaaviotyypit • Järjestelmän dynaaminen käyttäytyminen – – sekvenssikaaviot yhteistyökaaviot tilakaaviot aktiviteettikaaviot •

UML: n kaaviotyypit • Järjestelmän dynaaminen käyttäytyminen – – sekvenssikaaviot yhteistyökaaviot tilakaaviot aktiviteettikaaviot • Kaikki kaaviotyypit esitellään seuraavassa käyttäen esimerkkinä autojen vuokrausjärjestelmää SE-02

UML: n kaavioiden peruselementtejä ja -suhteita • Kaaviot koostuvat peruselementeistä ja niiden välisistä suhteista.

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. SE-02

UML: n kaavioiden peruselementtejä ja -suhteita Elementit Luokka Suhteet Nimi Riippuvuus Assosiaatio Tila 0.

UML: n kaavioiden peruselementtejä ja -suhteita Elementit Luokka Suhteet Nimi Riippuvuus Assosiaatio Tila 0. . 1 * rooli Nimi Kooste Pakkaus Nimi Yleistys (Periytyminen) Kommentti Teksti Toteutus jne. SE-02

Käyttötapauskaavio Käyttötapaus (use case) on kuvaus järjestelmän ja sen käyttäjien välisestä vuorovaikutuksesta tietyn, käyttäjän

Käyttötapauskaavio 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 SE-02

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

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 SE-02

Käyttötapauskaavio Ajoneuvojen vuokrausjärjestelmä Varaus Käyttöönotto Palautus Asiakas <<include>> Huolto SE-02 Virkailija

Käyttötapauskaavio Ajoneuvojen vuokrausjärjestelmä Varaus Käyttöönotto Palautus Asiakas <<include>> Huolto SE-02 Virkailija

Käyttötapauskaavio SE-02

Käyttötapauskaavio SE-02

Luokkakaavio (class diagram, static structure diagram) kuvaa järjestelmään kuuluvia luokkia ja niiden välisiä suhteita.

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 SE-02

Luokkakaavio Ohjain 1 1 Kohde palauta() varaa() ota. Käyttöön() Kohde. Hallinto hallinnoi * Varasto

Luokkakaavio Ohjain 1 1 Kohde palauta() varaa() ota. Käyttöön() Kohde. Hallinto hallinnoi * Varasto 1 palauta. Kohde(Kohde, Varasto) varaa. Kohde(Kohde) ota. Käyttöön. Kohde(Kohde) HenkilöAuto rekisterinumero huolla(int km) palauta() Talleta huoltoinformaatio (palauta kutsuu) SE-02 Parkki. Alue

Oliokaavio (object diagram) kuvaa olioita ja niiden välisiä suhteita. – luokkakaavion mahdollinen ajoaikainen ilmenemismuoto

Oliokaavio (object diagram) kuvaa olioita ja niiden välisiä suhteita. – luokkakaavion mahdollinen ajoaikainen ilmenemismuoto – oliokaavio antaa esimerkin järjestelmän dynaamisesta rakenteesta tietyllä hetkellä SE-02

Oliokaavio : Kohde. Hallinto luokan ilmentymä: alleviivattu auto 1: HenkilöAuto auto 2 : HenkilöAuto

Oliokaavio : Kohde. Hallinto luokan ilmentymä: alleviivattu auto 1: HenkilöAuto auto 2 : HenkilöAuto rekisterinumero = XYZ-999 rekisterinumero = ABC-123 SE-02

Oliokaavio Tyyppejä UML: ssä: – – – luokat rajapinnat tietotyypit komponentit prosessointiyksiköt Näiden ilmentymien

Oliokaavio Tyyppejä UML: ssä: – – – luokat rajapinnat tietotyypit komponentit prosessointiyksiköt Näiden ilmentymien nimet alleviivataan. SE-02

Sekvenssikaavio (sequence diagram) koostuu tiettyyn vuorovaikutukseen liittyvistä olioista ja niiden välisistä sanomista (message). –

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ä SE-02

Sekvenssikaavio: Palautus alijärjestelmä UI : Kohde. Hallinto auto: HenkilöAuto palauta(auto, parkki) palauta() varastoi(auto) SE-02

Sekvenssikaavio: Palautus alijärjestelmä UI : Kohde. Hallinto auto: HenkilöAuto palauta(auto, parkki) palauta() varastoi(auto) SE-02 parkki: Parkki. Alue

Yhteistyökaavio (collaboration diagram) kuvaa olioiden välistä vuorovaikutusta. – aikaa ei edusta mikään tietty suunta

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 SE-02

Yhteistyökaavio vastaa edellistä sekvenssikaaviota 1. 1: palauta() auto: Henkilöauto : Kohde. Hallinto 1: palauta(auto,

Yhteistyökaavio vastaa edellistä sekvenssikaaviota 1. 1: palauta() auto: Henkilöauto : Kohde. Hallinto 1: palauta(auto, parkki) 1. 2: varastoi(auto) UI SE-02 parkki: Parkki. Alue

Vuorovaikutuskaaviot Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Sikso niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi.

Vuorovaikutuskaaviot Sekvenssikaaviot ja yhteistyökaaviot kuvaavat molemmat olioiden välistä vuorovaikutusta. Sikso niitä kutsutaan yhteisesti vuorovaikutuskaavioiksi. SE-02

Tilakaavio (statechart diagram) kuvaa tietyn luokan ilmentymien reagoimisen ulkoisiin tapahtumiin (message). – käytetään tyypillisesti

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 SE-02

Tilakaavio alkutila Käytettävissä valmis palauta/ lopeta ajan lasku Käytössä ota. Käyttöön/ aloita ajan lasku

Tilakaavio alkutila Käytettävissä valmis palauta/ lopeta ajan lasku Käytössä ota. Käyttöön/ aloita ajan lasku huolla Huollossa exit/huoltoilmoitus varaa SE-02 Varattu

Aktiviteettikaavio (activity diagram) kuvaa tietyn tehtävän sisäisen logiikan – muodollisesti tilakaavion erikoistapaus – esimerkiksi

Aktiviteettikaavio (activity diagram) kuvaa tietyn tehtävän sisäisen logiikan – muodollisesti tilakaavion erikoistapaus – esimerkiksi • yksittäinen operaatio • jokin korkeamman tason tehtävä (yksi tai useampi käyttötapaus), johon osallistuu useita suorittajia – 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ä SE-02

Aktiviteettikaavio – kaavioon voidaan liittää päätössymboleja (vinoneliö) kuvaamaan kontrollin haarautumista jonkin ehdon perusteella –

Aktiviteettikaavio – 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 (data flow diagram) • tietovuokaaviot eivät sinänsä kuulu UML: ään SE-02

Aktiviteettikaavio Asiakas Virkailija Pyydä auto : Lasku [avoin] Tee varaus Tee lasku Maksa Valmistele

Aktiviteettikaavio Asiakas Virkailija Pyydä auto : Lasku [avoin] Tee varaus Tee lasku Maksa Valmistele auto Ota auto Rekisteröi vuokraus : Lasku [maks] SE-02

Aktiviteettikaavio alkutila Asiakas Virkailija Pyydä auto säikeiden haarautuminen (fork) : Lasku [avoin] säikeiden yhdistyminen

Aktiviteettikaavio alkutila Asiakas Virkailija Pyydä auto säikeiden haarautuminen (fork) : Lasku [avoin] säikeiden yhdistyminen (join) Tee varaus Tee lasku Maksa Valmistele auto Ota auto Rekisteröi vuokraus : Lasku [maks] lopputila SE-02

Komponenttikaavio (component diagram) kuvaa komponentit ja niiden väliset suhteet Komponentti (UML: kaavioissa) voi olla:

Komponenttikaavio (component diagram) kuvaa komponentit ja niiden väliset suhteet Komponentti (UML: kaavioissa) voi olla: – lähdekielinen tai binäärimuotoinen rajapinnan toteuttava ohjelmayksikkö, mutta – myös esimerkiksi datatiedosto, ohjelmatiedosto (mm. exe tai dll), html-sivu, dokumentti, kirjasto tai jokin muu osa. SE-02

Komponenttikaavio – yleisesti UML: n komponentti on lähes mikä tahansa ohjelmistojärjestelmästä selkeästi erotettavissa ja

Komponenttikaavio – 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, . . . ) SE-02

Komponenttikaavio toteuttaa käyttää GUI Auton. Vuokraus. Toiminta Tietokantaliittymä Kohde. Kanta SE-02

Komponenttikaavio toteuttaa käyttää GUI Auton. Vuokraus. Toiminta Tietokantaliittymä Kohde. Kanta SE-02

Sijoittelukaavio (deployment diagram) kuvaa prosessointia suorittavat laiteyksiköt, niiden yhteydet ja ohjelmistojen osien sijoittumisen niihin.

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 SE-02

Sijoittelukaavio Huomaa: prosessointiyksikön ilmentymä = tietty laite, ei laitetyyppi asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin :

Sijoittelukaavio Huomaa: prosessointiyksikön ilmentymä = tietty laite, ei laitetyyppi asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin : XTietokantaliittymä : GUI <<TCP/IP>> : Auton. Vuokraus : XTietokanta olio komponentin ilmentymä SE-02

Kaavioille yhteisiä piirteitä • Pakkaukset • Laajennosmekanismit, joilla voidaan määritellä lisäominaisuuksia UML: n perusosille

Kaavioille yhteisiä piirteitä • Pakkaukset • Laajennosmekanismit, joilla voidaan määritellä lisäominaisuuksia UML: n perusosille – stereotyypit (stereotype) – lisätietomääreet (tagged value) – rajoitteet (constraint) SE-02

Pakkaukset Pakkaus (package) on UML: n yleinen ryhmittely- ja kokoamisväline, jota voidaan käyttää kaikissa

Pakkaukset 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, konfiguraation, . . . – hakemiston vastine, voi sisältää myös toisia pakkauksia – pakkaus edustaa nimiavaruutta – pakkauksen elementtien näkyvyys ulospäin voidaan kuvata Java -kielen tavoin SE-02

Pakkauksen käyttö Ohjain Kohteet Tuki 1 Kohde palauta() varaa() ota. Käyttöön() 1 Kohde. Hallinto

Pakkauksen käyttö Ohjain Kohteet Tuki 1 Kohde palauta() varaa() ota. Käyttöön() 1 Kohde. Hallinto hallinnoi * Varasto 1 palauta. Kohde(Kohde, Varasto) varaa. Kohde(Kohde) ota. Käyttöön. Kohde(Kohde) HenkilöAuto Parkki. Alue rekisterinumero huolla(int km) palauta() SE-02

Pakkaukset suljetussa muodossa <<import>> Tuki SE-02 Tietokanta

Pakkaukset suljetussa muodossa <<import>> Tuki SE-02 Tietokanta

Stereotyypit Stereotyypillä varustetulla perusosalla on oma laajennettu merkitys – täysin epäformaali tai esimerkiksi rajoitteilla

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 SE-02

Stereotyypillä varustettu luokka <<exception>> Overflow SE-02

Stereotyypillä varustettu luokka <<exception>> Overflow SE-02

Lisätietomääreet Lisätietomääre on UML: n perusosaan liitettävä määre, joka koostuu nimestä ja arvosta. –

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 SE-02

Lisätietomääreitä luokkaan liitettyinä My. Class {version = 1. 2 author = KK} SE-02

Lisätietomääreitä luokkaan liitettyinä My. Class {version = 1. 2 author = KK} SE-02

Rajoitteet antavat mahdollisuuden määritellä lisävaatimuksia, jotka mallin toteuttavan järjestelmän tulee täyttää. – kirjoitetaan aaltosulkujen

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 SE-02

Rajoitteita OCL-rajoite Yritys * {xor} Ministeriö omistaa 1 Henkilö aviomies 0. . 1 sukupuoli

Rajoitteita OCL-rajoite Yritys * {xor} Ministeriö omistaa 1 Henkilö aviomies 0. . 1 sukupuoli 0. . 1 vaimo 0. . 1 johtaa 1 SE-02 {(self. aviomies->size=1 implies self. aviomies. sukupuoli = mies) and (self. vaimo->size=1 implies self. vaimo. sukupuoli = nainen) and not(self. vaimo->size=1 and self. aviomies->size=1)}