1 research outputs found

    Ohjelmavikojen koneellinen tunnistaminen

    Get PDF
    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
    corecore