Ekstremno programiranje proti SCRUM | XP proti SCRUM
V teh letih se je v industriji programske opreme uporabljalo več različnih metodologij za razvoj programske opreme, na primer metoda razvoja slapov, 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 uvedel manifest Agile za odpravo pomanjkljivosti, ki jih odkrijejo te tradicionalne metodologije razvoja programske opreme.
Agile metode temeljijo na iterativnem razvoju in uporabljajo povratne informacije uporabnikov kot glavni nadzorni mehanizem. Agile lahko imenujemo pristop, osredotočen na ljudi kot tradicionalne metode. Agile model prinese delujočo različico izdelka zelo zgodaj, tako da sistem razdeli na zelo majhne in obvladljive dele, tako da lahko kupec že pred časom spozna nekatere prednosti. Čas cikla testiranja Agile je v primerjavi s tradicionalnimi metodami razmeroma kratek, saj testiranje poteka vzporedno z razvojem. Zaradi vseh teh prednosti so Agile metode prednostne pred tradicionalnimi metodologijami. Programi Scrum in Extreme sta dve najbolj priljubljeni različici Agile metod.
Kaj je SCRUM?
Kot že omenjeno, je SCRUM postopni in iterativni postopek upravljanja projektov, ki spada v družino Agile metod. SCRUM temelji na tem, da že zgodaj v razvojnem ciklu dajemo prednost udeležbi kupcev. Priporočamo, da uporabnik testiranje vključi čim prej in pogosto. Testiranje se opravi na vsaki točki, ko bo na voljo stabilna različica. Temelj SCRUM 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 le testna skupina). Drug pomemben vidik SCRUM-a je razčlenitev programske opreme na manjše obvladljive dele in njihovo hitro dostavo kupcu. Dostava delujočega izdelka je izrednega pomena. Nato ekipa nadaljuje z izboljševanjem programske opreme in nenehnim zagotavljanjem na vsakem večjem koraku. To dosežemo z zelo kratkimi cikli sprostitve (imenovani šprinti) in dobimo povratne informacije za izboljšanje na koncu vsakega cikla.
SCRUM definira več ključnih vlog za nemoteno delovanje razvojne ekipe. To so lastnik izdelka (ki zastopa kupca in vzdržuje zaostanek izdelka), mojster Scruma (ki deluje kot organizator in koordinator ekipe z izvajanjem scrum sestankov, ohranjanje sprint zaostankov in sežig lestvic) in drugi člani ekipe. Moštvo je lahko sestavljeno iz tradicionalnih vlog, večinoma pa so to samoupravne ekipe. Glavni umetniški elementi Scruma so zaostanki izdelka / zapuščanje (seznam želja), zaostanki sprint / zaostanki napak (naloge v vsaki ponovitvi), zaporedni grafikoni (preostali del glede na datum). Glavne slovesnosti SCRUM so zaostanki izdelkov, srečanje s šprintom in srečanje Retrospect.
Kaj je ekstremno programiranje?
Extreme Programming (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. Za zagotovitev konkretnih ciljev za razvoj programske opreme so na začetku napisani avtomatizirani testi. Nato razvijalci opravijo kodiranje. Poudarek je na programiranju kot para. Ko so vsi preskusi opravljeni, se kodiranje šteje za dokončano. Naslednja faza je oblikovanje in arhitektura, ki se ukvarja z refaktoringom kode s strani istega niza programerjev. Na koncu te faze je nepopoln (vendar funkcionalen) izdelek predstavljen deležnikom. 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?
Ekstremno programiranje in SCRUM sta razumljivo zelo podobni in usklajeni metodologiji. Vendar obstajajo subtilne, vendar pomembne razlike med tema dvema metodama. SCRUM šprinti trajajo 2-4 tedne, medtem ko so običajne iteracije XP krajše (zadnji 1-2 tedni). Običajno ekipe SCRUM ne dovoljujejo sprememb v šprintih, toda ekipe XP so nekoliko bolj prilagodljive na spremembe znotraj iteracij. Na primer, po načrtovanju šprinta nabor elementov tega šprinta ostane nespremenjen, toda funkcijo, ki se še ni začela ukvarjati, je mogoče kadar koli zamenjati z neko drugo funkcijo v XP. Druga razlika med XP in SCRUM je v tem, da je vrstni red funkcij, razvitih v XP, stranka strogo določena po vrstnem redu, medtem ko ekipa SCRUM odloči vrstni red izdelkov (potem ko zaostanek izdelka prednostno določi lastnik izdelka SCRUM).
Za razliko od XP, SCRUM ne določa nobenih inženirskih praks. Na primer, XP poganjajo prakse, kot so testno usmerjeni razvoj (TDD), programiranje parov, refaktoring itd. Vendar pa nekateri menijo, da bi pooblastilo za skupino praks za samoorganizirajoče se ekipe lahko negativno vplivalo, in to lahko upoštevamo pomanjkljivost XP. Druga pomanjkljivost programiranja Extreme je ta, da se neizkušene ekipe lahko nagibajo k refaktorju brez avtomatiziranih testov ali TDD-ja (ali preprosto vdorov). Zato nekateri menijo, da je SCRUM boljši za gledanje (saj prinaša velike izboljšave preprosto s fokusiranimi časovnimi faktorji) in XP je primeren za nekoliko zrele ekipe, ki so odkrile vrednost zgoraj omenjenih praks (namesto da bi jih uporabljali, ker so jih vprašali narediti tako).