Ketterä ohjelmistokehitys

Ketterä ohjelmistokehitys () on joukko ohjelmistotuotantoprojekteissa käytettäviä menetelmistöjä, joille on yhteistä toimivan ohjelmiston ensisijaisuus, suora viestintä ja nopea muutoksiin reagointi. Ketteriä menetelmiä on useita, mm. Extreme Programming (XP), Scrum, DSDM, Crystal Methods, Agile modeling, Adaptive software development, Pragmatic Programming, Feature driven development ja Gilb-EVO.

Ketterien menetelmien yhteiset piirteet 

Useimmat ketterät menetelmät pyrkivät minimoimaan riskejä jakamalla ohjelmistokehityksen lyhyisiin iteraatioihin, jotka kestävät tyypillisesti yhdestä neljään viikkoa. Kukin iteraatio on kuin pieni ohjelmistoprojekti ja sisältää kaikki uusien toimintojen julkaisemiseen tarvittavat tehtävät: projektisuunnittelun, vaatimusanalyysin, ohjelmistosuunnittelun, koodauksen, testauksen ja dokumentoinnin. Vaikka iteraatio ei välttämättä lisää niin paljon toiminnallisuutta, että tuotteen julkaisu olisi järkevää, ketterä ohjelmistokehitysprojekti pyrkii periaatteessa julkaisukelpoiseen ohjelmistoon jokaisen iteraation lopussa. Iteraation lopussa projekti arvioi uudelleen projektin prioriteetit ja päättää seuraavan iteraation sisällöstä.

Ketterät menetelmät pitävät suoraa viestintää (mieluiten kasvokkain) tärkeämpänä kuin kirjoitettuja dokumentteja. Useimmat ketterät tiimit työskentelevät samassa työtilassa, ja tiimiin kuuluvat kaikki, joita tarvitaan ohjelmiston saamiseen valmiiksi. Tämä tarkoittaa vähintään ohjelmoijia ja heidän ”asiakkaitaan”. (Asiakkaat määrittelevät tuotteen ja voivat olla tuotepäälliköitä, liiketoiminta-analyytikkoja tai varsinaisia käyttäjiä.) Tiimiin voi kuulua myös testaajia, käyttöliittymäsuunnittelijoita, teknisiä kirjoittajia ja päälliköitä.

Ketterät menetelmät korostavat toimivan ohjelmiston olevan ensisijainen edistyksen mittari eikä dokumentaatiolla ole samaa itseisarvoa kuin useissa perinteisemmissä malleissa. Tästä seuraa yleinen harhaluulo, että ketterä kehitys olisi kuritonta ohjelmointia tai että suunnittelua ei tehtäisi lainkaan. Suunnittelua tehdään päinvastoin jatkuvasti, koko projektin ajan. Suunnitelmia vain ollaan halukkaampia muuttamaan kuin perinteisissä malleissa.

Agile Manifesto ja Agile Alliance 

Vuonna 2001 17 merkittävää ketterän kehityksen (jota silloin kutsuttiin ”kevyiksi menetelmiksi”) puolestapuhujaa kokoontui Snowbirdin hiihtokeskukseen Utahissa keskustelemaan menetelmiensä yhteisestä perustasta. Tarkoitus oli luoda yhteistä pohjaa ketterille menetelmille ja edistää näin ketterän ajattelun leviämistä. Tuon kokoontumisen tuloksena he julkaisivat julistuksen nimeltä Agile Manifesto (’Ketterä manifesti’), jota pidetään ketterän kehityksen perusmääritelmänä. Manifestissa määritellään ketterille menetelmille neljä tyypillistä arvoa, sekä 12 periaatetta, joita menetelmät noudattavat.

Manifestin sisältö on seuraava:

Me etsimme parempia keinoja ohjelmistojen kehittämiseen tekemällä sitä itse ja auttamalla siinä muita.
Tässä työssämme olemme päätyneet arvostamaan
Yksilöitä ja vuorovaikutusta enemmän kuin prosesseja ja työkaluja
Toimivaa sovellusta enemmän kuin kokonaisvaltaista dokumentaatiota
Asiakasyhteistyötä enemmän kuin sopimusneuvotteluita
Muutokseen reagoimista enemmän kuin suunnitelman noudattamista 
Vaikka oikeallakin puolella on arvoa, me arvostamme vasemmalla olevia asioita enemmän.

Ketterien menetelmien käyttöä Suomessa edistää Agile Finland ry, ja maailmanlaajuisesti Agile Alliance -niminen voittoa tavoittelematon järjestö.

Ketterän ohjelmistokehityksen periaatteet 
Agile Manifesto perustuu 12 periaatteeseen:

 Asiakastyytyväisyys varhaisella ja jatkuvalla arvokkaan ohjelmiston toimituksilla.
 Hyväksy muuttuvat ohjelmistovaatimukset, jopa myöhäisessä kehitysvaiheessa.
 Toimita toimiva ohjelmisto usein(viikoittain kuukausien sijasta).
 Tiivis päivittäinen yhteistyö liiketoimihenkilöiden ja ohjelmistokehittäjien välillä.
 Projektit rakennetaan motivoituneiden ja luotettavien työntekijöiden varaan.
 Kasvotusten keskustelu on viestinnän paras muoto.
 Toimiva ohjelmisto on edistyksen päämittari.
 Kestävä kehitys, ylläpidetään tasaista tahtia.
 Kiinnitetään jatkuvaa huomiota hyvään suunnitteluun ja tekniseen täydellisyyteen.
 Yksinkertaisuus—taito minimoida tehtävän työn määrä—on olennaista.
 Parhaat ohjelmistoarkkitehtuurit, -vaatimukset ja -suunnitelmat syntyvät itseorganisoituvista ryhmistä.
 Tiimi pohtii säännöllisesti, miten tulla tehokkaammaksi ja tekee tarvittavat muutokset tehokkuuden parantamiseksi.

Kritiikki 
Ketteriä menetelmiä on kutsuttu tehottomiksi isoissa organisaatioissa ja tietyn tyyppisessä ohjelmistokehityksessä. Monien organisaatioiden mielestä ketterät menetelmät ovat liiallisia ja valitsevat sen sijaan hybridin lähestymistavan ohjelmistokehitykseen, joka yhdistää ketteriä ja perinteisempiä menetelmiä. 

Toinen kritiikki on se, että ketterät ja perinteiset menetelmät ovat täysin toistensa vastakohtia. Ketterän menetelmän käyttöönotto voi olla liian aikaa vievää, eivätkä mahdolliset hyödyt voita menetettyä aikaa. Siirtyminen ketterään ohjelmistokehitykseen vaatii täydellistä sitoutumista kaikilta organisaation jäseniltä. Työntekijöiden kykenemättömyys suuriin muutoksiin tai epävarmuus uusien menetelmien toimimisista ovat esimerkkejä ongelmista, joita organisaatio voi kohdata.

Katso myös
Ohjelmistotuotanto
Refaktorointi

Lähteet

Kirjallisuutta

Aiheesta muualla 

 Agile Alliancen kotisivut. 
 Agile Finland ry:n kotisivut. 

Ohjelmistotuotanto
Seulonnan keskeiset artikkelit