fbpx

Ce este Agile?

scrum

Ce insemna Agile?



Agile insemana sa te misti cu usurinta si rapiditate. Insemna sa livrezi continuu,  solutii de business care aduc valoare reala. 

Companiile utilizeaza o abordare agila, atuncii cand doresc sa obtina rezultate rapid.

Ca sa poti sa devii Agile trebuie sa aplici un set de valori si principii, asa cum sunt descrise in Agile Manifesto for Software Development.

Este o abordare de proiect in care se pune accent pe lucrul in echipa, colaborare cu clientul, ajustarea cerintelor, flexibilitate la schimbari. De asemenea intr-un proiect agile se pune accentul pe imbunatatirea continua a relatiile din echipa, procesele si aplicatiile de dezvoltare sofware .

Metodele Agile sunt o alternativa la proiectele de tip waterfall.  Un proiect de tip waterfall se deruleaza dupa faze de proiect si pana nu se finalizeaza tot proiectul nu se livreaza nimic. Astfel clientul poate astepta o perioada indelungata pana poate folosi ceva. 

Abordarea agile, este diferita pentru ca se livreza componente de proiect (care se pot utiliza) pe masura ce sunt gata. Echipa de proiect livreaza progresiv, din aproape in aprope sau altfel spus iterativ si incremental. Clientul poate utiliza functionalitati din  solutiile de business, chiar dupa inceperea proiectului, obtinand rapid beneficii de business.



Avantajele metodelor Agile

Principalele avantaje pe care le aduce o metodologie Agile sunt: 

  • managementul cerintelor care se schimba des
  • accelereaza realizarea de solutii software
  • creste productivitatea echipei
  • aliniaza nevoile de business cu solutiile IT
  • creste calitatea solutiilor software, reducand substantial numarul de bug-uri
  • creste vizibilitatea in proiect, cu ce se implementeaza

Metode Agile

Exista multe de metodologii care se numesc, generic, agile. In contextul de project management agil inseamna flexibil.

Agilitatea unui proiect se traduce in cele din urma in flexibilitatea cu care poti sa schimbi cerintele dupa nevoile de business.

 Unele metodologii de proiect sunt rigide pentru ca cerintele se schimba printr-un proces riguros cu multe aprobari. Alte metodologii de proiect sunt agile pentru ca cerintele se schimba mai usor. Exemple de metodologii agile: SCRUM, XP, Kanban, AUP, Crystal,  DSDM, Spotify  si lista poate continua.

Dar si chiar si aceste metodologii agile sunt diferite prin gradul de agilitate pe care il confera proiectului.

Cu cat o metodologie de proiect are mai putine reguli cu atat proiectul este mai flexibil, mai agil.

Cea mai mare flexibilitate in proiect se obtine cu SCRUM si eXtreme Programming (XP) . Au reguli simple si de multe ori sunt folosite impreuna. Metoda SCRUM este folosita ca un framework de lucru si XP ofera tehnici de implementare solutii software. 

Cu toate ca sunt zeci de metode Agile, cateva sunt mai importante:

  • Scrum
  • Extreme Programming (XP)
  • Dynamic Systems Development Method (DSDM)
  • Lean
  • Kanban

 

 

 

 

SCRUM

SCRUM este o metodă Agile de project management. Denumirile din Scrum sunt alese in asa fel incat sa realizezi ca Scrum este ceva diferit fata de alte metodologii de proiect. Scrum este descris in Scrum Guide , creat de Ken Schwaber si Jeff Sutherland, numiti si ” The Fathers of Scrum”

SCRUM este un proces iterativ si incremental care ofera avantaj acolo unde cerintele se schimba rapid.

La sfirsitul fiecarei iteratii, echipa de proiect produce un produs (software) cu un set partial de functionalitati (numit increment), dar care se poate livra la client.

