**Ketterä ohjelmistokehitys** (engl. *agile software development*) 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ö.

Katso myös
----------

* Ohjelmistotuotanto
* Refaktorointi

Kirjallisuutta
--------------

* Abrahamsson, P. Salo, O. Ronkainen, J. & Warsta, J.: Agile software development methods. Review and analysis.  *VTT Publications*, 2002, nro 478, s. 9–17.  (englanniksi)
* Abrahamsson, P. Warsta, J. Siponen M. T. & Ronkainen, J.: New directions on agile methods: A comparative analysis.  *Proceedings of the 25th International Conference on Software Engineering Portland, Oregon, May 3–10*, 2003, s. 244–254. Washington, DC:  IEEE Computer Society.   (englanniksi)
* Cohen D. Lindvall M. & Costa P.: An Introduction to Agile Methods.  *Advances in Computers*, 2004, nro 62, s. 1–66.  (englanniksi)
* Shore, James: *The Art of Agile Development*. Sebastopol: O'Reilly, 2007. (englanniksi)

Lähteet
-------

1. 1 2  Manifesto for Agile Software Development *agilemanifesto.org*. Viitattu 26.2.2018.

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **Ketterä ohjelmistokehitys**.
* Agile Alliancen kotisivut. (englanniksi)
* Agile Finland ry:n kotisivut. (englanniksi)