Kaaviotekniikoista (erityisesti UML) Kari Systä 30.9.2013 9/30/2013 Jotu2013/KSY 1
Tiedotettavaa Tämän viikon harjoitukset salissa TC217! Tarvitaan lintulan tunnukset; kaavakkeet ja postilaatikko salin TC217 edessä. Ensi viikolla vierailuluento 9/30/2013 Jotu2013/KSY 2
Kaaviotekniikoista 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 9/30/2013 Jotu2013/KSY 3
Historiaa 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 Tällä kurssilla pikku detaljeille ei ole merkitystä 9/30/2013 Jotu2013/KSY 4
Käyttötapauskaavio Kaaviotyypit (UML 1.x) Luokkakaavio Tap.sekv.kaavio Yhteistyökaavio Use Use case case diagram Class/Package/Object diagrams Sequence diagram Collaboration diagram Driver driver Handle tree Tree 1..* Log Driver pine:tree :Log Cut <<create>> calcullate 1. Cut 2. Feed :Log 2.1. setmeasures Cut log pine: Tree :Tree Feed setmeasures pine:tree 1.2. calculate 1.1. <<create>> popularity: 3, complexity: 1 Aktiviteettikaavio Activity diagram popularity: 3, complexity: 3 Tilakaavio State machine diagram (State chart) popularity: 3, complexity: 1 Komponenttikaavio Component diagram popularity: 2, complexity: 1 Sijoittelukaavio Deployment diagram H Catch hold of tree H Saw idle H.U.I. Production <<Laptop>> H.U.I. H.U.I. Fall the tree Cut / ^Start chain CutOK / ^StopChain Production <<CAN>> Production Feed&saw Select tree variety H H Saw operational Production Tree Log <<processor>> Main Unit popularity: 2, complexity: 3 popularity: 2, complexity: 3 popularity: 2, complexity: 2 popularity: 1, complexity: 2 9/30/2013 Jotu2013/KSY 5
UML 2.0 kaaviotyypit Diagram Structure diagram Behavior Diagram Class Diagram Component Diagram Object Diagram Activity Diagram Use Case Diagram State Machine Diagram Interaction Diagram Composite Structure Diagram Deployment Diagram Package Diagram Sequence Diagram Collaboration Diagram Interaction Overview Diagram Timing Diagram 9/30/2013 Jotu2013/KSY 6
Jotu oliot, ohjarkki - teht. Esimerkki tyypillisestä käytöstä 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) Huom. Kaavioilla ei juurikaan päästä käsiksi ei-toiminnallisiin 9/30/2013 Jotu2013/KSY 7
Kaksi eri käyttöä Ongelman ja ympäristön kuvaaminen Tuoteutettavan järjestelmän kuvaaminen 9/30/2013 Jotu2013/KSY 8
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). 9/30/2013 Jotu2013/KSY 9
Kaavioiden ilmaisuvoimasta Kaikkien sallittujen tilanteiden olisi 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? 9/30/2013 Jotu2013/KSY 10
Työkaluista 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 MagicDraw:n käyttöä harjoitellaan harjoituksissa 9/30/2013 Jotu2013/KSY 11
Käyttötapauskaaviot Tree 1..* Log Handle tree driver pine: Tree :Tree Cut log H Saw idle Driver pine:tree :Log Cut / ^Start chain CutOK / ^StopChain Cut <<create>> calcullate H Saw operational Feed setmeasures 9/30/2013 Jotu2013/KSY 12
Dipparekisteri Lisää uusi opiskelija Lisää uusi kenttä Ohjaaja Etsi ehdot täyttävät opiskelijat Tee palaverimuistio Lisää/poista ohjaaja Kirjoita lausunto Laitoksen johtaja Tarkastele tilastoja
Järjestelmä X KT1 Aktori1 <<extend>> KT2 KT4 <<include>> KT3 Aktori2 <<actor>> SAP
Tilakaaviot Käytetään esimerkiksi elektromekaanisten laitteiden toiminnan mallintamiseen perinteinen oliomallintamiseen ja olioiden elinkaarien selvittelyyn algoritmien ja liiketoimintasääntöjen kuvaamiseen liiketoimintaprosessien selvittelyyn. 9/30/2013 Jotu2013/KSY 15
Notaatiosta Tilan nimi entry/action exit/action do/action eventname/action eventname/defer eventname(par)[guard]/action tila Jotu2013/KSY 16 9/30/2013
Yksinkertainen esimerkki Soitin Alusta do/luukku auki pause/keskeytä soitto Auki play/luukku kiinni, aloita soitto stop tai levy loppu/avaa luukku Soita play/jatka soittoa Virtakatkaisin Jotu2013/KSY 17 9/30/2013
Hierarkkiset tilat Soitin Alusta do/luukku auki Soita Auki play stop play Pause Virtakatkaisin Jotu2013/KSY 18 9/30/2013
Rinnakkaiset tilat Soitin Herätys Alusta Do /luukku auki Soita Pois Auki play stop play Pause Päällä Virtakatkaisin Jotu2013/KSY 19 9/30/2013
9/30/2013 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 Jotu2013/KSY 20
aktiviteettikaaviot avaa do/avaa ilmoittautuminen /ilmlkm=0 jouten when (time=ilmpäättymisaika)/ Kurssi::ilmoittaudu/ Kurssi::tarkasta esitiedot [else] [OK]/ilmLkm=ilmLkm+1 OK-ilmoitus do/lisää yhteys käyttäjän ja kurssin välille do/informoi käyttäjää notok do/informoi käyttäjää 9/30/2013 sulje ilmoittautuminen do/sulje ilmoittautuminen Jotu2013/KSY 21
Rinnakkaisuus aktiviteettikaavioissa Valmistele tietokannat Haku kannasta 1 Haku kannasta 2 Haku kannasta 3 Koosta raportti Jotu2013/KSY 22 9/30/2013
Sekvenssikaaviot Jotu2013/KSY 23 9/30/2013
Esimerkki tapahtumasekvenssistä Aihetta pohdiskellaan työpaikalla proffan kanssa Dippatyötä tehdään, palavereita ohjaajien kanssa : opiskelija : ohjaava professori aiheanomus : ohjaaja työpaikalla allekirjoitettu aiheanomus aihe OK valmis työ valmis työ Tiedekunta Molemmat ohjaajat tekevät lausunnon lausunto lausunto tiedekuntaneuvoston kokous hyväksyy työn hyväksyminen, arvosana 9/30/2013 Jotu2013/KSY elämänlanka 24
9/30/2013 Notaatio : Sovellus : Tdstojärjestelmä : Laiteajuri : Levyohjain lue tdston tavut 1200-1209 Päättele tavunumeroista vastaavan levylohkon numero (esimerkiksi 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) Jotu2013/KSY 25
9/30/2013 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 Jotu2013/KSY <<destroy>>) 26
: Controller : View forminit checkscreen initializationok datachange gettemperatures changeddata finalizeform <<create>> <<destroy>> : C2 Jotu2013/KSY 27 9/30/2013
sd Varmista esitiedot Sales System Customer signon loop [while Negotiations left] ref Negotiate alt [Negotiation OK] ref handlepurchase [Negotiation not OK] ref handlefailure 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 Jotu2013/KSY 28 9/30/2013
Käsitekaaviot Tiedon ja käsitteiden kuvaamiseen 9/30/2013 Jotu2013/KSY 29
Esitetään useimmiten graafisesti Oliokaavio Luokkakaavio (UML) ER-kaavio (entity-relationship kaavio) Tietoyhteyskaavio Käsitekaavio Kohdekaavio 9/30/2013 Jotu2013/KSY 30
Käsitekaavio (UML:n luokkakaavio) Nimi Ominaisuudet lkm nimi lkm Nimi Ominaisuudet Metodit Metodit 9/30/2013 Jotu2013/KSY 31
Esimerkki kuvaa Opiskelija -nimi -osoite -opiskelijanro * * osallistuu * Kurssi -luentosali -luentoajat -vastuuhenkilö -ilmpäättymisaika -ilmlkm * Suoritus -arvosana -pvm * 1 Opintojakso -opmaara -kuvaus * * 9/30/2013 Jotu2013/KSY 32 esitietovaatimus
Esimerkki navigointisuunta lukusuunta Opiskelija nimi op.nro osoite osallistuu 1..* 0..* kurssi kurssitunnus periodit lukukausi <kuvaa 0..* 1 opintojakso kuvaus ilmoittaudu() 0..* suoritus 1 kuuluu 0..* tentti 0..* luennoi 0..1 opettaja nimi osoite henkilönro 0..* suoritus arvosana ov-määrä pvm assosiatioluokka UML 2.x navigointi Undefined Navigable direction Non-navigable direction 9/30/2013 Jotu2013/KSY 33
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() 9/30/2013 Jotu2013/KSY 34
Tietovuokaaviot Tietovuokaaviot olivat yleisiä ennen UML:ää Niillä on edelleen faninsa 9/30/2013 Jotu2013/KSY 35
Vaara-anturi Operaattori MaaRo Liukuhihna käynnistä maaliloppu ohjaus Käsi Maalisäiliö
Vaara-alue Liukuhihna Operaattori 6* pysäytä hihna käynnistä vaara 5* siirrä hihnaa tilanne komento 1* ohjaa robottia status maaliloppu e/d ohjaus 2* Käyttöliittymä e/d valmis maalausreitti 3* maalaa manuaalisesti Maalisäiliö asema Käsi 4* maalaa automaattisesti käden ohjaus ohjaus = [seis siirrä käsikäyttö automaatti] status = [seis seis&siirtää käsikäytössä maalaa maalaa&siirtää]