Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

UML-notaatio staattinen ja dynaaminen mallintaminen

Samankaltaiset esitykset


Esitys aiheesta: "UML-notaatio staattinen ja dynaaminen mallintaminen"— Esityksen transkriptio:

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

2 Staattinen mallintaminen
Luokkakaavio (class diagram, static structure diagram) kuvaa järjestelmään kuuluvia luokkia ja niiden välisiä suhteita. tärkein järjestelmän staattisen rakenteen mallinnusväline

3 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()

4 Staattinen mallintaminen: luokkakaavio
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}

5 Staattinen mallintaminen: luokkakaavio
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, jos halutaan

6 Luokkalaatikko Henkilö nimi: String ikä: Integer = 0
ristiminen(n: String) tervehdi() vanhene() ikä++

7 Geneerinen luokka ja sen ilmentymäluokka
WinType Window<Xwindow> Window {abstract, author = KK status = tested} geneerinen parametri +size #visibility: Boolean = false -xptr: WinType +display() hide() +create() -attachXWindow(xwin: WinType*)

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

9 Assosiaation perusrakenne
assosiaatiolla on yleensä nimi nimen yhteyteen voidaan merkitä nuolisymboli, joka kuvaa nimen lukusuunnan Person owns Car 0..1 *

10 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

11 Roolinimet assosiaatiossa
0..1 * Yritys Henkilö työnantaja työntekijä :IWorker rajapinta

12 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

13 Moninkertainen assosiaatio
Kurssi Opettaja 1..* * Jos assosiaation kertautuminen on suurempi kuin 1, kutsumme assosiaatiota moninkertaiseksi.

14 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.

15 Assosiaatioluokka Yritys Henkilö * työskentelee * työnantaja
työntekijä nimi osoite nimi sosturvatunnus osoite päällikkö 0..1 työsopimus aika palkka johtaa

16 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. Huomaa, että yksilöinti ei muuta sen pään kertautumista, johon se piirretään.

17 Yksilöinti (aiemmin: kvalifiointi) Kirjasto Henkilö 1 kokoelma
sijainti Henkilö nimi osoite lainaaja nro lainaa * 1

18 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.

19 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.

20 Kooste (ja navigoitavuus)
(aiemmin: aggregaatio) 3..* Monikulmio Piste {ordered} pinta-ala x-koord y-koord

21 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.

22 Aito kooste Valtioneuvosto Ministeri 1..*

23 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.

24 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.

25 Periytymis- ja toteutussuhde
Car Vehicle <<interface>> Vehicle Car

26 Aktiivinen 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.

27 Aktiivinen luokka <<controller>> DeviceController
currentConfiguration Signals deviceInterrupt userInterrupt seriousFlaw paksu reuna

28 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

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

30 Sekvenssikaavio: Palautus
alijärjestelmä UI : KohdeHallinto auto: HenkilöAuto parkki: ParkkiAlue palauta(auto, parkki) palauta() varastoi(auto)

31 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

32 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.

33 Skenaariokaaviot

34 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.

35 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.

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

37 Olion luominen ja hävitys sekvenssikaaviossa
: C2 x: C1 op1(x) op2() true

38 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.

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

40 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.

41 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.

42 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.

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

44 Herätyskellon sekvenssikaavio
SET M 9 3 ALARM H : Ohjaus : SoittoYks : Valo :User Näytä aika Paina ALARM sytytä {t = soittoaika} aloita soitto t Paina ALARM lopeta soitto Paina ALARM sammuta

45 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.


Lataa ppt "UML-notaatio staattinen ja dynaaminen mallintaminen"

Samankaltaiset esitykset


Iklan oleh Google