Extreme Programming vs SCRUM | XP pret SCRUM
Gadu gaitā programmatūras nozarē tika izmantotas vairākas dažādas programmatūras izstrādes metodoloģijas, piemēram, Waterfall izstrādes metode, V-Model, RUP un dažas citas lineāras, iteratīvas un kombinētas lineāri-iteratīvas metodes. Agile modelis (vai pareizāk sakot, metodiku grupa) ir jaunāks programmatūras izstrādes modelis, kuru ieviesa Agile manifests, lai novērstu trūkumus, kas atklāti šajās tradicionālajās programmatūras izstrādes metodoloģijās.
Veiklīgo metožu pamatā ir atkārtota izstrāde, un par galveno kontroles mehānismu tiek izmantotas lietotāju atsauksmes. Agile var saukt par uz cilvēkiem orientētu pieeju nekā tradicionālās metodes. Agile modelis ļoti agri piegādā izstrādājuma darba versiju, sadalot sistēmu ļoti mazās un viegli pārvaldāmās apakšdaļās, lai klients jau agrīnā laikā varētu izmantot dažas priekšrocības. Agile testēšanas cikla laiks ir salīdzinoši īss, salīdzinot ar tradicionālajām metodēm, jo testēšana tiek veikta paralēli izstrādei. Visu šo priekšrocību dēļ Agile metodes pašlaik tiek dotas priekšroka salīdzinājumā ar tradicionālajām metodikām. Scrum un Extreme programmēšana ir divas no populārākajām Agile metožu variācijām.
Kas ir SCRUM?
Kā minēts iepriekš, SCRUM ir pakāpenisks un iteratīvs projektu vadības process, kas pieder Agile metožu saimei. SCRUM pamatā ir augsta prioritāte klientu līdzdalībai attīstības cikla sākumā. Tas iesaka savlaicīgi un bieži iekļaut klienta testēšanu. Testēšana tiek veikta katrā brīdī, kad kļūst pieejama stabila versija. SCRUM dibināšanas pamatā ir testēšanas uzsākšana no projekta sākuma un turpināšana visu projekta laiku līdz projekta beigām.
Galvenā SCRUM vērtība ir “kvalitāte ir komandas atbildība”, kas uzsver, ka par programmatūras kvalitāti ir atbildīga visa komanda (ne tikai testēšanas komanda). Vēl viens svarīgs SCRUM aspekts ir programmatūras sadalīšana mazākās pārvaldāmās daļās un ļoti ātra piegādāšana klientam. Darbīga produkta piegāde ir ārkārtīgi svarīga. Tad komanda turpina pilnveidot programmatūru un nepārtraukti piegādāt katru nozīmīgo soli. Tas tiek panākts, izmantojot ļoti īsus atbrīvošanas ciklus (sauktos par sprintiem) un katra cikla beigās saņemot atgriezenisko saiti uzlabojumiem.
SCRUM nosaka vairākas galvenās lomas attīstības komandas vienmērīgai darbībai. Viņi ir Produkta īpašnieks (kurš pārstāv klientu un uztur produkta uzkrāšanos), Scrum meistars (kurš darbojas kā komandas organizators un koordinators, vadot skrum sanāksmes, uzturot sprinta atlikumus un sadedzinot diagrammas) un citi komandas locekļi. Komanda var sastāvēt no tradicionālām lomām, bet lielākoties tās ir pašpārvaldes komandas. Galvenie Scrum artefakti ir produktu atlikumi / izlaišanas atlikumi (vēlmju saraksts), Sprint rezerves / defektu rezerves (uzdevumi katrā atkārtojumā), diagrammu sadedzināšana (atlikušais darbs salīdzinājumā ar datumu). Galvenās SCRUM ceremonijas ir sapulce par produktu, sprinta sanāksme un retrospektīva sanāksme.
Kas ir ekstrēma programmēšana?
Extreme Programming (saīsināts XP) ir programmatūras izstrādes metodika, kas pieder Agile modelim. Ekstrēma programmēšana veic fāzes ļoti mazās nepārtrauktās darbībās (salīdzinājumā ar tradicionālajām metodēm). Pirmā caurlaide, kas prasa tikai dienu vai nedēļu, ir apzināti nepilnīga. Lai nodrošinātu konkrētus programmatūras izstrādes mērķus, sākumā tiek rakstīti automatizētie testi. Tad izstrādātāji veic kodēšanu. Galvenā uzmanība tiek pievērsta programmēšanai kā pāriem. Kad visi testi ir nokārtoti, kodēšana tiek uzskatīta par pabeigtu. Nākamais posms ir dizains un arhitektūra, kas nodarbojas ar koda atkārtotu reakciju ar vienu un to pašu programmētāju komplektu. Šī posma beigās ieinteresētajām personām tiek iesniegts nepilnīgs (bet funkcionāls) produkts. Tieši pēc tam sākas nākamais posms (kas koncentrējas uz nākamo svarīgāko funkciju kopu).
Kāda ir atšķirība starp ekstrēmo programmēšanu un SCRUM?
Extreme Programming un SCRUM ir saprotami ļoti līdzīgas un saskaņotas metodikas. Tomēr starp šīm divām metodēm pastāv smalkas, bet būtiskas atšķirības. SCRUM sprints ilgst 2–4 nedēļas, savukārt tipiskās XP iterācijas ir īsākas (pēdējās 1–2 nedēļas). Parasti SCRUM komandas nepieļauj izmaiņas sprintos, bet XP komandas ir nedaudz elastīgākas attiecībā uz izmaiņām iterāciju ietvaros. Piemēram, pēc sprinta plānošanas šī sprinta priekšmetu komplekts paliek nemainīgs, bet funkciju, kas vēl nav sākusi darbu, jebkurā laikā var apmainīt pret kādu citu XP funkciju. Vēl viena atšķirība starp XP un SCRUM ir tāda, ka XP izstrādāto funkciju secību stingri nosaka klients, savukārt SCRUM komanda lemj par preču pasūtīšanu (pēc tam, kad produktu atlikšanu par prioritāti nosaka SCRUM produkta īpašnieks)..
Atšķirībā no XP, SCRUM neparedz inženierijas praksi. Piemēram, XP virza tādas prakses kā uz testiem balstīta izstrāde (TDD), pāru programmēšana, reaktora veidošana utt. Tomēr daži uzskata, ka prakses kopuma noteikšanai pašorganizējošām komandām varētu būt negatīva ietekme, un to var apsvērt XP trūkums. Vēl viens Extreme programmēšanas trūkums ir tāds, ka nepieredzējušām komandām ir tendence reaģēt bez automātiskiem testiem vai TDD (vai vienkārši uzlaušanas). Tāpēc daži iesaka, ka SCRUM ir labāk izcelties (jo tas sniedz lielus uzlabojumus, vienkārši izmantojot mērķtiecīgas laika kastītēs atkārtotas iterācijas), un XP ir piemērots nedaudz nobriedušākām komandām, kuras ir atklājušas iepriekšminētās prakses vērtību (nevis izmanto tās, jo tām ir prasīts tā darīt).