Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!



Samankaltaiset tiedostot
Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

Ohjelmistojen mallintaminen, mallintaminen ja UML

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Onnistunut Vaatimuspohjainen Testaus

Opiskelija osaa määritellä ohjelmiston tiedot ja toiminnot, suunnitella ohjelmiston rakenteen ja laatia ohjelmiston teknisen spesifikaation.

Software engineering

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

IEC sisältö ja rakenne

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Johdantoluento. Ohjelmien ylläpito

ITK130 Ohjelmistojen luonne

Oleelliset vaikeudet OT:ssa 1/2

Työkalujen merkitys mittaamisessa

Turvakriittisen projektin menetelmät ja työkalut

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen

Ohjelmistotuotanto, syksy laatu Ohjelmiston laatu

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

2. Ohjelmistotuotantoprosessi

Ongelmanratkaisutehtävien analysointia

Ohjelmien automaattisen verifioinnin reunamailla

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Formaalit menetelmät ja testaus: Abstraktien tietotyyppien käyttö yksikkötestauksessa

Test-Driven Development

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Johdatusta ohjelmistotekniikkaan

Ohjelmistojen suunnittelu

Työkalut ohjelmistokehityksen tukena

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Projektityö

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Test-Driven Development

Johdanto II. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

TIETOTEKNIIKAN KOULUTUSOHJELMA

Suunnitteluvaihe prosessissa

Fujitsu SPICE Lite. Kimmo Vaikkola Fujitsu Finland Oy Laatu ja liiketoimintatavat. Copyright 2010 FUJITSU

8. Laadunvalvonta. Mitä laatu on?

OPETUSSUUNNITELMALOMAKE

Testaaminen ohjelmiston kehitysprosessin aikana

Tarvitseeko informaatioteknologia matematiikkaa?

Todistusmenetelmiä Miksi pitää todistaa?

Onnistunut ohjelmistoprojekti

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Formaalit menetelmät

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Menetelmäraportti - Konfiguraationhallinta

Oppimistavoitematriisi

Oppimistavoitematriisi

ITK130 Ohjelmistoprosessi

Hieman lisää malleista ja niiden hyödyntämisestä

Projektisuunnitelma Nero-ryhmä

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Sarjat ja integraalit, kevät 2014

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Korkean resoluution ja suuren kuva-alueen SAR

11.4. Context-free kielet 1 / 17

Perusopetuksen matematiikan pitkittäisarviointi

Kon Simuloinnin Rakentaminen Janne Ojala

TeamCHAMPION TeamCHAMPION wiki.tut.fi/champion

UML-kielen formalisointi Object-Z:lla

TIETOJENKÄSITTELYTIETEIDEN LAITOS

Nimi: Opnro: Harjoitustyön suoritus: ( ) syksy 2006 ( ) syksy 2005 ( ) muu, mikä. 1. Selitä seuraavat termit muutamalla virkkeellä ja/tai kaaviolla:

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Ohjelmistoprosessit ja ohjelmistojen laatu kevät Suunnitelmakeskeiset prosessit (lukuisia lähteitä)

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

Osaamisperustaisuuden arviointia tentillä

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmiston testaus ja laatu. Testaustasot

The OWL-S are not what they seem

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Avoimen ohjelmistotuotteen hallinta julkisella sektorilla. Jukka Kääriäinen VTT Oy , Oskari-verkostopäivä

Standardin IEC testaustekniikoista. V-malli vai ketterämpi prosessi?

Ohjelmistotuotanto, laadunvalvonta Syksy Laadunvalvonta. Mitä laatu on? Laadun komponentit. Laatuvaatimukset.

Ketterä vaatimustenhallinta

811120P Diskreetit rakenteet

Uudelleenkäytön jako kahteen

Laatutähti-työkalu Oulu 1

Matematiikan tukikurssi

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Tietorakenteet ja algoritmit - syksy

Perusopetuksen opetussuunnitelman matematiikassa, fysiikassa ja kemiassa Tiina Tähkä, Opetushallitus

