1 / 40

Ohjelmistotekniikka: Ohjelmiston mallintaminen, osa II

Ohjelmistotekniikka: Ohjelmiston mallintaminen, osa II. Kevät 2002 Päivi Ovaska LTKK/Tite. Ohjelmointi(ohjelmisto) paradigmoja. proseduraalinen (Pascal, C) ohjelmassa määritellään toiminta - mitä tapahtuu - suoritus etenee sen mukaan tiedot määritellään "erillään" toiminnasta

Download Presentation

Ohjelmistotekniikka: Ohjelmiston mallintaminen, osa II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ohjelmistotekniikka:Ohjelmiston mallintaminen, osa II . Kevät 2002 Päivi Ovaska LTKK/Tite

  2. Ohjelmointi(ohjelmisto) paradigmoja • proseduraalinen (Pascal, C) • ohjelmassa määritellään toiminta - mitä tapahtuu - suoritus etenee sen mukaan • tiedot määritellään "erillään" toiminnasta • funktionaalinen (Lisp) • ohjelma koostuu kokoelmasta funktioita • Funktiot kutsuvat toisiaan (usein sisäkkäin) • logiikka (Prolog) • ohjelmassa määritellään loogisia relaatioita • jos eläimellä on evät, niin eläin on kala • jos eläin on hauki, niin eläimellä on evät • Onko hauki kala? -> Kyllä! • olioperustainen (Smalltalk, C++, Java) • tiedot ja toiminta liitetään yhteen luokaksi Kullekin paradigmalle parhaiten sopivat mallinnusmenetelmät

  3. Kuinka hahmotamme maailmaa oliopohjaisesti? • haluan lähettää kukkia ystävälleni naapurikaupunkiin • menen kukkakauppaan • pyydän toimittamaan kukat -> • pyyntö välitetään naapurikaupungin kukkakauppaan • siellä lähetti toimittaa kukat • sama oliokäsitteillä: • lähetän viestin kukkakauppias oliolle • hän hyväksyy ja osaa käsitellä viestin • tehtävä jää hänen vastuulleen • kukkakauppias toteuttaa viestin toimenpiteen (metodin) avulla • toteutus piilotettu minulta • hän lähettää viestin toiselle kukkakauppiaalle jne.

  4. Olio-pohjainen ajattelu • olio-pohjainen ohjelmisto muodostuu joukosta keskenään kommunikoivia olioita • toiminta syntyy toisille olioille lähetetyistä viesteistä • viestin vastaanottanut olio toteuttaa sitä vastaavan toimenpiteen - metodin • lähettäjä ei tunne viestin toteutusta (tiedon piilottaminen) • "ohjelmoijan ei tarvitse itse tehdä kaikkea - hän voi hyödyntää valmiita komponentteja" • vastaanotetun viestin tulkinta vaihtelee, se riippuu vastaanottajasta ja hänen tilastaan • toiminta kuvataan vastuina • "älä mieti mitä itse osaat tehdä, vaan mitä muut voivat tarjota sinulle" • jokainen olio kuuluu johonkin luokkaan • luokka määrittelee metodit eli viestin jotka olio osaa käsitellä • luokan kaikki oliot käyttävät samoja metodeja • luokka määrittelee olion ominaisuudet eli attribuutit - olion tiedot • luokat muodostavat luokkahierarkian • aliluokka perii yliluokan attribuutit ja metodit • aliluokka voi peittää perimiään attribuutteja ja metodeja • vaikka oliot vastaanottavat saman viestin ne voivat toimia eri tavoin - tätä kutsutaan monimuotoisuudeksi

  5. SA -menetelmä • Structured Analysis • Menetelmästä useita eri versioita • Yleisin käytetty proseduraalinen menetelmä • SD (Structured Desing) suunnitteluun (erittäin vähän käytössä) • SA/RT reaaliaikajärjestelmien mallintamiseen

  6. Mallinnusvuo SA/RT-mallinnus Ydinmalli - järjestelmän tavoitteet - liittymäkaavio - tapahtumalista Ympäristömalli - tietovuokaaviot, minispeksit - käsitekaaviot - tilakaaviot - tietohakemisto Käyttäytymismalli Toteutusmalli - toteutuksen rajaaminen - käyttöliittymä - kaavioiden muokkaaminen toteutuskelpoisiksi - ei-toiminnaliset ominaisuudet - toteutukseen liittyvät virhetilanteet

  7. Menetelmän komponentit

  8. Tietovuokaaviossa (DFD) käytetyt symbolit

  9. Tietovuokaavioiden hierarkia • Ylimmällä tasolla järjetelmän toiminta kuvataan ns. liittymäkaaviolla (context diagram, yhteyskaavio, ympäristökaavio) • terminaattorit ja koko järjestelmä yhtenä transformaationa • Järjestelmätransformaatio kuvataan tarkemmin tason 1 tietovuokaaviolla, sen transformaatiot edelleen tason 2 tietovuokaaviolla, jne. • Pilkkominen alkaavioihin lopetetaan, kun transformaation on niin yksinkertainen, että sen toiminta voidaan kuvata minispesifikaatiolla (pseudokoodi, strukturoitu kulkukaavio, työnkulkukaavio)

  10. Hierarkia, liittymäkaavio

  11. Hierarkian toinen taso Alimman tason transformaatiot merkitään tähdellä

  12. Hierarkian kolmatta tasoa

  13. Hierarkian alin taso kuvataan minispekseillä Minispeksi 1: Tilauksen vastaanotto - Tilauksen vastaanotto tapahtuu puhelimitse tai faksilla. - Asiakkaan tiedot tarkastetaan asiakastietokannasta, tarvittaessa asiakastiedot syötetään. - Samalla tarkastetaan asiakkaan laskutustilanne. Jos asiakkaalla on hoitamattomia karhuja, ei tilausta oteta vastaan.

  14. Järjestelmän tavoitteet KURREK-järjestelmä sisältää kuvaukset opintojaksoista, opettajista ja opintosuorituksista. Järjestelmä tuottaa kurssien osallistujalistoja, tenttien tuloslistoja ja opintosuoritusrekisteriotteita. Opettajat kirjaavat järjestelmän avulla opintosuoritukset rekisteriin. Opiskelijat pystyvät ilmoittautumaan kursseille ja tutkimaan omia suoritustietojaan.

  15. Liittymäkaavio KURREK-järjestelmästä

  16. Tapahtumalista 1) Ylläpitäjä päivittää opiskelijan tietoja (lisäys, poisto muutos). 2) Ylläpitäjä päivittää opintojakson tietoja. 3) Ylläpitäjä päivittää opettajan tietoja. 4) Opiskelija ilmoittautuu kurssille. 5) Opiskelija ilmoittautuu tenttiin. 6) Opiskelija osallistuu tenttiin. 7) Opettaja pyytää kurssin osallistujalistan. 8) Opettaja pyytää tentin osallistujalistan. 9) Opettaja kirjaa opintosuorituksen. 10) Opiskelija pyytää opintorekisteriotteen. 11) Laitoksen johtaja saa opintoviikkoyhteenvedon.

  17. Organisaation toimintaa kuvaava tietovuokaavio

  18. Lämpötilahistoriaa keräävän reaaliaikajärjestelmän tietovuokaavio

  19. Esimerkki tietovirtamatriisista

  20. Tietovuokaavio Kurrek-järjestelmästä

  21. Kahvikeitin harjoituksiin

  22. Ylimmän tason tietovirtakaavio

  23. Kahvinkeittiminen tapahtumalista • Start-nappulan painallus • vesi loppuu • kannu pois • kannu takaisin (tyhja kannu tai ei-tyhjä kannu)

  24. Veden mahdolliset tilat tilakaaviona

  25. Lamppua ohjaava tilakone

  26. Tilakoneiden käyttömahdollisuuksia • Toiminnon kuvaaminen esim. algoritmin määrittely • Laitteiden ja prosessien toimnnan kuvaus (digitaalikello, matkapuhelin, pankkiautomaatti) • Järjestelmän elinkaaren mallintamiseen • Käyttöliittymien specifioinnissa

  27. Tilasiirtymämatriisi: merkkijonon muuttaminen reaaliluvuksi

  28. Kirjan elinkaari tilakaaviona

  29. Poistuminen editorista Harelin tilakaaviolla

  30. Tiedon rakenteen ja esitystavan kuvaaminen

  31. Tietohakemistonotaation merkintätavat

  32. Tietohakemisto esimerkkejä henkilötiedot = nimi + @henkilötunnus + aviosääty + lapset nimi = 1{etunimi}3 + sukunimi aviosääty = [naimaton | naimisissa | eronnut | leski] osoite = (toimitusosoite) + (laskutusosoite) osoite = [toimitusosoite | laskutusosoite | toimitusosoite + laskutusosoite] osoite = toimitusosoite + (laskutusosoite) luottoraja = *asiakkaalle myönnettävän luoton enimmäismäärä markkoina* luottoraja_ilmoitus = *vastaus luottorajan muutosyritykseen* ["Tuntematon asiakas" | "Virheellinen luottoraja" | "Uudeksi luottorajaksi on muutettu xxx markkaa"]

  33. Tietohakemisto esimerkkejä 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}

  34. Muita tiedon rakenteen ja esitystavan määrittelytapoja • Merkkauskielet • HTML • SGML • XML (ja siihen liittyvät standardit: DTD, XML Schema) • ASN.1: tietoliikenteen sanomarakenteet • …

  35. XML:n dokumenttityypin rakenteen määrittely: DTD (Document Type Definition). • Tiedon rakenteen kuvaaminen. <!DOCTYPE postitilaus [   <!ELEMENT postitilaus (vastaanottaja, tavara*)   <!ELEMENT vastaanottaja (nimi, osoite)>   <!ELEMENT tavara (nimeke, määrä, hinta)>   <!ELEMENT nimi (#PCDATA)>   <!ELEMENT osoite (#PCDATA)>   <!ELEMENT nimeke (#PCDATA)>   <!ELEMENT määrä (#PCDATA)>   <!ELEMENT hinta (#PCDATA)>]>

  36. XML-dokumentti <?xml version="1.0"?> <postitilaus> <vastaanottaja> <nimi>Ahto Simakuutio</nimi> <osoite>Hermiankatu 99, 33720 Tampere</osoite> </vastaanottaja> <tavarat> <tavara> <nimeke>Muistipiiri 256MX</nimeke> <maara>2</maara> <hinta>100</hinta> </tavara> <tavara> <nimeke>Nokia 9210</nimeke> <maara>1</maara> <hinta>6250</hinta> </tavara> </tavarat> </postitilaus>

  37. … ja vastaava XML Schema • <xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema"> • <xsd:element name="postitilaus" type="tilaus"/> • <xsd:complexType name="tilaus"> • <xsd:element name="vastaanottaja" type="osoitetiedot"/> • <xsd:element name="tavarat" type="tavaroidentiedot"/> • </xsd:complexType> • <xsd:complexType name="osoitetiedot"> • <xsd:element name="nimi" type="xsd:string"/> • <xsd:element name=“osoite" type="xsd:string"/> • </xsd:complexType> • <xsd:complexType name="tavaroidentiedot"> • <xsd:element name="tavara" type="tavaratiedot" maxOccurs=“*"/> • </xsd:complexType> • <xsd:complexType name="tavaratiedot"> • <xsd:element name=“nimeke" type="xsd:string"/> • <xsd:element name="maara" type="xsd:positiveInteger"/> • <xsd:element name="hinta" type="xsd:decimal"/> • </xsd:complexType> • </xsd:schema>

  38. UML (OMT++) vs. SA • Liittymäkaavio vs. käyttötapauskaavio. • Tapahtumalista vs. käyttötapaus vs. operaatio. • Tietovuokaavio vs. tapahtumasekvenssikaavioiden ja luokkakaavioiden käyttö. • UML (OMT++) oliopohjaiseen mallintamiseen • SA proseduraaliseen mallintamiseen sekä reaaliaikajärjestelmien mallintamiseen

  39. Millä piirrät? • Jos et osaa paperilla ja kynällä ei välineestä ole apua. • CASE-välineet (Rational Rose, Prosa, Rhapsody…) • Hinta verraten korkea (10-50kmk). • 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 (esim. Soda+Rose). • Demot ja pienet ohjelmaesimerkit antavat usein liian ruusuisen kuvan. • Raskaan sarjan käyttökokemuksia ei ole julkaistu (?). • Oppimiskynnys korkeahko. • Piirto-ohjelmat (Visio, ABCFlowcharter) • Hinta muutama KMK. • 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.

More Related