Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita

Samankaltaiset tiedostot
Kaaviotekniikoista (erityisesti UML)

Kaaviotekniikoista (erityisesti UML) (ajan riittäessä pikkasen projekteista)

Kaaviotekniikoista (erityisesti UML)

UML- mallinnus: Tilakaavio

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

Ohjelmistotekniikan menetelmät, UML

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

UML - unified modeling language

UML:n yleiskatsaus. UML:n osat:

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

UML-kielen formalisointi Object-Z:lla

Mallinnus UML-yleiskatsaus

UML -mallinnus TILAKAAVIO

Sisällys. Luokkakaaviot 2

Unified Modeling Language

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Muutamia peruskäsitteitä

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Olioperustaisuus (object oriented)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Ohjelmistojen mallintaminen, kesä 2009

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Vaatimusmäärittelyistä

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen kertausta Harri Laine 1

TIE = JOTU. VH5 - MagicDraw

VH5, JOTU, MagicDraw:n käyttö

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

UML Luokkakaavio 14:41

Tietokantojen suunnittelu, relaatiokantojen perusteita

Ohjelmistotekniikan menetelmät, kesä 2008

UML-mallinnus ja prosessien kuvaaminen Microsoft Visiolla (versio 2003 professional) Jouni Huotari

Ohjelmistojen mallintaminen, kesä 2010

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

käyttötapaukset mod. testaus

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

3. Käsiteanalyysi ja käsitekaavio

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Ohjelmistojen mallintaminen, sekvenssikaaviot

UML-MALLINNUS MICROSOFT VISIOLLA JOUNI HUOTARI

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

TIETOKANNAN SUUNNITTELU

Ohjelmistotekniikan menetelmät, kevät 2008

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät, mallintaminen ja UML

Hieman lisää malleista ja niiden hyödyntämisestä

Ohjelmistojen suunnittelu

MagicDraw-pikaohje (VH5)

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Rajapinta (interface)

Ohjelmistojen mallintaminen

UML -mallinnus Viestiyhteyskaavio EERO NOUSIAINEN

UML ja luokkien väliset suhteet

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Kertaus: yleistys-erikoistus ja perintä

Tilan luonnehdinta (yksi tapa)

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

Luento 3 Tietokannan tietosisällön suunnittelu

Analyysi on tulkkaamista

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Tietojärjestelmän osat

Olioiden yhteistyön mallintaminen

19. Unified Modeling Language (UML)

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

GroupDesk Toiminnallinen määrittely

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Visual Case 2. Miika Kasnio (C9767)

13. Loogiset operaatiot 13.1

Integrointi. Ohjelmistotekniikka kevät 2003

UML metamallina. Seminaariesitelmä Minna Majuri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Tietorakenteet, laskuharjoitus 7,

Kuvaustekniikoista menetelmiin

Ohjelmistojen mallintaminen. Luento 4,

Luokka- ja oliokaaviot

Transkriptio:

Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita Mahdollistavat todellisuuden havainnollistamisen ja yksinkertaistamisen Sallivat eri abstraktiotasot, laajuudet ja näkökulmat Auttavat ymmärtämään sovellusaluetta Ohjaavat kysymään oikeita kysymyksiä Helpottavat kommunikointia koskien järjestelmää ja sovellusaluetta Dokumentoivat asioita 11.10.2012 Huom. Kaavioista huolimatta tärkein dokumentointiväline on edelleenkin selkeä ja sujuva luonnollinen kieli. 1

Mallien käyttötapoja vain koodi koodin visualisointi (takaisinmallinnus) Round Trip Engineering Mallikeskeinen Vain malli Mallit Mallit Mallit Mallit MDA: Model Driven Architecture ohjelmakoodi ohjelmakoodi ohjelmakoodi ohjelmakoodi ohjelmakoodi 11.10.2012 Muokattu lähteestä: Brown, A., An Introduction to Model Driven Architecture Part I: MDA and today s systems. http://www-128.ibm.com/developerworks/rational/library/3100.html (viitattu 5.9.2005) 2

