Ohjelmavikojen koneellinen tunnistaminen
Lehtimäki, Jukka (2022)
Lehtimäki, Jukka
2022
Tietojenkäsittelyopin maisteriohjelma - Master's Programme in Computer Science
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ä
2022-11-22
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202210277972
https://urn.fi/URN:NBN:fi:tuni-202210277972
Tiivistelmä
Avoimen lähdekoodin ratkaisuja hyödynnetään modernissa ohjelmistokehityksessä laajasti. Pienisistä ohjelmistoprojekteista lähtien aina valtion huoltovarmuuden kannalta oleellisiin järjestelmiin käytetään samoja avoimen lähdekoodin ratkaisuja. Ratkaisujen uskotaan olevan ylläpidettyjä, tietoturvallisia ja toimivia, koska ne toimivat modernin ohjelmistokehityksen kivijalkana. Todellisuudessa kriittisimmistä avoimen lähdekoodin ratkaisuista voi löytyä ”koulukirjaesimerkkejä” ohjelmointivirheestä, joka voi altistaa ratkaisun käyttäjän vaaralle.
Tutkielmassa tutkitaan empiirisilla menetelmällä koneellisesti havaittavien ohjelmavikojen kehittymistä avoimen lähdekoodin Spring-ohjelmistokehyksen kolmen pääversion välillä. Springohjelmistokehys on suosittu ratkaisu Java-ohjelmointikielellä tapahtuvassa ohjelmistokehityksessä. Suuren markkinaosuutensa johdosta Spring-ohjelmistokehys muodostaa kriittisen kivijalan, jonka päälle rakennetaan muita ratkaisuja. Merkittävyytensä johdosta Springohjelmistokehys on ensiluokkainen ehdokas koneelliseen analysointiin.
Koneellinen analysointi suoritettiin käyttämällä kahta modernia staattisen analysoinnin työkalua: Error Prone ja SonarQube nimisiä työkaluja. Työkalujen analysointien tulokset olivat enimmäkseen samaa mieltä ohjelmavikojen jakautumisesta Spring-ohjelmistokehyksen moduuleihin, mutta eri mieltä ohjelmavikojen lukumäärän kehityssuunnasta Springohjelmistokehyksen pääversioiden välillä. Error Prone -työkalun tulokset osoittavat ohjelmavikojen vähentyneen jokaisessa pääversiossa, eikä lähdekoodin lisääntyminen ole korreloinut ohjelmavikojen lukumäärän kanssa. SonarQube-työkalun tulokset päinvastoin osoittavat korrelaation lähdekoodin lisääntymisessä ja ohjelmavikojen lukumäärässä Springohjelmistokehyksen pääversioiden välillä.
Tutkielman tulokset osoittavat Spring-ohjelmistokehyksestä löytyvän ohjelmavikoja, jotka ovat koneellisesti havaittavissa moderneilla staattisen analysoinnin työkaluilla. Työkalut olisi mahdollista integroida osaksi Spring-ohjelmistokehyksen kehitysprosessia, jolloin ne osoittaisivat koneellisesti varmistetun minimitason lähdekoodin laadussa.
Tutkielmassa tutkitaan empiirisilla menetelmällä koneellisesti havaittavien ohjelmavikojen kehittymistä avoimen lähdekoodin Spring-ohjelmistokehyksen kolmen pääversion välillä. Springohjelmistokehys on suosittu ratkaisu Java-ohjelmointikielellä tapahtuvassa ohjelmistokehityksessä. Suuren markkinaosuutensa johdosta Spring-ohjelmistokehys muodostaa kriittisen kivijalan, jonka päälle rakennetaan muita ratkaisuja. Merkittävyytensä johdosta Springohjelmistokehys on ensiluokkainen ehdokas koneelliseen analysointiin.
Koneellinen analysointi suoritettiin käyttämällä kahta modernia staattisen analysoinnin työkalua: Error Prone ja SonarQube nimisiä työkaluja. Työkalujen analysointien tulokset olivat enimmäkseen samaa mieltä ohjelmavikojen jakautumisesta Spring-ohjelmistokehyksen moduuleihin, mutta eri mieltä ohjelmavikojen lukumäärän kehityssuunnasta Springohjelmistokehyksen pääversioiden välillä. Error Prone -työkalun tulokset osoittavat ohjelmavikojen vähentyneen jokaisessa pääversiossa, eikä lähdekoodin lisääntyminen ole korreloinut ohjelmavikojen lukumäärän kanssa. SonarQube-työkalun tulokset päinvastoin osoittavat korrelaation lähdekoodin lisääntymisessä ja ohjelmavikojen lukumäärässä Springohjelmistokehyksen pääversioiden välillä.
Tutkielman tulokset osoittavat Spring-ohjelmistokehyksestä löytyvän ohjelmavikoja, jotka ovat koneellisesti havaittavissa moderneilla staattisen analysoinnin työkaluilla. Työkalut olisi mahdollista integroida osaksi Spring-ohjelmistokehyksen kehitysprosessia, jolloin ne osoittaisivat koneellisesti varmistetun minimitason lähdekoodin laadussa.