Intelligent software development tools
Wikar, Matilda Johanna (2019-09-07)
Wikar, Matilda Johanna
07.09.2019
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2019092229256
https://urn.fi/URN:NBN:fi-fe2019092229256
Tiivistelmä
Artificial intelligence can be used to automate various tasks, also within software development.
The purpose of this thesis was to research what kind of artificially intelligent
software development tools and methods are available, and how they could suit a software
development team at Wärtsilä. To illustrate this, a recommendation based on available
literature was made on how the Wärtsilä team could possibly take intelligent software
development tools into use. Based on the findings, a proof of concept regarding software
test automation was developed.
First, different types of artificial intelligence were presented, which after a research plan
for how to conduct the literature review and the proof of concept was made. To find the
most suitable topic for the proof of concept the literature review was first conducted.
Focus was set on three areas – artificial intelligence assisted programming, bug handling
tools and software testing. Software test automation seemed the most interesting from a
Wärtsilä perspective, thus it was selected as the topic for the proof of concept. A prototype
of a neural network that analyses C-functions and recommends a unit test based on the
similarity to other functions was developed.
Conclusions drawn are that artificial intelligence-based methods in software development
has potential, but no tool was found that would directly suit Wärtsilä at this point. Either
the tools need to be developed further to suit the field of embedded software development,
or Wärtsilä could adapt their way of working for some tool to be taken into usage or
develop their own solutions. The proof of concept illustrates how an own solution could
be an alternative, if developed further in accordance to the improvement suggestions on
how to make it more efficient. Tekoälyn avulla voidaan automatisoida monia tehtäviä myös ohjelmistokehityksessä.
Tämän diplomityön tarkoitus oli tutkia minkälaisia tekoälypohjaisia työkaluja ja
menetelmiä on olemassa ja miten Wärtsilän ohjelmistokehitystiimi voisi näitä hyödyntää.
Suositus siitä, miten Wärtsilän tiimi voisi mahdollisesti ottaa tekoälypohjaisia työkaluja
käyttöön tehtiin kirjallisuuskatsauksen perusteella. Sen perusteella kehitettiin prototyyppi
mikä liittyy ohjelmistotestaukseen automatisointiin.
Ensin esiteltiin erilaisia haaroja tekoälystä, jonka jälkeen luotiin tutkimussuunnitelma ja
toteutettiin kirjallisuuskatsaus ja prototyypin kehittäminen. Kirjallisuuskatsauksessa
keskityttiin kolmeen osa-alueseen – tekoälyllä avustettu koodaus, ohjelmointivirheiden
hallinta ja ohjelmistotestaus. Näistä ohjelmistotestaus valittiin prototyypin aiheeksi,
koska Wärtsilän tiimin tavoitteiden perusteella se koettiin parhaaksi. Prototyyppinä
kehitettiin neuroverkko joka analysoi C-kielessä kirjoitetut funktiot ja suosittelee toisen,
samankaltaisen funktion perusteella yksikkötestin testausta varten.
Johtopäätöksenä todetaan että tekoälypohjaisilla työkaluilla on potentiaalia, mutta tällä
hetkellä ei löydy työkaluja joita voisi suoraan ottaa Wärtsilän käyttöön. Joko työkalut
pitäisi kehittää niin, että ne sopisivat myös sulautettujen järjestelmien tuotantoon, tai
työtavat pitäisi sopeuttaa työkalujen mukaan, tai kehittää omia ratkaisuja. Työssä
esitetään yksi ratkaisu, ja mainitaan parannusehdotuksia, joiden avulla saavutetaan vielä
parempi tehokkuus. Artificiell intelligens kan användas för att automatisera olika uppgifter, också inom
programmering. Målet med detta examensarbete var att undersöka hurudana intelligenta
verktyg och metoder som finns, och hur dessa kunde användas av ett
mjukvaruutvecklingsteam på Wärtsilä. Baserat på litteratur gjordes en rekommendation
för hur teamet på Wärtsilä eventuellt kunde ta sådana verktyg i bruk. Efter
litteraturgranskningen utvecklades en prototyp för automatisk generation av
mjukvarutester.
Först presenterades olika typer av artificiell intelligens, varefter en forskningsplan gjordes
upp för hur litteraturgranskningen skulle genomföras och för hur prototypen skulle
utvecklas. För att hitta det mest lämpade användningsområdet för prototypen, krävdes att
litteraturgranskningen gjordes först. I den fokuserades det på tre skilda ämnen –
programmering, bugghantering och mjukvarutestning assisterade av artificiell intelligens.
Intelligent mjukvarutestning verkade mest intressant och lämpligt att utforska mera för
Wärtsiläs team. Prototypen som utvecklades var ett neuralt nätverk som analyserar Cfunktioner
och rekommenderar ett enhetstest baserat på likheterna till andra funktioner.
Slutsatsen av arbetet var att användadet av metoder baserade på artificiell intelligens inom
programmering förvisso har potential, men att i detta skede hittades inget verktyg som
skulle passa Wärtsilä direkt. Antingen krävs att verktygen utvecklas för att passa
industrin, att Wärtsilä anpassar sitt sätt att arbeta eller utvecklar egna intelligenta
lösningar. Prototypen som utvecklades illustrerade hur en egenutvecklad lösning kunde
vara en möjlighet, om den skulle utvecklas enligt förbättringsförslagen som beskrivs så
att den skulle bli mera exakt och effektiv.
The purpose of this thesis was to research what kind of artificially intelligent
software development tools and methods are available, and how they could suit a software
development team at Wärtsilä. To illustrate this, a recommendation based on available
literature was made on how the Wärtsilä team could possibly take intelligent software
development tools into use. Based on the findings, a proof of concept regarding software
test automation was developed.
First, different types of artificial intelligence were presented, which after a research plan
for how to conduct the literature review and the proof of concept was made. To find the
most suitable topic for the proof of concept the literature review was first conducted.
Focus was set on three areas – artificial intelligence assisted programming, bug handling
tools and software testing. Software test automation seemed the most interesting from a
Wärtsilä perspective, thus it was selected as the topic for the proof of concept. A prototype
of a neural network that analyses C-functions and recommends a unit test based on the
similarity to other functions was developed.
Conclusions drawn are that artificial intelligence-based methods in software development
has potential, but no tool was found that would directly suit Wärtsilä at this point. Either
the tools need to be developed further to suit the field of embedded software development,
or Wärtsilä could adapt their way of working for some tool to be taken into usage or
develop their own solutions. The proof of concept illustrates how an own solution could
be an alternative, if developed further in accordance to the improvement suggestions on
how to make it more efficient.
Tämän diplomityön tarkoitus oli tutkia minkälaisia tekoälypohjaisia työkaluja ja
menetelmiä on olemassa ja miten Wärtsilän ohjelmistokehitystiimi voisi näitä hyödyntää.
Suositus siitä, miten Wärtsilän tiimi voisi mahdollisesti ottaa tekoälypohjaisia työkaluja
käyttöön tehtiin kirjallisuuskatsauksen perusteella. Sen perusteella kehitettiin prototyyppi
mikä liittyy ohjelmistotestaukseen automatisointiin.
Ensin esiteltiin erilaisia haaroja tekoälystä, jonka jälkeen luotiin tutkimussuunnitelma ja
toteutettiin kirjallisuuskatsaus ja prototyypin kehittäminen. Kirjallisuuskatsauksessa
keskityttiin kolmeen osa-alueseen – tekoälyllä avustettu koodaus, ohjelmointivirheiden
hallinta ja ohjelmistotestaus. Näistä ohjelmistotestaus valittiin prototyypin aiheeksi,
koska Wärtsilän tiimin tavoitteiden perusteella se koettiin parhaaksi. Prototyyppinä
kehitettiin neuroverkko joka analysoi C-kielessä kirjoitetut funktiot ja suosittelee toisen,
samankaltaisen funktion perusteella yksikkötestin testausta varten.
Johtopäätöksenä todetaan että tekoälypohjaisilla työkaluilla on potentiaalia, mutta tällä
hetkellä ei löydy työkaluja joita voisi suoraan ottaa Wärtsilän käyttöön. Joko työkalut
pitäisi kehittää niin, että ne sopisivat myös sulautettujen järjestelmien tuotantoon, tai
työtavat pitäisi sopeuttaa työkalujen mukaan, tai kehittää omia ratkaisuja. Työssä
esitetään yksi ratkaisu, ja mainitaan parannusehdotuksia, joiden avulla saavutetaan vielä
parempi tehokkuus.
programmering. Målet med detta examensarbete var att undersöka hurudana intelligenta
verktyg och metoder som finns, och hur dessa kunde användas av ett
mjukvaruutvecklingsteam på Wärtsilä. Baserat på litteratur gjordes en rekommendation
för hur teamet på Wärtsilä eventuellt kunde ta sådana verktyg i bruk. Efter
litteraturgranskningen utvecklades en prototyp för automatisk generation av
mjukvarutester.
Först presenterades olika typer av artificiell intelligens, varefter en forskningsplan gjordes
upp för hur litteraturgranskningen skulle genomföras och för hur prototypen skulle
utvecklas. För att hitta det mest lämpade användningsområdet för prototypen, krävdes att
litteraturgranskningen gjordes först. I den fokuserades det på tre skilda ämnen –
programmering, bugghantering och mjukvarutestning assisterade av artificiell intelligens.
Intelligent mjukvarutestning verkade mest intressant och lämpligt att utforska mera för
Wärtsiläs team. Prototypen som utvecklades var ett neuralt nätverk som analyserar Cfunktioner
och rekommenderar ett enhetstest baserat på likheterna till andra funktioner.
Slutsatsen av arbetet var att användadet av metoder baserade på artificiell intelligens inom
programmering förvisso har potential, men att i detta skede hittades inget verktyg som
skulle passa Wärtsilä direkt. Antingen krävs att verktygen utvecklas för att passa
industrin, att Wärtsilä anpassar sitt sätt att arbeta eller utvecklar egna intelligenta
lösningar. Prototypen som utvecklades illustrerade hur en egenutvecklad lösning kunde
vara en möjlighet, om den skulle utvecklas enligt förbättringsförslagen som beskrivs så
att den skulle bli mera exakt och effektiv.