TIE303 Formaalit menetelmät, kevät 2005 Johdanto Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-17 p. 1/17
TIE303 Formaalit menetelmät TIE303 Formaalit menetelmät (3 ov, ECTS 0.0 cr) Assistentti Antti-Juhani Kaijanaho (antkaij@mit.jyu.fi) Aikataulu Luennot ma 10-12 ja to 14-16 salissa Ag Beeta. Sisältö Formaalien määrittelymenetelmien perusteet, esimerkkejä formaalien kielten ja menetelmien käytöstä (esim. Z, VDM, Estelle, Lotos, B). Kirjallisuus Luentomoniste, muu lähdemateriaali ilmoitetaan luennoilla. Esitiedot Automaatit ja kieliopit. Suositellaan myös MAT223 Logiikka (2 ov) tai FILA25 Logiikka I. Opetusmuodot Luennot, demot, seminaarityö, töiden esittely- ja opponointitilaisuus. Suoritustavat Loppukoe, seminaarityö. TIE303 Formaalit mentetelmät, 2005-01-17 p. 2/17
Aikataulu Luennot salissa Ag Beeta: ma klo 10 12, to klo 14-16 Demot: sovitaan nyt. Luennot + demot: noin 8 viikkoa (tammi-maaliskuu) Seminaari toukokuussa. Tentit: 20.5., 17.6. Luennoijan vastaanottoaika: ke 12-14 (ei ajanvarausta) TIE303 Formaalit mentetelmät, 2005-01-17 p. 3/17
Suoritus Tentti ja kirjallinen seminaarityö ovat pakollisia. Tentin voi korvata oppimispäiväkirjalla (http://www.mit.jyu.fi/antkaij/opetus/fm/2005/opk.html). Seminaariin osallistuminen tuo bonuspisteitä. Aktiivinen osallistuminen demoissa tuo bonuspisteitä. Tentti tai oppimispäiväkirja: max. 24 pistettä (leikkuri 12 pisteessä). Seminaariin osallistuminen: 1-3 pistettä. Demot: 1-3 pistettä. Arvosteluasteikko: 1 1+ 1.5 2 2 2+ 2.5 3 3 12 13 1 3 14 2 3 16 17 1 3 18 2 3 20 21 1 3 22 2 3 TIE303 Formaalit mentetelmät, 2005-01-17 p. 4/17
Kirjallisuus Kurssikirja: Antti-Juhani Kaijanaho, Tommi Kärkkäinen: Formaalit menetelmät. Luentomoniste 12, Jyväskylän yliopisto, Tietotekniikan laitos, 2005. (Saapunee Mattilanniemen Kampus-Kirjaan tänään.) Muuta yleisluontoista kirjallisuutta on nihkeästi. Useista yksittäisistä menetelmistä ja notaatioista on erinomaisia kirjoja. Ohjelmistotekniikan oppikirjoissa (Pressman ym.) on yleensä luku formaaleista menetelmistä. Ne vain raapaisevat pintaa. Paljon hajanaisia tieteellisiä julkaisufoorumeita, ks. esim. http://vl.fmnet.info/pubs/. TIE303 Formaalit mentetelmät, 2005-01-17 p. 5/17
Kurssin pihvi Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita. Kognitio on oppimisen, päättelyn ja havainnoinnin aiheuttama muutos ihmisen psyykessä. Metakognitio on kognition kognitiota. Siis: kurssi kehittää kykyä havainnoida ja hallita omaa osaamista ja ohjelmointitehtävien ratkaisumalleja. TIE303 Formaalit mentetelmät, 2005-01-17 p. 6/17
Keskustelua Miksi tulit kurssille? Mitä odotat kurssilta? Mieliala? TIE303 Formaalit mentetelmät, 2005-01-17 p. 7/17
Formaalit menetelmät? Formaalit menetelmät? TIE303 Formaalit mentetelmät, 2005-01-17 p. 8/17
Laatu? Equipped with the basic concepts of class, object and genericity, you can now write software modules that implement possibly parametrized types of data structures. Congratulations. This is a significant step in the quest for better software architectures. But the techniques seen so far are not sufficient to implement the comprehensive view of quality introduced at the beginning of this book. The quality factors on which we have concentrated reusability, extensibility, compatibility must not be attained at the expense of reliability ( correctness and robustness). Bertrand Meyer: Object-oriented Software Construction, Second Edition, Prentice-Hall 1997, luku 11. Lihavointi AJK:n. TIE303 Formaalit mentetelmät, 2005-01-17 p. 9/17
Laatu? Program testing can be used to show the presence of bugs, but never to show their absence! Edsger W. Dijkstra: Notes On Structured Programming, EWD249, 1970. TIE303 Formaalit mentetelmät, 2005-01-17 p. 10/17
Formaali? Formaali on suomeksi muodollinen Matematiikassa sana on saanut erityismerkityksen mekaanisesti (tietokoneella) tarkistettavissa oleva. Tavallisesti matemaatikot kuitenkin käyttävät sanaa hieman vapaammin tarkoittamaan erityisen täsmällisesti tehty. Formaalien menetelmien yhteydessä sanaa formaali käytetään samassa merkityksessä kuin matematiikassa. Ohjelmistotekniikassa ja -tuotannossa sanaa käytetään muuten tavallisessa merkityksessään. Huomaa sekaantumisen vaara ja varo! TIE303 Formaalit mentetelmät, 2005-01-17 p. 11/17
Formaalit menetelmät 1 Formaalien menetelmien alue on hyvin laaja, kaiken kattavaa määritelmää on vaikea asettaa. Yhteistä kaikille formaaleille menetelmille on matemaattisen täsmällisyyden korostaminen ohjelmistotuotannossa. Hyvin monet formaalit menetelmät soveltavat jotain tietojenkäsittelylogiikan teoriaa ohjelmistojen toiminnallisuuden mallittamiseen. Sovellusalueen matematiikan käyttäminen ei kuulu formaaleihin menetelmiin; formaalit menetelmät ovat pikemminkin ohjelmistotekniikan omaa matematiikkaa. TIE303 Formaalit mentetelmät, 2005-01-17 p. 12/17
Formaalit menetelmät 2 Formaalit menetelmät -nimistä tutkimusalaa ei oikeastaan ole. Nimeke kattaa sekalaisen joukon välineitä, joita yhdistää löyhästi matemaattisen täsmällisyyden vaaliminen ohjelmistotyössä. Tämäkin kurssi on siten hajanainen. Kurssin asiat pitäisi opettaa muilla kursseilla. Miksi ei opeteta? (Ghetto-ilmiö?) (Tekoäly-ilmiö?) TIE303 Formaalit mentetelmät, 2005-01-17 p. 13/17
Formaaliuden muotoja Ohjelman vaatimusten täsmällistäminen aikaisessa vaiheessa (formal specification) Virhetyyppien poissulkeminen staattisin tarkastuksin (static checking) Kriittisen komponentin oikeellisuuden varmistaminen (correctness proofs) Ohjelman johtaminen tehtäväkuvauksesta (program derivation, contract refinement) Automaattinen testaus (QuickCheck, assertions) TIE303 Formaalit mentetelmät, 2005-01-17 p. 14/17
Hyötyjä? Analyyttinen ote: Tiedetään mitä tehdään. Virheiden määrä vähenee. Selkeärakenteinen speksi ja koodi Abstrakti ote: Kokonaisuus hallussa käsiä heiluttelematta? Uudelleenkäyttö jäsentyy. TIE303 Formaalit mentetelmät, 2005-01-17 p. 15/17
Esteitä Litteä maa -efekti Tekoäly-efekti Todellinen ongelma: matemaattisen taidon puute TIE303 Formaalit mentetelmät, 2005-01-17 p. 16/17
Seuraava luento: torstaina klo 14 samassa salissa (Ag Beeta). TIE303 Formaalit mentetelmät, 2005-01-17 p. 17/17