Kuvaustekniikoista menetelmiin Kurssin loppuosa käsittelee kuvausmenetelmiä ja tekniikoita. Tarkoituksena on antaa valmiudet sekä laatia että ymmärtää erilaisia ohjelmistotuotannossa yleisesti käytössä olevia kuvauksia. Esiteltävät kuvaustekniikat ovat puoliformaaleita eli niihin liittyy toisaalta formaalille kuvaukselle ominaista täsmällisyyttä ja toisaalta vapaan ilmaisun luomaa helppoutta ja luonnollisuutta. Aihepiiriä käsitellään tässä ja seuraavissa luvuissa laajasti eri tarkoituksiin soveltuvia tekniikoita ja menetelmiä esitellen. Eri kuvauskohteisiin soveltuvat erilaiset kuvausmenetelmät tästä johtuu laaja kuvausmenetelmien kirjo. Yritysten ohjeistot (määrittelymenetelmät, suunnittelumenetelmät) standardoivat yleensä hyvinkin tarkkaan yrityksen kuvauskäytännöt sekä dokumenttimallien että menetelmien osalta. Tekijälle ohjeistus antaa työskentelyn puitteet, dokumenaatiota lukevalle taas mallin odotettavissa olevasta dokumentaation rakenteesta ja muodoista. Olennaista on, että kuvaukset ovat aina odotetunlaisia ja samankaltaisia kaikissa projekteissa. Kuvausmenetelmiä on syytä opetella käyttämään menetelmän periaatteiden mukaisesti sallien kuitenkin luonnollisella kielellä esitettäviä selitteitä ja täydennyksiä niiden osana. Kurssin esittelemät kuvausmenetelmät pohjautuvat pitkälti UML-standardiin. Kurssilla käsitellään myös joitain UML-standardiin kuulumattomia menetelmiä, jotka ovat tarkoituksenmukaisia käytettäväksi joissain erityiskohteissa. Kuvausmenetelmiä koskeva osuus lähtee liikkeelle toimintojen ja tietojen kuvausmenetelmistä. Tämän jälkeen käsitellään luokka- ja käsitekaavioita, tilakaavioita, tapahtumasekvenssien eli vuorovaikutuksen kuvaamista ja tietovirtakaavioita. Käsittelyn lopuksi esitellään eräs tapa sitoa eri kuvausmenetelmät toimivaksi järjestelmän määrittelymenetelmäksi eli käytännössä määrittelydokumentaation rakenne. Toimintojen ja tietojen kuvauksessa käydään läpi algoritmien kuvaamisen tekniikoita, päätöstilanteiden kuvauksessa käytettäviä menettelytapoja sekä tietohakemistomäärittelyn käyttöä tietojen kuvaamisessa. Exit
Sisällys Kuvattavat kohteet Johdatus UML-kuvauksiin Terminologiaa Mallinnus Mallien jäsentely Näkymät ja kaaviot UML-kaaviotyypit kehitystyössä UML-kaavioiden kuvausvoima UML:n perusosat Laajennusmekanismit UML ja OMT++ UML ja Simplified Method Kuvaustekniikat Kulkukaavio Rakenteinen kulkukaavio Pseudokoodi Aktiviteettikaavio Päätöspuut ja -taulut Esi- ja jälkiehdot Tietohakemistomäärittely BNF-notaatio Harjoitus Kertauskysymykset Kuvaustekniikoista menetelmiin 2
Kuvattavat kohteet Kuvauskäytännöt ei-toiminnalliset ominaisuudet: suorasanainen teksti, kaavat, taulukot, rajoitteet ja reunaehdot: suorasanainen teksti, toiminnalliset ominaisuudet: kuvaustarpeeseen sopivat notaatiot, joita voidaan täydentää suorasanaisella tekstillä ohjeistus määrittää käytettävät notaatiot ja niiden käyttötavan kehitysmenetelmän osana kehitysmenetelmät: notaatioita yhdistelemällä saatuja kokonaisvaltaisia (kuvausten kokonaistarpeet tyydyttäviä) kuvauskäytäntöjä ohjeistaa menetelmien valinnan ja niiden käyttötavan OMG - UML (standardi?) Booch, Rumbaugh, Jacobsson [http://www.rational.com/uml/index.jtmpl] Kuvaustekniikoista menetelmiin 3
Johdatus UMLkuvauksiin Introduction to UML: Structural Modeling and Use Cases Exit
Terminologiaa näkymä (view): kuvaa mallinnettavan järjestelmän eri näkökulmista näkymän kuvaus koostuu useista kaavioista kaavio (diagram): kuvaustekniikkaa käyttäen tehty kuvaus; UMLään sisältyy kuvaustekniikka yhdeksän eri kaavion tekemiseen mallinnuselementti (model element): vastaa olioohjelmoinnin käsitteitä (luokka, yhteys, riippuvuus, ); käytetään erityyppisissä kaavioissa merkityksen muuttumatta yleiset merkinnät (general mechanism), ym:n avulla kuvauksiin voidaan liittää tarkenteita ja laajentaa peruskuvauksia UML:n UML:n kuvausnotaatioita kuvausnotaatioita tarkastellaan tarkastellaan tässä tässä katsauksenomaisesti. Lisätietoja katsauksenomaisesti. Lisätietoja voi voi etsiä etsiä kurssin kurssin seuraavista seuraavista luvuista luvuista ja ja aihetta käsittelevistä aihetta käsittelevistä oppikirjoista. oppikirjoista. Kuvaustekniikoista menetelmiin 5
Mallinnus Mallien generointi, tarkistus,... Takaisinmallinnus Mallinnus Koodi Koodin generointi Järjestelmä Lähde: K.Koskimies (2000),UML-kurssin materiaali.tarkemmin: Pieni oliokirja, Suomen ATK-kustannus Mallintaminen Mallintaminen on on todellisuuden abstrahointia todellisuuden (yksinkertaistaminen). abstrahointia (yksinkertaistaminen). Hyvä Hyvä malli rakentuu malli rakentuu samoista samoista toimijoista toimijoista ja toiminnoista ja toiminnoista kuin kuin todellisuuskin. todellisuuskin. Kuvaustekniikoista menetelmiin 6
Mallien jäsentely: 4+1 Views käyttötapausnäkymä (use case view): järjestelmän toiminta ulkopuolisen toimijan (actor) kannalta looginen näkymä (logical view): järjestelmän sisäinen toiminnallisuus pysyvien rakenteiden (staattinen) ja muuttuvien (dynaaminen) toimintojen kannalta komponenttinäkymä (component view): lähdemoduulien rakenne samanaikaisuusnäkymä (concurrency view): samanaikaisuutta sisältävän järjestelmän yhteistoiminta kommunikaation ja synkronoinnin kannalta sijoittelunäkymä (deployment view): järjestelmän käyttöönotto eri tietokoneissa ja oheislaitteissa (solmuissa - nodes) Kuvaustekniikoista menetelmiin 7
näkymät (Eriksson, Penker) komponenttikaaviot komponenttinäkymä looginen näkymä staattinen:: luokkakaaviot oliokaaviot dynaaminen tilakaaviot sekvenssikaaviot yhteistyökaaviot aktiviteettikaaviot käyttötapauskaaviot aktiviteettikaaviot käyttötapaus näkymä Käyttötapausnäkymä Käyttötapausnäkymä on kehitystyön on kehitystyön perusta (asiakastarpeet). perusta (asiakastarpeet). Muiden Muiden näkymien kuvaus näkymien kuvaus perustuu perustuu tähän. tähän. sijoittelukaaviot sijoittelu näkymä samanaikaisuus näkymä dynaamiset kaaviot tilakaavio sekvenssikaaviot yhteistyökaaviot aktiviteettikaaviot toteutuskaaviot komponenttikaaviot käyttöönottokaaviot Kuvaustekniikoista menetelmiin 8
Käyttötapausnäkymä järjestelmän toiminta ulkoisen toimijan kannalta hyödyntäjä: asiakkaat, suunnittelijat, kehittäjät, testaajat ohjaa muiden näkymien kehitystä järjestelmän tavoite on toteuttaa käyttötapausnäkymä Käyttötapaukset testauskuvauksina Käyttötapaukset toimivat toimivat testauskuvauksina järjestelmätestaukselle Kuvaustekniikoista menetelmiin 9
Looginen näkymä kuinka järjestelmän toiminnat on toteutettu kuvaa pysyvät rakenteet: luokat, suhteet, dynaamiset rakenteet: yhteistyö ominaisuudet (säilyvyys, samanaikaisuus) ulkoiset rajapinnat sisäiset rakenteet hyödyntäjä: suunnittelijat, kehittäjät Kuvaustekniikoista menetelmiin 10
Komponenttinäkymä moduulien toteutus ja riippuvuudet käyttäjät: kehittäjät komponentit ovat erilaisia koodimoduuleita, joiden rakennetta ja riippuvuuksia näkymä kuvaa Kuvaustekniikoista menetelmiin 11
Samanaikaisuus- ja sijoittelunäkymät samanaikaisuusnäkymä järjestelmän jako prosesseihin ja prosessoreihin rinnakkaisuus, säikeistys, synkronointi, kommunikaatio, käyttäjät: kehittäjät, integraattorit sijoittelunäkymä järjestelmän fyysinen sijoittelu solmut (tietokoneet) ja niiden välinen riippuvuus koodimoduulien sijoittelu solmuihin, käyttäjät: integraattorit, kehittäjät, testaajat Kuvaustekniikoista menetelmiin 12
Näkymät ja kaaviot (Rational Rose) Näkymät use use case case logical component deployment Kaaviot luokka- olio- olio- sekvenssi- yhteistyö tila- tila- aktiviteetti- komponentti- sijoittelu- Kuvaustekniikoista menetelmiin 13
UML-kaaviotyypit kehitystyössä Esimerkkejä Rakenne Oliokaaviot Käyttäytyminen Ohjelmistokehitys Käyttötapauskaaviot Sekvenssikaaviot Yhteistyökaaviot Aktiviteettikaaviot Sijoittelukaaviot Luokkakaaviot Tilakaaviot Komponenttikaaviot Lähde: K.Koskimies (2000) Staattinen Staattinen rakenne rakenne Dynamiikka Dynamiikka Perusidea Perusidea mallintamisessa: mallintamisessa: esimerkkien avulla esimerkkien avulla kuvatut kuvatut tilanteet tilanteet yleistetään rakenne- yleistetään rakenneja ja käyttäytymiskuvauksiksi käyttäytymiskuvauksiksi Kuvaustekniikoista menetelmiin 14
UML-kaavioiden kuvausvoima Luokkakaaviot Komponenttikaaviot Sijoittelukaaviot Tapahtumasekvenssik.:t Yhteistyökaaviot Tilakaaviot Aktiviteettikaaviot Käyttötapauskaaviot Rakenne Vuorovaikutus Olion käyttäytyminen Järjestelmän käyttäytyminen Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 15
Kaaviot käyttötapauskaavio (use case diagram) kuvaa asiakasvaatimukset käyttötapausten muodossa luokkakaavio (class diagram) järjestelmän luokkarakenne oliokaavio (object diagram) luokkakaavion muunnelma, kuvaa luokkarakennetta ilmentymätasolla (esimerkit, joista yleistetään luokkakaavio) tilakaavio (state diagram) (mm.) luokan toiminnan kuvaus Kuvaustekniikoista menetelmiin 16
kaaviot sekvenssikaavio (sequence diagram) synonyymi: tapahtumasekvenssikaavio, viestiyhteyskaavio, kommunikointikaavio dynaaminen olioiden (luokkien) välinen yhteistyö käytetään kun ajan kuluminen tai viestisarja on tärkeä esimerkkejä, joista yleistetään toimintokuvaus yhteistyökaavio (collaboration diagram) synonyymi: oliointeraktiokaavio dynaaminen olioiden välinen yhteistyö käytetään kun olioiden suhde kommunikoinnissa on tärkeä Kuvaustekniikoista menetelmiin 17
kaaviot aktiviteettikaavio (activity diagram) synonyymi: toimintokaavio toiminnon kulun kuvaaminen komponenttikaavio (component diagram) lähdekoodin fyysinen rakenne voidaan ryhmitellä paketteihin tuki ohjelmointityölle sijoittelukaavio (deployment diagram) synonyymi: käyttöönottokaavio järjestelmän laitteiston ja ohjelmiston fyysinen rakenne solmut (tietokoneet, laittet, ) ja niiden väliset yhteydet Kuvaustekniikoista menetelmiin 18
Kaaviot all in one Käyttötapaus Luokka- ja oliokaavio Tapahtumasekvenssikaavio Yhteistoimintakaavio Kuljettaja Kuljettaja Käsittele puu Puu 1..* Tukki Mänty :Puu :Tukki Kuljettaja Sahaa <<create>> AsetaMitat 1. Sahaa 2. Syötä :Tukki 2.1. AsetaMitat Sahaa tukki Mänty :Puu :Tukki Syötä AsetaMitat Mänty :Puu 1.2. AsetaMitat 1.1. <<create>> Aktiviteettikaavio Tilakaavio Komponettikaavio Sijoittelukaavio H Tartu puuhun kouralla H Saha suojassa H.U.I. ITuotanto <<Laptop>> H.U.I. H.U.I. Kaada puu Sahaa / ^KäynnistäTerä PuuPoikki / ^PysäytäTerä Tuotanto <<CAN>> Tuotanto Syötä ja sahaa Valitse puulaji H H Saha ulkona Tuotanto Puu Tukki <<processor>> Main Unit Lähde: I.Haikala Kuvaustekniikoista menetelmiin 19
UML:n perusosat Luokka Elementit nimi nimi Riippuvuus Suhteet Olio olionnimi: luokannimi olionnimi: luokannimi Assosiaatio * rooli 0..1 Tila nimi Kooste Pakkaus nimi Yleistys (Periytyminen) Toteutus Kommentti teksti jne. jne. Kuvaustekniikoista menetelmiin 20
Käyttötapauskaavio Kukin Kukin käyttötapaus käyttötapaus kuvataan kuvataan yksityiskohtaisesti yksityiskohtaisesti käyttötapauskuvauksena (tekstimuoto) (tekstimuoto) Ajoneuvojen vuokrausjärjestelmä Varaus Käyttöönotto Asiakas Palautus <<include>> Huolto Virkailija Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 21
Oliokaavio Olio Olio todellinen todellinen Luokka Luokka --yleistys yleistys : KohdeHallinto Kaksi Kaksi eri eri autoa, autoa, sama sama kohdehallinto. kohdehallinto. Yleistys Yleistys luokkakaaviona. luokkakaaviona. auto1: HenkilöAuto rekisterinumero = XYZ-999 auto2 : HenkilöAuto rekisterinumero = ABC-123 Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 22
Luokkakaavio Kaksi Kaksi esimerkkiautoa esimerkkiautoa = yhteys yhteys monta monta Kohde palauta varaa otakäyttöön hallinnoi * 1 KohdeHallinto palauta(kohde, Varasto) varaa(kohde) otakäyttöön(kohde) Varasto HenkilöAuto rekisterinumero huolla(int km) palauta Talleta Talletahuolto- informaatio informaatio (palauta (palautakutsuu) ParkkiAlue Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 23
Sekvenssikaavio UI : KohdeHallinto auto: HenkilöAuto parkki: ParkkiAlue palauta(auto, parkki) palauta() varastoi(auto) Lähde: K.Koskimies (2000) Esimerkki Esimerkki interaktiosta interaktiosta (toimijoina (toimijoina oliot oliot ei ei luokat) luokat) Kuvaustekniikoista menetelmiin 24
Yhteistyökaavio Sama Sama toiminnallisuus toiminnallisuus edellisen edellisen kaavion kaavion kanssa kanssa 1.1: palauta() auto: Henkilöauto : KohdeHallinto 1: palauta(auto,parkki) 1.2: varastoi(auto) parkki: ParkkiAlue UI Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 25
Tilakaavio Auto-olion käyttäytyminen: Auton Auton tilojen tilojen muutosten muutosten tarkastelu tarkastelu avustaa avustaa toiminnallisuuden toiminnallisuuden suunnittelussa suunnittelussa Käytettävissä palauta/ lopeta ajan lasku Käytössä valmis huolla otakäyttöön/ aloita ajan lasku Huollossa Varattu do/huoltoilmoitus varaa Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 26
Aktiviteettikaavio Asiakas Pyydä auto Virkailija Tee varaus :lasku [ei maks] Tee lasku :lasku [maks] Maksa Valmistele auto Lähde: K.Koskimies (2000) Ota auto Kolme Kolme toimintosekvenssiä. Synkronointi. toimintosekvenssiä. Synkronointi. Rekisteröi vuokraus Kuvaustekniikoista menetelmiin 27
Komponenttikaavio GUI Komponentit Komponentit ja ja rajapinnat rajapinnat (interface) (interface) Auton- Vuokraus VuokrausToiminta Tietokantaliittymä KohdeKanta Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 28
Sijoittelukaavio Asiakaspiste: Asiakas : GUI Ajoneuvorekisteri: Palvelin : XTietokantaliittymä : Auton- Vuokraus <<IP>> Kohde- Kanta : XTietokanta Edellisen Edellisen kuvan kuvan komponenttien komponenttien sijoittelu sijoittelu järjestelmäkomponentteihin Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 29
Mallinnuselementit Elementit Luokka Nimi Riippuvuus Suhteet Tila Nimi Assosiaatio * rooli 0..1 Kooste Pakkaus nimi Yleistys (Periytyminen) Kommentti Teksti Toteutus Rajapinta Käyttötapaus Komponentti (pakkaus) Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 30
mallinnuselementit kaavion symbolille on määritelty yksikäsitteinen semantiikka sama elementti voi olla käytössä useissa eri kaavioissa (UML:n säännöt määrittävät käytettävyyden rajat) mallinnuselementtejä voidaan täsmentää ja laajentaa yleisillä merkinnöillä ja laajennusmerkinnöillä mahdollisuus omien elementtien rakentamiseen Seuraavien Seuraavien esimerkkien esimerkkien avulla avulla annetaan annetaan yleiskuva yleiskuva UML:n UML:n kuvauksista. kuvauksista. Ne Ne on tarkoitettu on tarkoitettu esimerkeiksi. esimerkeiksi. Aiheeseen Aiheeseen perehtyminen perehtyminen edellyttää edellyttää soveltuvaan oppikirjaan soveltuvaan oppikirjaan tutustumista. tutustumista. Kuvaustekniikoista menetelmiin 31
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 Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 32
Pakkausten suhteet Tuki <<import>> Tietokanta Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 33
Yleiset merkinnät ja laajennukset koristeet (adornments) lisäävät elementtiin lisämerkityksiä esimerkkejä: viivan paksunnos, bold- tai ul-teksti huomautukset (notes): voidaan sijoittaa minne tahansa täsmentämään, rajoittamaan jne. merkkinono (teksti): liitetään yleensä katkoviivalla elementtiin Teksti Teksti Kuvaustekniikoista menetelmiin 34
Laajennusmekanismit: stereotyypit Stereotyyppi (stereotype) määrittelee uuden mallialkiotyypin olemassa olevan laajennoksena teknisesti uusi UML meta(ali)luokka UML määrittelee joukon standardistereotyyppejä käyttäjä voi antaa omia merkitys voidaan jättää epäformaaliksi tai määritellä esim. rajoitteilla voi olla oma ikoni ikoni Stereotyyppi merkitään: Esimerkki: <<stereotyypin nimi>> <<exception>> Overflow <<exception>> Overflow Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 35
Laajennusmekanismit: malliparametrit Malliparametri (tag) koostuu malliparametrin nimestä ja arvosta sallii mielivaltaisen informaation liittämisen mallin osiin ei muuta mallin merkitystä käytetään esimerkiksi koodin tuottamisessa tai konfiguraationhallinnassa Esimerkki: MyClass {version = 1.2} Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 36
Laajennusmekanismit: rajoite Rajoite (constraint) rajoittaa mallin mahdollisia toteutumia ehto, jonka jokaisen mallin mukaisen järjestelmän täytyy täyttää standardi (nimetty), vapaamuotoinen tai formaali (OCL) Yritys Ministeriö * {xor} 0..1 omistaa aviomies 0..1 johtaa 0..1 vaimo Henkilö sukupuoli OCL: {(self.aviomies->size=1 {(self.aviomies->size=1 implies implies self.aviomies.sukupuoli self.aviomies.sukupuoli = = mies) mies) and and (self.vaimo->size=1 (self.vaimo->size=1 implies implies self.vaimo.sukupuoli self.vaimo.sukupuoli = = nainen) nainen) and and not(self.vaimo->size=1 not(self.vaimo->size=1 and and self.aviomies->size=1)} self.aviomies->size=1)} Lähde: K.Koskimies (2000) * {ordered} Kuvaustekniikoista menetelmiin 37
UML ja kehitysmenetelmät (OMT++) Analyysimalli Dialogimallit Suunnitteluvaiheen luokkamalli Vaatimukset Koodi Class C { } User System User UI System User View Contr void C::m() { } Käyttötapaukset Operaatiospesifikaatiot Tehtäväspesifikaatiot Suunnitteluvaiheen tapahtumasekvenssit Lähde: K.Koskimies (2000) Kuvaustekniikoista menetelmiin 38
UML ja kehitysmenetelmät: Simplified Method Vaatimukset UseCaseA UseCaseB Use Case C Muut Vaat. Suunnitteluoliomalli Määrittelyoliomalli Toimintolista Operaatio Operaatio X attribute attribute Y attribute Operaatio Operaatio X function2 function3 attribute attribute X function2 function3 attribute attribute Tapahtumakaaviot User X Y Z function1 function2 function3 User X Y Z function4 function5 X function2 function3 attribute attribute function6 Määrittelyt Class Y { function3(); function5(); X x; } Koodi Y::function5() { x function6(); } Testitapaukset UseCaseA UseCaseB Use Case C Muut Vaat. Kuvaustekniikoista menetelmiin 39
Kuvaustekniikat Toimintojen ja tietojen kuvaaminen Exit Paluu Paluu oppikirjan oppikirjan aiheisiin aiheisiin
Algoritmien kuvaaminen kulkukaaviotekniikat perinteinen tekniikka algoritmien kuvaamiseen soveltuvuus nykyaikaiseen ohjelmointiin on kyseenalainen soveltuu toimintovuon etenemisen kuvaamiseen Kuvaustekniikoita Kuvaustekniikoita tarkastelemalla tarkastelemalla on on helppo helppo tehdä tehdä havainto, havainto, että että tekniikat tekniikat noudattelevat noudattelevat oman oman aikansa aikansa ohjelmistotyön ohjelmistotyön paradigmaa. paradigmaa. Kulkukaaviot Kulkukaaviot ovat ovat peräisin peräisin ohjelmoinnin ohjelmoinnin varhaisvuosilta, varhaisvuosilta, joten joten ne ne ovat ovat ilmaisuvoimaltaan ilmaisuvoimaltaan heikkoja. heikkoja. Rakenteiset Rakenteiset kulkukaaviot kulkukaaviot heijastavat heijastavat rakenteisen rakenteisen ohjelmoinnin ohjelmoinnin aikakautta. aikakautta. Uusimmissa Uusimmissa kuvaustekniikoissa kuvaustekniikoissa sen sen sijaan sijaan on on nähtävissä nähtävissä rinnakkaisuuden, rinnakkaisuuden, olioajattelun olioajattelun ym. ym. nykyaikaisten nykyaikaisten kehitystyön kehitystyön paradigmojen paradigmojen vaikutus. vaikutus. Kuvaustekniikoista menetelmiin 41
Kulkukaavio Symbolit: alku/loppu tiedosto dokumentti A A toiminto toiminto ehto syöttö/ tulostus liittimiä (= "nuoli jatkuu kohdasta A") Development cycle (Murphy): Order Order T-shirts T-shirts Announce Announce delivery delivery date date Write Write manuals manuals Write Write code code Hire Hire product product manager manager Write Write specifications specifications Kuvaustekniikoista menetelmiin 42 Test Test Ship Ship Announce Announce uppgrade uppgrade
Kulkukaavio laske tulokset alustukset opiskelijoita jäljellä ei laske arvosanajakauma kyllä Esimerkki Esimerkki kuvaa kuvaa kulkukaaviota, kulkukaaviota, jossa jossa opiskelijoiden opiskelijoiden arvosanatietoja arvosanatietoja koskevasta koskevasta tulosaineistosta tulosaineistosta määrätään määrätään arvosana, arvosana, päivitetään päivitetään opiskelijaa opiskelijaa koskevat koskevat tiedot tiedot ja ja lopulta lopulta lasketaan lasketaan tulosten tulosten arvosanajakauma. arvosanajakauma. ei hae seuraavan opiskelijan tiedot mukana tentissä kyllä loppu määrää arvosana päivitä opiskelijan tiedot Kuvaustekniikoista menetelmiin 43
kulkukaavio tilausjärjestelmä tilauksen vastaanotto tilauksen tarkastus ei voidaanko toimittaa kyllä ilmoitus tilaajalle tee varastomääräys ei jätetäänkö odotukseen kyllä loppu loppu tee varaus loppu Kulkukaavio Kulkukaavio soveltuu soveltuu karkean karkean tason tason toimintokuvaukseen. toimintokuvaukseen. Käyttökelpoisuus Käyttökelpoisuus algoritmien algoritmien kuvauksessa kuvauksessa on on kyseenalainen. kyseenalainen. Kuvaustekniikoista menetelmiin 44
kulkukaavio Jos kuukauden toteutunut myynti alittaa tavoiteet, tulostetaan raportti, ellei toteutunut myynnin ja tavoitteen ero ole vähemmän kuin puolet edellisen kuukauden tavoitteen ja toteutunut myynnin erosta, tai toteutunut myynti alittaa tavoiteen alle 5% aloita aloita eronyt eronyt = = tavoite( tavoite( tämä tämä kk) - toteutunut(tämä kk) kk) - toteutunut(tämä kk) eroed eroed = = tavoite( tavoite( edellinen edellinen kk) kk) - toteutunut(edellinen kk) - toteutunut(edellinen kk) eronyt ero% ero% = = ---------------- ---------------- * * 100 100 tavoite ero ero % < < 5 E eronyt eronyt < < 5 eroed/2 eroed/2 E Tulosta Tulosta raportti raportti Tässä Tässä kulkukaavio kulkukaavio selkiyttää selkiyttää monimutkaista monimutkaista päättelyalgoritmia päättelyalgoritmia K K lopeta lopeta Kuvaustekniikoista menetelmiin 45
Rakenteinen kulkukaavio rakenteiset kulkukaaviot ongelmaa (top-down) jäsentelevä lähestymistapa rakenteinen symbolit rakenteisen ohjelmoinnin periatteiden mukaisisia» rakenteella on alku- ja loppukohta» logiikka muodostuu peräkkäisistä ja sisäkkäisistä rakenteista graafinen esitysmuoto» rajaa yhteen kuvaukseen mahtuvien toimintojen määrää»jäsentelevä hyödyt ohjelman (koodin) rakenteen suunnitelulle! Kuvaustekniikoista menetelmiin 46
.. rakenteinen kulkukaavio peräkkäisrakenne toiminto 1 toiminto 2 toiminto 3 while-silmukka while-ehto do until -silmukka elsetoiminto silmukkatoiminto until-ehto ehdollinen rakenne T ehto F case-rakenne 1 2 toiminto 1 case-lauseke toiminto 2 3 else toiminto 3 thentoiminto elsetoiminto silmukkatoiminto Kuvaustekniikoista menetelmiin 47
rakenteinen kulkukaavio while opiskelijoita jäljellä alustukset ei hae seuraavan opiskelijan tiedot mukana tentissä määrää arvosana päivitä opiskelijan tiedot laske arvosanajakauma kyllä Kuvaus Kuvaus muodostuu muodostuu vaiheittain vaiheittain jäsennellen. jäsennellen. Alussa Alussa kuvataan kuvataan toiminto toiminto yhtenä yhtenä prosessina. prosessina. Tätä Tätä tarkennetaan tarkennetaan peräkkäisiksi peräkkäisiksi toimintokokonaisuuksiksi toimintokokonaisuuksiksi jäsentämällä. jäsentämällä. Toimintokokonaisuuksien Toimintokokonaisuuksien luonne luonne selkiytyy selkiytyy jäsentelyn jäsentelyn myötä. myötä. Lopputuloksena Lopputuloksena saadaan saadaan oheinen oheinen kuvaus. kuvaus. Kuvaustekniikoista menetelmiin 48
Pseudokoodi pseudokoodi ohjelmointikielen kaltainen vapaa ilmaisu» ei ohjelmointikielen rajoituksia helppo muuttaa ohjelmaksi ohjelmointityöhön tottuneelle luonnollinen (?) pseudokielen rakenneperiaatteita» lausesulkujen käyttö (rakenteen alku ja loppu)» ohjelmointia tukevat rakenteet» voi perustua käytettävään ohjelmointikieleen, jota on laajennettu määrittelyn tarvitsemilla ilmaisuilla Kuvaustekniikoista menetelmiin 49
pseudokoodi alustukset while opiskelijoita jäljellä loop hae opiskelijan tiedot; if opiskelija mukana tentissä then määrää arvosana; päivitä opiskelijan arvosana; end if end while; laske arvosanajakauma; Tästä Tästä ohjelmoija ohjelmoija voi voi jatkaa jatkaa työtä työtä jättämällä jättämällä kuvauksen kuvauksen ohjelman ohjelman kommenteiksi kommenteiksi ja ja täydentämällä täydentämällä kuvausten kuvausten yhteyteen yhteyteen vastaavan vastaavan toiminnan toiminnan suorittavat suorittavat lopulliset lopulliset ohjelmointikieliset ohjelmointikieliset ilmaisut. ilmaisut. Kuvaustekniikoista menetelmiin 50
Aktiviteettikaavio UML - aktiviteettikaaviot kulkukaavion kaltainen, ilmaisuvoimaltaan tätä voimakkaampi sisältää tilakaavioista ja SDL:stä peräisin olevia piirteitä, jotka lisäävät sen sovellettavuutta Kuvaustekniikoista menetelmiin 51
aktiviteettikaavio alustukset [opiskelijat loppu] laske arvosanajakauma Yksinkertaisimmillaan aktiviteettikaavio aktiviteettikaavio muistuttaa muistuttaa kulkukaaviota. kulkukaaviota. [opiskelijoita jäljellä] hae seuraavan opiskelijan tiedot [ei mukana tentissä] [mukana tentissä] päivitä opiskelijan tiedot määrää arvosana Kuvaustekniikoista menetelmiin 52
aktiviteettikaavio Näyttölaite Mittari Tekniikka Tekniikka mahdollistaa mahdollistaa rinnakkaisuuden, rinnakkaisuuden, kommunikoinnin kommunikoinnin ja ja synkronoinnin synkronoinnin kuvaamisen. kuvaamisen. Mittari.run(näytteistystaajuus) alusta järjestelmä näytä mittaustulosta mittaustulos tee Mittauksia Kuvaustekniikoista menetelmiin 53
Päätöspuut ja -taulut päätöstaulut, käyttökohde monimutkaiset päätöstilanteet monimutkaiset ehtokombinaatiot vaihtoehtoiset toimenpiteet päätöspuut, käyttökohde pitkien päätösketjujen hallitttu esittäminen Kuvaustekniikoista menetelmiin 54
Päätöspuut Päätöspuu Päätöspuu on on yksinkertainen yksinkertainen haarautumista haarautumista kuvaava kuvaava rakenne. rakenne. Haarautumiskohdassa Haarautumiskohdassa esitetään esitetään tutkittava tutkittava ehto ehto ja ja haaroihin haaroihin johtavissa johtavissa nuolissa nuolissa ehdon ehdon arvo arvo (päätös). (päätös). vihreä ehtiikö jarruttamaan? k e aja risteykseen aja risteykseen valon väri? keltainen punainen ehtiikö jarruttamaan? k e pysähdy aja risteykseen ehtiikö jarruttamaan? k e pysähdy aja risteykseen Kuvaustekniikoista menetelmiin 55
Päätöstaulut valon väri vihreä keltainen keltainen punainen punainen ehtiikö jarruttamaan kyllä tai ei kyllä ei kyllä ei toiminto aja risteykseen pysäytä aja risteykseen pysäytä aja risteykseen Päätöstaulua Päätöstaulua on on helppo helppo yksinkertaistaa. yksinkertaistaa. Miten? Miten? Kuvaustekniikoista menetelmiin 56
päätöstalut sukupuoli m m m m m m n n n n n n paino < 80 k k k e e e k k k e e e ikä < 20 k k k k 20 <= ikä < 60 k k k k ikä >= 60 k k k k lääkitys 1 x x x x x x lääkitys 2 x x x x x x lääkitys 3 x x x x x ei lääkitystä x Sarakkeiden Sarakkeiden määrä määrä = kaikkien kaikkien vaihtoehtojen vaihtoehtojen määrän määrän tulo. tulo. Osa Osa tutkittavista tutkittavista ehdoista ehdoista on on tilanteen tilanteen kannalta kannalta yhdentekeviä yhdentekeviä (don t (don t care) care) tai tai kombinaatiot kombinaatiot ovat ovat mahdottomia, mahdottomia, jolloin jolloin niitä niitä ei ei tarvitse tarvitse päätöstaulussa päätöstaulussa käsitellä. käsitellä. Tässä Tässä esimerkiksi esimerkiksi tutkittavan tutkittavan kuuluessa kuuluessa johonkin johonkin ikäryhmään, ikäryhmään, hän hän ei ei voi voi kuulua kuulua muihin. muihin. Kuvaustekniikoista menetelmiin 57
päätöstaulut eronyt = tavoitemyynnin ja toteutuneen myynnin erotus tässä kuussa eroed = tavoitemyynnin ja toteutuneen myynnin erotus viime kuussa ero% = tavoitemyynnistä jälkeenjääminen tässä kuussa prosentteina eronyt < eroed/2 kyllä ei kyllä ei ero% < 5 < 5 >= 5 >= 5 tulosta raportti ei ei ei kyllä Myös Myös tämä tämä kuvaus kuvaus selkiyttänee selkiyttänee luonnollisella luonnollisella kielellä kielellä esitettynä esitettynä monimutkaiselta monimutkaiselta vaikuttavaa vaikuttavaa päätössääntöä. päätössääntöä. Kuvaustekniikoista menetelmiin 58
Päätöstaulujen rakenne - terminologiaa vaihtoehto-osa ehtojen luettelo toimenpiteiden luettelo arvo-osa ehtojen arvot toimenpiteiden arvot ehto-osa tutkittavat ehdot toimenpideosa suoritettavat toimenpiteet Kuvaustekniikoista menetelmiin 59
Päätöstaulut muodostamisen periaatteita ehtojen kattavuus kaikki mahdolliset (toteutuvat) ehtojen kombinaatiot esiteltävä taulussa don t care tilanteiden huomioonottaminen vähentää ehtokombinaatioiden määrää vapaa ilmaisu ehdoissa / arvoissa yksinkertaistaa taulun ilmaisua suoritusjärjestys periaatteessa taulun suorituksessa ei ole suoritusjärjestystä sopimuksella suoritusjärjestyksestä merkitystä koodauksessa viittaukset päätöstaulujen sisällä / välillä päätöstauluhierarkkia - päätöstaulukutsut Kuvaustekniikoista menetelmiin 60
Esi- ja jälkiehdot toiminta kuvataan ennen toimintaa olevaa ja sen jälkeistä tilaa kuvaavilla määrittelyillä (loogiset lausekkeet) tilamuutoksen kuvaus muutoksen aiheuttaman toiminnon sijasta ei kiinnitä toiminnon toteutustapaa vaikeutena täsmällisen (oikean) esi- ja jälkitilaa kuvaavan ehdon löytäminen vrt. ohjelmien oikeaksi todistamisen mekanismit Kuvaustekniikoista menetelmiin 61
esi- ja jälkiehdot Esimerkki esiehto (loogisena lausekkeena) i 1 N: A[i] 0 2 16-1 jälkiehto (loogisena lausekkeena) i,j 1 N: i j B[i] B[j] Tarkoituksena Tarkoituksena on on kuvata kuvata taulukon taulukon lajittelu. lajittelu. Kuvaus Kuvaus on on täsmällinen täsmällinen ja ja formaali. formaali. Ehdot Ehdot eivät eivät kuitenkaan kuitenkaan ole ole onnistuneesti onnistuneesti valittuja? valittuja? Toiminto Toiminto on on musta musta laatikko laatikko (ei (ei kuvata) kuvata) Esiehto: on Esiehto: on olemassa olemassa järjestämätön järjestämätön lukujoukko, lukujoukko, N lukua lukua Jälkiehto: Jälkiehto: on on olemassa olemassa nousevaan nousevaan järjestykseen järjestykseen järjestetty järjestetty lukujoukko lukujoukko N lukua, lukua, samat samat kuin kuin esiehdossa esiehdossa Toimintokuvauksen Toimintokuvauksen sijasta sijasta vaikutuksen vaikutuksen kuvaus kuvaus saattaa saattaa olla olla havainnollinen. havainnollinen. Tutki Tutki testaukselle! testaukselle! Kuvaustekniikoista menetelmiin 62
Tietohakemistomäärittely järjestelmässä käsiteltävien tietojen kuvaaminen tietovarastot (ja niiden sisältö) lähtö- ja tulostiedot tieto- ja tapahtumavirrat yksityiskohtainen kuvaus syntyy suunnittelutyön kuluessa tarkentuu suunnittelutyön myötä tukee suunnittelutyötä yhtenäistää terminologiaa toimii kommunikaation välineenä käytännössä osa tietosisällön ja myös tietokannan suunnittelua CASE-järjestelmien keskeinen osa (käsitteiden hallinta) tieohakemisto on osa kuvauskantaa myös erillisen tietohakemiston ylläpidolle saattaa olla tarve Projekti Suunn 1 Suunn 2 tietoh tuote=tno+tnimi+varasto+ tuotetilaus=tuote Kuvaa Kuvaa järjestelmässä järjestelmässä olevien olevien tietojen tietojen rakenteen rakenteen ( tiedot ( tiedot tiedoista. tiedoista. Kohteena Kohteena tietorakenteet tietorakenteet ja ja niiden niiden muodostamisessa muodostamisessa tarvittavat tarvittavat perustiedot. perustiedot. Kuvaustekniikoista menetelmiin 63
tietohakemistomäärittely merkki merkitys + ja () optionaalinen (voi puuttua) {} toisto (0-N kertaa) n{}m toisto n-m kertaa [] vaihtoehtoja vaihtoehtojen erotin @ avainkenttä * kommentti Kuvaustekniikoista menetelmiin 64
tietohakemistomäärittely Esimerkki: henkilötiedot = nimi + @henkilötunnus + aviosääty (+ lapset) nimi = 1{etunimi}3 + sukunimi aviosääty = [naimaton naimisissa eronnut leski] lapset = *määrittelyssä ok; suunnittelu ongelmallinen* henkilötnunnus = 6{numero}6 + [+ - A] + 3{numero}3 + [sallittu_kirjain numero] Vaihtoehtoisia kuvaustapoja (erilainen rakenne!): osoite = (toimitusosoite) + (laskutusosoite) osoite = [toimitusosoite laskutusosoite toimitusosoite + laskutusosoite] osoite = toimitusosoite + (laskutusosoite) Tietokannan Tietokannan taulun taulun rakenne rakenne on on kaikissa kaikissa sama. sama. Sisällön Sisällön hyödyntäminen hyödyntäminen vaihtelee vaihtelee (käyttötapa). (käyttötapa). Kuvaustekniikoista menetelmiin 65
tietohakemistomäärittely Esimerkki: suoritustietokanta = * Relaatiokanta, joka kuvaa opiskelijat, kurssit ja suoritukset. Se koostuu tauluista opiskelijat, suoritukset ja opintojaksot.* opiskelijat = {@op_nro + nimi + osoite +...} suoritukset = {@suor_nro + op_nro + oj_nro+ pvm + ov_määrä + arvosana + opettaja} opintojaksot = {@oj_nro+oj_nimi+kuvaus} Terminologiaa: avain (@op_nro rakenteessa opiskelijat ) vierasavain (viittaus muihin tauluihin; op_nro rakenteessa suoritukset) surrogate key (keinotekoisesti generoitu tunnistusavain ; @suor_nro rakenteessa suoritukset) Kuvaustekniikoista menetelmiin 66
tietohakemistomäärittely Opiskelijat-taulu: op_nro... 87 2... nimi... Ahto Simakuutio Teemu teekkari... os........................... Suorituksettaulu: suor_nro... 234 456 645... op_nro... 87 45678 87... oj_nro... 81210 81210 81130... pvm... 20.3.1987 17.4.1990 1.5.1989... ov-määrä... 2 2 4... arvosana... 3 2 4... opettaja... ljh jmj ijh... Opintojaksot-taulu: oj_nro... oj_nimi... kuvaus... Edellistä Edellistä tietohakemistokuvausta tietohakemistokuvausta vastaava vastaava tietokannan tietokannan taulurakenne taulurakenne 81210 81130... Ohjelmistotuotannon peruskurssi Ohjelmistotuotannon menetelmättt............ Kuvaustekniikoista menetelmiin 67
BNF-notaatio a) Lausekkeen kielioppi BNF-notaatiolla <lauseke> ::= <kertolauseke> <kertolauseke> <ynnäoper> <lauseke> <kertolauseke> ::= <sulkulauseke> <sulkulauseke> <kerto-oper> <kertolauseke> <sulkulauseke> ::= <termi> ( <lauseke> ) <ynnäoper> ::= + - <kerto-oper> ::= * / <termi> ::= <numeerinen_vakio> <muuttuja> b) Lausekkeen kielioppi tietohakemistonotaatiolla, vaihtoehto 1 lauseke = [kertolauseke kertolauseke + + + lauseke] kertolauseke = [sulkulauseke sulkulauseke + * + kertolauseke] sulkulauseke = [termi ( lauseke ) ] termi = [numeerinen_vakio muuttuja] c) Lausekkeen kielioppi tietohakemistonotaatiolla, vaihtoehto 2 lauseke = kertolauseke + { + + kertolauseke} kertolauseke = sulkulauseke + { * + sulkulauseke} sulkulauseke = [termi ( lauseke ) ] termi = [numeerinen_vakio muuttuja] Kielioppien Kielioppien kuvaamisessa kuvaamisessa käytetään käytetään BNF-noitaatiota. BNF-noitaatiota. Ilmaisuvoimaltaan Ilmaisuvoimaltaan se se on on tietohakemistomäärittelyn tietohakemistomäärittelyn kaltainen. kaltainen. Esityssymboliikka Esityssymboliikka on on erilainen. erilainen. BNF BNF on on laajalti laajalti käytössä käytössä mm. mm. ohjelmointikielten ohjelmointikielten syntaksin syntaksin kuvaamisessa. kuvaamisessa. BNFnotaatiossa BNFnotaatiossa lainausmerkeissä lainausmerkeissä esitetään esitetään symboli, symboli, joka joka jää jää kieleen kieleen (terminaali) (terminaali) kulmasulkeissa kulmasulkeissa esitetään esitetään kuvauksella kuvauksella tarkennettava tarkennettava symboli symboli (non-terminaali) (non-terminaali) Kuvaustekniikoista menetelmiin 68
Harjoitus Pieni sormiharjoitus: esitä Tietohakemistonotaatio desimaalilukujen esittämiseksi. Sallituja muotoja ovat esimerkiksi "123", "-123", "123.123", ".123", "+.123", "-.123" Kielletyjä ovat mm. "++123", "123.", ".", "-" Kuvaustekniikoista menetelmiin 69
...harjoitus LUKU = [ETUM] + ARVO ETUM = +' '-' ARVO = KOK_LUKU + ['.' + KOK_LUKU] '.' + KOK_LUKU KOK_LUKU = 1{ NUMERO} N NUMERO = '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' Kuvaustekniikoista menetelmiin 70
tietohakemistomäärittely vs. BNF a) Lausekkeen kielioppi BNF-notaatiolla <lauseke> ::= <kertolauseke> <kertolauseke> <ynnäoper> <lauseke> <kertolauseke> ::= <sulkulauseke> <sulkulauseke> <kerto-oper> <kertolauseke> <sulkulauseke> ::= <termi> ( <lauseke> ) <ynnäoper> ::= + - <kerto-oper> ::= * / <termi> ::= <numeerinen_vakio> <muuttuja> <lauseke> <kertolauseke> <sulkulauseke> <kerto-oper> <kertolauseke> jne... jne... ( 2 + 3 ) / ( ( 1 + 7 ) / 5 ) Kuvaustekniikoista menetelmiin 71
Kertauskysymykset Selvitä lyhyesti UMLkuvausmenetelmäjoukon periaatteet. Mitä tarkoitetaan UML:n yhteydessä esiintyvällä 4+1 View -termillä. Selvitä siihen liittyvien eri näkymien merkitys järjestelmäkehityksen kannalta. Miten näkymät ovat nähtävissä järjestelmäkehityksen menetlmissä (esimerkiksi OMT++). Mihin käytetään käyttötapausnäkymää. Mihin käytetään loogista näkymää. Järjestelmän kuvaustyössä osa kuvauksista kuvaa esimerkinomaisesti reaalimaailmassa tapahtuvia toimintoja tai sen rakenteita, osa taas mallintamisen näkökulmasta antaa kattavan kuvauksen joko mallinnettavan kohteen rakenteesta tai sen käyttäytymisestä. Mikä on tällaisten esimerkki-kuvausten rooli laadittaessa järjestelmän kattavaa kuvausta. Mitkä kuvausmenetelmät ovat luonnehdiottavissa esimerkkikuvauksiksi ja mitkä kattaviksi kuvauksiksi. Minkälaisen prosessin tuloksena rakennetta / toimintaa koskevat kattavat kuvaukset saadaan. Mitä kuvataan luokkakaavioilla ja oliokaavioilla. Mikä on näiden kahden kaavion ero. Mitä kuvataan tapahtumasekvenssikaavioilla. Selitä kurssimateriaalin UML-katsauksen yhteydessä olevien esimerkkikuvausten sisältö käyttötapauskaavio olikaavio luokkakaavio sekvenssikaavio yhteistyökaavio tilakaavio aktiviteettikaavio Mitä ovat UML-kuvausten yleiset merkinnät ja laajennukset. Mitä UML:n kuvaustekniikoita käytetään OMT++ -menetelmässä ja Simplified method -menetelmässä. Mikä on käyttötapausten rooli järjestelmätestauksessa. Kuvaustekniikoista menetelmiin 72
kertauskysymykset Minkälaisten kuvaustehtävien yhteydessä käyttäisit perinteisiä kulkukaavioita. Mitä etuja on rakenteisten kulkukaavioiden käytöllä ohjelmiston moduulisuunnittelussa. Entä edut verrattuna perinteisiin kulkukaavioihin. Arvioi pseudokoodin käyttökelpoisuutta ohjelmistoon liittyvässä toiminnallisuuden kuvaamsessa. Mmiten pseudokoodia voi hyödyntää osana lopullista ohjelmakoodia. Mitä etuja tästä menettelystä saadaan. Vertaa UML:n aktiviteettikaavioita perinteisiin kulkukaavioihin. Mitä ovat merkittävimmät ilmaisuvoimassa olevat erot. Mitä hyötyä toimintokuvauksissa saadaan aktiviteettikaavioiden uusien" ilmaisujen avulla. Miksi nämä piirteet ovat olennaisia nykyaikaisessa ohjelmistokehityksessä. Minkälaisiin tilanteisiin päätöstaulut ja -puut soveltuvat kuvausmenetelmäksi. Olisiko mahdollista käyttää niiden sijasta jotain muita kuvaustekniikoita. Mikä on esi- ja jälkiehtoihin perustuvan toimintomäärittelyn periaate. Mitä etuja siinä on toimintokuvauksiin verrattuna ja minkälaisiin tilanteisiin se soveltuu. Mikä on tietohakemistokuvauksen tehtävä järjestelmäkuvausten yhteydessä. Selitä kurssimateriaalin yhteydessä olevat kuvausesimerkit ja kommentoi tehtyä ratkaisua sekä sen havainnollisuutta kulkukaavio rakenteinen kulkukaavio pseudokoodi aktiviteettikaavio päätöstilanteiden kuvaamisen tekniikat esi- ja jälkiehdon käyttö sekä valitut kuvauskäytännöt tietohakemistokuvaus Vertaa tietohakemistokuvauksen ja BNFnotaation esityskäytäntöjä. Kuvaustekniikoista menetelmiin 73