CI/CD sulautettujen järjestelmien ohjelmistokehityksessä
Hautajärvi, Antti (2024)
Hautajärvi, Antti
2024
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
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ä
2024-05-21
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202405196013
https://urn.fi/URN:NBN:fi:tuni-202405196013
Tiivistelmä
Sulautetut järjestelmät ovat tärkeä osa modernia yhteiskuntaa. Niiden käyttökohteita löytyy niin ajoneuvoista, lääketieteestä, viihde-elektroniikasta kuin tuotantolaitteista. Sulautettujen järjestelmien ohjelmakoodien koko ja monimutkaisuus kasvavat jatkuvasti, minkä takia tarvitaan keinoja tehokkaan ja luotettavan ohjelmistokehityksen takaamiseksi. Jatkuva integraatio (CI), toimitus (CDE), sekä käyttöönotto (CD) ovat metodeja, joita voidaan hyödyntää näihin tarpeisiin. Nämä edellä mainitut jatkuvat työtavat ovat menetelmiä, joilla pyritään automatisoimaan ohjelmistokehitystä ja tehostamaan koodin integrointia, testausta ja käyttöönottoa. Tämän kandidaatintutkielman tavoitteena on selvittää kirjallisuuden avulla jatkuvien työtapojen ja niiden pohjalta luotujen järjestelmien vaikutus sulautettujen järjestelmien ohjelmistokehitykseen.
Työ alkaa sulautettujen järjestelmien ja ohjelmistojen perusperiaatteiden sekä käyttökohteiden esittelyllä. Tämän aikana todetaan sulautettujen järjestelmien omaavan monia etuja ja rajoitteita perinteisiin tietokonejärjestelmiin verrattuna. Työssä esitellään Agile ja DevOps, jotka ovat jatkuvien työtapojen taustalla olevia työmalleja. Niiden pohjalta perehdytään tarkemmin CI:n, CDE:n ja CD:n hyödyntämiseen ohjelmistokehityksessä. Lisäksi työssä käsitellään kahta järjestelmää: Jenkins ja Gitlab CI/CD, jotka on luotu jatkuvan kehityksen mahdollistamiseksi. Tutkielmassa todetaan molempien järjestelmien omaavan etuja ja heikkouksia toisiinsa verrattuna.
Toteutetun kirjallisuuskatsauksen perusteella CI/CD-menetelmien käyttö sulautettujen järjestelmien kehityksessä voi olla hyödyllistä ja kannattavaa projektin koosta ja tarpeista riippuen. Jatkuvan testauksen ansiosta ohjelmistovirheiden määrä vähenee ja asiakastyytyväisyys kasvaa. Sulautetut järjestelmät toimivat usein toimintakriittisissä ympäristöissä, joten ohjelmistovirheitä ei saisi tapahtua. Lisäksi työssä todetaan, että CI/CD:n avulla valmista ohjelmakoodia saadaan asiakkaalle useammin. Tämän ansiosta kehittäjät saavat aiempaa tiheämmin palautetta työstään, jonka pohjalta pystytään kehittämään tulevia implementointeja.
CI/CD:n toteuttaminen ja ylläpitäminen ei ole kuitenkaan täysin ongelmatonta. Tutkielman perusteella CI/CD-järjestelmien integrointi olemassa oleviin järjestelmiin ja laitteisiin voi tuottaa haasteita. Lisäksi todetaan, että automatisoitujen testien luominen on työlästä ja työntekijöiden osaaminen voi olla puutteellista. Näiden ongelmakohtien ratkaiseminen vaatii esimerkiksi investointeja ja työkulttuurin muutosta. Tutkielman tulosten perusteella voidaan kuitenkin todeta, että jatkuvien työtapojen, kuten CI/CD:n käyttäminen, on perinteiseen ohjelmistokehitykseen verrattuna tehokkaampaa.
Työ alkaa sulautettujen järjestelmien ja ohjelmistojen perusperiaatteiden sekä käyttökohteiden esittelyllä. Tämän aikana todetaan sulautettujen järjestelmien omaavan monia etuja ja rajoitteita perinteisiin tietokonejärjestelmiin verrattuna. Työssä esitellään Agile ja DevOps, jotka ovat jatkuvien työtapojen taustalla olevia työmalleja. Niiden pohjalta perehdytään tarkemmin CI:n, CDE:n ja CD:n hyödyntämiseen ohjelmistokehityksessä. Lisäksi työssä käsitellään kahta järjestelmää: Jenkins ja Gitlab CI/CD, jotka on luotu jatkuvan kehityksen mahdollistamiseksi. Tutkielmassa todetaan molempien järjestelmien omaavan etuja ja heikkouksia toisiinsa verrattuna.
Toteutetun kirjallisuuskatsauksen perusteella CI/CD-menetelmien käyttö sulautettujen järjestelmien kehityksessä voi olla hyödyllistä ja kannattavaa projektin koosta ja tarpeista riippuen. Jatkuvan testauksen ansiosta ohjelmistovirheiden määrä vähenee ja asiakastyytyväisyys kasvaa. Sulautetut järjestelmät toimivat usein toimintakriittisissä ympäristöissä, joten ohjelmistovirheitä ei saisi tapahtua. Lisäksi työssä todetaan, että CI/CD:n avulla valmista ohjelmakoodia saadaan asiakkaalle useammin. Tämän ansiosta kehittäjät saavat aiempaa tiheämmin palautetta työstään, jonka pohjalta pystytään kehittämään tulevia implementointeja.
CI/CD:n toteuttaminen ja ylläpitäminen ei ole kuitenkaan täysin ongelmatonta. Tutkielman perusteella CI/CD-järjestelmien integrointi olemassa oleviin järjestelmiin ja laitteisiin voi tuottaa haasteita. Lisäksi todetaan, että automatisoitujen testien luominen on työlästä ja työntekijöiden osaaminen voi olla puutteellista. Näiden ongelmakohtien ratkaiseminen vaatii esimerkiksi investointeja ja työkulttuurin muutosta. Tutkielman tulosten perusteella voidaan kuitenkin todeta, että jatkuvien työtapojen, kuten CI/CD:n käyttäminen, on perinteiseen ohjelmistokehitykseen verrattuna tehokkaampaa.
Kokoelmat
- Kandidaatintutkielmat [8997]