scieee Open visual document viewer

Ohjelmistoalan pk-yrityksen mobiilikehityksen jatkuva integraatio

Hartikainen, Ville

Abstract

Työn tavoitteena on tutkia, mitä on jatkuva integraatio ja kuinka optimoida sen toteutus työnkulun sujuvoittamiseksi erilaisten käytänteiden ja työkalujen avulla. Tässä työssä jatkuvaa integraatiota tarkastellaan mobiilikehitys- ja DevOps -kontekstissa ohjelmistoalan pk-yrityksen näkökulmasta. Työn empiirisessä osassa tutkitaan yhden jatkuvan integraation työkalun soveltuvuutta mobiilikehityskäyttöön, implementoimalla jatkuva integraatio React Native -kehysympäristöllä kehitettävään mobiilikehitysprojektiin. Työn tuloksena tunnistettiin, että jatkuvan integraation optimaalisuuteen vaikuttavat teknisten tekijöiden lisäksi organisaatiokulttuuri ja toimintamallit. Lisäksi havaittiin, että jatkuva integraatio on yksi tärkeimmistä DevOps-menetelmistä. Työn empiirisessä tutkimuksessa tunnistettiin mobiilikehityksen jatkuvan integraation erityispiirteitä sekä todettiin tutkittavan työkalun soveltuvan mobiilikehityskäyttöön ja DevOps-menetelmien työkalupalettiin.

Full text

