Programimi ekstrem kundër SCRUM | XP vs SCRUM
Ka pasur një numër të metodologjive të ndryshme të zhvillimit të softuerit të përdorur në industrinë e softuerit gjatë viteve, të tilla si metoda e zhvillimit Waterfall, V-Model, RUP dhe disa metoda të tjera lineare, përsëritëse dhe të kombinuara lineare-iterative. Modeli i shkathët (ose më saktë, një grup metodologjish) është një model më i fundit i zhvillimit të softuerit i prezantuar nga manifesti Agile për të adresuar mangësitë që gjenden në ato metodologji tradicionale të zhvillimit të softuerit.
Metodat e shkathët bazohen në zhvillimin përsëritës dhe përdorin reagimet nga përdoruesit si mekanizmin kryesor të kontrollit. Agile mund të quhet një qasje e përqendruar te njerëzit sesa metodat tradicionale. Modeli i shkathët ofron një version funksional të produktit shumë herët duke e zbërthyer sistemin në nënpjesë shumë të vogla dhe të menaxhueshme, në mënyrë që klienti të mund të kuptojë disa nga përfitimet herët. Koha e ciklit të testimit të Agile është relativisht e shkurtër në krahasim me metodat tradicionale, sepse testimi bëhet paralel me zhvillimin. Për shkak të të gjitha këtyre avantazheve, metodat Agile janë të preferuara mbi metodologjitë tradicionale për momentin. Programimi Scrum dhe Extreme janë dy nga variacionet më të njohura të metodave Agile.
Çfarë është SCRUM?
Siç u përmend më lart, SCRUM është një proces i menaxhimit të projektit në rritje dhe përsëritës, i cili i përket familjes së metodave Agile. SCRUM bazohet në dhënien e përparësisë së lartë pjesëmarrjes së klientit në fillim të ciklit të zhvillimit. Ai rekomandon përfshirjen e testimit nga klienti sa më herët dhe shpesh të jetë e mundur. Testimi bëhet në çdo pikë kur një version i qëndrueshëm bëhet i disponueshëm. Themeli i SCRUM bazohet në fillimin e testimit nga fillimi i projektit dhe vazhdimin gjatë gjithë kohës deri në fund të projektit.
Vlera kryesore e SCRUM është "cilësia është përgjegjësi e ekipit", e cila thekson se cilësia e softuerit është përgjegjësi e të gjithë ekipit (jo vetëm të ekipit të testimit). Një aspekt tjetër i rëndësishëm i SCRUM është zbërthimi i softuerit në pjesë më të vogla të menaxhueshme dhe dërgimi i tyre te klienti shumë shpejt. Dorëzimi i një produkti funksional është me rëndësi të madhe. Pastaj ekipi vazhdon të përmirësojë softuerin dhe të ofrojë vazhdimisht në çdo hap madhor. Kjo arrihet duke pasur cikle lëshimi shumë të shkurtra (të quajtura sprinte) dhe duke marrë komente për përmirësim në fund të çdo cikli.
SCRUM përcakton disa role kyçe për funksionimin e qetë të një ekipi zhvillimi. Ata janë pronari i produktit (i cili përfaqëson klientin dhe ruan sasinë e mbetur të produktit), Scrum master (i cili vepron si organizator dhe koordinator i ekipit duke kryer takime scrum, duke mbajtur sprint të prapambetur dhe tabela të djegura) dhe anëtarë të tjerë të ekipit. Një ekip mund të përbëhet nga role tradicionale, por kryesisht ato janë ekipe vetë-menaxhuese. Artifaktet kryesore të Scrum janë të prapambetura të produkteve/lëshimeve të mbetura (lista e dëshirave), të prapambetura në Sprint/defekte të prapambetura (detyrat në çdo përsëritje), Grafikët Burn down (puna e mbetur kundrejt datës). Ceremonitë kryesore të SCRUM janë takimi i mbeturinave të produkteve, takimi Sprint dhe takimi Retrospect.
Çfarë është Programimi Ekstrem?
Programimi ekstrem (shkurtuar XP) është një metodologji e zhvillimit të softuerit që i përket modelit Agile. Programimi ekstrem i kryen fazat në hapa shumë të vegjël të vazhdueshëm (krahasuar me metodat tradicionale). Kalimi i parë, i cili zgjat vetëm një ditë ose një javë, është qëllimisht i paplotë. Për të ofruar qëllime konkrete për zhvillimin e softuerit, testet e automatizuara shkruhen në fillim. Pastaj zhvilluesit bëjnë kodimin. Fokusi është në bërjen e programimit në çift. Pasi të kalojnë të gjitha testet, kodimi konsiderohet i përfunduar. Faza tjetër është dizajni dhe arkitektura, e cila merret me rifaktorimin e kodit nga i njëjti grup programuesish. Në fund të kësaj faze, produkti jo i plotë (por funksional) u paraqitet palëve të interesuara. Menjëherë pas kësaj, fillon faza tjetër (e cila fokusohet në grupin tjetër të veçorive më të rëndësishme).
Cili është ndryshimi midis Programimit Ekstrem dhe SCRUM?
Programimi ekstrem dhe SCRUM janë të kuptueshme metodologji shumë të ngjashme dhe të përafruara. Megjithatë, ka dallime delikate, por të rëndësishme midis këtyre dy metodave. Sprintet SCRUM zgjasin 2-4 javë, ndërsa përsëritjet tipike XP janë më të shkurtra (1-2 javët e fundit). Zakonisht, ekipet SCRUM nuk lejojnë ndryshime në sprinte, por ekipet XP janë pak më fleksibël ndaj ndryshimeve brenda përsëritjeve. Për shembull, pas planifikimit të sprintit, grupi i artikujve të atij sprinti mbetet i pandryshuar, por një veçori që nuk ka filluar të punojë në çdo kohë mund të zëvendësohet me ndonjë veçori tjetër në XP. Një tjetër ndryshim midis XP dhe SCRUM është se rendi i veçorive të zhvilluara në XP është me prioritet rreptësisht nga klienti, ndërsa ekipi SCRUM vendos rendin e artikujve (pasi numri i produkteve të mbetura të jetë prioritizuar nga pronari i produktit të SCRUM).
Ndryshe nga XP, SCRUM nuk parashtron asnjë praktikë inxhinierike. Për shembull, XP drejtohet nga praktika si zhvillimi i drejtuar nga testi (TDD), programimi në çift, rifaktorimi, etj. Megjithatë, disa besojnë se mandatimi i një grupi praktikash në ekipet e vetëorganizimit mund të ketë një ndikim negativ dhe kjo mund të merret parasysh një mangësi e XP. Një tjetër mangësi e programimit Extreme është se ekipet e papërvojë mund të priren të rifaktojnë pa ndonjë test të automatizuar ose TDD (ose thjesht hakerim). Prandaj, disa sugjerojnë që SCRUM është më i mirë për t'u larguar (pasi sjell përmirësime të mëdha thjesht përmes përsëritjeve të fokusuara në kuti kohore) dhe XP është i përshtatshëm për ekipet paksa të pjekura që kanë zbuluar vlerën e praktikave të lartpërmendura (në vend që t'i përdorin ato sepse u janë kërkuar për ta bërë këtë).