Elemente Scrum

  • Product Backlog – lista prioritizata de cerinte care descriu ceea ce trebuie făcut şi în ce ordine. De multe ori aceste cerinte se exprima sub forma de User Stories
  • Sprint – o perioada de implementare de max 30 zile.  Ccerinte în iteratii scurte numite sprinturi. 
  • Daily Scrum – O sedinta de max. 15 minute,  în care este discutat progresul efectuat, efortul care urmează şi eventualele impedimente
  • Sprint Planning Meeting – O scurtă sesiune de planificare a sprintului în care se selecteaza cerintele pentru implementare si se stabilesc activitatile necesare (tasks).
  • Sprint Retrospective – O sedinta scurtă de retrospectivă a sprintului în care toţi membrii echipei reflectează asupra sprintului încheiat

Echipa SCRUM

 

Scrum Agile team Scrum Master, Product Owner, Developmnet TeamIn metodologia Scrum echipa de proiect se numeste Scrum Team si este formata din Product Owner, Development Team si Scrum Master.  Echipa Scrum este multi functionala(business, analiza, arhitectura, dezvoltare, testare, etc)  si isi face singura managementul de proiect (self organizing, self-managing).

  •  Scrum Master. Este leader-ul echipei de proiect si ajuta echipa unde si cand este necesar (servant-leader).  Scrum Master-ul NU este project manager. Scrum Master-ul are doua responsabilitati principale: sa înlature problemele ce împiedică echipa să implementeze si sa se asigure ca se respecte regulile de lucru din SCRUM. 
  • Product Owner. Este persoana responsabila cu cerintele din proiect si are grija sa utilizeze eficient bugetul.  Trebuie sa exprime clar cerintele, sa le prioritizeze si  sa le detalieze pentru echipa de dezvoltare. Cerintele le poate scrie ca User Stories.
  • Development Team. Echipa de implementare, formata din profesionisti, care preiau cerintele (User Stories) de la Product Owner si le transforma in aplicatie software, care poate sa fie pusa in mediul de productie (live).

Cum se deruleaza un proiect cu Scrum

  • Product owner creaza un document cu cerinte de business care descrie pe larg ce doreste in proiect (Vision)
  • Din Cerintele de business (Vision) se creaza Product Backlog (lista prioritizata de cerinte)
  • Proiectul se imparte in sprint-uri de durata fixa, de exemplu 10 zile
  • Incepe Sprintul cu sedinta de Sprint Planning. Echipa Scrum selecteaza cerintele  din Product Backlog  si creaza un al doilea backlog, numit Sprint Backlog. Apoi, aceste cerinte (User Story) se detaliaza la nivel de activitati (tasks) care descriu cum echipa va face design dezvoltare, testare, integrare, etc
  • Dupa Sprint Planning, incepe implementarea efectiva (Sprint Execution). Echipa de proiect efectueaza activitatile necesare (dezvoltare, integrare, testare, etc)  pentru a implementa solutia.
  • In fiecare zi, echipa va avea sedinta de 15 minute, Daily Scrum, cu scopul de a face planul pentru ziua respectiva.
  • La finalul Sprintului, echipa are functionalitatile implementate intr-o versiune noua de solutie (increment). Echipa verifica daca solutia respecta Definion of Done,  un checklist cu activitatile care trebuiau finalizate, printre care si testele de acceptanta.  Astfe, lProduct Ownerul se asigura ca solutia este pregatita pentru utilizare.
  •  Sprint review – persoanele afectate de proiect (stakeholders) si Product Ownerul discuta cerintele care au fost DONE, si participa la un demo.Ultimul meeting din Spint, Sprint Retrospective -Echipa Scrum cauta ca optimizeze procesul Scrum, iar imbunatatirile se implementeaza in Sprintul urmator.

 

 

 

Extreme Programming

Extreme Programming (sau XP) este o metodologie agile de dezvoltare software care defineste un set de valori si de practici care conduc la o calitate crescuta a solutiei software. Aceste practici de dezvoltare software se combina de obicei cu SCRUM.

