Ekstremno programiranje vs SCRUM | XP u odnosu na SCRUM
Tijekom godina postojalo je više različitih metodologija razvoja softvera, poput razvojne metode vodopada, V-modela, RUP-a i nekoliko drugih linearnih, iterativnih i kombiniranih linearno-iterativnih metoda. Agile model (ili ispravnije, skupina metodologija) je noviji model razvoja softvera koji je uveo manifest Agile kako bi se otklonili nedostaci koji se nalaze u tim tradicionalnim metodologijama razvoja softvera..
Agilne metode temelje se na iterativnom razvoju i koriste povratne informacije od strane korisnika kao glavni kontrolni mehanizam. Agilnost se može nazvati pristupom usredotočenim na ljude nego tradicionalnim metodama. Agile model donosi ranu verziju proizvoda vrlo rano razbijanjem sustava na vrlo male i upravljive dijelove, tako da kupac već od početka može ostvariti neke od prednosti. Vrijeme ciklusa ispitivanja Agile-a relativno je kratko u usporedbi s tradicionalnim metodama, jer se testiranje provodi paralelno s razvojem. Zbog svih ovih prednosti, agilne metode preferiraju se od tradicionalnih metodologija u ovom trenutku. Scrum i Extreme programiranje su dvije najpopularnije varijacije Agile metoda.
Što je SCRUM?
Kao što je već spomenuto, SCRUM je inkrementalni i iterativni proces upravljanja projektima, koji pripada obitelji Agile metoda. SCRUM se temelji na davanju visokog prioriteta sudjelovanju kupca u ranom ciklusu razvoja. Preporučuje uvrštavanje testiranja od strane kupca rano i često što je više moguće. Testiranje se vrši u svakoj točki kada stabilna verzija postane dostupna. Osnova SCRUM-a temelji se na započinjanju testiranja od početka projekta i nastavljanju tijekom kraja projekta.
Ključna vrijednost SCRUM-a je "kvaliteta je odgovornost tima", koja naglašava da je za kvalitetu softvera odgovornost cijelog tima (a ne samo tima za testiranje). Drugi važan aspekt SCRUM-a je raščlanjivanje softvera na manje upravljive dijelove i njihovo isporučivanje kupcu vrlo brzo. Isporuka ispravnog proizvoda od najveće je važnosti. Zatim tim nastavlja poboljšavati softver i neprekidno se isporučivati na svakom većem koraku. To se postiže vrlo kratkim ciklusima otpuštanja (zvanim sprinteri) i dobivanjem povratnih informacija za poboljšanje na kraju svakog ciklusa.
SCRUM definira nekoliko ključnih uloga za nesmetan rad razvojnog tima. Oni su vlasnik proizvoda (koji zastupa kupca i održava zaostatke proizvoda), majstor Scruma (koji djeluje kao organizator i koordinator tima provodeći sastanke scruma, održavajući zaostale sprintove i spaljivanje ljestvica) i drugi članovi tima. Tim se može sastojati od tradicionalnih uloga, ali uglavnom su to samoupravni timovi. Glavni artefakti Scruma su zaostaci za proizvod / zaostatak za proizvodom (lista želja), zaostaci za sprint / zaostaci (zadaci u svakoj iteraciji), snimanje prema dolje (rad preostali prema datumu). Glavne ceremonije SCRUM-a su sastanak zaostalih proizvoda, sastanak sprint i sastanak retrospect.
Što je ekstremno programiranje?
Ekstremno programiranje (skraćeno XP) je metodologija razvoja softvera koja pripada modelu Agile. Ekstremno programiranje provodi faze u vrlo malim kontinuiranim koracima (u usporedbi s tradicionalnim metodama). Prvi prolaz, koji traje samo dan ili tjedan, namjerno je nepotpun. Da bi se osigurali konkretni ciljevi za razvoj softvera, u startu se pišu automatizirani testovi. Tada programeri rade kodiranje. Fokus je na programiranju kao para. Nakon svih testova kodiranje se smatra dovršenim. Sljedeća je faza dizajn i arhitektura koja se bavi refaktoringom koda od strane istog niza programera. Na kraju ove faze predstavljen je nepotpun (ali funkcionalan) proizvod dionicima. Odmah nakon toga započinje sljedeća faza (koja je usredotočena na sljedeći skup najvažnijih značajki).
Koja je razlika između ekstremnog programiranja i SCRUM-a?
Ekstremno programiranje i SCRUM razumljivo su vrlo slične i usklađene metodologije. Međutim, postoje suptilne, ali važne razlike između ove dvije metode. SCRUM sprinti traju 2-4 tjedna, dok su tipične XP iteracije kraće (zadnja 1-2 tjedna). Obično SCRUM timovi ne dopuštaju promjene sprinta, ali XP timovi su malo fleksibilniji za promjene unutar iteracija. Na primjer, nakon planiranja sprinta, skup stavki tog sprinta ostaje nepromijenjen, ali značajka koja nije započela s radom može se u bilo kojem trenutku zamijeniti nekom drugom značajkom u XP-u. Još jedna razlika između XP-a i SCRUM-a je u tome što je redoslijed značajki razvijenih u XP-u korisnik strogo odredio redoslijed, dok SCRUM tim odlučuje redoslijed stavki (nakon što zaostatke proizvoda prioritetno postavi vlasnik proizvoda SCRUM-a).
Za razliku od XP-a, SCRUM ne predviđa nikakve inženjerske prakse. Na primjer, XP pokreću prakse poput testiranja usmjerenog na testiranje (TDD), programiranje parova, refaktoring itd. Međutim, neki vjeruju da bi mandat skupa praksi za samoorganizirajuće timove mogao imati negativan utjecaj, a to se može uzeti u obzir nedostatak XP-a. Drugi nedostatak Extreme programiranja je taj što neiskusni timovi mogu skloniti refactor-u bez automatiziranih testova ili TDD-a (ili jednostavno hakiranje). Stoga neki sugeriraju da je SCRUM bolji za početak (budući da donosi velika poboljšanja jednostavno fokusiranim vremenskim faktorima), a XP je pogodan za malo zrelije timove koji su otkrili vrijednost gore spomenutih praksi (umjesto da ih koriste jer su ih pitali učiniti tako).