Diferența dintre programarea extremă și SCRUM

Anonim

Extreme Programming vs SCRUM | XP vs SCRUM

De-a lungul anilor, s-au folosit numeroase metodologii de dezvoltare software diferite în industria software, cum ar fi metoda de dezvoltare Waterfall, V-Model, RUP și câteva alte metode liniare, iterative și combinate liniar-iterative. Modelul model (sau mai corect, un grup de metodologii) este un model de dezvoltare software mai recent introdus de manifestul Agile pentru a aborda deficiențele constatate în metodologiile tradiționale de dezvoltare a software-ului.

Metodele agile se bazează pe dezvoltarea iterativă și utilizează feedback-ul utilizatorilor ca mecanism principal de control. Agilul poate fi numit o abordare centrat pe oameni decât metodele tradiționale. Modelul Agile oferă o versiune de lucru a produsului foarte devreme prin descompunerea sistemului în subpărți foarte mici și ușor de gestionat, astfel încât clientul să poată realiza unele beneficii de timpuriu. Timpul de testare al ciclului Agile este relativ scurt comparativ cu metodele tradiționale, deoarece testarea se face paralel cu dezvoltarea. Datorită tuturor acestor avantaje, metodele Agile sunt preferate în prezent față de metodologiile tradiționale. Scrum și programarea Extreme sunt două dintre cele mai populare variante ale metodelor Agile.

Ce este SCRUM?

După cum sa menționat mai sus, SCRUM este un proces incremental și iterativ de management al proiectelor, care aparține familiei metodelor Agile. SCRUM se bazează pe acordarea unei priorități deosebite participării clienților la începutul ciclului de dezvoltare. Acesta recomandă includerea testelor de către client devreme și de cele mai multe ori posibil. Testarea se face la fiecare punct atunci când o versiune stabilă devine disponibilă. Fundația SCRUM se bazează pe pornirea testelor de la începutul proiectului și continuarea acestuia până la sfârșitul proiectului.

Valoarea cheie a SCRUM este "calitatea este responsabilitatea echipei", care subliniază că calitatea software-ului este responsabilitatea întregii echipe (nu doar a echipei de testare). Un alt aspect important al SCRUM este ruperea software-ului în părți mai ușor de gestionat și livrarea lor către client foarte repede. Furnizarea unui produs de lucru este extrem de importantă. Apoi echipa continuă să îmbunătățească software-ul și să livreze continuu la fiecare pas major. Acest lucru se realizează prin intermediul unor cicluri foarte scurte de eliberare (numite sprinte) și obținerea de feedback pentru îmbunătățire la sfârșitul fiecărui ciclu.

SCRUM definește mai multe roluri cheie pentru buna funcționare a unei echipe de dezvoltare. Ei sunt proprietarul Produsului (care reprezintă clientul și menține restanțele produsului), Scrum master (care acționează ca organizator și coordonator al echipei prin desfășurarea întâlnirilor de scrum, menținerea backlog-urilor de sprint și arde graficele) și alți membri ai echipei.O echipă poate fi formată din roluri tradiționale, dar în cea mai mare parte sunt echipe de auto-gestionare. Principalele artefacte Scrum sunt backlog-ul produsului / backlog-ul de eliberare (listă de dorințe), întârzieri Sprint / backlog-uri de defecte (sarcini în fiecare iterație), diagrame de ardere (lucru rămas vs dată). Principalele ceremonii SCRUM sunt Întâlnirea restante a Produsului, reuniunea Sprint și reuniunea Retrospect.

Ce este Programarea Extremă?

Programarea Extremă (XP abreviată) este o metodologie de dezvoltare software care aparține modelului Agile. Programarea extremă realizează faze în pași foarte mici (în comparație cu metodele tradiționale). Prima trecere, care durează doar o zi sau o săptămână, este în mod intenționat incompletă. Pentru a oferi obiective concrete pentru dezvoltarea software-ului, testele automate sunt scrise la început. Apoi dezvoltatorii fac codificarea. Se pune accentul pe a face programarea ca perechi. După trecerea tuturor testelor, codificarea este considerată completă. Următoarea fază este designul și arhitectura, care se ocupă cu refacularea codului de către același set de programatori. La sfârșitul acestei faze, produsul incomplet (dar funcțional) este prezentat părților interesate. Imediat după aceasta, începe faza următoare (care se axează pe următorul set de caracteristici cele mai importante).

Care este diferența dintre programele Extreme și SCRUM?

Programarea Extremă și SCRUM sunt metodologii foarte asemănătoare și foarte asemănătoare. Cu toate acestea, există diferențe subtile, dar importante între aceste două metode. Șuruburile SCRUM durează 2-4 săptămâni, în timp ce iterațiile tipice ale XP sunt mai scurte (ultimele 1-2 săptămâni). De obicei, echipele SCRUM nu permit schimbări în sprint, dar echipele XP sunt puțin mai flexibile la schimbările din cadrul iterațiilor. De exemplu, după planificarea sprintului, setul de elemente din acel sprint rămâne neschimbat, dar o caracteristică care nu a început să funcționeze poate oricând să fie schimbată cu o altă caracteristică în XP. O altă diferență între XP și SCRUM este faptul că ordinea trăsăturilor dezvoltate în XP este una strict prioritizată de către client, în timp ce echipa SCRUM decide ordinea articolelor (după ce întârzierea produsului este prioritizată de proprietarul produsului SCRUM).

Spre deosebire de XP, SCRUM nu stabilește nicio practică tehnică. De exemplu, XP este condus de practici precum dezvoltarea bazată pe test (TDD), programarea perechilor, refactorizarea etc. Cu toate acestea, unii cred că impunerea unui set de practici asupra echipelor care se autoorganizează ar putea avea un impact negativ și acest lucru poate fi considerat un neajuns al lui XP. Un alt neajuns al programării Extreme este că echipele neexperimentate pot tenta să refacă fără teste automate sau TDD (sau pur și simplu hacking). Prin urmare, unii sugerează că SCRUM este mai bine pentru a observa (deoarece aduce îmbunătățiri mari doar prin iterații focalizate în timp) și XP este potrivit pentru echipele ușor mature care au descoperit valoarea practicilor menționate mai sus (mai degrabă decât să le folosească deoarece au fost întrebate pentru a face acest lucru).