skip to Main Content

Avoimen lähdekoodin komponentin valintaan kannattaa käyttää hetki aikaa

Ohjelmistokehityksessä käytetään nykyään valtavasti avoimen lähdekoodin komponentteja. Komponenttien käyttäminen on monelle tuttua, mutta niin ovat myös erilaiset komponenttien mukanaan tuomat ongelmatkin. Tuttu komponentti on helppo valita käyttöön, mutta kaikki mahdolliset käytettävät komponentit eivät usein ole ennalta tuttuja.

Tässä blogipostauksessa yritän nostaa esiin asioita, joiden avulla valinnan tekeminen olisi helpompaa.

Mitä komponenttia valitessa kannattaa huomioida?

Valinnassa kannattaa kiinnittää huomiota ainakin komponenttiin liittyviin osa-alueisiin, joiden avulla tarkastellaan komponentin sopivuutta, terveyttä, sekä laatua. Osa-alueista ensimmäinen on komponentin päivityshistoria, jonka avulla voidaan ennustaa tulevien päivitysten tahtia. Päivityshistoriasta kannattaa katsoa myös yhteensopivuuden säilyvyyttä, sillä tulevat yhteensopivuuden katkeamiset tuottavat työtä jatkossa komponentin päivittämisen kanssa.

Päivityksiin liittyen toinen erityisen tärkeä seikka on komponenttiin tehtävien omien muutosten tarve. Jos näiltä muutoksilta vältytään, on komponentin päivittäminen helppoa. Mikäli muutoksia komponenttiin pitää tehdä, tulee päivittäessä olla tarkkana, jolloin versionhallinnan järkevästä käytöstä on apua.

Seuraava tärkeä osa-alue on komponentin kehitykseen liittyvä yhteisö ja sen käyttämät kanavat. Näistä erityisen tärkeän tekee se, että yleensä juuri ne ovat ensimmäinen tai ainoa paikka, josta apua komponentin käyttöön löytyy. Komponentista saattaa myös löytyä dokumentaatio tai käyttöopas, joihin kannattaa tutustua ja ainakin laajuus on syytä selvittää. Hyvä dokumentaatio helpottaa huomattavasti komponentin käyttöönottoa.

Viimeisenä kannattaa kiinnittää huomiota komponentin suosioon. Mitä suositumpi komponentti on, sitä todennäköisempänä voi pitää, että se on laadukkaampi ja käyttäjät tykkäävät sen käytöstä. Suosiota miettiessä voi sekä kysellä työkavereilta, että etsiä tietoa netistä.

Valintaprosessi

Tein diplomityön otsikolla ”Avoimen lähdekoodin komponentin käyttö integraatiossa valtakunnalliseen terveydenhuoltojärjestelmään” ja työssä paneuduin etenkin avoimen lähdekoodin komponenttien käyttämiseen. Kehitin työssä myös prosessin, jonka avulla komponentin valinta tehdään järjestelmällisesti ehdokkaita vertaamalla. Prosessin avulla valinnassa painotetaan kyseiselle komponentille tärkeimpiä ominaisuuksia, mutta käydään läpi myös kokonaisuutta. Valintaprosessi perustuu iteraatioon, jolloin osissa suoritettavaa valintaa on helpompi hahmottaa.

Ennen valintaprosessin aloittamista, on koottava lista komponenteista, joista valinta tehdään ja jotka siis täyttävät komponentille asetetut toiminnalliset vaatimukset. Varsinainen valinta suoritetaan vertailemalla avoimen lähdekoodin komponentteihin liittyviä ominaisuuksia. Mikäli haluaa, on ominaisuuksien lisäksi mahdollista ottaa mukaan myös joitain komponentin mitattavia ominaisuuksia, kuten suorituskyky.

Kriteerit

Prosessissa valinta perustuu aluksi määriteltäviin kriteereihin, joista ensimmäinen on aina lisenssi. Loput kriteerit voi määritellä mielensä mukaan. Esimerkiksi kriteereinä voi käyttää seuraavia:

  1. Lisenssit
  2. Päivitykset ja yhteensopivuuden ylläpito
  3. Yhteisö ja kanavat
  4. Dokumentaatio
  5. Suosio, laatu ja tyyli