Mallien riippuvuus (1) Mallien generointi, tarkistus,... Takaisinmallinnus Mallinnus Koodi Koodin generointi Järjestelmä 3 11.10.2012

Mallien riippuvuus (2) Vaatimukset Analyysi Suunnittelu Toteutus Testaus Vaihetuotemalleja 4 11.10.2012

Lyhyt historia UML = Unified Modeling Language. Yhdistelmä viimeisten 30-40 vuoden aikana kehitetyistä notaatioista (ER, SA/RT, SDL,..) Standardoi piirtotavan UML ei ole menetelmä, vaan kaavioidenpiirtostandardi Päätekijät (the "three amigos"): Grady Booch, Jim Rumbaugh and Ivar Jacobson (www.rational.com) OMG:n standardoima 1997 version 1.1 1998-2003 Fix releases 1.2-1.5 2.8.2003: kokonaan uusittu versio 2.0 uusin versio (2.3.) keväällä 2010 Laaja standardi, käytännön kannalta erot 1.1-version ja 2.0 version välillä ovat melko vähäisiä Tosiasiallinen standardi työkaluissa, kirjallisuudessa, teollisuudessa 5 11.10.2012

UML-esimerkkikaavio cd Asiakas nimi osoite uusi Asiakas 1 0..* Tilaus UML-kommentti 6 11.10.2012

Kaaviotyypit (UML 1.x) Käyttötapauskaavio Use Use case case diagram Luokkakaavio Class/Package/Object diagrams Tap.sekv.kaavio Yhteistyökaavio Collaboration diagram Driver Handle tree Tree 1..* Log :Log driver 1. Cut 2. Feed 2.1. setmeasures Cut log pine: Tree :Tree pine:tree 1.2. calculate 1.1. <<create>> popularity: 3, complexity: 1 Aktiviteettikaavio Activity diagram popularity: 3, complexity: 3 Tilakaavio popularity: 3, complexity: 1 Komponenttikaavio Component diagram popularity: 2, complexity: 1 Sijoittelukaavio Deployment diagram H Catch hold of tree H.U.I. Production <<Laptop>> H.U.I. H.U.I. Fall the tree Production <<CAN>> Production Feed&saw Select tree variety H Production Tree Log <<processor>> Main Unit popularity: 2, complexity: 3 popularity: 2, complexity: 3 popularity: 2, complexity: 2 popularity: 1, complexity: 2 Popularity&complexity ravistettu ijh:n hihasta 7 11.10.2012

UML 2.0 kaaviotyypit Diagram Structure diagram Behavior Diagram Class Diagram Component Diagram Object Diagram Activity Diagram Use Case Diagram State Machine Diagram Composite Structure Diagram Deployment Diagram Package Diagram Interaction Diagram Sequence Diagram Collaboration Diagram Interaction Overview Diagram Timing Diagram 8 11.10.2012

Esimerkki tyypillisestä käytöstä otupk oliot, ohjarkkiteht. Selvitellään asiakkaan ongelmaa (asiakasvaatimuksia) Tuotetaan sovellusalueen luokkakaavioita (analysis level, problem level, problem domain) Käytetään käyttötapauksia selvittelemään kuvausta asiakasvaatimuksista järjestelmävaatimuksiksi. Iteroidaan, protoillaan... Tuotetaan toiminnallinen määrittely, joka dokumentoi asiakasvaatimukset, järjestelmävaatimukset ja käyttötapaukset. Määritellään arkkitehtuuri (alijärjestelmät) ja tärkeimmät rajapinnat (luokkakaaviot, tapahtumasekvenssikaaviot) Määritellään alijärjestelmät (luokkatasolle) ja luokkien rajapinnat (luokka- ja tapahtumasekvenssikaaviot) 11.10.2012 Huom. Kaavioilla ei juurikaan päästä käsiksi ei-toiminnallisiin ominaisuuksiin. 9

