vain äärellisten rakenteiden kohdalla. Siksi keskitynkin ongelmista edelliseen: tilaavaruudeltaan
|
|
- Kalle Salminen
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 Tietojenkäsittelytiede 24 Joulukuu 2005 sivut Toimittaja: Jorma Tarhio c kirjoittaja(t) Ohjelmistojen äärellistilaisten, formaalisti oikeiden mallien tuottaminen automaattisesti Antti Siirtola Oulun yliopisto Tietojenkäsittelytieteiden laitos antti.siirtola@tol.oulu.fi 1 Johdanto Tietokoneiden laskentakapasiteetin kasvaminen on mahdollistanut paitsi yhä laajempien myös rakenteeltaan monimutkaisempien sovellusten suorittamisen ja tuottamisen. Testaamisesta on tullut vaikeampaa ja virheiden havaitsemisesta hankalampaa. Erityisen ongelmallisia perinteisten testausmenetelmien kannalta ovat rinnakkaiset sovellukset, koska tällaisen ohjelman osien suoritukset voivat limittyä keskenään lukemattomin eri tavoin, jolloin sovelluksen jokainen ajokerta saattaa olla erilainen. Ongelman ratkaisemiseksi on kehitetty formaaleja tarkastus- eli verifiointimenetelmiä, joita käyttäen ohjelman jokainen suoritusvaihtoehto voidaan tutkia. Eräät näistä menetelmistä perustuvat päättelysääntöihin [21, 16], joiden soveltaminen vaatii yleensä hidasta ja virhealtista käsityötä. Siksipä ne eivät sovellu laajamittaiseen todellisten, suurten sovellusten tarkasteluun. Toiset, mallintarkastusmenetelmät [4, 7, 15, 23], sen sijaan ovat automaattisia, mutta ne edellyttävät yleensä tutkittavan sovelluksen tila-avaruuden olevan äärellinen, mikä ei ohjelmistojen kohdalla käytännössä pidä paikkaansa. Mallintarkastuksen sovellettavuutta rajoittaa lisäksi tilaräjähdysongelma [27]; ohjelman tila-avaruus kasvaa pahimmassa tapauksessa eksponentiaalisesti suhteessa muuttujien ja rinnakkaisten komponenttien määrään, mikä tarkoittaa mallintarkastuksen olevan käyttökelpoinen vain hyvin pieniä sovelluksia tutkittaessa. Ongelman kompensoimiseksi on esitetty useita menetelmiä [3, 7, 27], joista on kyllä hyötyä, mutta ne eivät ratkaise ongelmaa kokonaan. Kokemukseni perusteella järjestelmän voimakkaalta abstrahoinnilta, pelkistetyn mallin rakentamiselta, onkin käytännössä hankala välttyä [25]. Koska todellisuudessa sovellusten tila-avaruus on yleensä ääretön tai ainakin valtavan suuri, järjestelmäkuvausta tai ohjelmakoodia ei voi suoraan syöttää mallintarkastustyökaluun, vaikka se olisikin käännetty ohjelman ymmärtämään muotoon. Luotettavien verifiointitulosten saamiseksi analysointikohteen on kuitenkin vastattava todellisuutta. Siksipä myös mallin rakentaminen on voitava perustella formaalisti. Lisäksi tämä vaihe pitäisi pystyä suorittamaan mahdollisimman automaattisesti inhimillisten virheiden välttämiseksi sekä menetelmän laajamittaisen sovellettavuuden ja käytännön merkityksen takaamiseksi. Oma tutkimukseni keskittyykin juuri tähän ongelmaan: äärellistilaisten mal- OHJE KIRJAPAINOLLE: B5-arkin vasen- ja yläreuna kohdistetaan A4-arkin vasempaan ja yläreunaan. Näin pitäisi marginaaliksi tulla taitteen puolella noin 33 mm ja muualla noin 22 mm.
2 Siirtola 23 lien tuottamiseen täysin tai lähes automaattisesti ohjelman kuvauksen perusteella. Lähtökohtanani on keskittää huomio vain muutamaan prosessiin ja kätkeä kaikki tapahtumat, jotka eivät suoraan vaikuta tarkasteltavaan ominaisuuteen, ohjelman oikeellisuuden määritelmään. Mikäli sovellus kohtelee eri prosesseja riittävän yhdenmukaisesti, muutamalle prosessille osoitetut ominaisuudet voidaan yleistää koskemaan myös muita. Varsinainen ongelma on kuitenkin tunnistaa syntaksin perusteella ne tapaukset, joissa muutamaa erikokoista äärellistilaista ohjelmaa tutkimalla voidaan osoittaa ominaisuuksia jopa äärettömän suurelle joukolle samankaltaisia järjestelmiä. Koska teoriani on pääosin vasta kehitteillä, ongelmakenttää havainnollistetaan esimerkin avulla luvussa viisi, jossa käsitellään palvelin asiakas-verkon mallintamista ja tämän tarkastelun yleistämistä. Tätä ennen tutustutaan kuitenkin alueella tehtyyn aikaisempaan tutkimukseen ja esitellään käytettävä formalismi. Ongelman täsmällisempi määrittely tehdään seuraavassa luvussa. Lopuksi kerron tutkimukseni taustalla olevista tavoitteista. 2 Tutkimusongelma Abstrahointiongelma voidaan jakaa kahteen osaan: sovelluksen muuttamiseen tila-avaruudeltaan äärelliseksi malliksi, jotta automaattisia verifiointityökaluja voisi yleensä käyttää, ja mallin kutistamiseen tilaräjähdysongelman takia. Vaikka näistä jälkimmäinen on käytännössä erittäin merkittävä ongelma, äärellistilaisten mallien tarkastelu on kompleksisuudestaan huolimatta periaatteessa mahdollista nykyisin automaattisin menetelmin, minkä vuoksi en pidä jälkimmäistä ongelmaa yhtä perustavanlaatuisena kuin edellistä. Lisäksi koosta on järkevää puhua vain äärellisten rakenteiden kohdalla. Siksi keskitynkin ongelmista edelliseen: tilaavaruudeltaan äärellisten mallien tuottamiseen täysin tai lähes automaattisesti ohjelman kuvauksen perusteella. Käytännön sovellusten tila-avaruuden äärettömyys johtuu siitä, että ohjelmien kuvauksissa esiintyy 1. kokonaislukuarvoisia tai muita muuttujia, joiden arvoalue on rajoittamaton; 2. mielivaltaisen suuria taulukoita tai dynaamisia tietorakenteita kuten listoja ja puita; 3. rajoittamaton määrä samankaltaisia entiteettejä, esimerkiksi olioita tai prosesseja, tai 4. niiden välisessä kommunikoinnissa käytettäviä puskureita, joiden kokoa ei ole määritelty. Näistä ensimmäisen ratkaisemiseen on olemassa tehokkaita ja käyttökelpoisia menetelmiä [6, 19, 20, 30]. Lisäksi koen kolme jälkimmäistä ongelmaa mielenkiintoisemmiksi, joten keskityn tutkimuksessani niihin. Tapauksista kolme jälkimmäistä ovat oikeastaan saman asian eri ilmentymiä; ohjelmassa voi olla mielivaltaisen monta rakenteeltaan samanlaista osaa, jotka ovat tapauksesta riippuen taulukon tai puskurin muistipaikkoja, tietorakenteen solmuja, olioita tai prosesseja. Ongelma tunnetaan myös äärettömän järjestelmäperheen verifiointina tai parametrisenä verifiointiongelmana, jossa samankaltaisten osien määrät ja tätä kautta sovelluksen täsmällinen rakenne määräytyvät parametrien perusteella. Kun parametrit vaihtelevat yli arvoalueidensa, saadaan järjestelmäkuvauksen instansseja, joista jokaisen tila-avaruus on äärellinen ja joista muodostuu ääretön järjestelmäperhe.
3 24 Äärellisten mallien tuottaminen Pyrkimyksenäni on kehittää tehokkaita ja käyttökelpoisia algoritmeja järjestelmäperheen tai toisin sanoen parametrien arvoalueiden tuloavaruuden jakamiseen ekvivalenssiluokkiin, jolloin koko perheen mallintarkastus olisi mahdollista tehdä tutkimalla yksi edustaja kustakin ekvivalenssiluokasta. Luonnollisesti mielenkiintoni kohteena ovat sellaiset järjestelmäperheet, jotka voidaan jakaa äärelliseen määrään ekvivalenssiluokkia. Tämä edellyttää tietysti sitä, että ekvivalenssiluokkaan kuuluvat järjestelmät ovat riittävän samanlaisia. Se, mitkä instansseista voidaan samaistaa keskenään, riippuu puolestaan järjestelmäkuvauksen lisäksi tutkittavasta ominaisuudesta, ohjelman oikeellisuuden määritelmästä. Mitä yksinkertaisemmasta ominaisuudesta on kysymys, sitä enemmän on ominaisuuden kannalta tarpeetonta tietoa, jota voi hävittää, ja sitä erilaisempia järjestelmiä on mahdollista pitää keskenään ekvivalentteina [27]. Itse keskityn ominaisuuksiin, jotka määrittävät toiminnan kiinteälle määrälle komponentteja ja jotka näin ollen eivät muutu järjestelmän kasvaessa. Esimerkiksi vertaisverkkoja tutkittaessa ominaisuus voisi koskea kahden solmun välistä kommunikointia. Arvioin tällaisten oikeellisuusmääritysten kattavan suuren osan käytännön verifioinnissa tarvittavista ominaisuuksista. 3 Aiempia tuloksia Parametrinen verifiointiongelma on yleisesti ratkeamaton, vaikka järjestelmäperheen jäsenet olisivatkin äärellistilaisia [1]. Joissakin tapauksissa ongelma kuitenkin on ratkeava. Yleisimmät lähestymistavat perustuvat induktion käyttöön ja ekvivalenssiluokkia vastaavien prosessiinvarianttien laskemiseen, joiden ominaisuudet säilyvät muuttumattomina, vaikka tiettyjä komponentteja lisättäisiinkin. Clarke, Grumberg ja Jha käyttävät verkkokielioppia järjestelmien rakenteen määrittelemiseen ja esittävät menetelmän prosessi-invariantin laskemiseksi [5]. Valmarin lähestymistapa puolestaan toimii joillekin rengasrakenteille [29]. Dathin, Roscoen ja Brookesin lukkiutumien tarkastelussa käyttämä menetelmä ei edellytä verkolta erityistä topologiaa [23]. Kuvauskieltä rajataan sillä tavalla, että vierekkäisiä prosesseja tutkimalla voidaan yleensä selvittää, lukkiutuuko verkko. Tässä suhteessa menetelmä on kiinnostava ja lupaava, mutta epäilen sen soveltuvuutta muiden ominaisuuksien tarkasteluun. Kaikissa näissä menetelmissä on lisäksi sama ongelma: yksittäisten prosessien tila-avaruus tai haarautumisaste ei saa muuttua verkon koon mukana, joten esimerkiksi palvelin asiakas-verkoille äärellistilaista mallia ei pystytä määrittämään. Creesen kehittämässä induktiomenetelmässä tätä rajoitetta ei ole [9]. Sitä voi soveltaa useisiin eri verkkotopologioihin, mutta induktiossa käytettävän prosessiinvariantin keksiminen edellyttää tutkittavan järjestelmän perinpohjaista tuntemusta, ja se on laadittava käsityönä. Tämän vuoksi en pidä menetelmää kovin mullistavana, vaikka se onkin muuten automaattinen ja mahdollistaa useiden erityyppisten järjestelmien tutkimisen. Yksinkertaisimman mutta käyttökelpoisimman menetelmän ovat mielestäni esittäneet Ip ja Dill, jotka abstrahoivat identtisten prosessien tilan periaatteessa tiputtamalla tilavektorista pois useammin kuin kaksi kertaa toistuvat komponentit [18]. Mikäli prosessit ovat äärellistilaisia, abstrakti tila-avaruus lakkaa jossain vaiheessa kasvamasta, vaikka identtisiä prosesseja lisättäisiinkin. Menetelmä mahdollistaa kuitenkin vain yksinkertaisten virhetilanteiden havaitsemisen. Lisäk-
4 Siirtola 25 si arvelen pienempiinkin invarianttiprosesseihin päästävän. Oma lähestymistapani muistuttaa Ipin ja Dillin sekä Dathin, Roscoen ja Brookesin menetelmää siinä mielessä, että pyrin tekemään ekvivalenssiluokkiin jaon syntaksin perusteella. Tämä tähtää myös tilaräjähdyksen välttämiseen, sillä ongelmahan syntyy siitä, että muunnettaessa ohjelmakoodi mallintarkastustyökalujen ymmärtämään muotoon saadaan pahimmillaan kooltaan eksponentiaalisesti suurempi tilamalli. Vaikka muunnos joudutaan joka tapauksessa tekemään automaattisen verifioinnin yhteydessä, menetelmä helpottaa ja tehostaa myös muilla menetelmillä tapahtuvaa mallin analysointia. Tähän voidaan joutua, mikäli verifiointi mallin äärellistilaisuudesta huolimatta vie liikaa resursseja. Lisäksi perinteiset tilamallit eivät tarjoa tietoa siitä, miten ohjelman toiminta muuttuu komponenttien määrän mukana, joten tämänkin vuoksi syntaksitasolla toimiminen on perusteltua. Ongelman voisi kiertää symbolisia tilamalleja käyttäen [19], mutta ainakaan tällä hetkellä työkalut eivät tue niitä. Ongelman ratkaiseminen symbolisten tilamallien tasolla mahdollistaisi kuitenkin tulosten yleistämisen helposti eri kuvauskielille, mutta ainakin aluksi pyrin toimimaan yhden formalismin sisällä. 4 Kuvauskieli Syntaksi ja semantiikka tekevät karkeimman rajauksen tarkasteltaviin järjestelmiin ja ominaisuuksiin, joten niiden valinta ei ole yhdentekevää. Työssäni kuvauskielen merkitys korostuu vielä entisestään, koska tarkastelut tehdään pääsääntöisesti syntaksitasolla. Tarkoituksenani on rakentaa lähtökohtana olevan kuvauskielen päälle rajoitetumpi formalismi, jonka puitteissa käytännön sovellusten mallintaminen on mahdollista ja joka tarjoaa riittävästi lisätietoa, jotta ekvivalenssiluokat voidaan määrittää tehokkaasti syntaksin perusteella. Perusformalismina toimii funktionaalinen prosessialgebrallinen mallinnuskieli CSP (Communicating Sequential Processes) [23]. Se ei tee eroa järjestelmien ja ominaisuuksien kuvaamisessa, vaan kaikki sen rakenteet ovat prosesseja. Tapahtumapohjaisuutensa vuoksi CSP soveltuu mielestäni tilaperustaisia lähestymistapoja luonnollisemmin ohjelmistojen mallintamiseen. Lisäksi se tarjoaa riittävät rakenteet todenmukaisten järjestelmien kuvaamiseen, abstraktiotason säätelemiseen ja verkon koostamiseen muutamaa osaa kopioimalla. CSP:n mallintarkastus suoritetaan yleensä vertaamalla järjestelmän mallia ominaisuutta kuvaavaan prosessiin. CSP:n ongelmana teoreettisissa tarkasteluissa on sen löysästi määritelty syntaksi etenkin parametrien kohdalla, joten olen rajoittunut sen yksinkertaiseen, parametrittomaan versioon, josta myös muuttujat on poistettu. Tällainen kieli ei kuitenkaan ole paljon tilamalleja korkeammalla tasolla eikä sillä voi kuvata äärettömiä järjestelmäperheitä. Siksi olen rakentanut parametrittoman version päälle yksinkertaisen tyyppijärjestelmän [12, 19, 20], jolloin CSP toimii lähinnä siltana tilamalleihin ja denotationaalisiin tulkintoihin. Näistä jälkimmäiset kertovat, mitä prosessi tekee, kun taas edelliset keskittyvät myös siihen, miten eteneminen tapahtuu. CSP:n denotaatioissa prosessit tulkitaan jälkien, estymien ja pillastumien joukkoina. Jälki on prosessin suorittama näkyvien tapahtumien jono. Estymä puolestaan muodostuu jäljestä sekä joukosta tapahtumia, joista prosessi voi kyseisen jäljen suoritettuaan kieltäytyä. Pillastuma taas on sellainen jälki, jonka jälkeen
5 26 Äärellisten mallien tuottaminen prosessi voi pyöriä loputtomiin tekemättä kuitenkaan mitään näkyvää. Jälki- ja estymämallit ovat denotationaalisia semantiikkoja, joissa prosessi tulkitaan vastaavasti sen jälkien joukkona sekä jälkien ja estymien joukkoina. Näissä tulkinnoissa turvallisuusominaisuuksien [2] ja estymämallissa myös lukkiutumien tutkiminen on mahdollista. Käytännössä tämä tarkoittaa, että virheellisten toimintojen suorittaminen voidaan havaita. Se ei kuitenkaan merkitse sitä, että prosessi tekisi oikeita toimenpiteitä; se ei vain tee mitään laitonta. Mikäli virheiden havaitsemisen ohella halutaan varmistaa ohjelman myös etenevän, on kysymys elävyydestä [2], jolloin täytyy ottaa huomioon myös pillastumat sekä tila-avaruudeltaan rajoittamattomien järjestelmien kohdalla äärettömän pitkät jäljet. CSP:n tapa käsitellä näistä edellisiä on kuitenkin hieman ongelmallinen, koska abstrahoinnin ja kätkennän seurauksena malleihin tulee usein epätodellisia pillastumia ja CSP:n standardisemantiikassa prosessi voi tehdä pillastuman jälkeen mitä tahansa. Siksi elävyysominaisuuksia tutkittaessa on parempi turvautua esimerkiksi CFFD-semantiikkaan [28]. Toinen vaihtoehto on pyrkiä reiluihin malleihin, joissa epätodellisia pillastumia ei esiinny. Yksi CSP:n tärkeimmistä ominaisuuksista on kuitenkin mahdollisuus kätkeä tarkastelun kannalta epäolennaiset tapahtumat. Tutkimukseni kannalta se tarkoittaa sitä, että sellaisten prosessien, jotka eivät vaikuta suoraan tutkittavaan ominaisuuteen, kaikki tapahtumat muutetaan näkymättömiksi. Myös ekvivalenssiluokkien määrittely on tällöin helppoa; yhteen luokkaan kuuluvilla prosesseilla on kätkennän jälkeen sama denotaatio. Ongelman voi yleistää piilottamalla kaikki osat, joiden määrä riippuu parametrista. Mikäli ominaisuus kuitenkin edellyttää joidenkin tällaisten prosessien pysyvän näkyvinä, järjestelmän kuvausta voi algoritmisesti muuttaa sillä tavalla, että parametrista erotetaan kiinteä määrä alkioita yksittäisiksi prosesseiksi, jotka jätetään kätkemättä. Menettelyssä on vain yksi ongelma: järjestelmän kuvaus kasvaa pahimmillaan eksponentiaalisesti parametrista erotettujen prosessien lukumäärän suhteen. Kuitenkin käytännössä määrät ovat yleensä pieniä, joten en pidä ongelmaa kovin vakavana. 5 Palvelin asiakasverkon mallintaminen Tutkimusaiheeni ja siihen liittyvien kysymysten valaisemiseksi tarkastellaan kuvan 1 mukaista yksinkertaista järjestelmää, jossa asiakas pyytää palvelimelta tietoa x, jää odottamaan vastausta y ja sen saatuaan palaa alkutilaan pyytääkseen uutta tietoa. Palvelin puolestaan odottaa ensin pyyntöä x joltakin asiakkaistaan ja sen tultua lähettää siihen vastauksen f(x ). Tämän jälkeen palvelin on valmis käsittelemään uuden pyynnön. Oikeellisuusvaatimuksena on, että pyytäessään tietoa x asiakas saa aina asianmukaisen vastauksen f(x). CSP-kielellä asiakkaan i voi kuvata prosessina C i = i.request$x i.reply?y C i. Symboli $ tarkoittaa epädeterminististä valintaa, eli asiakas voi pyytää mitä tietoa tahansa. Kysymysmerkki puolestaan merkitsee sitä, että asiakasprosessi hyväksyy minkä tahansa vastauksen, sillä ei ole järkevää olettaa sen tietävän, mikä vastauksen kuuluu olla. Palvelinprosessin taas voi esittää muodossa S =? j.request?x j.reply. f(x ) S,
6 Siirtola 27 missä kysymysmerkit viittaavat jälleen siihen, että palvelin hyväksyy mitä tahansa tietoa x koskevan pyynnön miltä tahansa asiakkaalta j. palvelin n } {{ } asiakkaita Kuva 1: Palvelin asiakas-järjestelmä i i.request.r i.reply.a i.reply.m i.request.a Kuva 2: Abstraktin asiakkaan i tilamalli Operaattorien erot käyvät ilmi kuvan 2 tilamallista, jossa asiakkaan toiminta on esitetty kahta eri pyyntö- ja vastausviestiä käyttäen. Alkutila on merkitty i-kirjaimella, ja tarkoittaa näkymätöntä tapahtumaa, jonka prosessi voi suorittaa milloin tahansa siirtymän alussa ollessaan. Tilamallissa epädeterministinen valinta näkyy kahtena vaihtoehtoisena -tapahtumana. Prosessi voi alkutilassa ollessaan suorittaa niistä näkymättömästi kumman tahansa, jolloin asiakas omavaltaisesti päättää mitä tietoa pyytää. Vastaustapahtumien kohdalla tällaista valintamahdollisuutta ei ole, sillä asiakkaalle kelpaa niistä kumpi tahansa. Näkymättömät siirtyvät ovat yksi syy, jonka vuoksi saman toiminnallisuuden voi esittää usealla erilaisella tilamallilla. Siksi lopullinen tarkastelu tehdäänkin usein jonkin denotaation kautta. Kun merkitään jonon alkiot kulmasulkeisiin pilkuin erotettuina ja käytetään sanoista request ja reply vastaavasti lyhenteitä rq ja rp, niin asiakkaan i jäljet voidaan esittää säännöllisenä ilmaisuna [ ( i.rq.a + i.rq.r ) ( i.rp.a + i.rp.m ) ] ( + i.rq.a + i.rq.r ). Ne saadaan prosessin tilamallista alkutilasta lähtevinä näkyvien tapahtumien äärellisinä jonoina. Estymät puolestaan ovat muotoa (t e,x \ {i.rq.a}), (t e,x \ {i.rq.r}), (t o,x \ {i.rp.a,i.rp.m}), missä t e ja t o ovat vastaavasti parillisen ja parittoman pituiset jäljet ja X kaikkien tapahtumien joukon, Σ:n, osajoukko. Tässä tapauksessa Σ = { j.rq.r, j.rq.a, j.rp.m, j.rp.a j = 1,2,...,n}. Myös estymistä käy ilmi, että asiakas voi valita pyyntöviestin mutta ei vastausta. Pillastumia asiakkaalla ei sen sijaan ole, sillä sen tilamallissa ei ole yhtään - siirtymistä muodostuvaa äärettömän pitkää polkua. Lopullisen, kuvan 1 mukaisen järjestelmän koostaminen tehdään synkronoimalla palvelimen ja asiakkaiden suorittamat tapahtumat. Palvelin voi siis suorittaa tapahtuman l.request.z vain, jos asiakas l on myös halukas tekemään niin, jolloin molemmat suorittavat tapahtuman yhtä aikaa. Asiakkaiden välillä synkronointia ei tehdä, sillä niiden ei tarvitse, eivätkä ne saakaan, kommunikoida keskenään. CSP:llä tämä ilmaistaan kirjoittamalla G = S (C 1 C 2 C n ),
7 28 Äärellisten mallien tuottaminen missä kaksi pystyviivaa tarkoittaa synkronista ja kolme asynkronista yhdistämistä. Nyt tarvitaan vielä tutkittavaa ominaisuutta esittävä prosessi P = $k.request$x k.reply. f(x ) P. Se eroaa palvelimen kuvauksesta vain siinä, että ulkoinen valintaoperaattori? on korvattu epädeterministisellä vastineellaan. Ominaisuusprosessin voi tulkita sillä tavalla, että pyysipä mikä tahansa asiakas mitä tahansa tietoa, se saa haluamansa. Jos ominaisuusprosessi osoittautuu vähintään yhtä abstraktiksi kuin järjestelmän kuvaus eli CSP:n notaatiota käyttäen P G, niin järjestelmän sanotaan toteuttavan ominaisuuden. Tämän voi ymmärtää myös sillä tavalla, että G on P:n toteutus eli P:n deterministisempi versio. Vaikka tarkasteltavat prosessit ovat todella yksinkertaisia, edellä esitetty kysymys järjestelmän G oikeellisuudesta ominaisuuden P mielessä on mallintarkastuksen kannalta epätriviaali. Tämä johtuu siitä, että jo näinkin pienessä ja yksinkertaisessa mallissa on useita rajoittamattomia parametreja. Näitä ovat pyyntöja vastausviestien sekä asiakasprosessien lukumäärät. Puskuroimalla palvelimen ja asiakkaiden väliset viestintäkanavat saataisiin helposti vielä yksi tekijä lisää. Ongelmista kaksi ensimmäistä voidaan ratkaista rajoittumalla oikeellisuustarkasteluissa yhteen mielivaltaiseen pyyntöön r ja siihen liittyvään vastaukseen m = f(r), jolloin data-abstraktiota [6] käyttäen kaikki muut viestit voidaan kuvata yhdeksi alkioksi a. Tämä aiheuttaa luonnollisesti muutoksia myös prosessien toimintaan; palvelimen vastaus pyyntöön a ei ole enää yksikäsitteinen, sillä onhan mahdollista, että on olemassa myös jokin muu pyyntöviesti, johon oikea vastaus on m. Tämä epädeterministisyys käy ilmi abstraktin palvelimen tilamallista kuvassa request.a 2.request.a 1.reply.m 2.reply.a 2.reply.m n.reply.a n.request.a n.reply.m 1.reply.a i 1.request.r n.reply.m 1.reply.m 2.request.r 2.reply.m. n.request.r Kuva 3: Abstrahoidun palvelimen tilamalli asiakas 1 palvelin n } {{ } asiakkaita Kuva 4: Palvelin ja yksi kätkemättä jätetty asiakas Myös asiakkaiden määrän rajoittamiseen voisi tässä tapauksessa soveltaa joitakin aiemmin esiteltyjä menetelmiä. Oma lähestymistapani perustuu kuitenkin siihen, että kaikki määrältään parametroidut prosessit, tässä tapauksessa asiakkaat, kätketään. Ajatuksessa ei ole sinänsä mitään uutta tai ihmeellistä, eikä ominaisuuden P tutkiminenkaan onnistu suoraan, mutta
8 Siirtola 29 jos asiakkaista yksi erotetaan parametrista, tarkastelu voidaan rajata siihen ja yrittää yleistää myöhemmin koskemaan myös muita asiakkaita. Muutoksen jälkeen päädytään kuvan 4 mukaiseen järjestelmään, jossa asiakas 1 on parametrista erotettu prosessi ja muut asiakkaat on kätketty. Syntaksitasolla muutokset koskevat palvelinta S =(? j.request?x j.reply. f(x ) S) (1.request?x 1.reply. f(x ) S), jossa j saa nyt arvoja kahdesta n:ään, ja järjestelmän kuvausta G = S (C 1 C 2 C n ) \ { 2,3,...,n }. Tässä tapauksessa neliö tarkoittaa palvelimen olevan valmis käsittelemään yhtä lailla sekä parametrista erotetun että muiden asiakkaiden pyyntöjä ja kenoviiva on kätkentäoperaattori, joka piilottaa kaikki 2-, 3-,..., n-alkuiset tapahtumat. Kannattaa huomata, että asiakkaan 1 erottaminen parametrista koskee ainoastaan palvelimen kuvausta; tilamalli säilyy entisellään, joten palvelimen toiminta ei muutu. Myös oikeellisuusvaatimusta voisi periaatteessa käsitellä vastaavalla tavalla. Menetelmäni ajatuksena on kuitenkin kiinnittää huomio vain kiinteään määrään prosesseja ja pyrkiä yleistämään näille osoitetut ominaisuudet koskemaan myös muita. Tämän vuoksi on perusteltua kirjoittaa oikeellisuusvaatimus suoraan kätkemättömän asiakkaan näkökulmasta, jolloin se saadaan muotoon P = 1.request$x 1.reply. f(x ) P. Kyseessä ei ole täysin sama ominaisuus kuin P \ { 2,3,...,n }, mutta P on kuitenkin sellainen, joka ainakin itselläni tulee ensimmäisenä mieleen menetelmää suoraan soveltaessani. Edelleen P on näistä kahdesta estymämallin mielessä abstraktimpi, eli jos se on voimassa, järjestelmä toteuttaa molemmat ominaisuudet. Lisäksi P on yksinkertaisempi ja asiakkaiden määrästä riippumaton. Prosessin G toimintaan asiakkaiden määrä sen sijaan vaikuttaa kätkennästä huolimatta. Kun tämä parametri saa kaikki mahdolliset arvonsa, syntyy äärettömän monta samankaltaista järjestelmää eli ääretön prosessiperhe. Käytetään näistä merkintää G n, missä alaindeksi kertoo kätkettävien asiakkaiden lukumäärän. Nyt kysymys kuuluu, mitkä prosesseista G 0,G 1,G 2,... ovat samanlaisia. Mikäli erilaisia järjestelmiä voidaan osoittaa olevan vain äärellinen määrä, ne ovat äärellistilaisia ja ne pystytään vielä nimeämään, voidaan ääretön määrä mallintarkastustehtäviä suorittaa äärellisessä ajassa. Järjestelmän formaali tarkastelu osoittaa, että tässä tapauksessa prosessiperheen jäsenet tai oikeastaan parametrit kooltaan jakautuvat kahteen ekvivalenssiluokkaan {0} ja {1,2,3,...} käytettäessä CSP:n estymä- tai standardisemantiikkaa. Siis jos P G 0 ja P G 1, niin järjestelmä toimii oikein asiakkaiden määrästä riippumatta. Erityisesti, jos vertailuista jälkimmäinen on voimassa, niin silloin järjestelmä toimii oikein, kun kätkettäviä asiakkaita on vähintään yksi, ja päinvastoin. Kannattaa huomata, että oikeellisuus koskee tässä tapauksessa vain kätkemätöntä prosessia. Tulos voidaan kuitenkin yleistää koskemaan myös muita asiakkaita, mikäli palvelin kohtelee niitä samalla tavalla kuin näkyvää. Tämä ominaisuus tunnetaan paremmin symmetriana [8, 10,
9 30 Äärellisten mallien tuottaminen 17], ja se käy hyvin ilmi palvelimen tilamallista kuvassa 3. Symmetrioita on tutkittu tilaperustaisten lähestymistapojen yhteydessä hyvinkin kattavasti, mutta transitiopohjaista symmetriaa koskevia artikkeleita on olemassa vain muutama [13, 14, 22]. Siksi olen laajentanut symmetrian käsitteen CSP:n estymämalliin [26]. Määritelmäni on osoittautunut samaksi kuin Goldsmithin ja Moffatin [14]. Taustalla on jokin perusjoukko, jonka suhteen valittu permutaatioryhmä määrää symmetrian käsitteen. Jotta permutaatioita voisi soveltaa mihin tahansa CSPrakenteeseen, permutaatiot laajennetaan tapahtumiin ja tätä kautta prosesseihin sekä niiden jälkiin ja estymiin sillä tavalla, että ainoastaan perusjoukon alkioita siirretään. Prosessi P on Π-symmetrinen, jos P:n jäljen ja estymän kuvaaminen ryhmän Π permutaatiolla tuottaa aina vastaavasti P:n jäljen ja estymän. Esimerkiksi palvelinprosessi on Sym(I)-symmetrinen, missä Sym(I) muodostuu kaikista joukon {1,2,...,n} permutaatioista. Edelleen jokainen asiakas yhdistetään palvelimeen samalla tavalla, jolloin myös koko järjestelmä on Sym(I)-symmetrinen. Tämä tarkoittaa sitä, että yhdelle asiakkaalle osoitetut ominaisuudet koskevat prosessin tunnusta vaille myös kaikkia muita. Järjestelmän oikeellisuuden toteamiseksi riittää siis prosessien P ja G vertailu. Olen rajoittanut yksinkertaista CSPkieltä sillä tavalla, että ainoastaan valitun perusjoukon suhteen symmetristen prosessien määritteleminen on mahdollista. Tätä rajoitettua kieltä käyttämällä pystytään kuitenkin esittämään mikä tahansa estymämallin mielessä symmetrinen prosessi [26]. Niinpä rajoitetun kielen puitteissa toiminnallisen symmetrian toteaminen palautuu helposti ratkeavaksi syntaksin tarkastamiseksi. Yleisesti CSPprosessin symmetrisyyden selvittäminen estymämallissa on kuitenkin NP-kova ongelma eli ainakin yhtä vaikea kuin kysymys, onko verkossa Hamiltonin polkua [11]. Vastaavien tulosten pitäisi olla mahdollisia myös rakentamalleni tyypitetylle CSP-kielelle. Ominaisuuksien laajentaminen koskemaan järjestelmäperheen erikokoisia jäseniä eli ekvivalenssiluokkien määrittäminen syntaksin perusteella on sen sijaan osoittautunut astetta hankalammaksi ongelmaksi. Esimerkin pohjalta tehtyjä havaintoja voidaan kuitenkin jonkin verran yleistää, sillä kokeiden perusteella asiakkaiden määrä jakautuu ekvivalenssiluokkiin {0} ja {1,2,3,...} aina, kun palvelin muodostuu silmukasta, jossa se käsittelee yhtä kätkettävää asiakasta kerrallaan. Samat ekvivalenssiluokat saadaan myös siinä tapauksessa, että palvelin käsittelee jokaisen asiakkaan vuorollaan tai niitä kaikkia omissa säikeissään toisista riippumatta. Tällaisia rakenteita voi edelleen yhdistellä peräkkäin esimerkiksi niin, että aluksi palvelin lähettää kättelyviestin jokaiselle asiakkaalle, sen jälkeen ne käsittelevät tietoa omaan tahtiinsa yhdessä palvelimen kanssa ja kommunikoinnin päätteeksi jokaisen asiakkaan kanssa vaihdetaan vielä lopetusviestit. Lisäksi voidaan sallia vain yhden mielivaltaisesti valitun asiakkaan kanssa keskustelu, mikäli lopuksi ainakin toinen osapuolista päätyy samaan tilaan kuin ennen kommunikointia. On mielenkiintoista, että jossain tilanteissa pienempi järjestelmä toimii suuremman reiluna mallina. Esimerkkijärjestelmän ekvivalenssiluokkia edustavat prosessit G 0 ja G 1, joista jälkimmäisen tilamalli on esitetty kuvassa 5. Siinä on nähtävissä pillastuma, yhdestä -siirtymästä muodostuva silmukka, joka puuttuu pro-
10 Siirtola 31 sessin G 0 tilamallista. Pillastuma aiheutuu siitä, että palvelimen ei koskaan tarvitse valita asiakkaan 1 pyyntöä, vaan se voi suorittaa tapahtumia pelkästään näkymättömien prosessien kanssa. i 1.reply.a 1.request.r 1.reply.m 1.reply.m 1.request.a Kuva 5: Abstraktin järjestelmän G 1 tilamalli Tällaiset abstrahoinnin ja kätkennän aiheuttamat pillastumat edustavat harvoin todellisia ilmiöitä, minkä vuoksi ne yleensä eivät ole kiinnostavia ja niistä on pelkkää haittaa. Mikäli palvelimen kuitenkin oletetaan kohtelevan asiakkaitaan reilusti eli yhdenkään asiakkaan pyyntöä ei voida lykätä loputtomiin, prosessien G 0,G 1,G 2,... tilamallit ovat samanlaisia ja saadaan ainoastaan yksi ekvivalenssiluokka. Tässä tapauksessa pienempi järjestelmä toimii siis suuremman reiluna mallina. Myös tätä tarkastelua voi jonkin verran yleistää. Nyt on kuitenkin syytä olettaa, että kaikkia asiakkaita ei kätketä, vaan niistä yksi jätetään näkyväksi. Kun oletetaan, että palvelin on reilu, niin yhden asiakkaan verkossa tehdyt tarkastelut voidaan yleistää suurempiin järjestelmiin, mikäli palvelin toteuttaa ekvivalenssiluokkien {0} ja {1,2,3,...} yhteydessä mainitut rajoitukset ja yhden asiakkaan verkko ei lukkiudu eikä siinä ei ole pillastumia. Kannattaa huomata, että yleistykset on tehty osin intuitiopohjalta ja niiden formalisointi on vielä kesken. On mahdollista, että palvelimen käyttäytymisen lisäksi myös välitettävän tiedon tyyppiä täytyy erikoistapauksissa rajoittaa. Tämä onkin lähitulevaisuudessa yksi tutkimuskohteistani. 6 Visio Työtäni motivoi ajatus saada menetelmä toimimaan useissa käytännön kannalta tärkeissä verkkotopologioissa tai arkkitehtuurimalleissa. Tällöin suuret ja monimutkaisetkin järjestelmäkuvaukset voisi jakaa äärelliseen määrään tilaavaruudeltaan äärellisiä prosesseja, kun menetelmää soveltaisi rekursiivisesti edeten sovelluksen rakenteessa ylätasolta alaspäin. Todennäköisesti suurille järjestelmille lasketut invarianttiprosessit olisivat kuitenkin mallintarkastustarkoituksiin liian suuria, mutta äärellistilaisille abstraktioille on käyttöä muuallakin kuin verifioinnin piirissä. Järjestelmää analysoitaessa tai simuloitaessa virheiden havaitseminen tehostuu ja sen toiminnan ymmärtäminen helpottuu, kun käytössä on pieni malli. Simulointi tulee kyseeseen esimerkiksi silloin, kun verifiointi mallin äärellistilaisuudesta huolimatta veisi liikaa resursseja. Lisäksi suurten järjestelmien tapauksessa malleja voisi soveltaa intuitiopohjalta ohjelmistojen testiympäristöjen määrittämiseen. Näin yleiset tulokset ovat kuitenkin valtavan työn takana ja kokonaisten järjestelmäkuvausten abstrahointi automaattisesti vielä kaukana. Joillakin osa-alueilla tämä voi silti olla piankin totta. Esimerkiksi tietoturvaprotokollien analysointi kuvauksen perusteella on jo nyt mahdollista [24].
11 32 Äärellisten mallien tuottaminen Vaikka suuriakin läpimurtoja tehtäisiin, formaalit menetelmät jäänevät kuitenkin korkeintaan muutamien erityisalojen käyttöön, joilla verifioinnin kustannukset lasketaan pienemmiksi kuin ohjelman virheellisen toiminnan seuraukset. Tällaisia kohteita voisivat olla esimerkiksi ajoneuvojen ja tuotantolaitosten ohjausjärjestelmät, sotilaalliset ja lääketieteen sovellukset sekä laajasti käytetyt protokollat. Näissä kaikissa ohjelmistovirhe voi aiheuttaa ihmishengen menetyksen tai valtavia muita tappioita. Menetelmien yleistymiseen vaikuttavat kuitenkin tutkimuksellisten saavutusten lisäksi myös poliittiset päätökset sekä vallitseva asenne, se, minkä verran siedämme ohjelmistovirheitä ympärillämme. 7 Kiitokset Kiitän väitöskirjatyöni ohjaajia, Juha Kortelaista ja Antti Valmaria, heidän esittämistään parannusehdotuksista artikkelin ensimmäiseen versioon. Viitteet [1] K. R. Apt, D. C. Kozen (1986) Limits for automatic verification of finite-state concurrent systems. Information Processing Letters, volume 22, number 6, s Elsevier Science. [2] B. Alpern, F. B. Schneider (1985) Defining liveness. Information Processing Letters, volume 21, number 4, s Elsevier Science. [3] R. E. Bryant (1986) Graph-based algorithms for boolean function manipulation. IEEE Transactions on Computers, Series C, volume 35, number 8, s IEEE Computer Society. [4] A. Cimatti, E. Clarke, F. Giunchiglia, M. Roveri (1999) NuSMV: a new symbolic model verifier. Proceedings of the 11th International Conference on Computer Aided Verification; Lecture Notes in Computer Science, volume 1633, s Springer-Verlag. [5] E. M. Clarke, O. Grumberg, S. Jha (1997) Verifying parameterized networks. ACM Transactions on Programming Languages and Systems, volume 19, issue 5, s ACM Press. [6] E. M. Clarke, O. Grumberg, D. E. Long (1994) Model checking and abstraction. ACM Transactions on Programming Languages and Systems, volume 16, issue 5, s ACM Press. [7] E. M. Clarke, O. Grumberg, D. A. Peled (1999) Model Checking. MIT Press, Cambridge, Massachusetts, 314 s. [8] E. M. Clarke, T. Filkorn, S. Jha (1993) Exploiting symmetry in temporal logic model checking. Proceedings of the 5th International Conference on Computer Aided Verification; Lecture Notes In Computer Science, volume 697, pp Springer-Verlag. [9] S. J. Creese (2001) Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks. Ph.D. thesis. Oxford University, Computing Laboratory, 146 s. [10] E. A. Emerson, A. P. Sistla (1996) Symmetry and model checking. Formal Methods in System Design, volume 9, number 1, pp Kluwer Academic Publishers. [11] M. R. Garey, D. S. Johnson (1979) Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, San Francisco, 338 s. [12] J.-Y. Girard, P. Taylor, Y. Lafont (1990) Proofs and Types. Cambridge University Press, 175 s.
12 Siirtola 33 [13] P. Godefroid (1999) Exploiting symmetry when model-checking software. Proceedings of IFIP TC6 WG6.1 Joint International Conference on Formal Description Techniques for Distributed Systems and Communication Protocols and Protocol Specification, Testing and Verification, s Kluwer Academic Publishers. [14] M. Goldsmith, N. Moffat (2004) Automated Compression Techniques; Forward project deliverable D5. PDF_Files/D5.pdf (haettu ). [15] G. J. Holzmann (2003) The Spin Model Checker: Primer and Reference Manual. Addison-Wesley, 596 s. [16] M. R. A. Huth, M. D. Ryan (2000) Logic in Computer Science: Modelling and Reasoning about Systems. Cambridge University Press, 387 s. [17] C. N. Ip, D. L. Dill (1996) Better verification through symmetry. Formal Methods in System Design, volume 9, number 1, s Kluwer Academic Publishers. [18] C. N. Ip, D. L. Dill (1996) Verifying systems with replicated components in Murϕ. Proceedings of the 8th International Conference on Computer Aided Verification; Lecture Notes in Computer Science, volume 1102, s Springer-Verlag. [19] R. S. Lazić (1999) A Semantic Study of Data Independence with Applications to Model Checking. Ph.D. thesis. Oxford University, Computing Laboratory, 242 s. [20] R. S. Lazić, D. Nowak (2000) A unifying approach to data-independence. Proceedings of the 11th International Conference on Concurrency Theory; Lecture Notes in Computer Science, volume 1877, s Springer-Verlag. [21] Z. Manna, A. Pnueli (1995) The Temporal Verification of Reactive Systems: Safety. Springer-Verlag, 512 s. [22] F. Michel, P. Azéma, F. Vernadat (1996) Permutable agents in process algebras. Proceedings of the Second International Workshop on Tools and Algorithms for Construction and Analysis of Systems; Lecture Notes in Computer Science, volume 1055, s Springer-Verlag. [23] A. W. Roscoe (1997) The Theory and Practice of Concurrency. Prentice Hall, 565 s. [24] P. Ryan, S. Schneider, M. Goldsmith, G. Lowe, A. W. Roscoe (2001) The Modelling and Analysis of Security Protocols: The CSP Approach. Addison- Wesley, 300 s. [25] A. Siirtola (2003) Rinnakkaisten järjestelmien mallintaminen aikalogiikkaa käyttäen. Diplomityö. Oulun yliopisto, sähkö- ja tietotekniikan osasto, 141 s. [26] A. Siirtola (2005) Verkkosovellusten äärellistilaisten formaalien mallien tuottaminen automaattisesti. Tietojenkäsittelytieteen päivät 2005, s Oulun yliopistopaino, Oulu. [27] A. Valmari (1998) The state explosion problem. Lecture Notes in Computer Science, volume 1491, s Springer-Verlag. [28] A. Valmari (2000) A chaos-free failures divergences semantics with applications to verification. Proceedings of the 1999 Oxford-Microsoft Symposium in Honour of Sir Tony Hoare; Millennial Perspectives in Computer Science, s Palgrave-Macmillan. [29] A. Valmari (2001) Composition and abstraction. Proceedings of the 4th Summer School on Modeling and Verification of Parallel Processes; Lecture Notes in Computer Science, volume 2067, s Springer-Verlag.
13 34 Äärellisten mallien tuottaminen [30] P. Wolper (1986) Expressing interesting properties of programs in propositional temporal logic. Proceedings of the 13th Annual ACM Symposium on Principles of Programming Languages, s ACM Press.
Ohjelmien automaattisen verifioinnin reunamailla
Ohjelmien automaattisen verifioinnin reunamailla Antti Siirtola Tietotekniikan laitos, Perustieteiden korkeakoulu, Aalto-yliopisto, antti.siirtola@aalto.fi Suomalainen Tiedeakatemia, Nuorten akatemiaklubi,
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti
4.3. Matemaattinen induktio
4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta
Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.
Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,
Algoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
1. Johdanto. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki
1. Johdanto Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 1 1.1. Lähtökohta Keskeisiä käsitteitä: siirtymäsysteemit spesiointikielet Estelle (vanhempi spesiointikieli, paljon Pascalin piirteitä)
Johdatus rakenteisiin dokumentteihin
-RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista
Ohjelmistojen mallintaminen
Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1 Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta
Esimerkkejä polynomisista ja ei-polynomisista ongelmista
Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia
Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:
Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman
(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.
Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Tietyn ominaisuuden samuus -relaatio on ekvivalenssi; se on (1) refleksiivinen,
Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.
Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden
Lefkoe Uskomus Prosessin askeleet
Lefkoe Uskomus Prosessin askeleet 1. Kysy Asiakkaalta: Tunnista elämästäsi jokin toistuva malli, jota et ole onnistunut muuttamaan tai jokin ei-haluttu käyttäytymismalli tai tunne, tai joku epämiellyttävä
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
Kielitieteellisten aineistojen käsittely
Kielitieteellisten aineistojen käsittely 1 Johdanto...1 2 Aineistojen kommentointi, metadatan tyypit...1 3 Aineistojen käsittely...2 3.1 Rakenteisten kieliaineistojen kyselykielet...2 3.2 Tiedonlouhinta
Tutkittua tietoa. Tutkittua tietoa 1
Tutkittua tietoa T. Dybå, T. Dingsøyr: Empirical Studies of Agile Software Development : A Systematic Review. Information and Software Technology 50, 2008, 833-859. J.E. Hannay, T. Dybå, E. Arisholm, D.I.K.
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
Palvelujen dynaaminen valvonta
Palvelujen dynaaminen valvonta Esa Hämäläinen Palveluperustaisten ohjelmistojen suunnittelu ja kehittäminen seminaari Tuusula 18.9.2006 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Tiivistelmä Yritysten
Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki
Malliperustainen ohjelmistokehitys - MDE 25.9.2007 Pasi Lehtimäki MDE Miksi MDE? Mitä on MDE? MDA, mallit, mallimuunnokset Ohjelmistoja Eclipse, MetaCase Mitä jatkossa? Akronyymiviidakko MDE, MDA, MDD,
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia
Software product lines
Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013 Sisällys 1 Johdanto 1 2 Software product
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan CC1991:n ja CC2001:n vertailu Tutkintovaatimukset (degree requirements) Kahden ensimmäisen vuoden opinnot Ohjelmistotekniikan
Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö
Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu
Epätäydellisen preferenssi-informaation huomioon ottavien päätöksenteon tukimenetelmien vertailu (aihe-esittely)
Epätäydellisen preferenssi-informaation huomioon ottavien päätöksenteon tukimenetelmien vertailu (aihe-esittely) Vilma Virasjoki 23.01.2012 Ohjaaja: Jouni Pousi Valvoja: Raimo P. Hämäläinen Työn saa tallentaa
LUKU II HOMOLOGIA-ALGEBRAA. 1. Joukko-oppia
LUKU II HOMOLOGIA-ALGEBRAA 1. Joukko-oppia Matematiikalle on tyypillistä erilaisten objektien tarkastelu. Tarkastelu kohdistuu objektien tai näiden muodostamien joukkojen välisiin suhteisiin, mutta objektien
Copyright by Haikala. Ohjelmistotuotannon osa-alueet
Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary
monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi Ohjaaja: Prof. Kai Virtanen Valvoja: Prof.
Epätäydellisen preferenssiinformaation hyödyntäminen monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi 15.1.2018 Ohjaaja: Prof. Kai Virtanen Valvoja: Prof. Kai Virtanen Tausta Päätöspuu
8003051 Puheenkäsittelyn menetelmät
8003051 Puheenkäsittelyn menetelmät Luento 7.10.2004 Puhesynteesi Sisältö 1. Sovelluskohteita 2. Puheen ja puhesyntetisaattorin laatu 3. Puhesynteesin toteuttaminen TTS-syntetisaattorin komponentit Kolme
Tutkimusmenetelmät-kurssi, s-2004
Algoritmitutkimuksen menetelmistä Tutkimusmenetelmät-kurssi, s-2004 Pekka Kilpeläinen Kuopion yliopisto Tietojenkäsittelytieteen laitos Algoritmitutkimuksen menetelmistä p.1/20 Sisällys Tänään Tietojenkäsittelytiede
The OWL-S are not what they seem
The OWL-S are not what they seem...vai ovatko? Verkkopalveluiden koostamisen ontologia OWL-S Seminaariesitelmä 15.4.2013 Emilia Hjelm Internet on hankala Nykyinternet on dokumenttien verkko Asiat, joita
Seminaariaiheet. Tietoturvaseminaari, kevät 03 Lea Viljanen, Timo Karvi
Seminaariaiheet Tietoturvaseminaari, kevät 03 Lea Viljanen, Timo Karvi 1. BS7799 / ISO 17799 Perustava tietoturvastandardi Kaksiosainen Mikä on BS7799 / ISO17799? Mihin se antaa vastaukset? Mihin se ei
Page 1 of 9. Ryhmä/group: L = luento, lecture H = harjoitus, exercises A, ATK = atk-harjoitukset, computer exercises
Tietotekniikan tarjoama opetus syksyllä 2016 23.5.2016 CS course schedule in autumn 2016 Sari Salmisuo I periodi / period I 12.9. 21.10.2016 viikot/weeks 37-42 II periodi / period II 31.10. 9.12.2016 viikot/weeks
Kurssikoe on maanantaina 29.6. Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.
HY / Avoin ylioisto Johdatus yliopistomatematiikkaan, kesä 201 Harjoitus 7 Ratkaisut palautettava viimeistään perjantaina 26.6.201 klo 16.00. Huom! Luennot ovat salissa CK112 maanantaista 1.6. lähtien.
Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
Algoritmit 1. Luento 9 Ti Timo Männikkö
Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen 16.06.2014 Ohjaaja: Urho Honkanen Valvoja: Prof. Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston
Rinnakkaisohjelmistot. Liisa Marttinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Kevät 2004
581332-8 Liisa Marttinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Kevät 2004 Asema opetuksessa cl-oppimäärän pakollinen kurssi Esitiedot: Tietokoneen toiminta (2 ov) Käyttöjärjestelmät I (2
Palmikkoryhmät kryptografiassa
Palmikkoryhmät kryptografiassa Jarkko Peltomäki 27. marraskuuta 2010 Palmikkoryhmät ovat epäkommutatiivisia äärettömiä ryhmiä. Niillä on monimutkainen rakenne, mutta toisaalta niillä on geometrinen tulkinta
Tietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
Yleinen paikallinen vakautuva synkronointialgoritmi
Yleinen paikallinen vakautuva synkronointialgoritmi Panu Luosto 23. marraskuuta 2007 3 4 putki 1 2 α α+1 α+2 α+3 0 K 1 kehä K 2 K 3 K 4 Lähdeartikkeli Boulinier, C., Petit, F. ja Villain, V., When graph
Rajoittamattomat kieliopit (Unrestricted Grammars)
Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli
Muodolliset kieliopit
Muodolliset kieliopit Luonnollisen kielen lauseenmuodostuksessa esiintyy luonnollisia säännönmukaisuuksia. Esimerkiksi, on jokseenkin mielekästä väittää, että luonnollisen kielen lauseet koostuvat nk.
Täydentäviä muistiinpanoja laskennan rajoista
Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen
Seminaari: Keskusmuistitietokannat Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Sisältö Johdanto Esiteltävien menetelmien taustoja Hajautetun tietokannan spekuloiva samanaikaisuuden
Stabilointi. Marja Hassinen. p.1/48
Stabilointi Marja Hassinen marja.hassinen@cs.helsinki.fi p.1/48 Kertausta ja käsitteitä Sisältö Stabilointi Resynkroninen stabilointi Yleinen stabilointi Tarkkailu Alustus Kysymyksiä / kommentteja saa
Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?
Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? 2013-2014 Lasse Lensu 2 Algoritmit ovat deterministisiä toimintaohjeita
Sosiaalisten verkostojen data
Sosiaalisten verkostojen data Hypermedian jatko-opintoseminaari 2008-09 2. luento - 17.10.2008 Antti Kortemaa, TTY/Hlab Wasserman, S. & Faust, K.: Social Network Analysis. Methods and Applications. 1 Mitä
XML-tutkimus Jyväskylän yliopistossa
XML-tutkimus Jyväskylän yliopistossa Airi Salminen Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos airi.salminen@jyu.fi http://www.cs.jyu.fi/~airi/ Airi Salminen, XML-tutkimus Jyväskylän yliopistossa
Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden
Lisää pysähtymisaiheisia ongelmia
Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
Avoimen lähdekoodin kaksitasokielioppikääntäjä
Avoimen lähdekoodin kaksitasokielioppikääntäjä Miikka Silfverberg miikka piste silfverberg at helsinki piste fi Kieliteknologia Helsingin yliopisto Avoimen lähdekoodin kaksitasokielioppikääntäjä p.1/23
A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015
TIEA241 Automaatit ja, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Formaalisti Määritelmä Nelikko G = (V, Σ, P, S) on kontekstiton kielioppi (engl. context-free
Hieman lisää malleista ja niiden hyödyntämisestä
Hieman lisää malleista ja niiden hyödyntämisestä Ohjelmistojen mallintaminen Kesä 2012 (Avoin yliopisto) Toni Ruokolainen, 23.8.2012 Mallit Mallit ovat todellisuuden abstraktioita, jotka on muodostettu
Software engineering
Software engineering Alkuperäinen määritelmä: Naur P., Randell B. (eds.): Software Engineering: A Report on A Conference Sponsored by the NATO Science Committee, NATO, 1968: The establishment and use of
Konsensusongelma hajautetuissa järjestelmissä
Konsensusongelma hajautetuissa järjestelmissä Niko Välimäki Helsinki 29.10.2007 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto 1 2 Konsensusongelma 2 2.1 Ratkeamattomuustodistus........................
Mallintarkistus ja sen
VERSIO 0.1 LUONNOS Mallintarkistus ja sen soveltaminen PLCohjelmien verifioinnissa AS-0.3200 Automaatio- ja systeemitekniikan projektityöt -projektisuunnitelma Markus Hartikainen 2/1/2009 Sisältö 1. Projektityön
Hahmon etsiminen syotteesta (johdatteleva esimerkki)
Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux
Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.
Kombinatoriikka, kesä 2010 Harjoitus 1 Ratkaisuehdotuksia (RT (5 sivua Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle. 1. Osoita, että vuoden
Äärellisten mallien teoria
Äärellisten mallien teoria Harjoituksen 4 ratkaisut Tehtävä 1. Määritä suurin aste k, johon saakka kuvan verkot G ja G ovat osittaisesti isomorfisia: Ratkaisu 1. Huomataan aluksi, että G =4 G : Ehrenfeucht-Fraïssé
Turingin koneen laajennuksia
Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k
Kurssin koodi ja nimi Ryhmä Päivä Aika Sali Viikot Henkilöt Course code and name Group Day Time Lecture Weeks Course staff
Tietotekniikan koulutusohjelman tarjoama opetus syksyllä 2015 8.6.2015 CSE course schedule in autumn 2015 Päivitetty 29.6.2015 S. Salmisuo I periodi: 7.9. 16.10.2015, viikot 37 42. Period I: 7.9. 16.10.2015,
Yksilöllistä, puhuroi, suorita - Mitä käyttöliittymien termien taakse kätkeytyy?
Yksilöllistä, puhuroi, suorita - Mitä käyttöliittymien termien taakse kätkeytyy? Niina Nissilä & Suvi Isohella Minä ja tiede Seinäjoki 18.3.2014 Vaasa 20.3.2014 Esityksen rakenne Lähtökohta Järjestelmä,
Äärellisten mallien teoria
Äärellisten mallien teoria Harjoituksen 5 ratkaisut (Hannu Niemistö) Tehtävä 1 OlkootGjaG neljän solmun verkkoja Määritä, milloing = 2 G eli verkot ovat osittaisesti isomorfisia kahden muuttujan suhteen
Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.
TIE303 Formaalit menetelmät, kevät 2005 Logiikan kertausta Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-27 p. 1/17 Luento2Luentomoniste
Nimettömien tietojen lähettäminen Lenovolle
Nimettömien tietojen lähettäminen Lenovolle Sisältö Nimettömien tietojen lähettäminen Lenovolle... 1 Harmony... 1 Lenovo Companion 3.0... 2 Lenovo Customer Engagement Service... 3 Lenovo Experience Improvement
Topologia Syksy 2010 Harjoitus 9
Topologia Syksy 2010 Harjoitus 9 (1) Avaruuden X osajoukko A on G δ -joukko, jos se on numeroituva leikkaus avoimista joukoista ja F σ -joukko, jos se on numeroituva yhdiste suljetuista joukoista. Osoita,
VAATIMUSMÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 4)
VAATIMUSMÄÄRITTELY Versio 1.0 (luonnos 4) Edited by Checked by Approved by Juha Parhankangas Luonnos 4 i Sisällysluettelo DOKUMENTIN VERSIOT 1 1. JOHDANTO 2 1.1. Projektin luonne 2 1.2. Tarkoitus ja kattavuus
Johdatus verkkoteoriaan 4. luento
Johdatus verkkoteoriaan 4. luento 28.11.17 Viikolla 46 läpikäydyt käsitteet Viikolla 47 läpikäydyt käsitteet Verkko eli graafi, tasoverkko, solmut, välit, alueet, suunnatut verkot, isomorfiset verkot,
Ruma merkitys. Tommi Nieminen. XLII Kielitieteen päivät. Kielitieteen epäilyttävin välttämätön käsite. tommi.nieminen@uef.fi. Itä-Suomen yliopisto ...
Ruma merkitys Kielitieteen epäilyttävin välttämätön käsite Tommi Nieminen tomminieminen@ueffi Itä-Suomen yliopisto XLII Kielitieteen päivät 21 23 toukokuuta 2015, Vaasa Merkitys, subst lingvistisen merkityksen
Käyttäjäkeskeisen suunnittelun periaatteet ja prosessit
Käyttäjäkeskeisen suunnittelun periaatteet ja prosessit Kurssilla: Johdatus käyttäjäkeskeiseen tuotekehitykseen 23.1.2008 Johanna Viitanen johanna.viitanen@soberit.hut.fi Luennon aiheet Tuotekehityksen
Sisältö. Työn idea Protokollat. Harjoitustyön käytäntöjä. Työn demoaminen. Etäisyysvektori Linkkitila. Palvelin Moodle SSH-tunnelit
Harjoitustyöinfo Sisältö Työn idea Protokollat Etäisyysvektori Linkkitila Harjoitustyön käytäntöjä Palvelin Moodle SSH-tunnelit Työn demoaminen 2 Työn idea Tehdään ohjelma, joka annetun reititysdatan perusteella
Luento 12: XML ja metatieto
Luento 12: XML ja metatieto AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XML ja metatieto Metatieto rakenne sanasto Resource Description Framework graafikuvaus XML Semanttinen Web agentit 2 1 Metatieto
on rekursiivisesti numeroituva, mutta ei rekursiivinen.
6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = { M pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti
Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara
Kuvauksista ja relaatioista Jonna Makkonen Ilari Vallivaara 20. lokakuuta 2004 Sisältö 1 Esipuhe 2 2 Kuvauksista 3 3 Relaatioista 8 Lähdeluettelo 12 1 1 Esipuhe Joukot ja relaatiot ovat periaatteessa äärimmäisen
Seuraavat Windowsin käyttöjärjestelmäversiot tukevat Novell Filr -työpöytäsovellusta:
Novell Filr -työpöytäsovellus lueminut Huhtikuu 2015 1 Tuotteen yleiskatsaus Novell Filr -työpöytäsovelluksella voit synkronoida Novell Filr -tiedostoja tietokoneesi tiedostojärjestelmän kanssa ja muokata
Ohjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
Luento 5: Peliteoriaa
Luento 5: Peliteoriaa Tässä kappaleessa tutustutaan hieman peliteoriaan. Keskeisiä asioita ovat Nash-tasapaino ja sekastrategia. Cournot n duopolimalli vuodelta 1838 toimii oivallisena havainnollistuksena
Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat
Luento 2. Kieli merkitys ja logiikka 2: Helpot ja monimutkaiset Helpot ja monimutkaiset ongelmat Tehtävä: etsi säkillinen rahaa talosta, jossa on monta huonetta. Ratkaisu: täydellinen haku käy huoneet
Tietotekniikan valintakoe
Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan
Haskell ohjelmointikielen tyyppijärjestelmä
Haskell ohjelmointikielen tyyppijärjestelmä Sakari Jokinen Helsinki 19. huhtikuuta 2004 Ohjelmointikielten perusteet - seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Johdanto 1 Tyyppien
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Matematiikan ja tilastotieteen laitos Tietojenkäsittelytieteen laitos Kisällioppiminen = oppipoikamestari
uv n, v 1, ja uv i w A kaikilla
2.8 Säännöllisten kielten rajoituksista Kardinaliteettisyistä on oltava olemassa (paljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituva määrä, säännöllisiä lausekkeita vain numeroituvasti. Voidaanko
Jarkko Peltomäki. Aliryhmän sentralisaattori ja normalisaattori
Jarkko Peltomäki Aliryhmän sentralisaattori ja normalisaattori Matematiikan aine Turun yliopisto Syyskuu 2009 Sisältö 1 Johdanto 2 2 Määritelmiä ja perusominaisuuksia 3 2.1 Aliryhmän sentralisaattori ja
Käytettävyyslaatumallin rakentaminen web-sivustolle. Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.
Käytettävyyslaatumallin rakentaminen web-sivustolle Tapaus kirjoittajan ABC-kortti Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.2005 Kirjoittajan ABC-kortti
Sähkötekniikan tutkintoohjelma. DI-tutkinto ja uranäkymät
Sähkötekniikan tutkintoohjelma DI-tutkinto ja uranäkymät Tervetuloa opiskelemaan sähkötekniikkaa Oulun yliopistoon! ITEE RESEARCH UNITS Tutkinto-ohjelman tuottajat CAS CIRCUITS AND SYSTEMS PROF. JUHA KOSTAMOVAARA
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015
ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015 Sisällys ja NFA:ksi NFA:ksi Kohti säännöllisiä lausekkeita ja Nämä tiedetään:
Fakta- ja näytenäkökulmat. Pertti Alasuutari Tampereen yliopisto
Fakta- ja näytenäkökulmat Pertti Alasuutari Tampereen yliopisto Mikä on faktanäkökulma? sosiaalitutkimuksen historia: väestötilastot, kuolleisuus- ja syntyvyystaulut. Myöhemmin kysyttiin ihmisiltä tietoa
Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
ICS. T-61 (Informaatiotekniikka)
Tietotekniikan tutkinto-ohjelma korvaavuusluettelo 2010-2014 Päivitetty 1.7.2016 Käyttöohje 1. Hae etsimäsi kurssi CTRL+F 2. Viimeisin sarake oikealla on voimassaoleva kurssi/ajankohtaisin tieto 3. Jos
Sovellusarkkitehtuurit
HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit
3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö
3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden
7.4 Sormenjälkitekniikka
7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan
Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.
Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla
Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen
Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI
MS-A0402 Diskreetin matematiikan perusteet
MS-A040 Diskreetin matematiikan perusteet Osa : Relaatiot ja funktiot Riikka Kangaslampi 017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta A
11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon