1 / 18

Ohjelmien oikeaksitodistamisen historia

Ohjelmien oikeaksitodistamisen historia. Tuomo Malinen Tietojenkäsittelytieteen historia -seminaari 3.5.2001. Sisältö. oikeellisuustodistusten historia tarkastellaan tieteellisen kehityksen näkökulmasta ohjelmien oikeellisuus

Download Presentation

Ohjelmien oikeaksitodistamisen historia

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. Ohjelmien oikeaksitodistamisen historia Tuomo Malinen Tietojenkäsittelytieteen historia -seminaari 3.5.2001

  2. Sisältö • oikeellisuustodistusten historia • tarkastellaan tieteellisen kehityksen näkökulmasta • ohjelmien oikeellisuus • oikeellinen toiminta on muodollisesti määriteltävissä ja siten todistettavissa • eri laskennan tarkoitukset • 1+1, käyttöjärjestelmät, pesukone, ...

  3. erilaiset oikeellisuuden määritelmät • pysähtyvät ja pysähtymättömät ohjelmat • pysähtyvä ohjelma toimii oikein, jos se • pysähtyy kaikilla syötteillä • antaa aina oikean tuloksen • pysähtymätön ohjelma toimii oikein, jos • sen kaikki laskennat ovat oikeellisia • esityksen rakenne • taustaa oikeellisuustodistuksille • pysähtyvät ohjelmat • pysähtymättömät ohjelmat

  4. Taustaa • Turing 1936 • mielivaltaisen ohjelman pysähtyminen ratkeamaton ongelma • 1960-luku • ohjelmien ja järjestelmien koon kasvu • ohjelmistotuotannon “kriisi” • kriittiset sovellukset • ohjelmointikäytännöt riittämättömiä • ohjelmoinnista tieteellisesti mielenkiintoista

  5. idea ohjelmasta täsmällisenä oliona • syntaksi • Chomsky, kontekstittomat kieliopit • Backus-Naur -normaalimuoto • kääntäjien kehitys • semantiikka? • ohjelman merkitys? • McCarthy, 1961 • idea muodollisesta oikeaksitodistamisesta • ohjelmien ekvivalenssi

  6. Peter Naur, 1966 • “Proofs of algorithms by general snapshots” • “snapshot”: väite, joka toteutuu tietyssä kohdassa suoritusta • Robert Floyd, 1967 • “Assigning meanings to programs” • semantiikka! • ohjelman käskykaavioon liitetyt väittämät • silmukkainvariantit • ohjelmointikielen määrittely todistustekniikoiden avulla

  7. Tony Hoare, 1967 • “An Axiomatic Basis for Computer Programming” • käskyjen ja kontrollirakenteiden merkityksen aksiomatisointi • kiinnittää ohjelman merkityksen formaalisti • merkitys = vaikutus käsiteltyihin tietorakenteisiin • yksinkertainen ohjelmointikieli • modulo-aritmetiikka, sijoituslause, peräkkäis- ja toistorakenteet • aksioomat ja johtosäännöt • syntaktiset tarkastelut • ei todistusta helpottavia konstruktioita • osittainen oikeellisuus • teoreettinen uranavaus

  8. 1970-luku • kehitys Hoaren jäljillä • monimutkaisemmat rakenteet • proseduurikutsut, taulukot, yms. • Pascalin aksiomatisointi • automaattinen todistaminen • jatkui 1980-luvulle • Hoaren todistusmenetelmien vaikeakäyttöisyys • valmiiden ohjelmien todistaminen vaikeaa • ohjelma ja todistus käsi kädessä • metodologioita ei esitetty

  9. Dijkstra, 1975 • ohjelmien johtaminen • ohjelman muodostaminen täsmällisen “laskuopin” avulla • laskuopin noudattamisesta seuraa oikeellisuustodistus • predikaattimuunnin wp • viimeisin oleellinen kehitysaskel

  10. Pysähtymättömät ohjelmat • tarve • käyttöjärjestelmät, tietoliikenneprotokollat, • reaktiiviset järjestelmät • erilainen laskennan määritelmä • erilainen oikeellisen laskennan määritelmä • kiinnostus 1960-luvulla • samantyylisiä kokeiluja kuin sarjallisten puolella • ei merkittävää kehitystä • yksittäisten algoritmien todistuksia

  11. Petri-verkot 1962 • poissulkemisongelma • Dijkstra, Dekker, Knuth, Hyman • Dijkstra: semaforit, aterioivat filosofit • 1970-luku • Hoaren ideat • kontrollirakenteiden, kuten monitoreiden täsmällinen määrittely • ei yleistä todistustapaa eikä -menetelmää

  12. Amir Pnueli, 1977 • “The temporal logic of programs” • uusi abstraktio tietokonejärjestelmän toiminnalle • temporaali- eli aikalogiikan malli • järjestelmän tila = maailman tila • järjestelmän tilan muutos ohjelman edetessä = maailman tilan muutos ajan kuluessa • oikeellisen toiminnan määrittely temporaalilogiikan kaavana • jos kaava toteutuu kaikissa ohjelman suorituksissa (kaikissa mielenkiintoisissa malleissa) ohjelma toimii oikein

  13. Temporaalilogiikka • mahdollisuus määritellä keskinäisiä seuraavuuksia ohjelman toiminnoille • vaste syötteeseen, pääsy resurssia käyttämään • aksioomien määrittely • todistus Hoaren tapaan kaavojen syntaktista muuntelua

  14. Automaattinen todistaminen? • edeltävät todistustavat vaikeita automatisoida • ylipäätään hankalia • oikeellisen toiminnan määrittely kaavana ja sen matemaattinen todistus sovellettavassa formalismissa • voidaan käsitellä äärettömiä malleja • monet systeemit voidaan kuvata äärellisillä malleilla • liian väkevä formalismi?

  15. Clarke, Emerson 1981 • “mallintarkastus”, “model checking” • rakennetaan äärellinen malli järjestelmästä • järjestelmän tila-avaruus • voidaan tarkastaa järjestelmän oikeellisuus eksplisiittisesti • vs. kaavatodistukset • oikeellinen toiminta kaavana • toteutuuko kaava mallissa • järjestelmän äärettömät (->sykliset) suoritukset • malli äärellinen -> ongelma ratkeava

  16. Mallintarkastus • todistusmenetelmä • riippuu ohjelman mallinnuksesta • usein palautettavissa yksinkertaisiin ongelmiin • tavalliset verkkoalgoritmit • vastaesimerkki • ohjelman virhekäyttäytyminen • helpottaa virheen oikaisemista • laskennan vaativuus

  17. Yhteenveto • ohjelma matemaattinen, eksakti objekti • oikeellisuus pystytään todistamaan • sekä tuotannollisesti että tieteellisesti mielenkiintoinen ongelma • kehitystä 1960-luvulta lähtien • ohjelmointikielen täsmällinen määrittely • aluksi syntaksi • semanttisista määrittelyistä todistusmenetelmiin • Dijkstra ja ohjelmien johtaminen

  18. Yhteenveto • rinnakkaisjärjestelmät • temporaalilogiikka • uusi abstraktio järjestelmän suorituksille • mallintarkastus • todistus yksinkertaisten algoritmien avulla • 1980-luvun alun jälkeen ei merkittäviä uusia todistusmenetelmiä

More Related