Äärmuslik programmeerimine vs SCRUM | XP vs SCRUM
Tarkvaratööstuses on aastate jooksul kasutatud mitmeid erinevaid tarkvara arendamise metoodikaid, nagu näiteks Waterfall arendusmeetod, V-Model, RUP ja veel mõned muud lineaarsed, iteratiivsed ja kombineeritud lineaarsed-iteratiivsed meetodid. Agile mudel (või õigemini metoodikate rühm) on uuem tarkvaraarenduse mudel, mille tutvustas Agile manifest, et kõrvaldada nendes traditsioonilistes tarkvaraarenduse metoodikates leiduvad puudused.
Agiilsed meetodid põhinevad korduval arendamisel ja kasutavad peamise kontrollimehhanismina kasutajate tagasisidet. Agiilsust võib nimetada rahvakeskseks lähenemiseks kui traditsioonilisi meetodeid. Agiilne mudel tarnib toote töötava versiooni väga varakult, jaotades süsteemi väga väikesteks ja hallatavateks osadeks, nii et klient saaks juba mõnda aega kasutada mõnda eelist. Agile'i testitsükli aeg on võrreldes traditsiooniliste meetoditega suhteliselt lühike, kuna testimine toimub paralleelselt arendamisega. Kõigi nende eeliste tõttu eelistatakse paindlikke meetodeid traditsiooniliste metoodikate asemel. Scrum ja Extreme programmeerimine on Agile meetodite kõige populaarsemad variatsioonid.
Mis on SCRUM?
Nagu eespool mainitud, on SCRUM järkjärguline ja iteratiivne projektihaldusprotsess, mis kuulub Agile-meetodite perekonda. SCRUM põhineb klientide osalusel kõrge prioriteedina seadmisel arendustsükli alguses. See soovitab lisada testimise kliendi poolt varakult ja nii sageli kui võimalik. Testimine toimub igas punktis, kui stabiilne versioon on saadaval. SCRUMi asutamine põhineb katsetamise alustamisel projekti algusest ja jätkumist kogu projekti lõpuni.
SCRUMi põhiväärtus on „kvaliteet on meeskonna vastutus“, mis rõhutab, et tarkvara kvaliteedi eest vastutab kogu meeskond (mitte ainult testimisrühm). SCRUMi üks oluline aspekt on tarkvara lagundamine väiksemateks hallatavateks osadeks ja nende kiire edastamine kliendile. Toimiva toote tarnimine on ülimalt oluline. Seejärel jätkab meeskond tarkvara täiustamist ja igal suuremal sammul pidevat edastamist. See saavutatakse väga lühikeste vabastamistsüklitega (nn sprindid) ja parandamise tagasiside saamisega iga tsükli lõpus.
SCRUM määratleb arendusmeeskonna sujuvaks toimimiseks mitu võtmerolli. Nad on toote omanik (kes esindab klienti ja säilitab toote mahajäämust), Scrum kapten (kes tegutseb meeskonna korraldaja ja koordinaatorina, korraldades scrum-koosolekuid, pidades sprindi mahajäämust ja põletades graafikuid) ja teised meeskonna liikmed. Meeskond võib koosneda traditsioonilistest rollidest, kuid enamasti on nad isejuhtivad meeskonnad. Scrumi peamised esemed on toote mahajäämus / vabastamise mahajäämus (sooviloend), Sprindi mahajäämus / puuduste mahajäämus (ülesanded igas iteratsioonis), diagrammide põletamine (töö allesjäänud kuupäev). Peamised SCRUM-tseremooniad on toote mahajäämuse kohtumine, Sprindi kohtumine ja tagasivaatekoosolek.
Mis on ekstreemne programmeerimine?
Äärprogrammeerimine (lühendatult XP) on tarkvara arendamise metoodika, mis kuulub Agile mudeli juurde. Äärmuslik programmeerimine viib faasid läbi väga väikeste pidevate sammudena (võrreldes traditsiooniliste meetoditega). Esimene läbimine, mis võtab ainult päeva või nädala, on tahtlikult puudulik. Tarkvara arendamiseks konkreetsete eesmärkide seadmiseks kirjutatakse alguses automatiseeritud testid. Seejärel kodeerivad arendajad. Keskendutakse paaridena programmeerimisele. Kui kõik testid on läbitud, loetakse kodeerimine täielikuks. Järgmine etapp on disain ja arhitektuur, mis tegeleb koodide uuesti reageerimisega sama programmeerijate komplekti poolt. Selle etapi lõpus tutvustatakse huvirühmadele mittetäielikku (kuid toimivat) toodet. Vahetult pärast seda algab järgmine etapp (mis keskendub järgmisele kõige olulisemale funktsioonile).
Mis vahe on Extreme Programming ja SCRUM vahel??
Äärmuslik programmeerimine ja SCRUM on arusaadavalt väga sarnased ja joondatud metoodikad. Nende kahe meetodi vahel on siiski peened, kuid olulised erinevused. SCRUMi sprindid kestavad 2–4 nädalat, samas kui tüüpilised XP iteratsioonid on lühemad (viimased 1–2 nädalat). Tavaliselt ei luba SCRUM-i meeskonnad sprintides muudatusi teha, kuid XP-võistkonnad on iteratsioonide piires muudatuste tegemiseks pisut paindlikumad. Näiteks pärast sprindi kavandamist jääb selle sprindi üksuste komplekt muutumatuks, kuid funktsiooni, millega pole veel alustatud, saab XP-s igal ajal mõne muu funktsiooniga vahetada. Teine erinevus XP ja SCRUMi vahel on see, et XP-s välja töötatud funktsioonide järjekord on rangelt kliendi poolt seatud prioriteetide järgi, samas kui SCRUMi meeskond otsustab üksuste järjekorra (pärast seda, kui SCRUMi tooteomanik on toote mahajäämuse tähtsustanud).
Erinevalt XP-st ei sätesta SCRUM inseneritavasid. Näiteks juhivad XP-d sellised tavad nagu testipõhine arendamine (TDD), paaride programmeerimine, reageerimine jne. Kuid mõned usuvad, et iseorganiseeruvate meeskondade tavade komplekti kehtestamine võib avaldada negatiivset mõju ja seda võib kaaluda XP puudus. Extreme programmeerimise veel üks puudus on see, et kogenematud meeskonnad kipuvad reageerima ilma automaatsete testide või TDD (või lihtsalt häkkimiseta). Seetõttu arvavad mõned, et SCRUM on parem pealetungimiseks (kuna see annab suuri täiustusi lihtsalt keskendunud ajakasti iteratsioonide kaudu) ja XP sobib kergelt küpsetele meeskondadele, kes on avastanud ülalnimetatud tavade väärtuse (selle asemel, et neid kasutada, kuna neid on palutud) seda tegema).