Tekninen velka modernissa ohjelmistotyössä
Vepsä, Juha (2019)
Vepsä, Juha
2019
Tietotekniikka
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ä
2019-05-08
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201904101389
https://urn.fi/URN:NBN:fi:tty-201904101389
Tiivistelmä
Ohjelmistokehityksen nopeus ja luonne ovat muuttuneet paljon sitten vesiputousmallin. Moderni ohjelmistotyö on nopeatempoista ja se pyrkii vastaamaan jatkuviin toimintaympäristön muutoksiin. Modernissa ohjelmistotyössä painotetaan muun muassa kehitystyön edistämistä kaiken kattavien suunnitelmien laatimisen sijaan. Modernin ohjelmistotyön toimintakulttuurissa pyritään ylipäänsä ketteryyteen ja joustavuuteen.
Kasvanut ohjelmistotuotantonopeus ja ohjelmistokehityskulttuurin muutos voivat kuitenkin altistaa kehitettävän ohjelmiston teknisen velan synnylle. Teknisellä velalla tarkoitetaan ohjelmiston lähdekoodissa esiintyviä, ohjelmointityön seurauksena syntyviä virheitä, jotka vaikeuttavat ohjelmiston jatkokehitystä ja tekevät lähdekoodin tulkinnasta vaikeampaa. Runsaasti teknistä velkaa sisältävää koodia on hidas jatkokehittää. Teknistä velkaa voi syntyä esimerkiksi aikataulupaineiden takia ja tekninen velka tulisikin ottaa huomioon modernissa ohjelmistotyössä.
Tässä diplomityössä on tutkittu miten tekninen velka esiintyy ja miten se kehittyy modernissa ohjelmistotyössä. Työn tutkimusosassa on tutkittu kahta nykyaikaisin ohjelmistokehitysmenetelmin toteutettua ohjelmistoa: Vaadin Framework 7 ja Yle Areena. Tutkimuksessa analysoitiin molempien ohjelmistojen koodipohjien kehitystä SonarQubella. SonarQube on staattinen koodin analysointityökalu, joka tuottaa sille syötetystä koodista tietoa koskien muun muassa teknistä velkaa, ohjelmointivirheitä ja haavoittuvuuksia. Työn tuloksissa käsitellään muun muassa teknisen velan kehittymistä ohjelmistoissa pitkällä aikavälillä.
Tuloksissa havaittiin, että tekninen velka kasvaa samassa suhteessa lähdekoodin määrän kanssa, mikäli siihen ei kiinnitetä huomioita. Kuitenkin jo vähäiset toimenpiteet lähdekoodin laadun ja siisteyden ylläpitämiseksi auttavat myös teknisen velan hallinnassa, vaikka toimenpiteiden tarkoitus ei alunperin olisikaan torjua nimenomaan teknistä velkaa. Yleisimmät teknisen velan lähteet liittyvät muun muassa perinnekoodiin, ohjelmointityyliin ja literaalien käyttöön vakioiden sijaan. Tuloksissa esiintyy jonkin verran ''kouluesimerkkivirheitä'' esimerkiksi liukulukujen välillä tapahtuvasta vertailusta yhtäsuuruusoperaattorilla tai geneeristen poikkeuksien käyttämistä erikoistettujen sijaan.
Kasvanut ohjelmistotuotantonopeus ja ohjelmistokehityskulttuurin muutos voivat kuitenkin altistaa kehitettävän ohjelmiston teknisen velan synnylle. Teknisellä velalla tarkoitetaan ohjelmiston lähdekoodissa esiintyviä, ohjelmointityön seurauksena syntyviä virheitä, jotka vaikeuttavat ohjelmiston jatkokehitystä ja tekevät lähdekoodin tulkinnasta vaikeampaa. Runsaasti teknistä velkaa sisältävää koodia on hidas jatkokehittää. Teknistä velkaa voi syntyä esimerkiksi aikataulupaineiden takia ja tekninen velka tulisikin ottaa huomioon modernissa ohjelmistotyössä.
Tässä diplomityössä on tutkittu miten tekninen velka esiintyy ja miten se kehittyy modernissa ohjelmistotyössä. Työn tutkimusosassa on tutkittu kahta nykyaikaisin ohjelmistokehitysmenetelmin toteutettua ohjelmistoa: Vaadin Framework 7 ja Yle Areena. Tutkimuksessa analysoitiin molempien ohjelmistojen koodipohjien kehitystä SonarQubella. SonarQube on staattinen koodin analysointityökalu, joka tuottaa sille syötetystä koodista tietoa koskien muun muassa teknistä velkaa, ohjelmointivirheitä ja haavoittuvuuksia. Työn tuloksissa käsitellään muun muassa teknisen velan kehittymistä ohjelmistoissa pitkällä aikavälillä.
Tuloksissa havaittiin, että tekninen velka kasvaa samassa suhteessa lähdekoodin määrän kanssa, mikäli siihen ei kiinnitetä huomioita. Kuitenkin jo vähäiset toimenpiteet lähdekoodin laadun ja siisteyden ylläpitämiseksi auttavat myös teknisen velan hallinnassa, vaikka toimenpiteiden tarkoitus ei alunperin olisikaan torjua nimenomaan teknistä velkaa. Yleisimmät teknisen velan lähteet liittyvät muun muassa perinnekoodiin, ohjelmointityyliin ja literaalien käyttöön vakioiden sijaan. Tuloksissa esiintyy jonkin verran ''kouluesimerkkivirheitä'' esimerkiksi liukulukujen välillä tapahtuvasta vertailusta yhtäsuuruusoperaattorilla tai geneeristen poikkeuksien käyttämistä erikoistettujen sijaan.