Ensimmäinen kriteereistä on aina lisenssi ja se eroaa lopuista olemalla ehdoton. Tämä tarkoittaa sitä, että mikäli komponentin lisenssi ei kelpaa, on komponentti hylättävä kokonaan. Lisenssiin ei voi jatkossakaan vaikuttaa ja kelpaamaton lisenssi estää komponentin käytön kokonaan. Esimerkiksi huono dokumentaatio taas hidastaa komponentin käyttöönottoa, muttei tee siitä mahdotonta.

Loppujen kriteerien avulla valinnassa hyödynnetään iteraatiota. Muille kriteereille määritellään kierros kerrallaan ehdot, jotka ratkaisevat kelpaako komponentti jatkotarkasteluun vai varalle. Komponentin jatkaessa jatkotarkasteluun, siirrytään seuraavaan kriteeriin.  Muuten taas komponentti merkataan kyseisen kriteerin kohdalle varalle. Seuraavaan komponenttiin siirrytään, kun edellinen on käynyt kierroksen läpi tai siirtynyt varalle. Kun komponentti on käynyt koko kierroksen läpi, otetaan seuraava komponentti tarkasteluun.

Valintaprosessin kulku

Kierroksen jälkeen prosessia jatketaan iteroiden riippuen, kuinka moni ehdokas on läpäissyt kierroksen. Jos ehdokkaita on jäljellä vain yksi, valitaan se. Mikäli taas ehdokkaita on enemmän kuin yksi, siirrytään seuraavalle kierrokselle tiukentaen ensin ehtoja. Tilanteessa, jossa yksikään ehdokas ei ole päässyt loppuun asti, aletaan käymään kierroksen aikana varalle päätyneitä komponentteja läpi.

Varalla olevat vaihtoehdot käydään läpi aloittaen viimeisen kriteerin kohdalla varalle päätyneistä ja jatkaen siitä käänteisessä järjestyksessä. Jos kriteerin kohdalta ei ole varalla komponentteja siirrytään seuraavaan ehtoon ja jos varalta löytyy vain yksi, voidaan se valita. Mikäli taas komponentteja on useampia, niin jatketaan niille kierrosta kyseisen kriteerin kohdalta, ehtoa ensin löysentäen.

Vinkkejä tehostamaan prosessia

Mikäli ajattelit kokeilla valintaprosessia käytännössä, niin tässä vielä muutama vinkki, joilla voi helpottaa ja tehostaa prosessin hyödyntämistä.

Ensimmäisen kierroksen ehdot kannattaa määritellä melko löysiksi, jotta mahdollisimman moni komponentti pääsisi niistä läpi ja koko kierros tulisi käytyä jokaisen komponentin kanssa läpi ainakin kertaalleen. Näin jokaista kriteeriä käydään läpi jonkin verran ja kaikista komponenteista muodostuu ainakin hieman yleiskuvaa, jonka perusteella iteraatiota on helppo jatkaa.

Koska prosessi hyödyntää iteraatiota, ei ehtojen maltillinen kiristäminen haittaa. Prosessissa päädytään silloin hyvään, mutta harkitumpaan lopputulokseen, joskin hieman hitaammin. Kierrosten läpikäyminen myös nopeutuu prosessin edetessä.

Ehtoja miettiessä kannattaa keskittyä tärkeimpiin kriteereihin ja huomioida ne jokaisella kierroksella. Valinnan kannalta vähemmän tärkeät kriteerit taas voi hyvin jättää käymättä läpi osalta kierroksista.

Kannattaa tehdä muistiinpanot prosessista, joista selviää käytetyt ehdot ja komponenttien pärjääminen niissä. Näin on mahdollista myöhemmin palata johonkin kohtaan prosessia, jos vaikka huomaa kiristäneensä jonkin kriteerin ehtoa liikaa. Hyvistä muistiinpanoista on myös helppo tarkastaa valinnan järkevyys myöhemmin, mikäli jokin alkaa askarruttamaan.


Ilkka Hannula
Software designer