Millä piirrät? Jos et osaa paperilla ja kynällä ei välineestä ole apua. Välineet voidaan karkeasti jakaa case-välineisiin ja piirto-ohjelmiin, käytännössä rajanveto ei ole helppoa: Rational Rose, Rational Software Architect, Prosa, Rhapsody, Together, Enterprise Architect, MagicDraw, Visio CASE-välineet Hinta yleensä korkea (2-20k euroa). Perustuvat tietokantaan, johon talletetaan kaikki malliin liittyvät tiedot, kaaviot ovat vain näkymiä tietokantaan. Ymmärtävät kaavioiden semantiikkaa ainakin jossain määrin. Reverse Engineering+Forward Engineering = Round Trip Engineering. Tukevat dokumentointia. Tukevat ryhmätyötä. Demot ja pienet ohjelmaesimerkit antavat usein liian ruusuisen kuvan. Oppimiskynnys korkeahko. Piirto-ohjelmat (esim. MS Visio) Hinta muutamia satoja eroja. Ainakin Visiossa melko hyvä UML-tuki, lähestyy CASE-välineen ominaisuuksia. Hyvä valinta, jos ei tarvitse CASE-välineen tietokannan tuomia lisäetuja. Julkisohjelmiakin löytyy verkosta (esim. ArgoUML) Tällä kurssilla saa piirtää millä haluaa, saatavissa MagicDraw, Rose ja RSA 11.10.2012 10

OMT++ (hieman yksinkertaistettu versio) Analyysimalli Dialogimallit (käyttöliittymä) Suunnitteluvaiheen luokkamalli Vaatimukset Koodi Class C { } Käyttötapaukset User System User UI System User View Contr void C::m() { } Operaatiospesifikaatiot Tehtäväspesifikaatiot Suunnitteluvaiheen tapahtumasekvenssit 11 11.10.2012

Luokka (käsite, kohde) ja yhteys cd Asiakas luokka merkkiarvo attribuutit nimi osoite uusi Asiakas 1 tekee yhteys 0..* Tilaus {versio=1.0} tilaatuote() lukumääräsuhde operaatiot 12 5.10.2009

Oliot, lukumääräsuhteet (kuva ei kirjassa) ahto simakuutio : asiakas tilaus 1 : tilaus tilaus 2 : tilaus teemu teekkari : asiakas tilaus 3 : tilaus outi opiskelija : asiakas 5.10.2009 Tavallisimmat lukumääräsuhteet: 1 yksi (1..1) 0..1 valinnainen 1..* vähintään 1 * monta 13

5.10.2009 14 navigointisuunta Esimerkki assosiatioluokka lukusuunta UML 2.x navigointi Undefined Navigable direction Non-navigable direction suoritus arvosana ov-määrä pvm opettaja nimi osoite henkilönro opintojakso kuvaus kurssi kurssitunnus periodit lukukausi 0..1 0..* 0..1 0..* luennoi 1 0..* 1 0..* <kuvaa tentti 1 0..* 1 0..* kuuluu Opiskelija nimi op.nro osoite ilmoittaudu() 0..* 1..* 0..* 1..* osallistuu 0..* 0..* 0..* 0..* suoritus

Periyttäminen, yleistäminen, erikoistaminen (kuva 6.3) tilinro saldo tili otto() pano() saldokysely() tili tilinro saldo otto() pano() saldokysely() 1 1 {xor} 0..1 luotollinen tili luottoraja 0..1 käyttötili luotollinen tili luottoraja käyttötili otto() otto() rajoite TAI: tili tilinro saldo otto() pano() saldokysely() luotollinen tili luottoraja käyttötili otto() 15 5.10.2009

Yhteenveto yhteyksistä Heikko riippuvuus (esim. kutsu) Parser Scanner Yhteys, assosiaatio Person owns Car Muodoste (composition) Tail 1 1 Cat Kooste (aggregation) Workstation 1..* 1 Network olioiden välillä Yleistys, Periytyminen (generalization) Totetutus (realization) Car Car Vehicle <<interface>> Vehicle luokkien välillä Sisäinen luokka (nested class) nestedclass MyClass 16 5.10.2009

