Ääriohjelmointi vs. SCRUM | XP vs. SCRUM
Ohjelmistoteollisuudessa on vuosien mittaan käytetty useita erilaisia ohjelmistokehitysmenetelmiä, kuten vesiputouskehitysmenetelmä, V-malli, RUP ja muutama muu lineaarinen, iteratiivinen ja yhdistetty lineaarisesti iteratiivinen menetelmä. Ketterä malli (tai oikeammin metodologiaryhmä) on uudempi ohjelmistokehitysmalli, jonka Agile-manifesti esitteli käsittelemään perinteisissä ohjelmistokehitysmenetelmissä havaittuja puutteita..
Ketterät menetelmät perustuvat iteratiiviseen kehittämiseen ja käyttäjien käyttämien palautteiden avulla pääohjausmekanismina. Ketterää voidaan kutsua ihmiskeskeiseksi lähestymistapana kuin perinteiset menetelmät. Ketterä malli toimittaa toimivan version tuotteesta hyvin aikaisin hajottamalla järjestelmän erittäin pieniksi ja hallittaviksi alaosiksi, jotta asiakas voi ymmärtää joitain etuja jo varhaisessa vaiheessa. Agile-testisykliaika on suhteellisen lyhyt verrattuna perinteisiin menetelmiin, koska testaus tapahtuu kehityksen rinnalla. Kaikkien näiden etujen takia ketterät menetelmät ovat tällä hetkellä parempia kuin perinteiset menetelmät. Scrum ja Extreme-ohjelmointi ovat kaksi ketterien menetelmien suosituimpia muunnelmia.
Mikä on SCRUM?
Kuten edellä mainittiin, SCRUM on inkrementaalinen ja toistuva projektinhallintaprosessi, joka kuuluu ketterien menetelmien perheeseen. SCRUM perustuu siihen, että asetetaan etusijalle asiakkaiden osallistuminen kehitysvaiheen varhaisessa vaiheessa. Se suosittelee sisällyttämään asiakkaan testauksen aikaisin ja usein niin pian kuin mahdollista. Testaus tehdään jokaisessa kohdassa, kun vakaa versio tulee saataville. SCRUMin perusta perustuu testauksen aloittamiseen projektin alusta alkaen ja jatkumiseen koko projektin loppuun.
SCRUM-arvon keskeinen arvo on ”laatu on joukkueen vastuu”, joka korostaa, että ohjelmiston laatu on koko joukkueen (ei vain testausryhmän) vastuulla. Yksi toinen tärkeä näkökohta SCRUMissa on ohjelmiston jakaminen pienempiin hallittaviin osiin ja toimittaminen asiakkaille erittäin nopeasti. Toimivan tuotteen toimittaminen on äärimmäisen tärkeää. Sitten tiimi jatkaa ohjelmiston parantamista ja toimittaa jatkuvasti jokaisessa suuressa vaiheessa. Tämä saavutetaan saamalla erittäin lyhyet vapautussyklit (nimeltään sprintit) ja saamalla palautetta parannuksesta kunkin jakson lopussa.
SCRUM määrittelee useita avainrooleja kehitysryhmän sujuvalle toiminnalle. He ovat tuotteen omistaja (joka edustaa asiakasta ja ylläpitää tuotemäärää), Scrum-päällikkö (joka toimii ryhmän järjestäjänä ja koordinaattorina järjestämällä scrum-kokouksia, ylläpitämällä sprintin määrää ja polttamalla kaavioita) ja muut ryhmän jäsenet. Joukkue voi koostua perinteisistä rooleista, mutta useimmiten ne ovat itsejohtavia joukkueita. Scrumin tärkeimmät esineet ovat Tuote- / vapautumistoiminnot (toivelista), Sprint-jälkijäämät / vialliset jäämät (tehtävät jokaisessa iteraatiossa), Polta kaaviot (jäljellä oleva työ vs. päivämäärä). Tärkeimmät SCRUM-seremoniat ovat Tuotemäärät, Sprint ja Retrospect.
Mikä on Extreme-ohjelmointi?
Ääriohjelmointi (lyhennettynä XP) on ohjelmistokehitysmenetelmä, joka kuuluu ketterään malliin. Ääriohjelmointi suorittaa vaiheet hyvin pieninä jatkuvina vaiheina (verrattuna perinteisiin menetelmiin). Ensimmäinen kulku, joka vie vain päivän tai viikon, on tarkoituksella epätäydellinen. Automaattiset testit kirjoitetaan alussa, jotta voidaan asettaa konkreettisia tavoitteita ohjelmiston kehittämiselle. Sitten kehittäjät tekevät koodauksen. Painopiste on ohjelmoinnin tekeminen pareina. Kun kaikki testit ovat läpäisseet, koodausta pidetään täydellisenä. Seuraava vaihe on suunnittelu ja arkkitehtuuri, joka käsittelee koodin uudelleenkehittämistä samalla ohjelmoijajoukolla. Tämän vaiheen lopussa epätäydellinen (mutta toimiva) tuote esitellään sidosryhmille. Heti tämän jälkeen seuraava vaihe (joka keskittyy seuraavaan tärkeimpien ominaisuuksien joukkoon) alkaa.
Mitä eroa Extreme-ohjelmoinnilla ja SCRUM-ohjelmilla on??
Ääriohjelmointi ja SCRUM ovat ymmärrettävästi hyvin samankaltaisia ja yhdenmukaistettuja menetelmiä. Näiden kahden menetelmän välillä on kuitenkin hienoisia, mutta tärkeitä eroja. SCRUM-sprintit kestävät 2–4 viikkoa, kun taas tyypilliset XP-iteraatiot ovat lyhyempiä (viimeiset 1–2 viikkoa). Yleensä SCRUM-joukkueet eivät salli muutoksia sprintteihin, mutta XP-joukkueet ovat hiukan joustavampia iteraatioiden sisällä tapahtuvien muutosten vuoksi. Esimerkiksi sprintisuunnittelun jälkeen kyseisen sprintin esinejoukot pysyvät ennallaan, mutta ominaisuus, jolla ei ole aloitettu työskentelyä, voidaan milloin tahansa vaihtaa jonkin muun XP: n ominaisuuden kanssa. Toinen ero XP: n ja SCRUM: n välillä on se, että XP: ssä kehitettyjen ominaisuuksien järjestys on tiukasti priorisoitu asiakkaan toimesta, kun taas SCRUM-tiimi päättää tuotteiden järjestyksen (sen jälkeen kun SCRUM: n tuotteen omistaja on priorisoinut tuotekannan).
Toisin kuin XP, SCRUM ei sisällä mitään suunnittelukäytäntöjä. Esimerkiksi XP: tä ohjaavat käytännöt, kuten testiohjattu kehitys (TDD), pariohjelmointi, reaktorointi jne. Jotkut kuitenkin uskovat, että itseorganisoivien ryhmien käytännön määrittämisellä voi olla kielteisiä vaikutuksia, ja tätä voidaan pitää XP: n puute. Toinen Extreme-ohjelmoinnin puute on, että kokemattomat joukkueet voivat yleensä reagoida ilman automaattisia testejä tai TDD: tä (tai yksinkertaisesti hakkerointia). Siksi jotkut ehdottavat, että SCRUM on parempi tuijottamaan (koska se tuo suuria parannuksia yksinkertaisesti kohdistettujen aikataulutettujen iteraatioiden avulla) ja XP sopii hieman kypsille joukkueille, jotka ovat löytäneet yllä mainittujen käytäntöjen arvon (sen sijaan, että käyttäisivät niitä, koska heiltä on pyydetty tehdä niin).