Koneoppiminen ketterässä ohjelmistoprojektissa
Koskinen, Miikka (2020)
Koskinen, Miikka
2020
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. Only for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-11-20
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202010287638
https://urn.fi/URN:NBN:fi:tuni-202010287638
Tiivistelmä
Tässä työssä selvitettiin, miten koneoppiminen soveltuu käytettäväksi yhdessä ohjelmistotuotannon ketterien menetelmien kanssa sellaisissa tapauksissa, kun koneoppiminen on osa rakennettavaa ohjelmistoa. Rakennettaessa koneoppimisen komponenttia ohjelmistoon työ on usein tutkivaa, jolloin opetus ei heti tuota toivottua tulosta, vaan tulokseen päästään vertailemalla erilaisia ratkaisuja. Ohjelmoinnissa haluttuun lopputulokseen päästään usein suoremmin. Ketterät menetelmät eivät välttämättä huomioi tätä eroa. Tässä työssä tutkitaan näitä mahdollisia ongelmia prosessien näkökulmasta.
Työssä suoritettiin systemaattinen kirjallisuuskatsaus, jossa hakuihin käytettiin useita tietokantoja ja kaikki tulokset käytiin läpi niin tarkasti, että voitiin varmistua siitä, että lähde täyttää valinnan kriteerit. Valinnan kriteereinä oli, että artikkeli käsittelee ketteriä menetelmiä datatieteessä tai datatieteen elinkaarta. Valittujen lähteiden lähdeluettelot käytiin läpi ja niistä etsittiin uusia lähteitä käyttäen samoja kriteereitä kuin aikaisemmissa tietokantoihin kohdistuvissa hauissa. Työssä tiedonpoimintaan käytettiin lomakkeita, joiden avulla kaikista valituista lähteistä pyrittiin löytämään vähintään samankaltaiset tiedot. Kirjallisuuskatsauksen kannalta olennaiset tiedot esitetään työssä kuvailevasti.
Kirjallisuuskatsauksen perusteella koneoppimisessa käytetystä prosessista muodostettiin iteratiivinen malli. Mallilla pyritään kuvaamaan sitä, miten koneoppimisessa käytetty prosessi etenee ja mitä vaiheita se sisältää. Lisäksi tarkastellaan muodostetun prosessin suorittamista ketterien menetelmien avulla.
Työssä koneoppimisen ei todettu soveltuvan täysin ongelmitta yhteen kiinteisiin iteraatioihin perustuvien ketterien menetelmien kanssa. Koneoppimisessa työhön kuluvaa aikaa on hankala arvioida, mikä aiheuttaa ongelmia, kun suunnitelmiin voidaan tehdä muutoksia ainoastaan kiinteämittaisen iteraation alussa. Prosessin vaiheissa takaisinpäin palaaminen vaatii uutta suunnitelmaa seuraavalle iteraatiolle. Toiminnallisuuden toimittaminen ensimmäisen iteraation sisällä koettiin myös haastavaksi. Ketterien menetelmien suosimien monialaisten tiimien sekä tiiviin yhteistyön huomattiin olevan vaatimuksena, kun kehittävässä ohjelmistossa on koneoppimisen komponentti.
Työssä suoritettiin systemaattinen kirjallisuuskatsaus, jossa hakuihin käytettiin useita tietokantoja ja kaikki tulokset käytiin läpi niin tarkasti, että voitiin varmistua siitä, että lähde täyttää valinnan kriteerit. Valinnan kriteereinä oli, että artikkeli käsittelee ketteriä menetelmiä datatieteessä tai datatieteen elinkaarta. Valittujen lähteiden lähdeluettelot käytiin läpi ja niistä etsittiin uusia lähteitä käyttäen samoja kriteereitä kuin aikaisemmissa tietokantoihin kohdistuvissa hauissa. Työssä tiedonpoimintaan käytettiin lomakkeita, joiden avulla kaikista valituista lähteistä pyrittiin löytämään vähintään samankaltaiset tiedot. Kirjallisuuskatsauksen kannalta olennaiset tiedot esitetään työssä kuvailevasti.
Kirjallisuuskatsauksen perusteella koneoppimisessa käytetystä prosessista muodostettiin iteratiivinen malli. Mallilla pyritään kuvaamaan sitä, miten koneoppimisessa käytetty prosessi etenee ja mitä vaiheita se sisältää. Lisäksi tarkastellaan muodostetun prosessin suorittamista ketterien menetelmien avulla.
Työssä koneoppimisen ei todettu soveltuvan täysin ongelmitta yhteen kiinteisiin iteraatioihin perustuvien ketterien menetelmien kanssa. Koneoppimisessa työhön kuluvaa aikaa on hankala arvioida, mikä aiheuttaa ongelmia, kun suunnitelmiin voidaan tehdä muutoksia ainoastaan kiinteämittaisen iteraation alussa. Prosessin vaiheissa takaisinpäin palaaminen vaatii uutta suunnitelmaa seuraavalle iteraatiolle. Toiminnallisuuden toimittaminen ensimmäisen iteraation sisällä koettiin myös haastavaksi. Ketterien menetelmien suosimien monialaisten tiimien sekä tiiviin yhteistyön huomattiin olevan vaatimuksena, kun kehittävässä ohjelmistossa on koneoppimisen komponentti.