Määrittelymenetelmät ketterässä ohjelmistokehityksessä
Koski, Joonas (2020)
Koski, Joonas
2020
Tietotekniikan DI-tutkinto-ohjelma - Degree Programme in Information Technology, MSc (Tech)
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-06-01
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202005034889
https://urn.fi/URN:NBN:fi:tuni-202005034889
Tiivistelmä
Nykypäivänä yleisenä trendinä on pyrkiä tehostamaan kaikkea toimintaa äärimmilleen ja tavoitteena on saada näkyviä tuloksia aikaan heti sekä reagoida muuttuviin tilanteisiin nopeasti ja joustavasti. Vastaavanlainen trendi on vallannut myös ohjelmistokehityksen ja projekteja pyritään ohjaamaan lähes poikkeuksetta ketterien menetelmien avulla. Sen sijaan, että ohjelmistoa kehitettäisiin pitkiä aikoja ja julkaistaisiin suurempi kokonaisuus kerralla, on siirrytty ajatusmaailmaan, jossa ohjelmistoa toimitetaan pienemmissä erissä laajentaen saatavilla olevaa toiminnallisuutta hiljalleen. Ketterissä menetelmissä asiakas pidetään hyvin lähellä prosessia ja jatkuvasti mukana ohjelmiston kehityksen eri vaiheissa, jolloin ohjelmiston laatu paranee sekä asiakkaan sille asettamien vaatimusten täyttyminen on todennäköisempää. Jatkuvan asiakkaan ja sidosryhmien kanssa kommunikoinnin myötä vaatimusmäärittelyn merkitys korostuu ja vaatimuksiin tehdään muutoksia, korjauksia ja lisäyksiä pitkin projektia.
Tämän diplomityön aihe keskittyy juuri vaatimusmäärittelyyn sekä siihen kuuluvien määrittelyiden tekemisessä käytettäviin menetelmiin. Painopiste työssä on matemaattisten, toiminnallisuuden todentamiseen ja tarkistamiseen käytettävien formaalien menetelmien tutkimisessa. Formaalien menetelmien pääasiallinen tarkoitus on auttaa havaitsemaan ja korjaamaan mahdolliset virheet mahdollisimman aikaisessa vaiheessa projektia ja näin pyrkiä säästämään projektin kustannuksia ja nopeuttamaan aikataulua sekä parantaa lopullisen ohjelmiston laatua. Diplomi-työ tehtiin osana työn toimeksiantajana toimineen Konecranesin ohjelmistoprojektia, jonka aikana vaatimusmäärittelyn käytänteistä ketterien menetelmien yhteydessä voitiin tehdä käytännön havaintoja. Valtaosa tutkimuksesta toteutettiin kuitenkin alan kirjallisuuteen ja viime aikaisiin aiheesta tehtyihin tutkimuksiin tutustumalla. Tavoitteena oli selvittää, minkälaisia käytäntöjä for-maalien menetelmien käyttöön liittyy ketterässä ohjelmistoprojektissa ja onko formaalien mene-telmien käytölle nykypäivänä edellytyksiä.
Vaikka formaaleja menetelmiä on kehitetty ja käytetty jo useiden vuosikymmenien ajan, ei niiden käyttö ole koskaan yleistynyt valtavirran työkaluksi ohjelmistoja kehitettäessä. Päällimmäisenä syynä tähän on varmasti formaalien menetelmien korkea oppimiskynnys. Matematiikkaa ja logiikkaa käyttävien menetelmien hallitseminen ja täyden hyödyn irti saaminen vaatii käytettävään menetelmään paneutumista sekä lahjakkuutta matematiikan ja loogisen päättelyn saralla. Ongelma korostuu entisestään, kun kyseistä osaamista pitäisi löytyä sekä määrittelyiden tekijältä että varsinaisesta toteutuksesta vastaavalta kehittäjältä.
Formaalien menetelmien ongelmiin on pyritty löytämään ratkaisuja niiden koko olemassa-olon ajan. Yhtenä ratkaisuna on ehdotettu kevennettyä mallia, jossa koko kehitysprosessin formalisoimisen sijaan keskityttäisiin käyttämään formaaleja menetelmiä vain turvallisuudeltaan kriittisten osa-alueiden toteutukseen ja muu kehitys toteutettaisiin edelleen perinteisemmillä menetelmillä. Formaaleja menetelmiä voitaisiin käyttää myös vanhaa järjestelmää modernisoitaessa, jolloin vanhasta ohjelmistosta voitaisiin muodostaa formaali kuvaus. Kuvauksen avulla vanhasta järjestelmästä saataisiin kattava käsitys ja toiminnallisuuden toteuttaminen uuteen järjestelmään voitaisiin pohjustaa valmiiksi todistettuun ja tarkistettuun tapaukseen.
Formaalien kielten käytöstä määrittelyn työkaluna on todistettavasti runsaasti hyötyjä, mutta niiden yleistyminen ei näytä kuitenkaan kovin todennäköiseltä lähitulevaisuudessa. Jotta for-maalien menetelmien käyttö voisi toden teolla lisääntyä, vaatisi se kokonaan uuden formaalin kielen kehittämistä. Uuden kielen pitäisi olla helpommin lähestyttävä ja sisäistettävissä pienemmällä oppimiskynnyksellä. Myös laadukkaiden ohjelmistojen ja käyttöä tukevien työkalujen saatavuus olisi ehdoton vaatimus.
Tämän diplomityön aihe keskittyy juuri vaatimusmäärittelyyn sekä siihen kuuluvien määrittelyiden tekemisessä käytettäviin menetelmiin. Painopiste työssä on matemaattisten, toiminnallisuuden todentamiseen ja tarkistamiseen käytettävien formaalien menetelmien tutkimisessa. Formaalien menetelmien pääasiallinen tarkoitus on auttaa havaitsemaan ja korjaamaan mahdolliset virheet mahdollisimman aikaisessa vaiheessa projektia ja näin pyrkiä säästämään projektin kustannuksia ja nopeuttamaan aikataulua sekä parantaa lopullisen ohjelmiston laatua. Diplomi-työ tehtiin osana työn toimeksiantajana toimineen Konecranesin ohjelmistoprojektia, jonka aikana vaatimusmäärittelyn käytänteistä ketterien menetelmien yhteydessä voitiin tehdä käytännön havaintoja. Valtaosa tutkimuksesta toteutettiin kuitenkin alan kirjallisuuteen ja viime aikaisiin aiheesta tehtyihin tutkimuksiin tutustumalla. Tavoitteena oli selvittää, minkälaisia käytäntöjä for-maalien menetelmien käyttöön liittyy ketterässä ohjelmistoprojektissa ja onko formaalien mene-telmien käytölle nykypäivänä edellytyksiä.
Vaikka formaaleja menetelmiä on kehitetty ja käytetty jo useiden vuosikymmenien ajan, ei niiden käyttö ole koskaan yleistynyt valtavirran työkaluksi ohjelmistoja kehitettäessä. Päällimmäisenä syynä tähän on varmasti formaalien menetelmien korkea oppimiskynnys. Matematiikkaa ja logiikkaa käyttävien menetelmien hallitseminen ja täyden hyödyn irti saaminen vaatii käytettävään menetelmään paneutumista sekä lahjakkuutta matematiikan ja loogisen päättelyn saralla. Ongelma korostuu entisestään, kun kyseistä osaamista pitäisi löytyä sekä määrittelyiden tekijältä että varsinaisesta toteutuksesta vastaavalta kehittäjältä.
Formaalien menetelmien ongelmiin on pyritty löytämään ratkaisuja niiden koko olemassa-olon ajan. Yhtenä ratkaisuna on ehdotettu kevennettyä mallia, jossa koko kehitysprosessin formalisoimisen sijaan keskityttäisiin käyttämään formaaleja menetelmiä vain turvallisuudeltaan kriittisten osa-alueiden toteutukseen ja muu kehitys toteutettaisiin edelleen perinteisemmillä menetelmillä. Formaaleja menetelmiä voitaisiin käyttää myös vanhaa järjestelmää modernisoitaessa, jolloin vanhasta ohjelmistosta voitaisiin muodostaa formaali kuvaus. Kuvauksen avulla vanhasta järjestelmästä saataisiin kattava käsitys ja toiminnallisuuden toteuttaminen uuteen järjestelmään voitaisiin pohjustaa valmiiksi todistettuun ja tarkistettuun tapaukseen.
Formaalien kielten käytöstä määrittelyn työkaluna on todistettavasti runsaasti hyötyjä, mutta niiden yleistyminen ei näytä kuitenkaan kovin todennäköiseltä lähitulevaisuudessa. Jotta for-maalien menetelmien käyttö voisi toden teolla lisääntyä, vaatisi se kokonaan uuden formaalin kielen kehittämistä. Uuden kielen pitäisi olla helpommin lähestyttävä ja sisäistettävissä pienemmällä oppimiskynnyksellä. Myös laadukkaiden ohjelmistojen ja käyttöä tukevien työkalujen saatavuus olisi ehdoton vaatimus.