Kaavioiden käyttötavoista Kaavioita voidaan käyttää (mm.) esitutkimuksessa, määrittelyssä ja suunnittelussa. Esitutkimus ja määrittely: sovellusalueen käsitteet (domain object model), järjestelmän rajaus, analysis object model, järjestelmän tietosisällön määrittely (käsitekaavio, conceptual model), usein myös tietokannan rakenne. Suunnittelu: ohjelman rakenne (design object model), tietokannan rakenne (esimerkiksi relaatiokannan graafinen esitys). Kaavio dokumentoi "sanaston", jolla asioista voi keskustella. Kaavio kertoo, millaiset tilanteet ovat mahdollisia. Kaavio ohjaa kysymään oikeita kysymyksiä. Voidaan käyttää (rajoitetusti) koodin generointiin (luokkamäärittelyt, tietokannan luonti). Voidaan käyttää takaisinmallinnukseen (reverse engineering). 5.10.2009 17

Kaavioiden ilmaisuvoimasta Kaikkien sallittujen tilanteiden on oltava kaaviossa mukana. Kaikkia rajoituksia ei aina pysty ilmaisemaan => Lisätään rajoitteita ja kommentteja. Kaavioita voi testata hakemalla siitä vastauksia kysymyksiin ja piirtelemällä kuvia esimerkkitilanteista. Mahtavatkohan asiakkaat ymmärtää kaavioita? 5.10.2009 18

Esimerkki ilmaisuvoimasta henkilö nimi osoite puh 0..1 0..* 1 pomo esimies Rooli vakanssi 0..* 1 yritys * alainen Kysymys 1: missä firmoissa A.S. on töissä? Kysymys 2: kuka on T.T:n esimies, kun hän on Aikonilla hommissa? Kysymys 3: mikä on T T:n esimiehen titteli kohdan 2 kysymyksessä. 19 5.10.2009

Esimerkki ilmaisuvoimasta (2) Ahto Simakuutio : henkilö jaospäällikkö : vakanssi Aikon Oyj : yritys pomo konsultti : vakanssi alainen Teemu Teekkari : henkilö testaaja : vakanssi 5.10.2009 20

Esimerkki ilmaisuvoimasta (3) henkilö nimi osoite puh 1 0..* vakanssi pomo 0..1 0..* 0..* alainen esimies 1 yritys 21 5.10.2009

Esimerkki ilmaisuvoimasta (4, kuva 6.9b) Ahto Simakuutio : henkilö jaospäällikkö : vakanssi pomo Aikon Oyj : yritys konsultti : vakanssi Teemu Teekkari : henkilö alainen testaaja : vakanssi 5.10.2009 22

Kaavioiden laatiminen: Luokat (1) Luokan jäsenillä on samat attribuutit ja sama käyttäytyminen (metodit). Tyypillisiä luokkia Konseptuaaliset luokat: sovellusalueen käsitteet (toinen tapa sanoa lähes sama: käsitteet, jotka ovat mukana jokaisessa ajateltavissa olevassa ratkaisussa) itse keksityt metaforat yms, pure fabrication : luokat, jotka keksitään tyhjästä helpottamaan keskustelua sovelluksesta (määrittely- tai suunnittelutasolla) Suunnittelun MVC-malli (Model-View-Controller): Model-luokat sisältävät datan (usein konseptuaalinen luokka). View-luokka näkyy käyttöliittymässä. Controller-luokka sisältää käyttöliittymälogiikan.... Luokkajako perustuu pysyviin ominaisuuksiin ei esimerkiksi olion väliaikaiseen tilaan. Esimerkki. Toiminnallisuuden jakaminen: ei mahtiluokkia (God class), jotka "osaavat" ja "tietävät" kaiken (muut luokat toimivat vain tiedon säilytyspaikkoina). 5.10.2009 23

Kaavioiden laatiminen: Luokat (2) Metodit saantimetodit (accessors) palauttavat tietoa olion tilasta muuttajametodit (mutators) muuttavat olion tilaa perussääntö: laita metodit sinne, missä tietokin on Attribuutit primitiivityypit esitetään attribuutteina abstraktit tietotyypit ja joskus muutkin oliot voivat esiintyä myös attribuutteina (vrt. muodoste ) assosiaatiot toteuttavia attribuutteja ei yleensä esitetä attribuutteina kaavioissa Ei toistuvia kenttiä (ks. opiskelijarekisteri). Ei tarpeetonta redundanssia (sama tieto monessa paikassa, ov opiskelijarekisterissä). Ei puuttuvia kenttiä (Esimerkki). Ei turhia luokkia. 24 5.10.2009

