Extreme Programming vs SCRUM | XP vs SCRUM
Nagkaroon ng maraming iba't ibang pamamaraan ng pagbuo ng software na ginamit sa industriya ng software sa mga nakaraang taon, tulad ng paraan ng pagbuo ng Waterfall, V-Model, RUP at ilang iba pang mga linear, iterative at pinagsamang linear-iterative na pamamaraan. Ang maliksi na modelo (o mas tama, isang pangkat ng mga pamamaraan) ay isang mas kamakailang modelo ng pagbuo ng software na ipinakilala ng Agile manifesto upang tugunan ang mga pagkukulang na makikita sa mga tradisyonal na pamamaraan ng pagbuo ng software na iyon.
Ang maliksi na pamamaraan ay batay sa umuulit na pag-unlad at ginagamit ang feedback mula sa mga user bilang pangunahing mekanismo ng kontrol. Ang maliksi ay matatawag na people-centric approach kaysa sa mga tradisyonal na pamamaraan. Ang maliksi na modelo ay naghahatid ng gumaganang bersyon ng produkto nang napakaaga sa pamamagitan ng paghahati-hati sa system sa napakaliit at mapapamahalaang mga sub parts, upang maagang matanto ng customer ang ilan sa mga benepisyo. Ang panahon ng ikot ng pagsubok ng Agile ay medyo maikli kumpara sa mga tradisyonal na pamamaraan, dahil ang pagsubok ay ginagawa parallel sa pag-unlad. Dahil sa lahat ng mga pakinabang na ito, ang mga pamamaraan ng Agile ay mas gusto kaysa sa mga tradisyonal na pamamaraan sa ngayon. Ang Scrum at Extreme programming ay dalawa sa pinakasikat na variation ng Agile method.
Ano ang SCRUM?
Tulad ng nabanggit sa itaas, ang SCRUM ay isang incremental at umuulit na proseso ng pamamahala ng proyekto, na kabilang sa pamilya ng mga Agile method. Ang SCRUM ay batay sa pagbibigay ng mataas na priyoridad sa partisipasyon ng customer sa unang bahagi ng yugto ng pag-unlad. Inirerekomenda nito ang pagsasama ng pagsubok ng customer nang maaga at madalas hangga't maaari. Ginagawa ang pagsubok sa bawat punto kapag naging available ang isang matatag na bersyon. Ang pundasyon ng SCRUM ay batay sa pagsisimula ng pagsubok mula sa simula ng proyekto at pagpapatuloy hanggang sa katapusan ng proyekto.
Ang pangunahing halaga ng SCRUM ay "ang kalidad ay responsibilidad ng team", na nagbibigay-diin na ang kalidad ng software ay responsibilidad ng buong team (hindi lang ng testing team). Ang isa pang mahalagang aspeto ng SCRUM ay ang paghahati-hati ng software sa mas maliliit na napapamahalaang bahagi at paghahatid ng mga ito sa customer nang napakabilis. Ang paghahatid ng gumaganang produkto ay pinakamahalaga. Pagkatapos ay patuloy na pinapahusay ng team ang software at patuloy na naghahatid sa bawat pangunahing hakbang. Ito ay nakakamit sa pamamagitan ng pagkakaroon ng napakaikling release cycle (tinatawag na sprints) at pagkuha ng feedback para sa pagpapabuti sa dulo ng bawat cycle.
Tinutukoy ng SCRUM ang ilang mahahalagang tungkulin para sa maayos na operasyon ng isang development team. Sila ang may-ari ng Produkto (na kumakatawan sa customer at nagpapanatili ng backlog ng produkto), Scrum master (na gumaganap bilang organizer at coordinator ng team sa pamamagitan ng pagsasagawa ng mga scrum meeting, pagpapanatili ng sprint backlog at burn down na mga chart) at iba pang miyembro ng team. Ang isang koponan ay maaaring binubuo ng mga tradisyunal na tungkulin, ngunit karamihan sila ay mga self-managing team. Ang mga pangunahing artifact ng Scrum ay Product backlog/release backlog (wish list), Sprint backlogs/defect backlogs (mga gawain sa bawat pag-ulit), Burn down chart (work remaining vs. date). Ang mga pangunahing seremonya ng SCRUM ay Product backlog meeting, Sprint meeting at Retrospect meeting.
Ano ang Extreme Programming?
Ang Extreme Programming (pinaikling XP) ay isang pamamaraan ng pagbuo ng software na kabilang sa Agile model. Ang matinding programming ay nagsasagawa ng mga yugto sa napakaliit na tuloy-tuloy na mga hakbang (kumpara sa mga tradisyonal na pamamaraan). Ang unang pass, na tumatagal lamang ng isang araw o isang linggo, ay sadyang hindi kumpleto. Upang magbigay ng mga kongkretong layunin para sa pagbuo ng software, ang mga awtomatikong pagsubok ay isinulat sa simula. Pagkatapos ay ginagawa ng mga developer ang coding. Ang pokus ay sa paggawa ng programming bilang magkapares. Kapag pumasa na ang lahat ng pagsubok, ituturing na kumpleto ang coding. Ang susunod na yugto ay disenyo at arkitektura, na tumatalakay sa refactoring ng code ng parehong hanay ng mga programmer. Sa pagtatapos ng yugtong ito, ang hindi kumpleto (ngunit functional) na produkto ay iniharap sa mga stakeholder. Pagkatapos nito, magsisimula ang susunod na yugto (na nakatutok sa susunod na hanay ng pinakamahahalagang feature).
Ano ang pagkakaiba ng Extreme Programming at SCRUM?
Ang Extreme Programming at SCRUM ay maliwanag na magkatulad at nakahanay na mga pamamaraan. Gayunpaman, may mga banayad ngunit mahalagang pagkakaiba sa pagitan ng dalawang pamamaraang ito. Ang mga SCRUM sprint ay tumatagal ng 2-4 na linggo, habang ang mga tipikal na XP iteration ay mas maikli (huling 1-2 na linggo). Karaniwan, hindi pinapayagan ng mga SCRUM team ang mga pagbabago sa mga sprint, ngunit ang mga XP team ay mas nababaluktot sa mga pagbabago sa loob ng mga pag-ulit. Halimbawa, pagkatapos ng pagpaplano ng sprint, ang hanay ng mga item ng sprint na iyon ay mananatiling hindi nagbabago, ngunit ang isang feature na hindi pa nagsimulang gumana ay maaaring mapalitan anumang oras sa ilang iba pang feature sa XP. Ang isa pang pagkakaiba sa pagitan ng XP at SCRUM ay, ang pagkakasunud-sunod ng mga feature na binuo sa XP ay mahigpit na binibigyang-priyoridad ng customer, habang ang SCRUM team ang nagpapasya sa pagkakasunud-sunod ng mga item (pagkatapos ang backlog ng produkto ay unahin ng may-ari ng Produkto ng SCRUM).
Hindi tulad ng XP, ang SCRUM ay hindi naglalagay ng anumang mga kasanayan sa engineering. Halimbawa, ang XP ay hinihimok ng mga kasanayan tulad ng test-driven development (TDD), pair programming, refactoring, atbp. Gayunpaman, naniniwala ang ilan na ang pag-uutos ng isang hanay ng mga kasanayan sa mga self-organizing team ay maaaring magkaroon ng negatibong epekto, at maaari itong isaalang-alang isang pagkukulang ng XP. Ang isa pang pagkukulang ng Extreme programming ay ang mga walang karanasan na koponan ay maaaring may posibilidad na mag-refactor nang walang anumang mga awtomatikong pagsubok o TDD (o simpleng pag-hack). Samakatuwid, iminumungkahi ng ilan na ang SCRUM ay mas mahusay para sa pagtitig (dahil nagdudulot ito ng malalaking pagpapabuti sa pamamagitan lamang ng nakatutok na timeboxed na mga pag-ulit) at ang XP ay angkop para sa mga medyo mature na team na nakatuklas ng halaga ng mga nabanggit na kasanayan (sa halip na gamitin ang mga ito dahil tinanong sila upang gawin ito).