Lappeen annan eknillinen yliopis o School o Enginee ing Science Tie o ekniikan koulu usohjelma Kandidaa in yö Ville Ha ikainen Ohjelmis oalan pk-y i yksen mobiilikehi yksen ja ku a in eg aa io Työn a kas aja( ): Tu kija oh o i A i Happonen Työn ohjaaja( ): Tu kija oh o i A i Happonen Tuo an ojoh aja Ilkka Toi anen ii TIIVISTELMÄ Lappeen annan eknillinen yliopis o School o Enginee ing Science Tie o ekniikan koulu usohjelma Ville Ha ikainen Ohjelmis oalan pk-y i yksen mobiilikehi yksen ja ku a in eg aa io Kandidaa in yö 2018 50 si ua, 2 ku aa, 8 aulukkoa, 1 lii e Työn a kas aja: TkT A i Happonen Hakusana : ja ku a in eg aa io, mobiiliohjelmis okehi ys, De Ops Keywo ds: con inuous in eg a ion, mobile applica ion de elopmen , De Ops Työn a oi eena on u kia, mi ä on ja ku a in eg aa io ja kuinka op imoida sen o eu us yönkulun suju oi amiseksi e ilais en käy än eiden ja yökalujen a ulla. Tässä yössä ja ku aa in eg aa io a a kas ellaan mobiilikehi ys- ja De Ops -kon eks issa ohjelmis oalan pk-y i yksen näkökulmas a. Työn empii isessä osassa u ki aan yhden ja ku an in eg aa ion yökalun so el u uu a mobiilikehi yskäy öön, implemen oimalla ja ku a in eg aa io Reac Na i e -kehysympä is öllä kehi e ä ään mobiilikehi ysp ojek iin. Työn uloksena unnis e iin, e ä ja ku an in eg aa ion op imaalisuu een aiku a a eknis en ekijöiden lisäksi o ganisaa iokul uu i ja oimin amalli . Lisäksi ha ai iin, e ä ja ku a in eg aa io on yksi ä keimmis ä De Ops-mene elmis ä. Työn empii isessä u kimuksessa unnis e iin mobiilikehi yksen ja ku an in eg aa ion e i yispii ei ä sekä ode iin u ki a an yökalun so el u an mobiilikehi yskäy öön ja De Ops-mene elmien yökalupale iin. iii ABSTRACT Lappeen an a Uni e si y o Technology School o Enginee ing Science Deg ee P og am in Compu e Science Ville Ha ikainen Con inuous in eg a ion o mobile applica ions in a so wa e indus y SME Bachelo ’s Thesis 2018 50 pages, 2 igu es, 8 ables, 1 appendix Examine : D. Sc. A i Happonen Keywo ds: con inuous in eg a ion, mobile applica ion de elopmen , De Ops The aim o his hesis is o esea ch con inuous in eg a ion and how o op imize i s implemen a ion o s eamlining o wo k low wi h he help o di e en me hods and ools. This hesis examines con inuous in eg a ion in mobile de elopmen and De Ops con ex om a iewpoin o a small o medium sized so wa e de elopmen company. Empi ical esea ch o he hesis ocuses on e alua ing he sui abili y o one con inuous in eg a ion ool o mobile applica ion de elopmen by implemen ing con inuous in eg a ion in a Reac Na i e -mobile applica ion p ojec . As a esul o he hesis, i was obse ed ha he op imiza ion o con inuous in eg a ion is a ec ed by echnical aspec s as well as o ganiza ional cul u e and ope a ing models. Addi ionally, i was obse ed ha con inuous in eg a ion is a undamen al pa o De Ops. Cha ac e is ics o con inuous in eg a ion in mobile applica ion de elopmen we e ecognized as a esul o empi ical esea ch. I was ound ou ha he esea ched ool sui s o mobile applica ion de elopmen as well as o he De Ops- oolbox. 1 SISÄLLYSLUETTELO 1 JOHDANTO ................................................................................................................. 4 1.1 TYÖN TAUSTA ......................................................................................................... 4 1.2 TAVOITTEET JA RAJAUKSET .................................................................................... 5 1.3 TYÖN RAKENNE ...................................................................................................... 6 2 JATKUVA INTEGRAATIO OHJELMISTOTUOTANNOSSA ............................ 7 2.1 PROSESSI ................................................................................................................. 7 2.2 TYÖVAIHEET ........................................................................................................... 8 2.3 KYPSYYSTASOMALLIT .......................................................................................... 10 2.4 EDUT JA HAASTEET ............................................................................................... 15 2.5 MOBIILIKEHITYKSEN OSANA ................................................................................. 16 2.6 DEVOPSIN OSANA ................................................................................................. 17 3 JATKUVAN INTEGRAATION TYÖKALUT ....................................................... 19 3.1 JATKUVAN INTEGRAATION PÄÄTYÖKALUT ........................................................... 19 3.2 JATKUVAN INTEGRAATION APUTYÖKALUT ........................................................... 21 3.3 MOBIILIKEHITYKSEEN SOVELTUVAT TYÖKALUT ................................................... 21 4 OHJELMISTOTYÖKALUN SOVELTUVUUS .................................................... 23 4.1 OHJELMISTOTYÖKALUN SOVELTUVUUDEN ARVIOINTI .......................................... 23 4.2 VAATIMUKSET JA RAJA-ARVOT ............................................................................. 23 4.3 EMPIIRISEN TUTKIMUKSEN TOTEUTUS .................................................................. 24 5 TYÖKALUN SOVELTUVUUDEN ARVIOIMINEN ........................................... 26 5.1 TYÖKALUN ESITTELY ............................................................................................ 26 5.2 EMPIIRINEN TUTKIMUS ......................................................................................... 27 5.3 TYÖKALUN SOVELTUVUUS PK-YRITYKSEEN ......................................................... 32 6 JOHTOPÄÄTÖKSET ............................................................................................... 35 6.1 PÄÄTELMÄ ............................................................................................................ 35 6.2 REFLEKTIO ............................................................................................................ 36 6.3 JATKOTUTKIMUS ................................................................................................... 37 2 LÄHTEET .......................................................................................................................... 38 LIITTEET LIITE 1: Empii isen u kimuksen Ci cleCI YAML-kon igu oin i iedos o 3 SYMBOLI- JA LYHENNELUETTELO APK And oid Applica ion Package CD Con inuous Deli e y CI Con inuous In eg a ion De Ops De elopmen & Ope a ions JS Ja aSc ip XML Ex ensible Ma kup Language YAML YAML Ain’ Ma kup Language 4 1 JOHDANTO Tie o eknise lai ee o a kehi ynee yhä mobiilimpaan muo oon. Näin ollen pal elun a joajien on äy yny laajen aa pal elui aan sekä ukeaan mobiilima kkinoille. Mobiililai eiden kompak i koko ja koske usnäy ö mahdollis a a uusien inno aa ioiden ja pal elujen kehi ämisen. Mobiililai eille kehi e ään ja ku as i uusia so elluksia ja näiden so ellus en kehi äminen on me ki ä ää liike oimin aa. Tässä yössä käsi ellään mobiiliohjelmis okehi ys ä suju oi a aa sekä sen laa ua pa an a aa p osessia, ja ku aa in eg aa io a (Du all, Ma yas & Glo e 2007). Johdannossa aus oi e aan yön läh ökohda , a oi ee sekä ku a aan yön sisäl ö. 1.1 Työn aus a Ke e än ohjelmis okehi yksen pe uspe iaa ee , ku en laadukkaan ohjelmis on ja ku an oimi amisen mahdollis aminen ja muu u iin asiakas aa imuksiin as aaminen (Agile Alliance 2018), edelly ä ä laadukkai a p osesseja koko ohjelmis o uo an oke jul a. Ja ku a in eg aa io (CI eli Con inuous In eg a ion) on suosi u p osessi ke e ien ohjelmis okehi yksen mene elmien keskuudessa (Bosch 2014, s. 107). Ja ku an in eg aa ion p osessi o a lähimmässä uo o aiku uksessa ohjelmis on lähdekoodin kanssa ja näin ollen pe us a koko ke jun oiminnalle. Ke e ien mene elmien mukaelma, De Ops (De elopmen & Ope a ions), py kii yhdis ämään usein oisis aan e illisen kehi ys yön ja uo annon yh enäiseksi ke juksi (Ebe , Galla do, He nan es ja Se ano 2016, s. 94). Kehi ys yö ja uo annollise p osessi py i ään au oma isoimaan hyödyn ämällä p osesseihin so el u ia yökaluja (A lassian 2018a). Hyödynne ä ien De Ops- yökalujen ki jo on nykypäi änä laaja, jo en on ä keää ka oi aa sekä a ioida, mi kä yökalu so el u a o ganisaa ioihin pa hai en. Työn aiheen on mää i äny ohjelmis oalan pk-y i ys OCTO3 Oy. De Ops on oleellinen osa OCTO3:n aja usmaailmaa ja oimin amallia, jo a hyödyn ämällä y i ys as aa ke e äs i sopimusohjelmis okehi yksen haas eisiin. Ja ku aa in eg aa io a on o eu e u y i yksessä p ojek ikoh aises i. Työn sisäl ämä u kimus ka oi aa mahdollisuuksia ja ku an in eg aa ion o eu amiseen mobiilikehi ysympä is össä sekä a ioi sen aa imien yökalujen so el u uu a nopeas i kas a an pk-y i yksen mobiilikehi yshankkeisiin. 5 1.2 Ta oi ee ja ajaukse Tämän kandidaa in yön a oi eena on sel i ää, kuinka mobiilikehi yksen ja ku a in eg aa io on mahdollis a o eu aa ja op imoida pk-y i yksessä e ilais en käy än eiden ja yökalujen a ulla sekä esi ää a io ali un yökalun so el u uudes a y i yksen a peisiin. Työssä ka oi e aan mobiilikehi ysympä is öön so el u ia ja ku an in eg aa ion yökaluja ja käy än ei ä sekä ku a aan lyhyes i yökalun alin ap osessin aihee . Työn pääpaino on empii isessä u kimuksessa, johon on ali u yksi ja ku an in eg aa ion yökalu. Työkalun so el u uus ohjelmis oalan pk-y i ys OCTO3 Oy:n mobiilikehi ys a peisiin a ioidaan. Työn u kimuskysymys on seu aa a: Kuinka op imoida ja ku a in eg aa io ohjelmis oalan pk-y i yksen mobiilikehi yksessä yönkulun suju oi amiseksi e ilais en käy än eiden ja yökalujen a ulla? Tu kimuskysymyksen jäsen elyn a uksi ali uja lisä u kimuskysymyksiä o a seu aa a : So el uuko ali u yökalu pk-y i yksen mobiilikehi yksen a peisiin? Tukeeko yökalu mui a De Ops-käy än ei ä? Ja ku an in eg aa ion op imoinnilla a koi e aan ämän yön kon eks issa yökaluja ja oimin amalleja, jo ka ehos a a sekä helpo a a ja ku an in eg aa ion o eu amis a laajemman De Ops-kul uu in osana. Ja ku an in eg aa ion op imaalisuu a ali ulla yökalulla sekä yökalun so el u uu a a ioidaan peilaamalla empii isen u kimuksen uloksia ki jallisuuska saukses a ke ä yyn aineis oon. Ja ku a in eg aa io ku a aan yössä laajemman De Ops-kul uu in osana, jossa e sionhallinnassa sijai se an ohjelmis on koodikannan jokaises a päi i ykses ä käynnis e ään in eg aa iop osessi. In eg aa iop osessi on äysin au oma isoi u, ja se sisäl ää ohjelmis on koon i e sioinnin (build), es aamisen, käy ööno on sekä koodin analysoimisen. Viimeisenä aiheena p osessin suo i ukses a oimi e aan kehi äjille ja muille asianomaisille apo i. 6 1.3 Työn akenne Lu ussa kaksi ku a aan, mi ä on ja ku a in eg aa io ja mi ä käy än ei ä siihen kuuluu. Läh ö ie oina ke o aan ja ku an in eg aa ion aus aa sekä sen aiku uksia ohjelmis op ojek eihin. Lu un a koi uksena on a a a lukijalle ja ku an in eg aa ion kon eks i sekä iippu uude muihin ke e än ohjelmis okehi yksen (De Ops) oimin amalleihin. Ja ku aa in eg aa io a ku a aan ja analysoidaan mobiilikehi yksen näkökulmas a. Kolmannessa lu ussa ka oi e aan yleises i ki jallisuuska sauksen keinoin, mi ä ja ku an in eg aa ion mahdollis a ia yökaluja on olemassa sekä mi ä ne eke ä . Pääpaino on a sinais en CI- yökalujen aih oehdoissa sekä oiminnallisuuksissa. Lisäksi si u aan pää yökalun suo i ukseen ky key y iä ja ku aa in eg aa io a uke ia yökaluja, ku en ohjelmakoodin ka selmoin i- ja a ioin i yökaluja. Lu ussa neljä ku a aan yleises i ohjelmis o yökalun so el u uuden mää i ys ki jallisuuska sauksen pohjal a. Lisäksi ku a aan OCTO3 Oy:n ase ama eknise aa imukse . Lu ussa myös ku a aan empii isen u kimuksen suo i us ali ulla ja ku an in eg aa ion yökalulla. Empii isessä u kimuksessa u ki aan ali ua ja ku an in eg aa ion yökalua mobiilikehi ysp ojek issa. Käy ökon eks issa on ah ana es ausau omaa io ja so el u uus De Ops-kokonaisuu een. Viidennessä lu ussa esi ellään ali u yökalu, ku a aan ha ainno empii ises ä u kimukses a sekä esi e ään a io yökalun so el u uudes a ohjelmis oalan pk-y i yksen mobiilikehi yksen a peisiin. Viimeisessä lu ussa esi e ään yön joh opää ökse as aamalla esi e yihin u kimuskysymyksiin yön ki jallisuuska sauksen ja empii isen u kimuksen pohjal a. Lisäksi e lek oidaan k ii ises i, kuinka yön u kimus sujui ja unnis e aan yön aiheeseen lii y iä ja ko u kimuskoh ei a. 13 Taulukko 4. Rapo oinnin kypsyys aso (U banCode 2018) Base Visibili y: Repo Runne Tool gene a ed epo s Beginne Visibili y: Team La es epo s always accessible In e media e Visibili y: C oss Silo His o ical Repo s a ailable o iewing Ad anced Repo ending Ex eme C oss Silo Analysis O ganisaa iokul uu in ( aulukko 5) pohja asolla edelly e ään yön jao elua, dokumen aa io a ja ihei ä e sionhallinnan koodikannan päi i yksiä. Keski asolle e eneminen edelly ää ke e ien kehi ysmene elmien hyödyn ämis ä, iimien älis en ajojen ikkomis a sekä p osesseja. Kypsimmillä asoilla kehi ys iimi yösken ele ä is iin, yökaluille on as uu iimi ja as uu a jae aan kehi ys iimien kesken. (In oQ 2018) 14 Taulukko 5. O ganisaa iokul uu in kypsyys aso (In oQ 2018) Base P io i ized wo k De ined and documen ed p ocess F equen commi s Beginne One backlog pe eam Sha e he pain S able eams Adop basic Agile me hods Remo e bounda y de & es In e media e Ex ended eam collabo a ion Componen owne ship Ac on me ics Remo e bounda y de & ops Common p ocess o all changes Decen alized decisions Ad anced Dedica ed ools eam Team esponsible all he way o p od Deploy disconnec ed om Release Con inuous Imp o emen (Kaizen) Ex eme C oss unc ional eams No ollbacks (always oll o wa d) Suunni elun- ja a kki eh uu in ( aulukko 6) pohja asolla edelly e ään akiin umis a joihinkin alus oihin sekä eknologioihin. Keski asoille e eneminen edelly ää e sionhallinnassa haa au umisen minimoin ia ja sii ymises ä modula isaa ion hyödyn ämises ä i senäis en ohjelmis okomponen ien kehi ämiseen. Kypsimmillä asoilla a kki eh uu i on ie y ää immäisyyksiin, mahdollis aen ympä is öjen pys y ämisen ja kon igu oinnin ähällä manuaalisella yöllä. (In oQ 2018) 15 Taulukko 6. Suunni elun- ja a kki eh uu in kypsyys aso (In oQ 2018) Base Consolida ed pla o m & echnology Beginne O ganize sys em in o modules API managemen Lib a y managemen Ve sion con ol DB changes In e media e No (o minimal b anching) B anch by abs ac ion Con igu a ion as code Fea u e hiding Making componen s ou o modules Ad anced Full componen based a chi ec u e Push business me ics Ex eme In as uc u e as code 2.4 Edu ja haas ee Du all e al. (2006) esi ä ä ja ku an in eg aa ion o eu amisen eduiksi iskien ja ois u an manuaalisen yön minimoimisen, ohjelmis on käy ööno on helpo umisen sekä p ojek in näky yyden ja uo eeseen luo amuksen pa an umisen. Riskejä minimoi a ja ku a es aaminen ja analysoin i, jonka a ulla ohjelmis on i hee ja ongelma o a ha ai a issa aikaisessa aiheessa sekä laa u on ja ku assa a kkailussa. Tois u an manuaalisen yön minimoiminen apau aa kehi äjä keski ymään oleelliseen ja yön au oma isoin i akaa sen, e ä p osessi suo i e aan aina samalla a alla. Ja ku a in eg aa io helpo aa huoma a as i ohjelmis on käy ööno oa, mahdollis aen ideaali apauksessa sen sii ämisen oimi uspu keen milloin ahansa ja ku an oimi amisen p osessien a ulla. P ojek in näky yy ä ja pää öksen ekoa uke a ja ku an in eg aa ion suo i uksis a ke ä ä ä ie o ja endi . Lisäksi luo amus uo eeseen pa anee, sillä es aus ja analysoin i suo i e aan jokaises a lähdekoodikannan muu okses a. Kysely u kimuksessa, jo a a en haas a el iin neljän e i ohjelmis o uo een pa issa yösken ele iä asian un ijoi a, ha ai iin ja ku an in eg aa ion pa an a an p ojek in ennus e a uu a sekä p ojek ihenkilös ön kommunikaa io a. Vii ei ä ha ai iin myös 16 es auksen ukemises a ja kehi äjän uo eliaisuuden pa anemises a. Tu kimus ulokse kui enkin osoi a a hajonnallaan sen, e ä ja ku an in eg aa ion hyödy oi a aihdella hy in paljon e i ohjelmis o uo eiden ja niiden kehi ysp ojek ien älillä. (S åhl e al. 2013) Hil on, Tunnell, Huang, Ma ino ja Dig (2016) esi ä ä laajaan a oimen lähdekoodin ohjelmis op ojek eis a ke ä yyn aineis oon pe us uen, e ä ja ku aa in eg aa io a hyödyn ä ä p ojek i julkaise a ohjelmis oaan useammin, hy äksyn äp osessi ehdo e uille lähdekoodimuu oksille on nopeampi ja päälinjaan ei lii e ä ohjelmis on ikko aa lähdekoodia. Ja ku an in eg aa ion implemen oiminen edelly ää osaamis a sekä esu sseja. A oimen lähdekoodin ohjelmis op ojek eissa me ki ä immiksi syiksi, miksi ja ku aa in eg aa io a ei käy e ä, ha ai iin kehi äjien kokema omuus, au omaa i es ien puu uminen sekä se, e ei koodimuu oksia iedä e sionhallin aan ii ä än usein (Hil on e al. 2016, s. 432). Shahin e al. (2017, s. 16) o eu amassa ki jallisuus u kimuksessa ha ai iin as aa as i hidas eena es aukseen lii y ä puu ee ja koodin lii os is i iida (me ge con lic s). Nämä haas ee indikoi a ah as i, e ä ja ku alla in eg aa iolla on me ki ä ä aiku us yönkulkuun ja sen implemen oin iin aiku a a hy in paljon ohjelmis o uo een ai sen uo ekehi ysp ojek in yyppi. Ha ainno u kimusaineis ojen pohjal a uke a äi e ä sii ä, e ä ja ku a in eg aa io a joaa lukuisia e uja ohjelmis op ojek ien yönkulkuun. E uja ei oi kui enkaan yksiseli eises i yleis ää kaikkiin ohjelmis op ojek eihin. Työn u kimuskysymyksen kannal a uleekin huomioida, e ei ä ha ainno ja ku an in eg aa ion so el u uudes a yön pk-y i yksen mobiilikehi yskon eks iin ole äl ämä ä suo aan so elle a issa oisiin o ganisaa ioihin ai kehi ysp ojek eihin. 2.5 Mobiilikehi yksen osana Mobiiliso ellus on ohjelmis o, joka on suunni el u suo i e a aksi mobiililai eella, ku en älypuhelimella ai able illa. Mobiiliso ellus en pääasiallise kehi ysalus a o a And oid- ja iOS-käy öjä jes elmä , sillä lähes kaikki mobiililai ee hyödyn ä ä edellä maini uja käy öjä jes elmiä (Ne Ma ke Sha e 2018). Mobiiliso ellus en alus a o a ja ku assa muu oksessa. Uusia lai ei a ilmes yy ja ku as i ja käy öjä jes elmä e sio päi i y ä uosi ain. Alus amuu oksiin eagoiminen sekä so elluskaupoissa menes yminen 17 edelly ä ä iheää julkaisusykliä. Uusien ominaisuuksien ja i heko jaus en ke e ä julkaisu aa i a kehi yske jul a nopeaa eagoin ia. Kehi ykseen on näin ollen luon e aa hyödyn ää ja ku aa in eg aa io a. Mobiiliso elluksia oidaan kehi ää na ii is i (eli alus akoh aises i) sekä alus a iippuma omas i (c oss-pla o m). Na ii iso elluksia kehi e ään alus an mukaisilla kehi ys yökaluilla, ajapinnoilla sekä ohjelmoin ikielillä. Alus a iippuma omas i mobiiliso elluksia oi kehi ää selainpohjaises i web- eknologioilla ai esime kiksi Reac Na i e ja Xama in - yökaluja hyödyn äen. (Jobe 2013, s. 27) Mobiilikehi yksessä suu immiksi haas eiksi on ha ai u muun muassa saman ohjelmis on ja käy ölii ymän kehi äminen usealle e i käy öjä jes elmälle ja lai eis olle. Tes aaminen on myös yksi mobiilikehi yksen haas eis a (Joo abchi, Mesbah & K uch en 2013, s. 23; Wasse mann 2013). Nämä haas ee kohda aan myös ja ku aa in eg aa io a implemen oidessa mobiilikehi ysp ojek issa. Na ii ikehi yksessä koodikan a on jokaiselle ue a alle alus alle e ilainen ja näin ollen jokaiselle alus alle ulee o eu aa oma ja ku a in eg aa io. Alus a iippuma omassa kehi yksessä sen sijaan koodikannas a suu in osa on yh eis ä kaikille alus oille. Mobiiliso ellus en es aamisen haas ei a o a sen monimu kaisuus ja lai eiden sekä niiden ohjelmis o e sioiden moninaisuus (Akou , Falah, Ahmad, Bou ia & Aleme ien 2016). Mobiilikehi yksen ja ku an in eg oimisen op imoiminen edelly ää näin ollen alus ojen ase amien lainalaisuuksien un emis a sekä ali ua kehi ys eknologiaa uke ia ja ajan asaisia yökaluja. 2.6 De Opsin osana De Ops:in pääidea on ohjelmis on oimi amiske jun ehos aminen. Kehi yspään (de elopmen ) p osessi, ja ku a in eg aa io, ei yksinään kykene ähän, aan a i aan si ä uke ia uo annollisia (ope a ions) p osesseja. (Vi mani 2015, s. 78) Vaikka De Ops- e mille ei ole a sinais a mää i elmää (Roche 2013, s. 40), käsi e ään e mi yleises i mene elmien ja yökalujen hyödyn ämisenä, jo ka edesau a a ja au oma isoi a ohjelmis on kehi yksen ja uo annon p osesseja (A lassian 2018a; Ebe e al. 2016; OCTO3 2017). Ja ku a in eg aa io on yksi De Ops- oiminnan mahdollis a a mene elmä. Ja ku a oimi aminen (CD eli Con inuous Deli e y) on De Ops-mene elmä, joka laajen aa ja ku aa in eg aa io a. Ja ku an oimi amisen a oi eena on mahdollis aa uuden ohjelmis o e sion julkaisemisen uo an oon suo a ii aises i he kenä minä hy änsä 18 (Lianping 2015; OCTO3 2017). Oleellisia CD-p osesseja o a mm. kon igu aa ionhallin a, hy äksymis es aus ja julkaisunhallin a ( elease managemen ) (Humble e al. 2010). Ja ku an in eg aa ion läpäise ä koon i e sio oidaan a i aessa lähe ää au oma isoi uihin ja ku an oimi amisen p osesseihin, jonka loppu uo eena on ohjelmis o, joka on almis julkais a aksi. De Ops-mene elmien ja yökalujen hyödyn äminen ohjelmis okehi yksessä edelly ä ä eknisiä ja y i yskul uu illisia muu oksia. De Ops-mene elmien, ku en ja ku an in eg aa ion, implemen oiminen edelly ää yökalujen hyödyn ämis ä ja näiden yökalujen käy ööno o oi aa ia muu oksia ohjelmis okehi yshankkeen läpi iemiseen p ojek inhallinnan asol a kehi äjän asolle saakka (Zhu, Bass & Champlin-Scha 2016). De Ops-mene elmien hyödyn ämisen eduiksi on ha ai u julkaisu iheyden ja es iau omaa io-osaamisen pa an uminen sekä sen hyödyn äminen laajemmassa mi akaa assa. O ganisaa io asolla De Ops-mene elmä oi a a jo a pa annus a kommunikaa ioon sekä sallia kokeile aa ohjelmis okehi yskul uu ia. Me ki ä immä haas ee De Ops-kul uu in hyödyn ämiseen o a kommunikaa io-ongelma kehi ys- ja uo an o iimin älillä sekä o ganisaa iokul uu imuu okse . (Riungu-Kalliosaa i 2016) 19 3 JATKUVAN INTEGRAATION TYÖKALUT Ja ku an in eg aa ion o eu amiseen hyödynne ään yleensä pää yökalua, ns. pal elin a, jonka eh ä ä on kuunnella e sionhallinnan koodikannassa apah u ia muu oksia ja aloi aa ha ai us a muu okses a koon i e sioin ip osessi komen osk ip in mukaises i sekä lopuksi oimi aa loki suo i uksen kulus a kehi äjille (Meye 2014, s. 15). Tähän pää yökaluun oidaan ky keä apu yökaluja, jo ka uke a ai laajen a a ja ku an in eg aa ion p osesseja sekä niiden suo i amis a. 3.1 Ja ku an in eg aa ion pää yökalu Ja ku aa in eg aa io a oi o eu aa myös omilla koon i e sioin isk ip eillä, ilman a sinais a kyseiseen a koi ukseen suunni el ua ohjelmis oa. Usea ja ku an in eg aa ion yökalu o a kui enkin ilmaisia a oimen lähdekoodin ohjelmis oja ja yökalu suo a ii ais a a ja ku an in eg aa ion implemen oin ia. (Du all e al. 2007 s. 8) Pienikus an einen ai jopa äysin ilmainen ohjelmis o a kaisu, joka odennäköises i uo lisäa oa ohjelmis op ojek iin, on hy in houku ele a konsep i. Täy yy kui enkin huoma a, e ä yökalus a iippuen a sinainen hankin akus annus oi olla hy in minimaalinen e a una yökalun ylläpi o- ja kon igu oin ikus annuksiin. Ja ku an in eg aa ion pää yökalun pe us oiminnallisuuksiin kuulu a e sionhallinnan kuun elu, koon i e sioin isk ip ien suo i us sekä suo i uksen ki jaaminen lokiin, koon i e sion leimaaminen ja ilmoi us en lähe ys. Työkalun ulee mahdollis aa ohjelmis okoodin kään äminen, iippu uuksien hallin a, es ien suo i aminen ja koon i e sion käy ööno o. Työkalu oi a jo a käy ölii ymän oiminnallisuuksien kon igu oin iin sekä apo ien esi ämiseen. Ja ku an in eg aa ion yökalujen hyödyn ämises ä on luon ais a sii yä au oma isoimaan myös ohjelmis on julkaisua, mihin hyödynne ä ä yökalu oi a jo a mahdollisuuden suo aan ai a jo a hy än ajapinnan koon i e sion käy ööno oon julkaisuke jussa. Ki jallisuudes a, kon e enssijulkaisuis a ja a ikkeleis a löy yy ku auksia sekä u kimuksia ja ku as a in eg aa ios a ja sen p osesseis a yleisellä asolla. Sen sijaan ain muu amia yökaluja on käsi el y ki jallisuudessa. Työkalujen u kimuksen suh een pääasiallisia läh ei ä o a e kkoa ikkeli ja as aa anlaise julkaisu . Työkalujen a joajien in e ne si us o , 20 uo eku aukse ja dokumen aa io ii ä ä pääosin ja ku an in eg aa ion implemen oimiseen. Implemen aa ion so el u uus sekä op imaalisuus käy öympä is öön a mis e aan kui enkin ain u kimalla ja es aamalla. Ja ku an in eg aa ion pää yökalujen suosios a löy yy ka a a a ioin i G2 C owd - e kkosi us ol a. Ohjelmis oalalla yösken ele ä ai alalla aiku a a henkilö oi a käydä a ioimassa si us olle käy ämiään ja ku an in eg aa ion yökaluja (G2C owd 2018). Näin ollen si us on ilas ois a saa melko ele an ia sekä ajan asais a ie oa sii ä, mi ä yökaluja käy e ään eollisuudessa, ja mi kä niiden ah uude sekä heikkoude o a . Viisi pa haaksi a ioi ua ja joh a an ma kkina-aseman omaa ia ja ku an in eg aa ion yökalua o a Ci cleCI, T a is, CodeShip, Jenkins ja TeamCi y (G2C owd, 2018). Näis ä yökaluis a Jenkins on ilmainen a oimen lähdekoodin ohjelmis o ja muu a joa a ilmaisen kokeilujakson aja uilla ominaisuuksilla. Ilmainen kokeilujakso on hyödyllinen e enkin, jos kokee epä a muu a yökalun läh ökoh aiselle so el u uudelle hyödynne ä ien kehi ys eknologioiden kanssa. Jos kehi ysp ojek eja on usei a ai kehi ysp ojek i on al a an laaja, saa a a samanaikaisuu een ja koon i e sioin ien lukumää iin ase e u aja ajoi a a yösken elyä. Työkalun oimi ajas a iippuen löy ynee kui enkin kaikkiin käy ö apauksiin sopi a ja skaalau u a a kaisu maksua as aan. Huomiona ois a on se, e ä maksullise yökalu a joa a a oimen lähdekoodin k i ee i äy ä ille ohjelmis okehi ysp ojek eille yleises i pienemmä kus annukse ai jopa ilmaisen pal elun. Ja ku an in eg aa ion yökalun alinnassa huomioi a ia asioi a o a yökalun a joama oiminnallisuude , so el u uus käy öympä is öön, luo e a uus, pi käikäisyys ja käy e ä yys (Du all e al. 2008, s. 248-255). Käy öympä is öön so el u uuden pe usedelly ys kaupallisissa ja ku an in eg aa ion yökaluissa on yh eensopi uus käy e ä än e sionhallin ajä jes elmän kanssa. Lisäksi on huomioi a a, haluaako käy ää a oimen- ai sulje un lähdekoodin yökalua ja aje aanko in eg oin i u iini ulkopuolisella ai omalla pal elimella. Työkalun käy ön oppimiskäy än jy kkyys ja dokumen aa ion sekä uen aso o a myös ä kei ä ka oi uksen koh ei a. (Sq een 2018) Ohjelmis o yökalun alinnassa oleellis a on myös ka oi aa, löy yykö e kos a ai ki jallisuudes a ma e iaalia as aa an käy ö apauksen o eu amiseen. 21 3.2 Ja ku an in eg aa ion apu yökalu Ja ku an in eg aa ion apu yökaluja o a yökalu , joi a oidaan ky keä pää yökalun yh ey een ja jo ka uke a ja ku an in eg aa ion p osesseja. Apu yökaluina oidaan hyödyn ää esime kiksi s aa isia lähdekoodianalysoin i yökaluja, jo ka käy ä koodikan aa läpi ja ilmoi a a yökalulle mää i el yjen koodauskäy än eiden ikkomises a. S aa inen lähdekoodianalyysi on k ii inen osa laadukas a es aus a (Wang, Meng, Han & Bai 2014, s. 1280). Sen mahdollis a a yökalu uke a manuaalis a koodika selmoin ia ja nopeu a a ja ku an in eg aa ion p osessia (Du all e al. 2007, s. 163). Sona Qube on yksi kaupallinen analyysi- ja laadunhallin a yökalu, joka so el uu osaksi De Ops-käy än ei ä ja se oidaan in eg oida CI- yökaluun (Sona Qube 2018). E i ohjelmoin ikielille saa a a lin - yökalu mahdollis a a s aa isen lähdekoodianalyysin (Gimpel 2014). Riippuen ohjelmis op ojek in yypis ä, ka a an es iau omaa ion suo i aminen oi aa ia lisäksi e illisien es auskehysympä is öjen ( amewo k) hyödyn ämis ä. Tes iau omaa io a uke ia apu yökaluja oidaan ja on suo a aa hyödyn ää ja ku an in eg aa ion yh eydessä, jo a kaikki paikallises i suo i e u es i oidaan suo i aa myös in eg aa ioympä is össä. Apu yökalujen hyödyn ämiselle a jo a a uki iippuu pää yökalus a. 3.3 Mobiilikehi ykseen so el u a yökalu G2G owdin (2018) iides ä pa haaksi a ioidus a ja joh a an ma kkina-aseman omaa is a ja ku an in eg aa ion yökaluis a na ii imobiilikehi ys ä (iOS ja And oid) uke a i allises i Ci cleCI ja T a is (Ci cleCI 2018; T a is 2018). Mui a mobiilikehi yksen ja ku aa in eg aa io a uke ia yökaluja o a muun muassa Bi ise, Gi Lab CI ja Ne e code (Bi ise 2018; Gi Lab CI 2018; Ne e code 2018). Lisäksi Bamboo- ja Jenkins- yökaluille on lisäosia, joilla saa u e aan uki mobiilikehi ykselle (A lassian 2018b; Jenkins 2018). Tuki alus a iippuma omille kehi ys eknologioille äy yy sel i ää yökalukoh aises i. Työkalujen ma kkinoinnis a ja dokumen aa ios a ei äl ämä ä saa yksikäsi eis ä ie oa, ue aanko alus a iippuma omia eknologioi a. Mobiilikehi ysp ojek issa oidaan hyödyn ää lukuisia e ilaisia apu yökaluja ja kehysympä is öjä. S aa inen lähdekoodianalyysi mobiilikehi yksen ja ku an in eg aa ion osana oi edelly ää apu yökalujen hyödyn ämis ä, jo ka a joa a uen käy e ä älle ohjelmoin ikielelle sekä in eg oi u a pää yökaluun. Esime kiksi na ii ikehi ysympä is ö And oid S udio ja iOS-käy öjä jes elmän Xcode sisäl ä ä yökalu s aa iseen lähdekoodianalyysiin (And oid S udio 2018; Apple 2018). Mobiilikehi yksessä 22 suosi uja es iau omaa io yökaluja o a muun muassa Appium, Esp esso ja Calabash (As egic 2018). 29 s o e_ es _ esul s- yö aiheessa mahdollis aa es i ulos en lukemisen suo aan Ci cleCI- käy ölii ymäs ä. Kon igu aa ion es aaminen on mahdollis a käy äen Ci cleCI-komen o i i yökalua. Komen o i i yökalun käy äminen edelly ää Docke -ohjelmis on asen amis a omaan kehi ysympä is öön. Komen o i i yökalu mahdollis aa YAML-kon igu oin i iedos on alidoinnin ja öiden suo i amisen paikallises i. Työkalun käy össä on kui enkin me ki ä iä ajoi ei a. Linux- i uaalikoneen sekä älimuis in käy ö ei ole eknises i mahdollis a. Lisäksi kon igu aa iossa ei oi käy ää ympä is ömuu ujia eikä yönkulkuja. Tu kimuksessa ha ai iin, e ä nämä ajoi ee hai asi a komen o i i yökalun hyödyn ämis ä huoma a as i. Komen o i i yökalun käy ö edelly i käy ännössä oisen kon igu aa io iedos on luomis a, jos a aje iin yksi äisiä öi ä kon igu aa ion es aamiseksi. Tämä mene elmä ode iin hankalaksi ja näin ollen kon igu aa ion suo i uksen es aus apah ui pääosin ekemällä muu os e sionhallin aan ja odo amalla suo i uksen loppu ulos a Ci cleCI:n pal elimel a. P ojek in lopullinen Ci cleCI-kon igu aa io (Lii e 1) koos ui kolmes a yös ä ja kahdes a yönkulus a. Alus a iippuma omalle Ja aSc ip -osan yö suo i e iin Docke -kon in Node.js-le yku assa. Node.js-p ojek in iippu uude asenne iin ya n- pake inhallin a yökalulla ja suo i usaikaa nopeu e iin kon igu oimalla Ci cleCI allen amaan iippu uude älimuis iin seu aa ia suo i uske oja a en. P ojek in es i suo i e iin Jes - yökalulla, jonka lisäksi hyödynne iin jes -juni -ki jas oa es i ulos en ki joi amiseen Ci cleCI:n ukemaan XML- o maa iin (Ex ensible Ma kup Language). Alus a iippuma oman osan iippu uude allenne iin yöhakemis oon, jo a And oid- p ojek in suo i uksissa samoja aihei a ei a innu ois aa. And oid-p ojek in yö suo i e iin Docke -kon issa And oid-le yku assa G adle- koon i e sioin i yökalulla. G adle- yökalun oimiminen edelly i ympä is ömuu ujan ase amis a kon igu aa ioon. And oid- yö aiheissa hae iin lähdekoodi e sionhallinnas a, o e iin käy öön Ja aSc ip -osan iippu uude sekä lada iin suo i e a an And oid-p ojek in iippu uude . Riippu uude allenne iin Ci cleCI:n älimuis iin. Yksikkö es ien ja analysoinnin suo i uksen sekä loppu ulos en allen amisen jälkeen, suo i e iin p ojek in uo an o e sion koon i e sioin i ja muodos u an .apk- iedos on (And oid Applica ion 30 Package) allennus. Tuo an okoon i e sion a men aminen (code-signing) onnis ui G adle- yökalua hyödyn ämällä. And oid-p ojek in kon igu oinnissa ha ai iin, e ei Ci cleCI 2.0- e sio ue simulaa o isuo i us a. Simulaa o ia aa i a es i äy yisi suo i aa esime kiksi Fi ebase Tes Lab -pal elussa. iOS-p ojek in yö suo i e iin Ci cleCI:n macOS-ympä is össä Xcodebuild- yökalulla. Mac- ympä is öön uli asen aa ensin Ja aSc ip -osan iippu uude . Koon i e sioin i, es aus ja analysoin i suo i e iin samassa yö aiheessa ja es i ulokse allenne iin iedos ona Ci cleCI:n pal elimelle. So elluksen uo an o e sion koon i e sioin i suo i e iin ilman a men amis a. Ci cleCI ukee ainoas aan Fas lane Ma ch- yökalua iOS-so ellus en lähdekoodin a men amiseen, jo en Fas lane- yökalujen hyödyn äminen on edelly ys oikealla lai eella suo i e a an ai so elluskauppaan lähe e ä än koon i e sion luomiselle. Ci cleCI ukee And oid-ympä is ös ä poike en es ien suo i amis a simulaa o issa MacOS- ympä is össä. Työnkuluissa mää i el iin kaksi e i öiden suo i us u iinia. Toinen yönkulku suo i e aan jokaises a päälinjan koodimuu okses a ja oinen ajas e us i ke an uo okaudessa. Työnkulkujen mää i ely ha ai iin u kimuksessa hy äksi ominaisuudeksi. Tu kimuksessa käy e yn p ojek in Reac Na i e -alus a iippuma oman Ja aSc ip -osan yö suo i e iin ensin, jonka jälkeen And oid- ja iOS- yö suo i e iin innakkain (ku a 1). Tä en oi iin hyödyn ää And oid-p ojek issa Ja aSc ip -osan iippu uuksia ilman uudelleenla auksia sekä ja ke iin suo i us a ain alus a iippuma oman osan u iinien onnis uessa. Suu emman kokoluokan p ojek eissa ominaisuuden a o ain kas aa. Työnkulkujen lisäksi Ci cleCI: ä oi ope oida ajapinnan kau a. Rajapinnan kau a oi muun muassa hakea ie oa suo i uksis a, suo i uksen aikana allenne uja iedos oja sekä käynnis ää suo i uksia. Ja ku an in eg aa ion kokonaissuo i usaika u kimuksen Reac Na i e -p ojek issa oli keskimää in noin kahdeksan minuu ia. Alus a iippuma oman osan öiden suo i aminen kes i keskimää in 25 sekun ia, And oid- öiden kaksi ja puoli minuu ia ja iOS- öiden ajaa kahdeksan minuu ia. iOS- öiden suo i usaikaan aiku i me ki ä äs i ali un simulaa o ilai een yyppi. 31 Ku a 1. P ojek in yönkulku -näkymä Ci cleCI- yökalun kon igu oiminen u kimuksen Reac Na i e -p ojek iympä is össä ode iin kokonaisuudessaan melko yksinke aiseksi, joskin aikaa ie äksi. Ci cleCI:n dokumen aa ios a ja i allisel a oo umil a löy yi lähes kaikki a i a a ie o ja ku an in eg aa ion implemen oimiseen u kimuksen p ojek iin. Ci cleCI:n e kkosi us on käy ölii ymän käy e ä yys ode iin u kimusjakson aikana hy äksi. Käy ölii ymäs ä oi sää ää yleisiä ja p ojek ikoh aisia ase uksia, lukea suo i e ujen öiden loki ie oja, lada a suo i uksen aikana allenne uja iedos oja sekä a kas ella ilas oja suo i uksis a (ku a 2). Ci cleCI lähe ää ole usase uksilla iedon ja ku an in eg aa ion onnis umises a suo aan e sionhallin aan. Tu kimuksen aikana huoma iin, e ei Ci cleCI ue käy ö apaus a, jossa ja ku an in eg aa ion u iini suo i e aan päälinjaan ja muihin haa oihin ain silloin, jos niis ä oli lähe e y pyyn ö pull eques - oiminnallisuudelle. Tu kimuksessa yökalu kon igu oi iin apo oimaan sähköpos in äli yksellä. 32 Ku a 2. P ojek in suo i us ilas o 5.3 Työkalun so el u uus pk-y i ykseen Työkalun so el u uu a a ioi iin peilaamalla empii isessä u kimuksessa saa u e un ja ku an in eg aa ion o eu us a ki jallisuuska saukses a ke ä yyn aineis oon. Tu kimuksessa ode iin Ci cleCI- yökalun mahdollis a an ja ku aan in eg aa ioon kuulu a p osessi u kimuksen mobiilikehi ysp ojek issa. Mobiilialus oille ki joi e un lähdekoodin kään äminen, es aaminen, analysoin i sekä käy ööno o ode iin mahdolliseksi es a a alla yökalulla. Tie okan ain eg aa ion osal a ei oida o aa kan aa ämän yön kon eks issa, sillä empii isen u kimuksen es ip ojek i ei aa inu e illis ä ie okan ain eg aa io a. Toisena so el u uuden a kas elun ii ekehyksenä käy e iin u kimuksessa ohjelmis o yökalun laa ua. Laadun a ioinnin ii ekehyksenä hyödynne iin ISO/IEC 25010-s anda dia. Työkalun oiminnallinen sopi uus mobiilikehi yksen ja ku aan in eg aa ioon ode iin u kimuksessa ii ä äksi muu amin ajoi ein. Näis ä me ki ä in on suo an uen puu uminen And oid-simulaa o in käy ölle. Työkalun ehokkuus oli u kimuksen Reac Na i e -kehysympä is öllä o eu e a an ohjelmis op ojek in kon eks issa kel ollinen. Töiden suo i usaja oli a , u kimuksen p ojek iympä is ö huomioon o aen, hy äksy ä iä. Yh eensopi uus muiden jä jes elmien kanssa oli koh uullinen. Ve sionhallin ain eg aa io ain Gi Hub- ja Bi bucke -jä jes elmien kanssa ajoi aa yh eensopi uu a. Toisaal a Ci cleCI- yökalun a oime kon i- ja i uaalikoneympä is ö mahdollis a a laajan yh eensopi uuden lukuis en muiden yökalujen kanssa. 33 Käy e ä yydessä ei ha ai u me ki ä iä puu ei a. Työkalun käy ölii ymä uki eh ä iä oimenpi ei ä ja yökalun kon igu oin i ode iin melko yksinke aiseksi dokumen aa ion ja muun uen a ulla. Käy ölii ymässä näy e ä ä i heilmoi ukse oli a selkei ä ja niiden a ulla esime kiksi kon igu oin i i hee oi iin paikallis aa sekä ko ja a. Työkalun luo e a uus ode iin hy äksi. Empii isen u kimuksen es ijakson aikana ei ö mä y yh eenkään yökalus a joh u aan i heeseen ai ongelmaan. Tu allisuuden näkökulmas a yökalua ei juu ikaan päässy yön empii isessä u kimuksessa a ioimaan. Tu kimuksessa kui enkin ha ai iin, e ä yökalun käy ööno o edelly i oikeuden an amis a kaikkiin e sionhallinnan p ojek eihin. Ja ku a in eg aa io suo i e iin Ci cleCI- yökalun pal elimilla, jo en u allisuus oli yökalun pal elinkon igu aa ion a moilla. Ylläpide ä yyden osal a yökalu on hy ällä asolla. Toimi an kon igu aa ion mää i el yään, yökalun käy ö ei edelly äny mui a ylläpi o oimenpi ei ä. Paikallis en komen o i i yökalujen käy ö ode iin ylläpi oa helpo a aksi ekijäksi, e enkin kon igu aa ion alidoinnissa. Työkalun sii e ä yyden näkökulmas a yökalua on hankala a ioida, sillä u kimuksessa yökalua käy e iin Ci cleCI:n pal elinympä is össä. Tuki yökalun käy öön omassa pal elinkon igu aa iossa on sii e ä yy ä edis ä ä ekijä. Usea ja ku an in eg aa ion yökalu käy ä ä kon igu oinnissa YAML- iedos oja, jo en Ci cleCI- kon igu aa ion pe usaja us a oi hyödyn ää pohjana oisiin ja ku an in eg aa ion yökaluihin, aikka syn akseissa onkin e oja. Kolman ena so el u uuden k i ee inä oli a OCTO3 Oy:n ase ama aa imukse . Työkalun uli mahdollis aa Reac Na i e -mobiilikehi ysp ojek in ja ku a in eg aa io. Empii isen u kimuksen koh eena oli Reac Na i e -p ojek i, jonka kon eks issa yökalu ode iin so el u aksi ja ku an in eg aa ion o eu amiseen. Työkalun ode iin myös uke an mui a De Ops-mene elmiä a joamalla suo an alus an ja ku an oimi amisen implemen oimiseen samalla kon igu aa io iedos olla. Empii isessä u kimuksessa implemen oi u ja ku an in eg aa ion ympä is ö on koh uullisen hy in ois e a issa myös oisiin mobiilip ojek eihin. Aikaisempia kon igu aa ioi a oidaan hyödyn ää läh ökoh ana muiden as aa anlaisien mobiilikehi ysp ojek ien ja ku an in eg aa ion implemen oinnissa. Yleisiä ha ai uja yökalun so el u uu a ajoi a ia ekijöi ä o a yökalun hinnoi elu, komen o i i yökalun aja aisuus, ue ujen e sionhallin ajä jes elmien ajallisuus, aadi u si ou uminen a menne ussa iOS-koon i e sioinnissa Fas lane Ma ch - yökaluun sekä 34 And oid-simulaa o i uen puu uminen. Mac-ympä is ön uen puu uminen o ganisaa ion omalla pal elimella aje aessa on myös me ki ä ä puu e mobiilikehi yskon eks issa. Ci cleCI on yökaluna melko uo e ja näin ollen yökalu kehi yy ja ku as i. Ja ku a muu okse ja mahdollinen epä akaus oidaan nähdä yökalun so el u uu a ajoi a ana ekijänä. 35 6 JOHTOPÄÄTÖKSET Tämä kappale on omis e u yön u kimuskysymykseen as aamiseen sekä o eu e un u kimuksen e lek oimiseen. Lisäksi kappaleessa ku a aan yön aiheeseen lii y ä ja ko u kimuskoh ee . 6.1 Pää elmä Ki jallisuuska saukseen sekä empii iseen u kimukseen pohjau uen ja ku an in eg aa ion op imoimiseen ei ole oiko ie ä. Jokaisen ohjelmis okehi ysp ojek in ollessa hieman e ilainen, ei ja ku aan in eg aa ioon ole yleis ä sapluunaa, jo a nouda amalla pääsisi pa haaseen loppu ulokseen. Pääosa ja ku an in eg aa ion yökaluis a so el u a hy in a koi ukseensa ja ne ei ä aadi al a ia ylläpi opanos uksia. Ja ku an in eg aa ion op imoiminen on kui enkin me ki ä äs i kiinni si ä suo i a as a ahos a, ohjelmis okehi äjis ä. Op imoin i oi edelly ää uusien oimin a apojen omaksumis a sekä asennoi umis a ja ku an in eg aa ioon yönkulkua edis ä ällä a alla. Toimin a a ois a me ki ä in on es auksen kehi äminen, sillä ja ku a in eg aa io hyö yy me ki ä äs i laadukkaas a ja au oma isoidus a es aus u iinis a. Laadukas ja lyhy kes oinen es i u iini paljas aa suu emmalla odennäköisyydellä ohjelmis on ongelmakohda ja i hee mahdollisimman aikaisessa aiheessa sekä op imoi ja ku an in eg aa ion yönkulkua. Ja ku an in eg aa ion op imoinnissa isossa oolissa on myös kehi äjien osaaminen. Aikaisemma kokemukse ja ku an in eg aa ion implemen oinnis a ähen ä ä implemen oin iin kulu aa aikaa sekä mahdollis a a oikeiden yökalujen alinnan ja yönkulun kehi ämisen. Aikaisemmin oimi aksi ode u implemen aa io on hy ä läh ökoh a ja ku an in eg aa ion hyödyn ämiselle uudessa as aa anlaisessa p ojek issa. Työhön ali u pk-y i ys -kon eks i ei sinällään uo me ki ä ää muu os a näkemykseen ja ku an in eg aa ion op imoinnis a. Ja ku an in eg aa ioon implemen oimiseen sekä ylläpi oon kulu a esu ssi y i yksen alku aipaleella oi a olla me ki ä ä , mu a pi källä aika älillä ja ku an in eg aa ion uo ama lisäa o ka aa a mas i siihen kulu a esu ssi . Ohjelmis on kehi yksen suju uuden sekä sen laadun al onnan pa an uminen o a pääasioi a, joi a ja ku a in eg aa io oi a jo a. Lisäksi ja ku a in eg aa io oimii ohjelmis okehi äjälle hy änä ponnis usalus ana oman amma i aidon kehi ämiselle, sillä ja ku an in eg aa ion op imoin i edelly ää laadukkaiden au omaa i es ien ki joi amis a. 36 Täy yy ie enkin huomioida, e ei kaikissa pk-y i yksen pienemmissä kehi ysp ojek eissa äl ämä ä ole sijaa mi a alle ja ku an in eg aa ion implemen oimiselle. Mobiiliohjelmis okehi ys uo ja ku an in eg aa ion implemen oimiseen haas ei a lai eiden monimuo oisuudella sekä es auksen hankaluudella ja näin ollen ja ku an in eg aa ion yönkulun op imoin i oi olla haas a ampaa. Työn u kimuksessa ha ai iin, e ei kaikki suosi uimma ja ku an in eg aa ion yökalu äl ämä ä a joa ukea mobiilikehi ykselle. Na ii i- ja alus a iippuma oman mobiiliohjelmis okehi yksen e o oi a myös aiheu aa haas ei a ja ku an in eg aa ion implemen oimiseen. Työn empii isessä u kimuksessa ha ai iin, e ä e enkin mobiilikehi yskon eks issa ja ku an in eg aa ion op imaalisuus iippuu paljon käy e ä is ä yökaluis a. Tu kimuksen pohjal a oidaan ode a, e ä ja ku an in eg aa ion op imoin i mobiilikehi yskon eks issa edelly ää suu emmissa mää in oikeiden yökalujen alin aa ja niiden un emis a. Työn lisä u kimuskysymyksinä oli sel i ää, so el uuko ali u yökalu mobiilikehi yksen a peisiin ja ukeeko ali u yökalu mui a De Ops-käy än ei ä. Työn empii isessä u kimuksessa implemen oi iin ja ku a in eg aa io Reac Na i e -kehysympä is öllä kehi e yyn ohjelmis op ojek iin Ci cleCI- yökalulla. Tu kimuksessa hyödynne y p ojek i sisälsi alus a iippuma on a- ja And oid- ja iOS-na ii ikoodia. Lähdekoodin koon i e sioin i suo i e iin And oid- ja iOS-alus oille na ii i yökaluilla. Työn empii isessä u kimuksessa ode iin Ci cleCI- yökalun so el u an na ii i- ja Reac Na i e -kehysympä is öllä o eu e a aan mobiilikehi ykseen. Empii isessä u kimuksessa ode iin myös yökalun almius ja ku an oimi amisen oimenpi eiden suo a ii aiseen implemen oin iin ja a joa an ehokkaan sekä luo e a an alus an ohjelmis okehi yske jun ehos amiseen. 6.2 Re lek io Työn u kimus e eni suunni elman mukaises i aika aulu us a lukuun o ama a. Työn u kimuskysymyksiin pys y iin as aamaan, aikkei mobiilikehi yksen ja ku as a in eg aa ios a me ki ä äs i aikaisempaa u kimus ie oa löy yny kään. Ja ku a in eg aa io on yleisenä oimin amallina kui enkin melko yksiseli einen ja yleis e ä issä ohjelmis okehi ysp ojek i yyppien ajojen yli. Kaikki ohjelmis op ojek i sisäl ä ä lähdekoodia, joka ulisi saa aa suo i e a aan muo oon ja sen laa u ulisi a mis aa. Näin ollen mobiilikehi ys yön ii ekehyksenä ei aiku anu u kimukseen ko inkaan me ki ä äs i. 37 Työn empii iseen osuu een, ja ku an in eg aa ion yökalun so el u uuden koes amiseen, kului odo e ua enemmän aikaa. Empii iselle u kimukselle olisi oinu a a a enemmän aikaa ja u kimuksen suunni elma olisi oinu olla a kempi. Empii isessä u kimuksessa saa u e iin kui enkin ase e u u kimus a oi ee . Työkalun so el u uu a olisi oinu a ioida a kemmin, jos empii iseen u kimukseen olisi hyödynne y p ojek ia, jossa olisi ollu laajempi es ika aus. Työkalun so el u uus laajempaan au oma isoi uun in eg aa io- ja sys eemi es aukseen jäi yön u kimuksessa sel i ämä ä. Työkalun uo annollinen käy ö laajemmassa ohjelmis okehi ysp ojek issa ei myöskään ollu yön olosuh eissa mahdollis a. Tuo annollisessa käy össä yökalus a olisi oinu ke ä ä enemmän da aa ja empii is ä u kimus a olisi oinu lähes yä enemmän yön pää u kimuskysymyksen kau a. 6.3 Ja ko u kimus Työn pää u kimuskysymykseen as a iin pääosin ki jallisuuska sauksen kau a. Mobiilikehi yksen ja ku an in eg aa ion op imoin ia oisi u kia laajemmin odellis en uo annollis en ohjelmis op ojek ien kau a. Useamman mobiilikehi ysp ojek in e ailu niissä hyödynne ä ien ja ku an in eg aa ion implemen aa ioiden osal a a joaisi laajemman ku an sii ä, millaise oimin amalli ja yökalu o a op imaalisimpia mobiilikehi ysp ojek eihin. Työn empii is ä u kimus a oisi laajen aa e ailemalla useampaa ja ku an in eg aa ion yökalua. Ma kkinoilla on usei a yökaluja, jo ka ma kkinoi a a joa ansa uen mobiilikehi ykselle. Olisi hy ä sel i ää, onko yökaluissa me ki ä iä e oja. Ja ko u kimuskoh eena oisi olla myös mobiilikehi yksen ja ku a oimi aminen, jo a yössä si u iin. 38 LÄHTEET Agile Alliance 2018. 12 P inciples Behind he Agile Mani es o [ e kkodokumen i]. [Vii a u 24.3.2018]. Saa a illa h ps://www.agilealliance.o g/agile101/12-p inciples- behind- he-agile-mani es o/ Aho, A. V., Lam, S. M., Se hi, R. & Ullman J. D. 2006. Compile s: P inciples, Techiniques and Tools, 2nd edi ion, Addison Wesley, Bos on. Akou , M., Falah, B. Ahmad, A. Bou ia , S. & Aleme ien, K. 2016. Mobile So wa e Tes ing: Though s, S a egies, Challenges and Expe imen al S udy. In e na ional Jou nal o Ad anced Compu e Science and Applica ions, ol. 7, no. 6, s.12-19 All Abou Ci cui s 2018. Wha a e In eg a ed De elopmen En i onmen s? [ e kkodokumen i]. [Vii a u 21.05.2018]. Saa a illa h ps://www.allabou ci cui s.com/ echnical-a icles/wha -a e-in eg a ed-de elopmen - en i onmen s/ And oid 2018. De elope s: And oid S udio [ e kkodokumen i]. [Vii a u 21.05.2018]. Saa a illa h ps://de elope .and oid.com/s udio/ Apple 2018. De elope Technical No e: Building om Command Line wi h Xcode FAQ [ e kkodokumen i]. [Vii a u 21.05.2018] Saa a illa h ps://de elope .apple.com/lib a y/a chi e/ echno es/ n2339/_index.h ml As egic 2018. 6 Mobile Tes Au oma ion Tools You Should Know Abou [ e kkodokumen i]. [Vii a u 21.05.2018]. Saa a illa h ps://www.as egic.com/6-mobile- es -au oma ion- ools-know/ A lassian 2018a. De Ops: B eaking he De elopmen -Ope a ions ba ie [ e kkodokumen i]. [Vii a u 27.3.2018]. Saa a illa h ps://a lassian.com/de ops (ja kuu) Lii e 1. (ja koa) and oid: wo king_di ec o y: ~/ eac na i eci/and oid docke : - image: ci cleci/and oid:api-27-node8-alpha en i onmen : # G adle equi es TERM en i onmen a iable in Ci cleCI TERM: dumb s eps: - checkou : pa h: ~/ eac na i eci - a ach_wo kspace: a : ~/ eac na i eci - es o e_cache: key: ja s-{{ checksum "build.g adle" }}-{{ checksum "app/build.g adle" }} - un: name: Ins all dependencies command: ./g adlew and oidDependencies - sa e_cache: pa hs: - ~/.g adle key: ja s-{{ checksum "build.g adle" }}-{{ checksum "app/build.g adle" }} - un: name: Build, es and inspec command: ./g adlew lin es - s o e_ es _ esul s: pa h: app/build/ es - esul s - un: name: Build elease command: ./g adlew clean assembleRelease --no-daemon - s o e_a i ac s: pa h: app/build/ epo s des ina ion: epo s/ - s o e_a i ac s: pa h: app/build/ou pu s/ des ina ion: ou pu s/ (ja kuu) Lii e 1. (ja koa) ios: macos: xcode: "9.4.0" wo king_di ec o y: ~/ eac na i eci s eps: - checkou - es o e_cache: key: ya n- 1-{{ checksum "ya n.lock" }}-{{ a ch }} - es o e_cache: key: node- 1-{{ checksum "package.json" }}-{{ a ch }} - un: name: Ins all dependencies command: ya n ins all - sa e_cache: key: ya n- 1-{{ checksum "ya n.lock" }}-{{ a ch }} pa hs: - ~/.cache/ya n - sa e_cache: key: node- 1-{{ checksum "package.json" }}-{{ a ch }} pa hs: - node_modules - un: name: Build, es and inspec command: xcodebuild -sdk iphonesimula o -des ina ion 'pla o m=iOS Simula o ,OS=11.2,name=iPhone X' -scheme " eac na i eci" clean build es analyze | xcp e y --colo - juni -o es - esul s/ esul s.xml wo king_di ec o y: ios - un: name: Build elease command: xcodebuild -scheme " eac na i eci" -sdk iphoneos -con igu a ion elease CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO | xcp e y wo king_di ec o y: ios - s o e_ es _ esul s: pa h: ios/ es - esul s - s o e_a i ac s: pa h: ios/ es - esul s des ina ion: ios- es - esul s (ja kuu) Lii e 1. (ja koa) wo k lows: e sion: 2 commi -node-and oid-ios: jobs: - node: il e s: b anches: only: mas e - and oid: il e s: b anches: only: mas e equi es: - node - ios: il e s: b anches: only: mas e equi es: - node nigh ly-node-and oid-ios: igge s: - schedule: c on: "0 0 * * *" # UTC midnigh il e s: b anches: only: - mas e jobs: - node: il e s: b anches: only: mas e - and oid: il e s: b anches: only: mas e equi es: - node - ios: il e s: b anches: only: mas e equi es: - node