Tentti erilaiset kysymystyypit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

SIMULOINTIYMPÄRISTÖJEN SOVELTAMINEN OPETUKSESSA SIMULOINNILLA TUOTANTOA KEHITTÄMÄÄN-SEMINAARI TIMO SUVELA

Matematiikan täsmäopetuksella

Testaus teoriassa ja käytännössä. Jukka Paakki Helsingin yliopisto Tietojenkäsittelytieteen laitos

MATEMATIIKKA. Elina Mantere Helsingin normaalilyseo Elina Mantere

AMK-OPINNÄYTETYÖN ARVIOINTIKRITEERIT päivitetty

x j x k Tällöin L j (x k ) = 0, kun k j, ja L j (x j ) = 1. Alkuperäiselle interpolaatio-ongelmalle saadaan nyt ratkaisu

Transkriptio:

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia!

YLEISTÄ FORMAALEISTA MENETELMISTÄ ETUJA: Formaali ajatusmalli Ohjelman toiminta määritellään täsmällisesti ennen implementointia voi vain auttaa ohjelmoinnissa ja ohjelmistosuunnittelussa!!! vaatimusmäärittely täsmällisesti ja yksikäsitteisesti jo suunnitteluvaiheessa epätäsmällisyyksiä ja virheitä havaitaan jo tällöin (vrt. testauksen V-malli (ja XP) (ja Eiffel)) löydetään mahdollisia virheitä jo toimivista ohjelmista Ohjelman tila ja sen muutokset määritelty tarkasti ohjelman toiminnan simulointi etukäteen määrätty rajoite ei voimassa eli ohjelma toimii väärin matemaattiset oikeellisuustodistukset määrittelyssä esiintyvien ristiriitojen paljastuminen ohjelma ei käyttäydy katastrofaalisella tavalla

Formaali mallitus: Prosessi, jossa ohjelman toiminnan kuvaus muunnetaan täsmälliseen muotoon: Formaali määritys: ominaisuuksien ja toiminnan kuvaaminen matemaattisten rakenteiden avulla mahdollisimman abstraktisti Formaali todistus: matemaattinen todistus sille, että ohjelma toimii vaatimusten määräämällä tavalla Abstrahointi: toiminnan kuvaaminen yleisellä tasolla, jossa tarkemmat yksityiskohdat määritetään myöhemmin Vaatimusten animointi (emulointi, simulointi): määrityksen muuttaminen toimivaksi ohjelmaksi, jonka avulla toiminnan jäljittely Esimerkiksi seuraavat askeleet: formaali määritys tyyppien tarkistus: esim. rajapintojen ja I/O-operaatioiden yhteensopivuus ominaisuuksien määritys: haluttu toiminta ja järjestelmän rakenne loogisten ehtojen todistus: haluttua toimintaa kuvaavien väittämien verifiointi

Terminologiasta (A-J Kaijanaho): 1 Ohjelmistotekniikassa sanalla formaali (ainakin) kaksi eri merkitystä: 1. formaalit menetelmät & tämä kurssi: formaalius on symbolien mekaanista käsittelyä annettujen sääntöjen mukaan niiden merkityksestä välittämättä matemaattis-looginen formaalius formaalit menetelmät menetelmiä, jossa käytetään hyväksi tällaista formaaliutta 2. (yleisessä) ohjelmistotuotannossa tapana käyttää sanan toista merkitystä: formaalius on tilanteiden muodollisuutta esim. sana formaali ilmaisussa formaali katselmointi viittaa katselmointitilaisuuden muodollisuuteen mitä, ketkä, missä muodossa, miten, mistä löytyy,... eli vaihetuote, osallistujat, roolit, toimenpiteet, dokumentointi,... molemmat merkitykset sanan formaali yleiskielisestä sisällöstä: formaali tarkoittaa muodollista eli sellaista, jossa muodolla korostunut merkitys. tämä kurssin terminologia: kiinnitämme sanan formaali merkitykseksi yllä mainitun merkityksen 1, eli tarkoitamme formaaliudella matemaattista formaaliutta jos puhumme merkityksestä 2, käytämme sanaa muodollinen. esimerkiksi formaali menetelmä ja muodollinen katselmointi entäs formaali katselmointi??? 1 Vrt. [7, luku 2.2].

