UML-notaatio staattinen ja dynaaminen mallintaminen

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

SE-02 UML-notaatio staattinen ja dynaaminen mallintaminen Kalvot: Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo.
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.
19. Unified Modeling Language (UML)
Koostumussuhde Jukka Juslin © Jukka Juslin.
Ohjelmiston tekninen suunnittelu
Tietojärjestelmät 2.
Ohjelmistotuotanto - Mallinnus
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Tietojärjestelmät ja Systeemisuunnittelu
Tietokanta.
Tapahtumasekvenssit = Käyttötapausten realisointi
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
EXtensible Markup Language
Tilasiirtymäkaavio ja eri mallien yhteensovittaminen
13. Pakkaukset.
Ohjelmistotuotanto - Suunnittelu
Ohjelmistotekniikka: Ohjelmiston mallintaminen, osa I
BPMN ja hiukan prosessien määrittelystä
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
2/2001 Tietojärjestelmät ja Systeemisuunnittelu Luennoitsija: Tapio Lammi
Tietojärjestelmät ja Systeemisuunnittelu
Oliomallittaminen ja UML
SE-02 Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo perustuu Kai Koskimiehen Oliokirjaan ja kurssin aiempiin materiaaleihin.
Olioperustainen ohjelmistoprosessi
2. Vuokaaviot.
© Jukka Harju, Jukka Juslin
Johdatus ohjelmointiin Ohjelmistosuunnittelu Jaana Holvikivi.
XML -kielen perusteet SIMO Seminaari Antti Mäkinen.
Ohjelmistotekniikka ja projektinhallinta, 4 op
UML-notaatio staattinen ja dynaaminen mallintaminen
Systeemityö 2 Käyttötapauskaavio Teppo Räisänen, Principal Lecturer
Systeemityö 2 Tilakaavio – State machine diagram
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
Johdanto Teppo Räisänen, Principal Lecturer Oulu University of Applied Sciences, School of Business and Information Management
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Systeemityö 2 Toimintokaavio – Activity diagram
Package diagram Tiia Jefremoff
Tässä esityksessä on piilotettu osa dioista
Koostekaavio – Composite Structure Diagram Kinnula – Kellolampi - Lehtosaari.
– Ohjelmistojen mallintaminen, mallintaminen ja UML.
Mallinnustavat.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Component diagram– Komponenttikaavio J. Pätsi & H. Malmihuhta
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Sequence Diagram Jani Keskitapio, Annika Alakastari, Heng Qing Zhu TIK9SNA.
Käyttöönottokaavio– Deployment diagram Vesa Jokikokko Tarmo Kemi TIK9SNA.
– Ohjelmistojen mallintaminen Unified Modeling Language (UML)
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
Ohjelmistojen mallintaminen, sekvenssikaaviot
Pakkauskaavio– Package Diagram Jani Pelkonen, Niko Viinikanoja, Teemu Tervahauta.
Koostekaavio– composite structure diagram Mikko Näpänkangas.
Olio-ohjelmoinnin perusteet luento 7
Tietojärjestelmät ja Systeemisuunnittelu
1 UML - yleiskatsaus UML - yleiskatsaus (ei kirjassa koottuna) Miksi mallinnus Mikä UML on? UML:n peruselementit Kaaviotyypit Esimerkkiprosessi.
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
– Ohjelmistojen mallintaminen, mallintaminen ja UML
UML-mallinnus osana tietotuotemäärittelyä
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
13. Pakkaukset.
8. Periytyminen.
Mallintamisen metamalli ja notaatiot
Ohjelmistotekniikan menetelmät, sekvenssikaaviot
– Ohjelmistojen mallintaminen Unified Modeling Language (UML)
UML-notaatio staattinen ja dynaaminen mallintaminen
13. Pakkaukset.
2. Olio-ohjelmoinnin perusteita
Esityksen transkriptio:

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

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.

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

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

UML:n kaaviotyypit Korkean tason toiminnalisuus Ohjelmisto- kehitys Rakenne Käyttö- tapauskaaviot Käyttäytyminen Esimerkkejä Oliokaaviot Sekvenssi- kaaviot Yhteistyö- kaaviot Sijoittelu- kaaviot Luokka- kaaviot Tilakaaviot Aktiviteetti- kaaviot Komponentti- kaaviot

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

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

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ö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

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 Ajoneuvojen vuokrausjärjestelmä Varaus Käyttöönotto Palautus Asiakas <<include>> Virkailija Huolto

Käyttötapauskaavio

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 Ohjain Kohde Varasto KohdeHallinto HenkilöAuto ParkkiAlue 1 Kohde 1 Varasto palauta() varaa() otaKäyttöön() hallinnoi KohdeHallinto * 1 palautaKohde(Kohde, Varasto) varaaKohde(Kohde) otaKäyttöönKohde(Kohde) HenkilöAuto ParkkiAlue rekisterinumero Talleta huolto- informaatio (palauta kutsuu) huolla(int km) 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 : KohdeHallinto auto1: HenkilöAuto auto2 : HenkilöAuto luokan ilmentymä: alleviivattu auto1: HenkilöAuto rekisterinumero = XYZ-999 auto2 : HenkilöAuto rekisterinumero = ABC-123

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

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)

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 auto: Henkilöauto : KohdeHallinto parkki: ParkkiAlue 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. Sikso 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 Käytettävissä Käytössä Huollossa Varattu alkutila palauta/ lopeta ajan lasku Käytettävissä Käytössä otaKäyttöön/ aloita ajan lasku valmis huolla Huollossa Varattu exit/huoltoilmoitus varaa

Aktiviteettikaavio 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ä

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

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

Aktiviteettikaavio Asiakas Virkailija Tee varaus Pyydä auto :Lasku alkutila Asiakas Virkailija Tee varaus Pyydä auto säikeiden haarautu- minen (fork) :Lasku [avoin] Tee lasku säikeiden yhdisty- minen (join) Valmistele auto Maksa :Lasku [maks] Rekisteröi vuokraus Ota auto 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ö, mutta myös esimerkiksi datatiedosto, ohjelmatiedosto (mm. exe tai dll), html-sivu, dokumentti, kirjasto tai jokin muu osa.

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, ...)

Komponenttikaavio GUI Auton- Vuokraus VuokrausToiminta Tietokanta- toteuttaa GUI Auton- Vuokraus Tietokanta- liittymä KohdeKanta VuokrausToiminta käyttää

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 asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin Huomaa: prosessointiyksikön ilmentymä = tietty laite, ei laitetyyppi asiakaspiste: Asiakas ajoneuvorekisteri: Palvelin : XTietokanta- liittymä : GUI <<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)

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

Pakkauksen käyttö Ohjain Kohteet Tuki Kohde Varasto KohdeHallinto 1 Kohde 1 Varasto palauta() varaa() otaKäyttöön() hallinnoi KohdeHallinto * 1 palautaKohde(Kohde, Varasto) varaaKohde(Kohde) otaKäyttöönKohde(Kohde) HenkilöAuto ParkkiAlue rekisterinumero huolla(int km) palauta()

Pakkaukset suljetussa muodossa Tuki Tietokanta <<import>>

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

Stereotyypillä varustettu luokka <<exception>> Overflow

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 OCL-rajoite Yritys Henkilö Ministeriö sukupuoli omistaa * vaimo aviomies 0..1 sukupuoli {(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)} {xor} Ministeriö Yritys johtaa omistaa * 1 OCL-rajoite