Ohjelmistotuotannon toimintamallien kehitys : Vesiputouksesta DevOpsiin
Korhonen, Kosti (2021)
Korhonen, Kosti
2021
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ä
2021-05-14
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202105044370
https://urn.fi/URN:NBN:fi:tuni-202105044370
Tiivistelmä
Sopivan ohjelmistotuotannon toimintamallin valinta on kriittinen osa yrityksen ohjelmistokehityksen onnistumista. Toimintamallin tulee sopia yhteen sitä toteuttavan organisaation osaamisen ja tavoitteiden kanssa. Oikean toimintamallin valintaan vaikuttavat lisäksi toteutettavien projektien yleiset piirteet, kuten projektien koko, kesto ja vaatimusten selkeys. Tässä työssä tutkitaan, kuinka ohjelmistokehityksen toimintamallit ovat kehittyneet ajan saatossa. Lisäksi tarkastellaan tarkemmin vesiputousmallia perinteisenä ohjelmistotuotannon toimintamallina, Scrumia ja XP:tä (Extreme Programming) ketterinä toimintamalleina sekä DevOpsia omana ajatusmallinaan. Tarkastelun lisäksi työn tarkoituksena on myös vertailla mallien soveltuvuuksia sekä hyötyjä ja haittoja keskenään.
Työ jakaantuu kolmeen osaan. Ensimmäisessä osassa tarkastellaan ohjelmistotuotantoa yleisemmällä tasolla, esitellään ohjelmistotuotannon kehityksen historiaa ja tarkastellaan perinteistä ajatusmallia noudattavan vesiputousmallin toimintaa. Toisessa osassa paneudutaan tarkemmin ketterään ohjelmistotuotantoon sekä sen kahteen edellä mainittuun toimintamallin. Lisäksi esitellään DevOps-ajattelumalli omana mallinaan. Viimeisessä osassa vertaillaan esiteltyjä malleja keskenään.
Työssä huomataan, kuinka jokaiselle esitellylle mallille löytyy olosuhteet, joissa mallin käyttö on soveliasta. Perinteisten mallien käyttö on perusteltua esimerkiksi silloin, kun työryhmä on kokematon tai projektin määränpää ja vaatimukset ovat hyvin selkeät. Perinteisten mallien suurin ongelma on kuitenkin niiden kyky reagoida muuttuviin tarvevaatimuksiin.
Ketterä ohjelmistokehitys pyrkii vastaamaan tähän ja moneen muuhun perinteisen ohjelmistotuotannon epäkohtaan. Ketterän ohjelmistokehityksen hyötyjä ovat muun muassa nopeampi tuotantoon vienti, joustavampi tuotantoprosessi ja laadukkaampi lopputuote. Ketterä ohjelmistotuotanto vaatii kuitenkin onnistuakseen osaavan ja motivoituneen työryhmän. Lisäksi ketterän ohjelmistotuotannon käyttöönotto voi viedä aikaa, sillä toimivat työtavat tulee löytää itse.
DevOps on puolestaan kehitetty ratkaisemaan ketterässä ohjelmistotuotannossa ilmenneitä ongelmia, kuten yksiköiden eristäytymistä toisistaan. On tärkeää muistaa, kuinka DevOps ja ketterä ohjelmistotuotanto ovat toisiaan täydentäviä arvojärjestelmiä, eli niiden toteuttaminen on yleensä yhtäaikaista. DevOpsissa keskitytään automatisaation lisäämiseen sekä yhteistyöhön kannustamiseen. Automatisoitujen tuotanto- ja integraatioputkien avulla pyritään saavuttamaan nopeampi, laadukkaampi ja riskittömämpi tuotteen julkaisusykli. Yhteistyöhön rohkaisemalla taas kannustetaan tiedon jakamiseen, mikä varmistaa organisaation jatkuvan oppimisen ja nopeamman kehityksen. Toimiakseen DevOps vaatii sitoutuneen ja osaavan organisaation, joka on myös kooltaan tarpeeksi suuri.
Työ jakaantuu kolmeen osaan. Ensimmäisessä osassa tarkastellaan ohjelmistotuotantoa yleisemmällä tasolla, esitellään ohjelmistotuotannon kehityksen historiaa ja tarkastellaan perinteistä ajatusmallia noudattavan vesiputousmallin toimintaa. Toisessa osassa paneudutaan tarkemmin ketterään ohjelmistotuotantoon sekä sen kahteen edellä mainittuun toimintamallin. Lisäksi esitellään DevOps-ajattelumalli omana mallinaan. Viimeisessä osassa vertaillaan esiteltyjä malleja keskenään.
Työssä huomataan, kuinka jokaiselle esitellylle mallille löytyy olosuhteet, joissa mallin käyttö on soveliasta. Perinteisten mallien käyttö on perusteltua esimerkiksi silloin, kun työryhmä on kokematon tai projektin määränpää ja vaatimukset ovat hyvin selkeät. Perinteisten mallien suurin ongelma on kuitenkin niiden kyky reagoida muuttuviin tarvevaatimuksiin.
Ketterä ohjelmistokehitys pyrkii vastaamaan tähän ja moneen muuhun perinteisen ohjelmistotuotannon epäkohtaan. Ketterän ohjelmistokehityksen hyötyjä ovat muun muassa nopeampi tuotantoon vienti, joustavampi tuotantoprosessi ja laadukkaampi lopputuote. Ketterä ohjelmistotuotanto vaatii kuitenkin onnistuakseen osaavan ja motivoituneen työryhmän. Lisäksi ketterän ohjelmistotuotannon käyttöönotto voi viedä aikaa, sillä toimivat työtavat tulee löytää itse.
DevOps on puolestaan kehitetty ratkaisemaan ketterässä ohjelmistotuotannossa ilmenneitä ongelmia, kuten yksiköiden eristäytymistä toisistaan. On tärkeää muistaa, kuinka DevOps ja ketterä ohjelmistotuotanto ovat toisiaan täydentäviä arvojärjestelmiä, eli niiden toteuttaminen on yleensä yhtäaikaista. DevOpsissa keskitytään automatisaation lisäämiseen sekä yhteistyöhön kannustamiseen. Automatisoitujen tuotanto- ja integraatioputkien avulla pyritään saavuttamaan nopeampi, laadukkaampi ja riskittömämpi tuotteen julkaisusykli. Yhteistyöhön rohkaisemalla taas kannustetaan tiedon jakamiseen, mikä varmistaa organisaation jatkuvan oppimisen ja nopeamman kehityksen. Toimiakseen DevOps vaatii sitoutuneen ja osaavan organisaation, joka on myös kooltaan tarpeeksi suuri.
Kokoelmat
- Kandidaatintutkielmat [6978]