EXtreme Programming este adresata programatorilor.  Anumite elemente  tin doar de modul de lucru, dar altele tin de tehnici de dezvoltare sisteme IT.  Cateva elemente mai deosebite.

Pair Programming – doua persoane fac programare la acelasi calculator. Unul scrie cod si celalalt verifica sau face arhitectura software. Dupa ceva timp 1-2 ore schimba rolurile.

TDD – test driven development. Dezvoltarea software incepe prin scrierea si executarea testelor.

(User) Story – cerinte scrise in limbaj de utilizator cu un format special.

Extreme Programing insa nu se poate aplica cu usurinta pentru orice proiect. Daca sistemele It sunt complexe pot aparea dificultati la implementare. Mai multe detalii aici la  Agile Alliance

 

 

Lean pentru Software Development

Ce este Lean?

Lean inseamna sa dezvoltam un produs punand accentul pe cerintele clientului. Inseamna sa facem o analiza a modului de lucru si a cerintelor si sa eliminam activitatile care nu aduc valoare produsului (non value-added activity).  Lean pune accent pe priortizarea cerintelor care aduc cea mai mare valoare clientului si excluderea cerintelor care nu aduc valoare. Implementarea se face poate face iterativ si incremental.

In Lean valoarea produsului final poate fi crescuta prin: eliminarea pirderilor (waste), invatare din greseli, si livrarea produsului cat mai rapid. Cu toate ca  provine din industria auto, Lean este utilizat si  in dezvoltare software.

Principiile Lean 

  • Creare de produse de inalta calitate (zero bug-uri) in cel mai scurt timp, cu cea mai mare eficienta (zero waste). 
  • Optimizare intregul proces (Optimize the whole) – Pentru eficienta, si pentru a gasi solutii de optimizare, trebuie sa primim in ansamblu tot procesul de dezvolatare si sa gasim cum putem optimiza fiecare etaapa: analiza, arhitectura, dezvoltare, testare, etc. 
  • Eliminare pierderi (Eliminate waste) – Pierderile sau risipa de resurse (efort, timp, etc) nu adauga valoare produsului final . Echipa cauta metode sa elimine activitatile care nu aduc valoare (non-value adding)
  • Build Quality In –  “Facem bine din prima”.  Eliminam rework-ul avand grija ca tot ceea ce facem este bine facut: analiza, arhitectura, dezvoltare, testare.  Automatizam toate activitatile posibile, de exemplu testare automata. 
  • Livrare rapida (Deliver Fast) – Facem rapid solutii software si le dam la client pentru primi feedback si a-l putea incorpora in urmatoarea implementare.
  • Respect People –Fiecare persoana din proiect e importanta. 
  • Amanare decizii (Defer Commitment) –  luarea deciziilor de implementare solutie , dupa o intelegere a cerintelor si proiectului

Lean pentru Dezvoltare  Software 

Pentru dezvoltare software, Mary & Tom Poppendick au creat o lista cu cele 7 elemente care reprezinta pierderi (waste):

  • Partially Done Work – ex. cerinte netetstate complet
  • Extra Features – functionalitati in plus pe care clientul nu le-a cerut
  • Handoffs – trimiterea de livrabile partiale de la un rol la altul. Ex. Cerintele, de la Business Analyst la Dezvoltator, Bug-urile de la tester la dezvoltator, etc
  • Delays – intarzieri la implementare
  • Task Switching – lucrul in paralel pe mai multe activitati sau proiecte
  • Defects – bug-uri care exista si trebuie reparate, sau bug -uri care au fost gasite pe mediul de productie

Diferente intre Lean si Scrum:

  • Scrum are sprinturi, iteratii; lean este implementat printr-un proces continuu. Se preia cerinta, se implementeaza si cand este finalizata, se pune pe mediul de productie.
  •  Lean este un mod de gandire, o atitudine, un  mindset. Scrum este un framework de management de proiect cu reguli, roluri si livrabile

Va place articolul?

Share on Facebook
Share on Linkdin