Ekstremalus programavimas vs SCRUM | „XP vs SCRUM“
Per metus programinės įrangos pramonėje buvo naudojama daugybė skirtingų programinės įrangos kūrimo metodikų, tokių kaip „Waterfall“ kūrimo metodas, „V-Model“, „RUP“ ir keletas kitų linijinių, iteracinių ir kombinuotų linijinių-iteracinių metodų. Agile modelis (arba teisingiau, metodikų grupė) yra naujesnis programinės įrangos kūrimo modelis, kurį pristatė Agile manifestas, kad būtų pašalinti trūkumai, nustatyti tradicinėse programinės įrangos kūrimo metodologijose..
Agile metodai yra pagrįsti iteraciniu tobulinimu ir naudoja pagrindinius vartotojų atsiliepimus kaip pagrindinį valdymo mechanizmą. Agile gali būti vadinama į žmones orientuotu požiūriu nei tradiciniai metodai. Agile modelis pateikia veikiančią gaminio versiją labai anksti, suskaidydamas sistemą į labai mažas ir lengvai valdomas dalis, kad klientas anksti galėtų suvokti kai kuriuos privalumus. „Agile“ bandymo ciklo laikas yra palyginti trumpas, palyginti su tradiciniais metodais, nes bandymai atliekami kartu su plėtra. Dėl visų šių pranašumų šiuo metu pirmenybė teikiama judriems, o ne tradiciniams metodams. „Scrum“ ir „Extreme“ programavimas yra du populiariausi „Agile“ metodų variantai.
Kas yra SCRUM?
Kaip minėta aukščiau, SCRUM yra laipsniškas ir pasikartojantis projekto valdymo procesas, priklausantis „Agile“ metodų šeimai. „SCRUM“ grindžiamas tuo, kad kliento dalyvavimui teikiama pirmenybė ankstyvame kūrimo ciklo etape. Rekomenduojama kuo anksčiau ir dažniau įtraukti kliento bandymus. Testavimas atliekamas kiekviename taške, kai tampa stabili versija. „SCRUM“ pagrindas yra bandymai pradedami nuo projekto pradžios ir tęsiami nuo pat projekto pabaigos.
Pagrindinė „SCRUM“ vertė yra „už kokybę yra komandos atsakomybė“, kuri pabrėžia, kad už programinės įrangos kokybę yra atsakinga visa komanda (ne tik testavimo komanda). Kitas svarbus „SCRUM“ aspektas yra programinės įrangos suskaidymas į mažesnes valdomas dalis ir labai greitas pristatymas klientui. Pateikti veikiantį produktą yra nepaprastai svarbu. Tuomet komanda toliau tobulina programinę įrangą ir nuolat pristato kiekvieną svarbų žingsnį. Tai pasiekiama turint labai trumpus išleidimo ciklus (vadinamus sprintais) ir kiekvieno ciklo pabaigoje gaunant grįžtamąjį ryšį, kad būtų galima patobulinti.
SCRUM apibrėžia kelis pagrindinius vaidmenis, kad sklandžiai vystymosi komanda veiktų. Jie yra produkto savininkas (kuris atstovauja klientui ir palaiko produkto atsilikimą), „Scrum“ meistras (kuris veikia kaip komandos organizatorius ir koordinatorius, vykdydamas „scrum“ susitikimus, palaikydamas „sprint“ atsilikimą ir sudegindamas diagramas) ir kiti komandos nariai. Komandą gali sudaryti tradiciniai vaidmenys, tačiau dažniausiai tai yra savarankiškos komandos. Pagrindiniai „Scrum“ artefaktai yra produkto atsilikimas / išleidimo atsilikimas (norų sąrašas), „Sprint“ atsilikimai / defektų atsilikimai (užduotys kiekvienoje iteracijoje), įrašų diagramos (likęs darbas palyginti su data). Pagrindinės SCRUM ceremonijos yra Susirinkimas dėl produktų, „Sprint“ ir „Retrospektyvas“.
Kas yra ekstremalus programavimas?
Extreme Programming (sutrumpintai XP) yra programinės įrangos kūrimo metodika, priklausanti „Agile“ modeliui. Ekstremalus programavimas atliekamas fazėmis labai mažomis tęstinėmis pakopomis (palyginti su tradiciniais metodais). Pirmasis leidimas, kuris trunka tik dieną ar savaitę, yra tyčia neužbaigtas. Norint pateikti konkrečius programinės įrangos kūrimo tikslus, pradžioje rašomi automatiniai testai. Tada programuotojai atlieka kodavimą. Pagrindinis dėmesys skiriamas programavimui poromis. Kai visi testai praeina, kodavimas laikomas baigtu. Kitas etapas yra dizainas ir architektūra, susijusi su kodo atkūrimu tais pačiais programuotojais. Šio etapo pabaigoje suinteresuotoms šalims pateikiamas neišsamus (tačiau funkcinis) produktas. Iškart po to prasideda kitas etapas (kuriame pagrindinis dėmesys skiriamas kitam svarbiausių funkcijų rinkiniui).
Kuo skiriasi ekstremalus programavimas nuo SCRUM?
Ekstremalus programavimas ir SCRUM yra suprantamai labai panašios ir suderintos metodikos. Tačiau tarp šių dviejų metodų yra subtilių, bet svarbių skirtumų. SCRUM sprintai trunka 2–4 savaites, tuo tarpu tipiškos XP kartojimai būna trumpesni (trunka 1–2 savaites). Paprastai SCRUM komandos neleidžia keisti sprinto, tačiau XP komandos yra šiek tiek lankstesnės, kad pakeistų iteracijas. Pvz., Po sprinto planavimo to sprinto elementų rinkinys nesikeičia, tačiau funkciją, kuri dar nepradėjo veikti, bet kuriuo metu galite pakeisti į kitą XP funkciją. Kitas skirtumas tarp XP ir SCRUM yra tas, kad XP sukurtų funkcijų tvarką griežtai nustato klientas, o SCRUM komanda priima sprendimą dėl prekių eiliškumo (po to, kai produkto atsilikimą pirmenybę teikia „SCRUM“ produkto savininkas)..
Skirtingai nei XP, „SCRUM“ nenustato jokios inžinerijos praktikos. Pvz., XP lemia praktika, pvz., Bandymu grįsta plėtra (TDD), porų programavimas, reaktorių atkūrimas ir kt. Tačiau kai kurie mano, kad įpareigojimas praktikuoti savarankiškai organizuojančias komandas gali turėti neigiamos įtakos, ir tai galima apsvarstyti. XP trūkumas. Kitas „Extreme“ programavimo trūkumas yra tas, kad nepatyrusios komandos gali linkti reaguoti be jokių automatinių testų ar TDD (arba tiesiog įsilaužimo). Todėl kai kurie mano, kad SCRUM geriau žvalgytis (nes tai suteikia didelių patobulinimų, tiesiog naudojant tikslingas kartotines iteracijas), o XP tinka šiek tiek subrendusioms komandoms, atradusioms aukščiau paminėtos praktikos vertę (užuot jas naudojusi, nes jos paprašė tai padaryti).