Kaaviotekniikoista (erityisesti UML) (ajan riittäessä pikkasen projekteista) Kari Systä 05.10.2015 9/30/2013 Jotu2013/KSY 1
Ajankohtaista kurssista Keskiviikon viimeinen viikkoharjoitus saatetaan lopettaa (paikalla oli vain 2) Välipalautus 16.10 Muista päivittää asiakasvaatimuksen sen mukaan mitä sovitte asiakastapaamisissa Muistakaa asentaa MagicDraw viikkoharjoituksia varten Torstaina 8.10 ei ole 16-18 harjoituksia (käykää jossakin muussa ryhmässä) 9/30/2013 Jotu2013/KSY 2
Välipalautuksessa dokumenttiin Lyhyt kuvaus toteutettavasta järjestelmästä Mikä on järjestelmän tarkoitus Ketkä ovat järjestelmän oletettuja käyttäjiä Millaisessa laite- ja ohjelmistoympäristössä järjestelmä toimii... Yleiskuvaus järjestelmän tarjoamista toiminnoista Esim. toimintolista näkymittäin Kuvaus eri näkymille yhteisistä osista Navigaatiokartta eri näkymien välillä miten eri näkymät liittyvät toisiinsa ja miten niiden välillä liikutaan. 9/30/2013 Jotu2013/KSY 3
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 4
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 5
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 6
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 7
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 8
Eri käyttöjä käyttöä Ongelman ja ympäristön kuvaaminen Toteutettavan järjestelmän kuvaaminen Toteutetun järjestelmän dokumentointi 9/30/2013 Jotu2013/KSY 9
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 10
Työkaluista Jos et osaa paperilla ja kynällä ei välineestä ole apua. Välineet voidaan karkeasti jakaa case-välineisiin ja piirtoohjelmiin, 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. Tukevat dokumentointia. Tukevat ryhmätyötä. Jotkut lupaavat automaattista koodin generointia Demot ja pienet ohjelmaesimerkit antavat usein liian ruusuisen kuvan. Oppimiskynnys korkeahko. 9/30/2013 Jotu2013/KSY 11
Piirto-ohjelmat (esim. MS Visio) Hinta muutamia satoja eroja. Ainakin Visiossa melko hyvä UML-tuki, lähestyy CASEvälineen ominaisuuksia. Hyvä valinta, jos ei tarvitse CASE-välineen tietokannan tuomia lisäetuja. Ilmaisiakin ohjelmiakin löytyy verkosta, mm: YED: https://www.yworks.com/en/products/yfiles/yed/ ArgoUML: http://arguuml.tigris.org Verkkopalvelut: https://creately.com https://www.gliffy.com/ Tällä kurssilla saa piirtää millä haluaa, saatavissa MagicDraw, MagicDraw:n käyttöä harjoitellaan harjoituksissa 9/30/2013 Jotu2013/KSY 12
Kurssilla vaadittavat kaaviot Käyttötapauskaaviot Käsitekaaviot Navigaatiokartat (Tilakaaviot) (Sekvenssikaaviot) (Vuokaaviot) 9/30/2013 Jotu2013/KSY 13
Oleelliset 1 kaaviot: Käyttötapauskaaviot Kuvaa mitä järjestelmällä tehdään ja kuka sen tekee Ei kuvaa miten se tapahtuu, Ei määrittele käyttöliittymää Ohjaaja Dipparekisteri Lisää uusi opiskelija Etsi ehdot täyttävät opiskelijat Lisää uusi kenttä Tee palaverimuistio Laitoksen johtaja Lisää/poista ohjaaja Kirjoita lausunto 1 Tällä kurssilla Tarkastele tilastoja 9/30/2013 Jotu2013/KSY 14
Oleelliset kaaviot: käsitekaaviot Kuvaa mitä järjestelmän tiedon ja tietojen väliset suhteet Usein myös kunkin tiedon ominaisuudet Tarvittaessa myös operaatiot Opiskelija Osallistuu 0..* 0..* Toteutuskerta 1..* 1 Suoritus Opintojakso 9/30/2013 Jotu2013/KSY 15
Jatketaan viime kerran esimerkkiä (saa selvää vain animointien kanssa) Opintokokonaisuus Opiskelija Ilmoittautuu 1 Osallistuu 0-* 1-* Oppimistapahtuma Luento 1..* 1-* Toteutuskerta Opintojakso 1-* 0-* 0-* 0-* Esitieto -> Luennoija Viikkoharjoitus Harjoitustyö 0-* Assistentti 9/30/2013 Jotu2013/KSY 16
Lopputulos Opintokokonaisuus Opiskelija Ilmoittautuu 1 Osallistuu 0-* 1-* Oppimistapahtuma Luento Toteutuskerta 1-* 0-* Luennoija 1-* 1..* Opintojakso 0-* 0-* Esitieto -> Viikkoharjoitus Harjoitustyö 0-* Assistentti 9/30/2013 Jotu2013/KSY 17
Jatkoa Opiskelija - Nimi - Opnum - Osoite? Osallistuu 0..* 0..* Toteutuskerta - ilmoittautuneet - Lisää ilmoittaut. - Kirjaa suoritus 1..* 1 Suoritus Opintojakso - Opintopistemäärä - Oppimistavoitteet Opintojakso 9/30/2013 Jotu2013/KSY 18
Mitäs siellä virallisissa spekseissä oli? 9/30/2013 Jotu2013/KSY 19
Lisää 9/30/2013 Jotu2013/KSY 20
9/30/2013 Jotu2013/KSY 21
Navigaatiokartta (mietitään vaikka piirto-ohjelmaa) Ensimmäinen askel kohti toteutusta ok Alku Kirjautuminen Pääikkuna Virhe uusi Avaa tiedosto peruuta Työskentely Valitse Tiedoston valinta 9/30/2013 Jotu2013/KSY 22
Navigaatiokaatiokartta Ensimmäinen askel kohti toteutusta Alku Kirjautuminen ok Pääikkuna Virhe uusi avaa peruuta Työskentely Valitse Tiedoston valinta 9/30/2013 Jotu2013/KSY 23
Tähän lisää navigaatiokaavioista 9/30/2013 Jotu2013/KSY 24
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 25
Tilakaaviot Kello on 1415 Luento käynnissä Tauko 9/30/2013 Jotu2013/KSY 26
Notaatiosta (jos kaikkea UML:n yksityiskohtia noudatetaan) Tilan nimi entry/action exit/action do/action eventname/action eventname/defer Case-työkalut käyttää eventname(par)[guard]/action tila 9/30/2013 Jotu2013/KSY 27
Yksinkertainen esimerkki Soitin Alusta pause/keskeytä soitto Auki play/luukku kiinni, aloita soitto stop tai levy loppu/avaa luukku Soita play/jatka soittoa Virtakatkaisin Jotu2013/KSY 28 9/30/2013
Hierarkkiset tilat Soitin Alusta Soita Auki play stop play Pause Virtakatkaisin Jotu2013/KSY 29 9/30/2013
Rinnakkaiset tilat Soitin Herätys Alusta Päälläi Soita Auki play stop play Pause Päälläi Virtakatkaisin Jotu2013/KSY 30 9/30/2013
SEKVENSSIKAAVIOT Jotu2013/KSY 31 9/30/2013
Esimerkki kurssilta Jotu2013/KSY 32 9/30/2013
Kirjasta Jotu2013/KSY 33 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 Osastoneuvoston kokous hyväksyy työn hyväksyminen, arvosana 9/30/2013 Jotu2013/KSY elämänlanka 34
VUOKAAVIOT (FLOWCHARTS) Jotu2013/KSY 35 9/30/2013
Vuokaaviot Ovat lähes kuin koodia Varsinkin ennen käytettiin ohjelmoinnin opetuksessa Voidaan myös käyttää erilaisten toimintalogiikoiden esittämiseen Jotu2013/KSY 36 9/30/2013
Muistatteko tämän? Lisää testi OK Aja testi EI Lisää koodi Aja testi EI OK Jotu2013/KSY 37 9/30/2013
EI Onko se rikki? KYLLÄ Älä koske Tyhmä! KYLLÄ Koskitko? EI EI Piilota Tietääkö joku? KYLLÄ Voi sinua KYLLÄ Syytetäänkö sinua EI Voitko syyttää muita? KYLLÄ EI Syytä muita! 9/30/2013 Kaikki ok Jotu2013/KSY 38
Yhteenvetoa kaavioista Auttavat keskustelussa ja hahmottelussa Dokumentoivat ja helpottavat muistamista Tietyt standardi -konventiot on hyvä tietää Värit yms ei kuulu standardinotatioon, mutta niitä voi halutessaan käyttää mutta järkevästi Komponenttien sijainnilla on merkitystä muistamisen kannalta Jotu2013/KSY 39 9/30/2013
Lisää materiaalia täältä http://www.ibm.com/developerworks/rational/library/769.html Käsitekaaviot: http://www.ibm.com/developerworks/rational/library/content/rati onaledge/sep04/bell/ Sekvenssikaaviot: http://www.ibm.com/developerworks/rational/library/3101.html Jotu2013/KSY 40 9/30/2013