Upload
cedric-hicks
View
71
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
Ohjelmistotekniikka:Ohjelmistotekniikka:Ohjelmiston mallintaminen, Ohjelmiston mallintaminen,
osa IIosa II
Kevät 2002Päivi OvaskaLTKK/Tite
.
Ohjelmointi(ohjelmisto) Ohjelmointi(ohjelmisto) paradigmojaparadigmoja
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 parhaitensopivat mallinnusmenetelmät
Kuinka hahmotamme Kuinka hahmotamme maailmaa oliopohjaisesti?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.
Olio-pohjainen ajatteluOlio-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
SA -menetelmä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
Mallinnusvuo Mallinnusvuo SA/RT-mallinnus
Toteutusmalli
Ympäristömalli
Käyttäytymismalli
Ydinmalli- järjestelmän tavoitteet- liittymäkaavio- tapahtumalista
- tietovuokaaviot, minispeksit- käsitekaaviot- tilakaaviot- tietohakemisto
- toteutuksen rajaaminen- käyttöliittymä- kaavioiden muokkaaminen toteutuskelpoisiksi- ei-toiminnaliset ominaisuudet- toteutukseen liittyvät virhetilanteet
Menetelmän komponentitMenetelmän komponentitLiittymäkaavio
Tapahtumalista 1. tapahtuma 1 2. tapahtuma 2 ...
ER-kaaviot
Hierarkiset tietovuokaaviot
Tilakaaviot
Tietohakemisto tieto_a = tieto_b + tieto_c tieto_x = ...
Minispesifikaatiot if a<b then ....
Tietovuokaaviossa (DFD) Tietovuokaaviossa (DFD) käytetyt symbolitkäytetyt symbolit
yhtyvättietovirrat
päivitys
luku
kirjoitus
ohjausvirta
jatkuva tietovirta
tietovirta
ohjaus- transfor- maatio
tietovarastoterminaattori
transfor- maatio
tietovarasto
tietovarasto
jakaantuvatietovirta
dialogi
Tietovuokaavioiden hierarkiaTietovuokaavioiden 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)
3
Esimerkki
ajanjakso
läm pötilatläm pötila
trigger
rekisteröi läm pötila
ohjaa rekisteröin-
tiä
läm pötila- h istoria
anna läm potilat
läm pötila- anturi
rekisteröinti- tietokone
Hierarkia, liittymäkaavioHierarkia, liittymäkaavio
maksusuoritus
karhu
lasku
toimitustilaus
asiakas
kirjatilaus- järjes- telmä
Hierarkian toinen tasoHierarkian toinen taso
maksusuoritus
karhu
laskutoimitustilaus
tilauksen vastaanotto
1*
toimituksen koonti
2*
toimitettavat tilaukset
asiakas
laskutus
3
laskutus- tiedot
Alimman tasontransformaatiot merkitään tähdellä
Hierarkian kolmatta tasoaHierarkian kolmatta tasoamaksusuoritus
lasku
laskun lähetys
3.2*
laskutus- tiedot
tarkastus
3.1*
karhutar- kastus
3.3*
tarkastettulasku
karhu
Hierarkian alin taso kuvataan Hierarkian alin taso kuvataan minispekseillä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.
Järjestelmän tavoitteet 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.
Liittymäkaavio KURREK-Liittymäkaavio KURREK-järjestelmästäjärjestelmästä
tentti-ilmoittau- tuminen
ov_yhteenveto
opinto-jakso-tiedot
opiskelija-tiedot
kurssi-ilmoit-tautuminen
tulos-lista
osallistuja-lista
suoritus-kysely
suori-tukset
suoritus-kysely
KURREK
opiskelija opettaja
ylläpitäjä
opetta-jatiedot
laitoksen johtaja
TapahtumalistaTapahtumalista1) 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.
Organisaation toimintaa Organisaation toimintaa kuvaava tietovuokaaviokuvaava tietovuokaavio
maksusuoritus
karhu
laskutoimitustilaus
tilauksen vastaanotto
1*
toimituksen koonti
2*
toimitettavat tilaukset
asiakas
laskutus
3
laskutus- tiedot
Lämpötilahistoriaa keräävän Lämpötilahistoriaa keräävän reaaliaikajärjestelmän reaaliaikajärjestelmän
tietovuokaaviotietovuokaavio
ajanjakso
lämpötilatlämpötila
trigger
rekisteröi lämpötila
ohjaa rekisteröin-
tiä
lämpötila- historia
anna lämpotilat
lämpötila- anturi
rekisteröinti- tietokone
Esimerkki tietovirtamatriisistaEsimerkki tietovirtamatriisista
opiskelija
luennoija
opintotoi- misto
assistentti
viikkoharjoi- tukset, harj.työ
harjoitustulok- set
kokonaisuori- tukset
ilmoittautumi- set (kurssi,
tentti)tenttipaperi
harjoitustyö, viikkoharjoituk
set, ohjeet
aikataulu, kurssimateri-
aali
aikataulu, kurssimateri-
aali
osallistujalistat (kurssi, tentti)
tuloslistat
Tietovuokaavio Kurrek-Tietovuokaavio Kurrek-järjestelmästäjärjestelmästä
suoritus- kirjaus
opettaja
opettajat
opiske- lijat
opinto- jaksot
kurssit
suorituk- set
tentit
suoritus-dialogi
Kahvikeitin harjoituksiinKahvikeitin harjoituksiin
aluslevy
boileri
venttiili
start valmis-valo
start-nappula
lämmitin & paineanturi
Ylimmän tason Ylimmän tason tietovirtakaaviotietovirtakaavio
Vaara-alue
Liukuhihna
Maalisäiliö
Operaattori
Käsi
siirrä hihnaa
5
vaara
siirretty
käynnistä
maaliloppu
ohjaus
asema
tilanne
komento
ohjaus = [ seis | siirrä | käsikäyttö |automaatti]] status = [seis | seis&siirtää | käsikäytössä | maalaa | maalaa&siirtää]
ohjaa robottia
1
Käyttöliit- tymä
2
maalaa manuaali-
sesti
3
maalaa automaat-
tisesti
4
maalausreitti
ohjaus
trigger
e/d
e/d
status
valmis
Kahvinkeittiminen Kahvinkeittiminen tapahtumalistatapahtumalista
Start-nappulan painallusvesi loppuukannu poiskannu takaisin (tyhja kannu tai ei-tyhjä
kannu)
Veden mahdolliset tilat Veden mahdolliset tilat tilakaavionatilakaaviona
jäässä nesteenä höyrynä
Lamppua ohjaava tilakoneLamppua ohjaava tilakone
jouten
50W 100W
150W
/ sammuta virta 50W langasta
sammuta virta 100W langasta
veto narusta / sammuta virta 50W langasta
kytke virta 100W lankaan
veto narusta / kytke virta 50W lankaan
veto narusta / sammuta virta 50W langasta
sammuta virta 100W langasta
veto narusta / kytke virta 50W lankaan
Tilakoneiden Tilakoneiden käyttömahdollisuuksiakäyttömahdollisuuksia
Toiminnon kuvaaminen esim. algoritmin määrittely
Laitteiden ja prosessien toimnnan kuvaus (digitaalikello, matkapuhelin, pankkiautomaatti)
Järjestelmän elinkaaren mallintamiseenKäyttöliittymien specifioinnissa
Tilasiirtymämatriisi: Tilasiirtymämatriisi: merkkijonon muuttaminen merkkijonon muuttaminen
reaaliluvuksireaaliluvuksimerkki on d merkki on "." loppu
merkki ei ole d eikä "."
alkutila
loppu
des.osa
piste
kok.osa
kok.osa----------------------------
s = merkki
loppu----------------------------
status = FAIL
loppu----------------------------
status = FAIL
loppu----------------------------
status = FAIL
kok.osa----------------------------
s = 10*s+merkki
loppu----------------------------
status = FAIL
loppu----------------------------
arvo = sstatus = OK
piste----------------------------
des.osa----------------------------
s = s+merkki/10k=2
loppu----------------------------
status = FAIL
loppu----------------------------
status = FAIL
loppu----------------------------
status = FAIL
des.osa----------------------------s = s + merkki/10**k,
k=k+1
loppu----------------------------
status = FAIL
loppu----------------------------
arvo = sstatus = OK
loppu----------------------------
status = FAIL
alkutila
kok.osa
piste
loppu
merkki on d
muuten
s = merkki
status = FAIL
kok.osa
loppu
ehto toiminnot seur. tila
merkki on d
merkki on "."
loppu
muuten
s = 10*s + merkki
arvo = s, status = OK
status = FAIL
kok.osa
piste
loppu
loppu
merkki on d
muuten
s = s + merkki/10, k= 2
status = FAIL
des.osa
loppu
des.osa
merkki on d
loppu
muuten
s = s + merkki/10**k, k=k+1
arvo = s, status = OK
status = FAIL
des.osa
loppu
loppu
Kirjan elinkaari tilakaavionaKirjan elinkaari tilakaaviona
tilattu hyllyssä lainassa
poistettu kadoksissa korjattavana
lisäyspalautus
lainaus
poisto
Poistuminen editorista Harelin Poistuminen editorista Harelin tilakaaviollatilakaaviolla
Editoi
Exit [tyhjä tai talletettu]
Exit [muutettu ja nimetty]
Save OK do: kysy talletusta
Save OK do: kysy talletusta
File name do: kysy nimeä
Yes
Cancel
Exit [muutettu ja nimetön]
OK
OK [uusi tiedosto]
No
Overwrite OK do: kysy
päällekirjoitusta
Talletus do: talleta puskuri
Cancel
NoCancel
Yes
No
OK [tiedosto olemassa]
Tiedon rakenteen ja Tiedon rakenteen ja esitystavan kuvaaminenesitystavan kuvaaminen
Tietohakemistonotaation Tietohakemistonotaation merkintätavat merkintätavat
merkki merkitys
+ ja() optionaalinen (voi puuttua){} toisto (0-N kertaa)n{}m toisto n-m kertaa[] vaihtoehtoja| vaihtoehtojen erotin@ avainkenttä* kommentti
Tietohakemisto esimerkkejäTietohakemisto esimerkkejähenkilötiedot = nimi + @henkilötunnus + aviosääty + lapsetnimi = 1{etunimi}3 + sukunimiaviosää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"]
Tietohakemisto esimerkkejä 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}
op_nro nimi os …… … … …
777 Ahto S. … …222 Teemu T. … …
suor_nro op_nro oj_nro pvm ov_määrä arvosana opettaja… … … … … … …
234 777 81210 20.3.1995 2 3 ijh456 222 81210 22.3.1996 2 5 ijh645 777 81130 24.3.1996 4 3 tensu… … … … … … …
oj_nro oj_nimi kuvaus… … …
81210 otupk …81130 otm …
Muita tiedon rakenteen ja Muita tiedon rakenteen ja esitystavan määrittelytapojaesitystavan määrittelytapoja
Merkkauskielet– HTML– SGML– XML (ja siihen liittyvät standardit: DTD, XML
Schema)
ASN.1: tietoliikenteen sanomarakenteet…
XML:n dokumenttityypin XML:n dokumenttityypin rakenteen määrittely: DTD rakenteen määrittely: DTD
(Document Type Definition).(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)>]>
XML-dokumenttiXML-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>
… … ja vastaava XML Schemaja 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>
UML (OMT++) vs. SAUML (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
Millä piirrät?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.