1. Agile
Alku lyhennetty Sami Kososen gradusta / Vesa Lappalainen.
Ketterissä menetelmissä (Agile methods) pyritään
järkevään suhteeseen dokumentoinnissa, suunnittelussa ja koodaamisessa niin,
että pääpaino on asiakkaan tyytyväisyydellä ja toimivalla ohjelmalla.
Katso: Agile manifesto
1.1 Arvot
- Yksilöt ja vuorovaikutukset vs. prosessit ja työkalut
- Toimiva ohjelmisto vs. kattava dokumentaatio
- Yhteistyö asiakkaan kanssa vs. sopimusneuvottelut
- Muutoksiin vastaaminen vs. suunnitelman noudattaminen
1.2 Periaatteet
- Tärkeintä on täyttää asiakkaan vaatimukset julkaisemalla jatkuvasti ja aikaisin
uusia hyödyllisiä versioita ohjelmistosta.
- Hyväksytään ja otetaan vastaan muuttuvat vaatimukset, jopa kehityksen loppuvaiheessa.
Ketterät menetelmät valjastavat muutoksen asiakkaan kilpailueduksi.
- Luovutetaan toimivia versioita kehitettävästä ohjelmistosta säännöllisesti,
mielellään lyhyin väliajoin muutamasta viikosta muutamaan kuukauteen.
- Liiketoiminnan ammattilaisten ja kehittäjien täytyy työskennellä
päivittäin yhdessä koko projektin ajan.
- Rakennetaan projektit motivoituneiden yksilöiden ympärille ja annetaan heille
ympäristö ja tuki jota he tarvitsevat, sekä luotetaan, että he saavat työn tehtyä.
- Kaikkein tehokkain tapa välittää tietoa kehitystiimille ja kehitystiimissä, on
kasvokkain tapahtuva keskustelu.
- Toimiva ohjelmisto on ensisijainen edistymisen mitta.
- Ketterät menetelmät suosivat kestävää kehitystä. Rahoittajien, kehittäjien ja
käyttäjien tulisi kyetä pitämään jatkuvasti yllä tasainen työtahti.
- Jatkuva huomion kiinnittäminen tekniseen laatuun, sekä hyvään rakenteeseen
ja suunnitteluun, lisää ketteryyttä.
- Yksinkertaisuus - taito maksimoida työn määrä, jota ei tarvitse tehdä - on
olennaista.
- Parhaat arkkitehtuurit, vaatimukset ja suunnitelmat nousevat itseorganisoituvista
tiimeistä.
- Tasaisin väliajoin tiimi miettii miten voisi tulla entistä tuottavammaksi, ja sitten
säätää ja muokkaa toimintaansa sen mukaisesti.
2. Agile menetelmiä
Seuraavana muutamia Agile-menetelmiä.
2.1 Extreme Programming, XP
Eräs, ehkä tunnetuin, ketterä menetelmä. Keskittyy erityisesti ohjelmointityöhön.
Soveltamisessa oltava tarkkoja ettei tule pelkästään: "Meillä tehdään XP:llä, meillä
ei dokumentoida".
Katso esim:
2.1.1 Arvot
- Kommunikointi:
- XP:n työtavat vaativat kunnollista kommunikaatiota ihmisten
välillä. Suurin osa kommunikaatiosta tulisi olla suoraan kasvokkain tapahtuvaa
keskustelua. Tämä pyritään mahdollistamaan perinteisten sermeillä jaettujen
työtilojen sijaan avoimella työtilalla.
- Yksinkertaisuus:
- XP painottaa yksinkertaisen rakenteen tärkeyttä. Beckin mukaan
ohjelmistojen, joita voidaan pitää yksinkertaisina, tulee noudattaa seuraavia
kriteerejä: ohjelmakoodi ajaa kaikki testit, kommunikoi ohjelmoijalle kaiken
tarvittavan, kopioitua koodia ei ole, ja se sisältää ainoastaan tarvittavan
minimimäärän luokkia ja metodeja.
- Palaute:
- Kehittäjien ja asiakkaiden tulisi saada palautetta järjestelmän tilasta niin
usein kuin mahdollista. Palautetta kerätään usein ja heti tehdyn työn jälkeen.
Sitä kerätään toimittajalta, asiakkaalta sekä itse rakennettavalta ohjelmistolta.
- Rohkeus:
- Tämä arvo perustuu tosiasialle, että kehittäjien tulee kyetä näkemään,
että kehitysprosessi on ajautunut väärään suuntaan ja korjaukset ovat
välttämättömiä. Ongelmien korjaaminen saattaa tarkoittaa monen päivän töiden
heittämistä hukkaan ja koodin uudelleenkirjoittamista, vaikka se olisikin aiemmin
läpäissyt testit.
2.1.2 Käytännöt
Yhteiset käytännöt |
Iteraatiot
Yhteinen sanasto (metafora)
Avoin työtila
Aiemmista kokemuksista oppiminen |
Ohjelmoijien käytännöt |
Testilähtöinen ohjelmointi (testaus)
Pariohjelmointi
Uudelleenrakentaminen
Yhteisomistajuus
Jatkuva integrointi
Et tule tarvitsemaan sitä (yksinkertainen rakenne)
|
Hallinnon käytännöt |
Hyväksytty vastuu
Taustatuki
Neljännesvuosikatsaus
Peili
Tasainen työtahti (40-tuntinen työviikko)
|
Asiakkaan käytännöt |
Tarinoiden kerronta
Julkaisujen suunnittelu (suunnittelupeli)
Hyväksyntätestaus
Lyhyin väliajoin tuotettavat julkaisut (pienet julkaisut)
|
2.2 Scrum
Lähtökohtana on hallita ohjelmistotuotantoprosessia ja
hallita/tukea muuttuvaa ympäristöä/ vaatimuksia.
2.3 RUP - The Rational Unified Process
( Kruchten 1996,
Kruchten 2000).Oliopohjaisten järjestelmien iterativiinen
ohjelmistotuotantomenetelmä. Ei alunperin ketterä menetelmä mutta
soveltuvin osin käytettynä voi ketteriäkin piirteitä löytää.
2.4 OSS - Open Source Software development
( O’Reilly 1999).Yhteneväisyyksiä agile - menetelmien kanssa
2.5 Mobile-D /VTT
3. Agile -linkkejä