Kaavioiden laatiminen: Yhteydet Olion A ja B voi yhdistää esimerkiksi seuraavanlainen suhde A on osa tai kuuluu B:n A sisältää tai omistaa B:n A kuvaa B:n A kommunikoi B:n kanssa A on tapahtuma, joka liittyy B:n A on fyysisesti B:n vieressä A käyttää B:tä A hallinnoi B:tä... Minimoi yhteydet luokkien välillä, ei redundantteja yhteyksiä (ks. opiskelijarekisteri). need-to-know -periaate: jos olio A tarvitsee toiminnassan oliota B, siihen on päästävä jotenkin käsiksi, eli A:lla on oltava näkyvyys (visibility) olioon B Assosiaatiot kuvaavat yleensä tilannetta, jossa näkyvyys on pysyväisluontoista, siis koko ajan olemassa Muissa tapauksissa käytetään riippuvuusnuolia, esim. olio B välitetään parametrina olion A operaatiolle olio B on väliaikainen, A:n metodi luo olion, käyttää sitä ja tuhoaa sen lopuksi Täysin staattisessa tilanteessa, esimerkiksi globaali objekti, jota kaikki käyttävät, yhteys jätetään usein kokonaan pois 5.10.2009 25

Ryhmittely: pakkaukset Kohteet Tuki Kohde palauta varaa otakäyttöön hallinnoi * KohdeHallinto palauta(kohde, Varasto) varaa(kohde) otakäyttöön(kohde) Varasto HenkilöAuto rekisterinumero ParkkiAlue huolla(int km) palauta 26 11.10.2012

Esimerkki tapahtumasekvenssistä Aihetta pohdiskellaan työpaikalla proffan kanssa : opiskelija : ohjaava professori aiheanomus : ohjaaja työpaikalla allekirjoitettu aiheanomus : osastoneuvosto aihe OK Dippatyötä tehdään, palavereita ohjaajien kanssa a valmis työ valmis työ Molemmat ohjaajat tekevät lausunnon {b-a> 2 viikkoa} lausunto lausunto Osastoneuvoston kokous hyväksyy työn b hyväksyminen, arvosana elämänlanka 26.10.2009

Notaatio : Sovellus : Tdstojärjestelmä : Laiteajuri : Levyohjain lue tdston tavut 1200-1209 Päättele tavunumeroista vastaavan levylohkon numero (esim erkiksi 523) lue lohko 523 Muunna 523 levypinnan, uran ja sektorin numeroksi (esimerkiksi (1, 36, 56)) käynnistä seek uralle 34 Funktiokutsu, synkroninen kommunikointi Asynkroninen kommunikointi Odota keskeytystä Siirrä lukipää oikealle uralle i /o-keskeytys käynnistä sektorin luku Focus of control Odota keskeytystä palauta lohko 523 i /o-keskeytys Odota oikeaa sektoria, lue sektori palauta halutut 10 tavua Paluu funktiosta (ei pakollinen) 26.10.2009

notaatio TAI: <<create>> : C2 x: C1 olion luonti, voi ilmaista myös stereotyypillä <<create>> <<destroy>> : C2 op1(x) op3(x) op2() sisäinen kutsu true takaisinkutsu (call back) olion tuhoaminen (myös stereotyyppi <<destroy>>) 26.10.2009

Yhteys luokkakaavioihin :A :B B A B m m 26.10.2009

UML 2.0 laajennoksia sd Sale loop Customer signon [while Negotiations left] ref Negotiate alt [Negotiation OK] ref handlepurchase [Negotiation not OK] ref handlefailure Sales System Operaattorit ref: viittaus alikaavioon alt: if-then-else opt: if-then break: hyppy ulos loop: silmukka par: rinnakkainen suoritus seq: heikko järjestys (voi tapahtua muussakin järjestyksessä) strict: tarkasti määritelty järjestys neg: kielletty kommunikointitapa critical: kriittinen alue ignore, consider, assert 26.10.2009

