Ekstremno programiranje vs SCRUM | XP vs SCRUM
V teh letih se je v industriji programske opreme uporabljalo več različnih metodologij za razvoj programske opreme, na primer Waterfall development method, V-Model, RUP in nekaj drugih linearnih, iterativnih in kombiniranih linearno-iterativnih metod. Agile model (ali pravilneje skupina metodologij) je novejši model razvoja programske opreme, ki ga je Agile manifest uvedel za odpravo pomanjkljivosti v teh tradicionalnih metodologijah razvoja programske opreme.
Agilne metode temeljijo na ponavljajočem se razvoju in kot glavni nadzorni mehanizem uporabljajo povratne informacije uporabnikov. Agile lahko imenujemo človeško usmerjen pristop kot tradicionalne metode. Agile model že zelo zgodaj prinese delujočo različico izdelka, tako da sistem razdeli na zelo majhne in obvladljive poddele, tako da lahko stranka že zgodaj uresniči nekatere prednosti. Čas preskusnega cikla Agile je razmeroma kratek v primerjavi s tradicionalnimi metodami, ker testiranje poteka vzporedno z razvojem. Zaradi vseh teh prednosti so agilne metode trenutno prednost pred tradicionalnimi metodologijami. Scrum in Extreme programiranje sta dve najbolj priljubljeni različici Agile metod.
Kaj je SCRUM?
Kot smo že omenili, je SCRUM postopni in ponavljajoči se postopek upravljanja projektov, ki spada v družino agilnih metod. SCRUM temelji na dajanju velike prednosti sodelovanju kupcev v zgodnjem razvojnem ciklu. Priporoča, da kupec čim prej vključi testiranje. Testiranje se opravi na vsaki točki, ko je na voljo stabilna različica. Temelj SCRUM-a temelji na začetku testiranja od začetka projekta in nadaljevanju do konca projekta.
Ključna vrednost SCRUM-a je "kakovost je odgovornost ekipe", ki poudarja, da je za kakovost programske opreme odgovorna celotna ekipa (ne samo ekipa za testiranje). Drug pomemben vidik SCRUM-a je razčlenitev programske opreme na manjše obvladljive dele in njihovo dostavo strankam zelo hitro. Dostava delujočega izdelka je izrednega pomena. Nato skupina še naprej izboljšuje programsko opremo in nenehno izvaja na vsakem večjem koraku. To dosežemo z zelo kratkimi cikli sproščanja (imenovanimi sprinti) in pridobivanjem povratnih informacij za izboljšanje na koncu vsakega cikla.
SCRUM opredeljuje več ključnih vlog za nemoteno delovanje razvojne skupine. So lastnik izdelka (ki zastopa kupca in vzdržuje zaostanek izdelkov), poveljnik Scruma (ki deluje kot organizator in koordinator ekipe z vodenjem scrum srečanj, vzdrževanjem zaostankov v sprintu in izgorevanjem lestvic) in drugi člani ekipe. Ekipa je lahko sestavljena iz tradicionalnih vlog, večinoma pa gre za samoupravne ekipe. Glavni artefakti Scrum so zaostanki / zaostanki izdelkov (seznam želja), zaostanki Sprint / zaostanki napak (naloge v vsaki ponovitvi), grafikoni zapisovanja (preostalo delo glede na datum). Glavne slovesnosti SCRUM-a so srečanje z zaostanki izdelkov, srečanje Sprint in srečanje Retrospect.
Kaj je ekstremno programiranje?
Ekstremno programiranje (skrajšano XP) je metodologija razvoja programske opreme, ki spada v model Agile. Ekstremno programiranje izvaja faze v zelo majhnih neprekinjenih korakih (v primerjavi s tradicionalnimi metodami). Prvi prehod, ki traja le dan ali teden, je namerno nepopoln. Da bi zagotovili konkretne cilje za razvoj programske opreme, so na začetku napisani avtomatizirani testi. Nato razvijalci naredijo kodiranje. Poudarek je na programiranju v paru. Ko so vsi testi opravljeni, se šteje, da je kodiranje končano. Naslednja faza je načrtovanje in arhitektura, ki se ukvarja z refaktoringom kode s strani istih programerjev. Na koncu te faze se nepopoln (vendar funkcionalen) izdelek predstavi zainteresiranim stranem. Takoj za tem se začne naslednja faza (ki se osredotoča na naslednji sklop najpomembnejših lastnosti).
Kakšna je razlika med ekstremnim programiranjem in SCRUM-om?
Extreme Programming in SCRUM sta razumljivo zelo podobni in usklajeni metodologiji. Vendar pa obstajajo subtilne, a pomembne razlike med tema dvema metodama. Sprinti SCRUM trajajo 2-4 tedne, medtem ko so tipične ponovitve XP krajše (zadnje 1-2 tedna). Skupine SCRUM običajno ne dovolijo sprememb v sprintih, toda ekipe XP so malo bolj prilagodljive na spremembe v ponovitvah. Na primer, po načrtovanju sprinta nabor elementov tega sprinta ostane nespremenjen, vendar lahko funkcijo, ki še ni začela delovati, kadar koli zamenjate z neko drugo funkcijo v XP. Druga razlika med XP in SCRUM je ta, da je naročnik funkcij, razvitih v XP, strogo prednostno razporejen s strani kupca, medtem ko skupina SCRUM odloča o vrstnem redu izdelkov (potem, ko lastnik izdelka SCRUM prednostno določi zaostanek izdelkov).
Za razliko od XP SCRUM ne določa nobene inženirske prakse. Na primer, XP poganjajo prakse, kot so testni razvoj (TDD), programiranje parov, refaktoring itd. Vendar nekateri verjamejo, da bi lahko določanje nabora praks za samoorganizirajoče se ekipe negativno vplivalo in to lahko štejemo za pomanjkljivost XP. Druga pomanjkljivost Extreme programiranja je, da se neizkušene ekipe nagibajo k preoblikovanju brez avtomatiziranih testov ali TDD (ali preprosto vdiranja). Zato nekateri menijo, da je SCRUM boljši za strmenje (saj prinaša velike izboljšave zgolj z osredotočenimi časovnimi ponovitvami), XP pa je primeren za nekoliko zrele ekipe, ki so odkrile vrednost zgoraj omenjenih praks (namesto da bi jih uporabljale, ker so jih prosili narediti tako).