Formaalit menetelmät projektin osana: Mitä otettavan huomioon ennen soveltamista: henkilökunta: koulutus, osaaminen, projektipäällikkö! prosessiin integrointi: hallitusti, ei ryntäilemällä ja unohtamalla olemassa olevaa osaamista projektin suunnittelu: soveltaminen kriittisissä osissa, esim. 2. inkrementti ohjelmistotyyppi: GUI vrs. rinnakkainen, tosiaikainen viestinvälitysjärjestelmä Haittoja: hankalia käyttää, vaativat paljon pohjatietoja paljon erilaisia työkaluja, joiden kaikkien hallitseminen (liian) työlästä ilman CASE-työkaluja osa tehosta menetetään sovelletaan, mutta esitietojen hallitsemattomuuden vuoksi väärin formaalin vaatimuskuvauksen suomentaminen asiakkaille/ muille tiimin jäsenille niin laaja alue, että (lähes?) mahdotonta muodostaa hyvää opintokokonaisuutta ;-) Erityisiä sovelluskohteita: turvallisuuskriittiset järjestelmät hankalasti korjattavat järjestelmät reaktiiviset järjestelmät

Formaalisuuden tasot: Tasolla 1 matemaattiset merkinnät integroidaan muihin menetelmiin. Siellä missä tarvitaan formaali... Tasolla 2 käytetään kiinnitettyä kuvauskieltä, jota voidaan tukea erilaisten CASEtyökalujen avulla. Esitysmuodoltaan formaali... Tasolla 3 pääpaino verifioinnin mekaanisessa toteutuksessa (theorem provers, proof checkers, model checkers,... ; = verification system). Täysin formaali... VRS. CMM: 1. Luonnollinen (Initial) : lähtötaso, jonne päästään siitä huolimatta... 2. Toistettava (Repeatable) : kustannusten, aikataulun ja toiminnallisuuden tarkkailun kautta toistettaviin projekteihin 3. Määritelty (Defined) : ohjelmistokehityksen hallinnolliset ja tuotannolliset prosessit dokumentoitu, standardoitu ja niitä käytetään 4. Hallittu (Managed) : prosessien ja tuotteiden laadun tarkkailu ja kehittäminen mittaamalla 5. Optimoiva (Optimizing) : automaattinen numeerisen palautteen kerääminen ja soveltaminen prosessin kehittämiseen

Formaalien menetelmien myyttejä: 1. takaavat, että ohjelmisto on täydellinen. 2. liittyvät pelkästään ohjelman oikeaksi todistamiseen. 3. ovat tarpeellisia vain turvallisuuskriittisissä järjestelmissä. 4. vaativat korkeasti koulutettuja matemaatikkoja soveltajikseen. 5. kasvattavat kehityskustannuksia. 6. eivät sovi asiakkaille. 7. ei käytetä oikeiden, laajojen ohjelmistojen suunnittelussa. 8. käyttö hidastaa ohjelmistoprosessin läpimenoaikaa. 9. tueksi ei ole olemassa työkaluja. 10. korvaavat perinteiset suunnittelumenetelmät. 11. soveltuvat vain ohjelmistosuunnitteluun. 12. ei tarvita. 13. ei tueta. 14. soveltajat käyttävät aina formaaleja menetelmiä.

10 käskyä: Käytä soveltuvaa notaatiota! Formalisoi, mutta älä yliformalisoi! Arvioi kulut! Hanki guru! Älä hylkää perinteisiä menetelmiä! Dokumentoi riittävästi! Säilytä laatustandardit! Älä ole dogmaattinen! Testaa, testaa, testaa! Uudelleenkäytä!