Tilakaavio / sammuta virta 50W langasta sammuta virta 100W langasta jouten veto narusta / kytke virta 50W lankaan veto narusta / sammuta virta 50W langasta sammuta virta 100W langasta 150W veto narusta / kytke virta 50W lankaan 50W veto narusta / sammuta virta 50W langasta kytke virta 100W lankaan 100W 2.11.2009

Notaation "hienouksia State name entry/action exit/action do/action eventname/action eventname/defer Alkutila Suoritetaan tilaan saavuttaessa Suoritetaan tilasta poistuttaessa Suoritetaan tilassa ollessa Suoritetaan tapahtuman sattuessa Estetty tapahtuma toiminto Vahti: tilasiirtymä mahdollinen jos tosi eventname(par)[guard]/action Lopputila 2.11.2009

Tilasiirtymät (kaikkia ei löydy kirjasta) eventname(par)[guard]/action Tapahtuma ehto, joka muuttuu todeksi: when(a>0) signaalin vastaanottaminen: OK funktiokutsu: setwarmeron() ajastus: after(15) seconds kalenteritapahtuma: when(time=12:30) melkeinpä mitä hyvänsä (?) Vahti (guard): ehtolauseke, voi esim. testata toisen tilakoneen tilaa: in and not in, esim. [not in processing] toiminto: mitä tahansa toimintoja (funktiokutsu, suoritettava lause, sanoman lähetys jne.) Lisäys: tilan nimi UML 2.x-notaatiossa 2.11.2009

Sisäkkäiset tilakaaviot Aseta_aika Aseta_aika alitilaindikaattori (optionaalinen) aseta_m aseta_h Sisäkkäisiä tilakaavioita voidaan käyttää top-down strukturointiin yhteisten siirtymien yhdistämiseen rinnakkaisuuden kuvaukseen 2.11.2009

Yhteisten siirtymien yhdistäminen alitiloilla a a S a S a a 2.11.2009

Tilakaavion ja tapahtumasekvenssikaavion yhteys (ei kirjassa) Y:n tilakaaviossa:... / x.a() Y X Z X:n tilakaaviossa: a b a /... Do: z.b tai... /send z.b() 2.11.2009

Laajennosmekanismit: stereotyyppi Stereotyyppi (stereotype) määrittelee uuden mallialkiotyypin olemassa olevan laajennoksena teknisesti uusi UML meta(ali)luokka UML määrittelee joukon standardistereotyyppejä käyttäjä voi keksiä omia merkitys voidaan jättää epäformaaliksi tai määritellä esim. rajoitteilla (voi kehitellä myös oman graafisen ulkoasun, ns. ikonin) Stereotyyppi merkitään: «stereotyypin nimi» Esimerkki: <<exception>> Overflow ikoni <<exception>> Overflow...tai pelkkä ikoni 38 11.10.2012

Tavallisia stereotyyppejä Student «call» «interface» CourseInfo Kutsusuhde: olioiden välinen käyttö/kutsuhde: «call», «use», «create, «destroy» pakkausten välinen kutsusuhde «access»: käyttää pakkauksen julkisia ominaisuuksia (tunnuksia) «import»: kuten access, mutta lisätään kutsujan nimiavaruuteen Olion tyyppi: «interface»: rajapinta «subsystem»: alijärjestelmä (yleensä pakkaus) «utility»: kokoelma aliohjelmia ja vakiota (pakkaus) «process», «thread»: aktiivinen olio, prosessi, säie «persistent»: tietokantaan talletettava pysyvä olio 39 11.10.2012

Laajennosmekanismit: merkkiarvo (tag) koostuu merkkiarvon nimestä ja arvosta sallii mielivaltaisen informaation liittämisen mallin osiin ei muuta mallin merkitystä käytetään esimerkiksi koodin tuottamisessa tai konfiguraationhallinnassa käyttö on kuitenkin käytännössä harvinaista Esimerkki: MyClass {version = 1.2} 40 11.10.2012