Ohjelmistojen toimivuus, ohjelmistosuunnittelun luovuus ja joustavuus, sekä nopea muutoksiin reagointi ovat tämän päivän avainsanoja ohjelmistokehityksessä. Vanhoista yksityiskohtaisesti dokumentoiduista ohjelmistoista ollaan pikkuhiljaa siirtymässä pois. Niiden jäykkyyden vuoksi on kehitelty uudenlaisia ohjelmistokehityksen menetelmiä. Yksi yleistyvistä toimintatavoista on nimeltään ketterä ohjelmistokehitys.

Ketterä ohjelmistokehitys

Ketterällä ohjelmistokehityksellä pyritään riskien minimoimiseen. Tämä tapahtuu siten että jaetaan ohjelmistokehitysprosessi pienempiin vaiheisiin, eli iteraatioihin. Kukin iteraatio on kuin pieni itsenäinen ohjelmistokehitysprosessinsa. Sen vaiheet ovat tyypillisesti projektisuunnittelu, vaatimusanalyysi, ohjelmistosuunnittelu, koodaus, testaus sekä dokumentointi. Jokaisen itsenäisen iteraation jälkeen ohjelmiston tulisi ketterässä ohjelmistosuunnittelussa olla julkaisuvalmis. Käytännössä kuitenkin muutokset ja tulokset voivat olla niin pieniä, ettei varsinainen julkaisu ole järkevää. Kunkin iteraation jälkeen tullaan tilanteeseen, jossa päätetään jatkotoimista (eli seuraavan vaiheen sisällöstä), jotta kokonaistavoite saavutetaan.

Ketterän ohjelmistokehityksen ero perinteiseen ohjelmistokehitykseen on vaiheittain toimimisen lisäksi suoran viestinnän merkitys. Eli kaikkia vaiheita ei välttämättä dokumentoida niin tarkoin kuin perinteisessä ohjelmistokehityksessä, vaan kommunikointi kasvokkain prosessin aikana on huomattavasti kirjallista tuotosta tärkeämpää. Myös suunnitelmista poikkeaminen, luovuus ja joustavuus ovat tärkeämpiä kuin kirjoitetut säännöt ja tarkat suunnitelmat. Kussakin vaiheessa tärkein tavoite on siis toimiva ohjelmisto, ei niinkään vaihe vaiheelta dokumentoidut menetelmät.

Työskentely ketterän ohjelmistokehityksen parissa tapahtuu tiimeissä, jossa yleensä samassa työtilassa on useampia asiantuntijoita. Näitä ovat käyttöliittymäsuunnittelijat, tekniset kirjoittajat sekä testaajat. Asiakkaan puolelta tiimissä on joko itse asiakas, tai hänen edustajanaan esimerkiksi tuotepäällikkö tai liiketoiminta-analyytikko. Tiimi työskentelee yhdessä ja paikalla ovat samanaikaisesti kaikki tarvittavat asiantuntijat. Kommunikointi työn edistymisestä on avointa, ja muutokset sekä suunnitelmasta poikkeamiset joustavasti ovat mahdollisia.

Erilaisia toimintatapoja

Koska kyseessä on ketterä ohjelmistokehitys, ovat monet variaatiot sen käytännön toteutuksessa mahdollisia. Menetelmiä on kehitelty tarpeiden mukaan, lähtökohtinaan ketterän kehityksen periaatteet. Esimerkiksi seuraavia hyväksi havaittuja ketterän kehityksen menetelmiä on jo laajalti käytössä:

-Extreme Programmin, eli XP. Menetelmän on kehittänyt kolmikko Beck, Cunningham ja Jeffries. Kyseessä on pariohjelmointi, jossa on tarkoitus yhdistää molempien kehittäjien kokemukset jotta tuottavuus ja laatu optimoituvat. Tärkeitä näkökohtia XP:ssä ovat testivetoiseen kehitykseen, jatkuvaan integraatioon, refaktorointiin, koodauskonventioihin, koodien yhteisomistajuuteen sekä KISS -periaatteeseen (yksinkertaisuuteen) pyrkiminen.

-Scrum on ohjelmistoprojektien hallintaa varten kehitetty menetelmä. Menetelmä perustuu kehittämisen vaiheistukseen, eli prosessi tapahtuu 1 – 4 viikon mittaisina sprintteinä. Lopputuloksena on aina ikäänkuin valmis tuote. Tätä sprinttien tuloksena syntynyttä tuotetta kehitetään jälleen seuraavassa vaiheessa ja panoksia lisätään koko ajan. Näin projektin lopputuloksesta tulee mahdollisimman toimiva ja täydellinen. Työskentely tapahtuu tiimeissä.

Ketterä manifesti

Suomessa ketterän ohjelmistokehityksen tunnettuutta ja alan osaamista pyrkii edistämään Agile Finland ry. Varsinaisia jäseniä yhdistyksellä on reilu 500. Se saavuttaa kuitenkin sosiaalisen median kautta tuhansia alan asiantuntijoita ja ammattilaisia. Agile Finland noudattaa toiminnassaan vuonna 2001 laadittuja ketterän ohjelmistokehityksen perusperiaatteita eli Agile Manifestia.

Agile Manifestin mukaan ketterässä ohjelmistokehityksessä, josta aluksi käytettiin nimitystä kevyet menetelmät, pyritään noudattamaan seuraavia periaatteita:

– ketterässä kehityksessä tavoitteena on etsiä ohjelmistojen tekemiseen parempia keinoja. Keinoja ovat itse tekeminen ja muiden auttaminen

– arvostetaan enemmän yksilöitä ja vuorovaikutusta kuin työkaluja ja prosesseja

– arvostetaan enemmän toimivaa sovellusta kuin dokumentaatiota kokonaisvaltaisesti

– arvostetaan enemmän hyvää asiakasyhteistyötä kuin sopimusneuvotteluita

– arvostetaan enemmän muutokseen reagoimista kuin suunnitelman tarkkaa noudattamista.

Maailmalla ketterän ohjelmistokehityksen asiaa ajaa Agile Alliance, joka järjestää aiheesta vuosittain useita konferensseja. Niissä tutkitaan ja koulutetaan alan ihmisiä. Esimerkiksi nyt tulevalle vuodelle 2019 on tiedossa ainakin kolme kansainvälistä suurtapahtumaa:

– Agile 2019 Technical Conference, 29. huhtikuuta – 1. toukokuuta, Nashvillessä, Tennesseessä, Yhdysvalloissa

– XP 2019, 21. toukokuuta – 25. toukokuuta, Montrealissa, Kanadassa

-Agile 2019, 5. elokuuta. – 9. elokuuta Washingtonissa, Yhdysvalloissa.