Agilna metodologija

Šta predstavlja agilna metodologija?

Agilno razvijanje softvera se bazira na  postepenom pristupu koji se ponavlja. Agilnost se odnosi na bilo koji proces koji se podudara sa konceptima Agile Manifesto. Naime priča datira još pre više od petnaest godina. U februaru 2001. godine, 17 programera koji su se bavili razvojem softvera sastali su se u gradu Juta, kako bi razgovarali o lakšim metodama razvoja software-a.

Nakon toga, oni su objavili Manifest agilnog razvoja softvera, uključujući četiri norme i 12 principa, koji objašnjavaju kako su došli do boljih načina za razvoj softvera i kako  pomoći drugima  da ih sprovedu. Agilni manifest inače predstavlja veliki kontrast tradicionalnom Project Manager’s Body of Knowledge (PMBOK) koji sadrži vodič i standarde.

Agilna metodologija, umesto detaljnog planiranja na početku projekta, je zapravo otvorena za promenu zahteva tokom vremena trajanja projekta i podstiče stalne povratne informacije od krajnjih korisnika. Timovi koji učestvuju u projektu, rade na ponavljanju tokom određenog vremenskog perioda, a ovaj rad je organizovan na osnovu backlog-a.

Backlog predstavlja listu karakteristika ili tehničkih zadataka koje tim održava i  oni su neophodni i dovoljni da se završi projekat. Prioriteti backlog-a se zasnivaju na vrednostima biznisa ili zahtevima klijenata. Cilj svakog ponavljanja je da se napravi radni proizvod.

U agilnoj metodologiji, menadžment kompanije podstiče timski rad, odgovornost i komunikaciju, pre svega licem u lice. Oni moraju da rade zajedno sa programerima kako bi uskladili proizvod sa potrebama korisnika i ciljevima kompanije.

12 principa agilne metodologije

Agilni Manifest navodi 12 principa kako bi pomogli timovima.

Principi su:

  1. Najveći prioritet je zadovoljstvo klijenta, to se ostvaruje što redovnijom isporukom boljeg, korisnijeg i kvalitetnijeg softvera.
  2. Zahteve prihvataju čak i tokom kasne faze razvoja. Agilni procesi omogućavaju uspešno prilagođavanje izmenjenim zahtevima što za rezultat ima prednost klijenata u odnosu na konkurenciju.
  3. Česte su dostave radnog softvera, od nekoliko nedelja do nekoliko meseci, daje se prednost kraćem vremenskom roku.
  4. Menadžeri i programeri moraju svakodnevno da sarađuju tokom celog projekta.
  5. Projekti se grade oko motivisanih pojedinaca. Pruža se ambijent i podrška koja im je potrebna i posao se prepušta sa poverenjem.
  6. Najefikasniji i delotvorniji metod prenošenja informacije do i unutar razvojnog tima je razgovor licem u lice.
  7. Radni softver je primarna mera napretka.
  8. Agilni procesi promovišu održivi razvoj. Sponzori, programeri i korisnici bi trebalo da budu u stanju da održavaju konstantan tempo nezavisno od perioda trajanja projekta.
  9. Kontinuirana pažnja na tehničkom kvalitetu i dobar dizajn pospešuju agilnost.
  10. Jednostavnost – umetnost dovođenja do najvišeg stepena posla koji nije potrebno uraditi  je od suštinske važnosti.
  11. Najbolje arhitekture, zahtevi i dizajn proizilaze iz timova koji su samoorganizovani.
  12. U redovnim intervalima, timovi razmišljaju o tome kako da postanu što efikasniji, a shodno tome prilagođavaju dalje postupke.

Prednosti agilne metodologije

Agilna metodologija se razvila od različitih lakših  softverskih pristupa tokom 90-ih godina i predstavlja odgovor projektnih menadžera na linearnu Waterfall metodologiju. Ona se fokusira na fleksibilnost, kontinuirano napredovanje  i brzinu.

U nastavku  su neke od najvećih prednosti agilne metodologije:

  • Promena je prihvatljiva: sa kraćim ciklusom planiranja, lako je prilagoditi i prihvatiti promene u bilo kom trenutku tokom projekta. Uvek postoji mogućnost usavršavanja i reprioretizacije backlog liste, puštajući timove da se upoznaju sa promenama na projektu u roku od nekoliko nedelja.
  • Krajnji cilj može biti nepoznat: Agilnost je veoma korisna za projekte gde krajnji cilj nije jasno definisan. Kako projekat napreduje, ciljevi će doći pre ili kasnije na videlo i razvoj se može lako prilagoditi ovim razvojnim zahtevima.
  • Brze i kvalitetne isporuke: Razbijanje projekta na ponavljanja omogućava timu da se fokusira na visoko-kvalitetni razvoj, testiranje i saradnju. Sprovođenje testiranja tokom svakog ponavljanja znači da se greške identifikuju i rešavaju mnogo brže.
  • Snažna timska interakcija: Agilnost ističe značaj česte komunikacije i interakcije licem u lice. Timovi rade zajedno i ljudi su u stanju da preuzmu odgovornost i rukovode određenim delovima projekta.
  • Klijenti su saslušani: Klijenti imaju mnogo mogućnosti da vide rad koji se isporučuje, dele svoj doprinos, i imaju stvarni uticaj na krajnji proizvod. Oni mogu da steknu osećaj vlasništva radeći blisko sa projektnim timom.
  • Kontinuirana poboljšanja: Agilni projekti podstiču povratnu informaciju od korisnika i članova tima tokom čitavog projekta, tako da se naučene lekcije koriste za poboljšanje budućih projekata.

Nedostaci agilne metodologije

Dok je nivo fleksibilnosti u agilnom okruženju obično pozitivan, takođe dolazi sa nekim kompromisima. Može biti teško da se uspostavi tačan datum isporuke, dokumentacija se može zanemariti, ili krajnji proizvod može biti vrlo različit od prvobitno namenjenog i planiranog.

U nastavku  su neke od najvećih nedostataka agilne metodologije:

  • Planiranje može biti manje konkretno: ponekad može biti teško da se odredi tačan datum isporuke. Jer agilna metodologija se zasniva na isporuci i projektni menadžeri često reprioretizuju zadatke, tako da je moguće da neke stavke prvobitno zakazane za isporuku ne mogu biti završene na vreme.
  • Tim mora biti upućen: Agilni timovi su obično mali, tako da članovi tima moraju biti veoma vešti u raznim oblastima. Oni takođe moraju da razumeju i osećaju se udobno u odabranoj agilnoj metodologiji.
  • Vreme posvećenosti programera: Agilna metodologija je najuspešnija kada je razvojni tim u potpunosti posvećen projektu. Aktivno učešće i saradnja je neophodna tokom agilnog procesa, što podrazumeva više vremena od tradicionalnog pristupa. To takođe znači da programeri moraju biti posvećeni tokom celog  trajanja projekta.
  • Dokumentacija se može zanemariti: Agilni Manifesto preferira radni softvera umesto sveobuhvatne dokumentacije, tako da neki članovi tima osećaju da je manje važno fokusirati se na dokumentaciju. Dok sveobuhvatna dokumentacija sama po sebi ne dovodi do uspeha projekta, agilni timovi treba da pronađu pravu ravnotežu između dokumentacije i razgovora.
  • Finalni proizvod može biti veoma različit: Početni agilni projekat možda neće imati konačan i definisan plan, tako da krajnji proizvod može izgledati mnogo drugačije nego što je prvobitno namenjen. Agilna metodologija je fleksibilna, nova ponavljanja se mogu dodati na osnovu povratne informacije od klijenta, što može dovesti do veoma različitog datuma isporuke softvera.

agilna metodologija

Agilni razvojni ciklus

Razvojni agilni ciklus je fleksibilan i uvek se razvija. Važno je napomenuti da ove faze ne bi trebalo da se dese u nizu i mnoge od njih se dešavaju paralelno.

  • Planiranje: Kada se ideja smatra održivom i izvodljivom, projektni tim se sastaje i radi na identifikaciji zahteva. Cilj ove faze je da razloži ideju na manje delove rada (karakteristike ili tehničke zahteve) a onda daje prioritet svakom od njih i dodeljuje im ponavljanja po potrebi.
  • Analiza zahteva: Ova faza podrazumeva mnogo sastanaka sa menadžerima, zainteresovanim stranama i korisnicima kako bi se identifikovali poslovni zahtevi. Tim mora da prikupi informacije koje će se koristiti i kako će se koristiti. Ovi zahtevi moraju biti merljivi, relevantni i detaljni.
  • Dizajn: Sistem i dizajn softvera se priprema na osnovu zahteva koji su se identifikovali u prethodnoj fazi. Tim mora da misli o tome kako će proizvod ili rešenje da izgledaju. Test tim takođe dolazi do izražaja sa test strategijom ili planom za postupanje.
  • Implementacija, kodiranje ili razvoj: Ova faza predstavlja stvaranje i testiranje karakteristika ili tehničkih zahteva i zakazivanje i raspoređivanje ponavljanja. Faza razvoja počinje sa ponavljanjem. Ovo ponavljanje propisuje osnove za razvoj, sa zadacima kao što je finalizacija ugovora, priprema okruženja i finansiranje.
  • Testiranje: Onda kada je razvijen kod, testira se da bi se uverili da proizvod zaista rešava potrebe klijenta. Tokom ove faze mora se uraditi testiranje jedinice, ispitivanje integracije, testiranje sistema i testiranje prihvatanja.
  • Isporuka: Nakon testiranja, proizvod se isporučuje klijentima na korišćenje. Međutim, isporuka nije kraj projekta. Kada korisnici počnu da koriste proizvod, oni mogu da naiđu na nove probleme sa kojim projektni tim treba da se bavi i da ih reši.

Metodologije koje se koriste za implementiranje agilnosti

Agile je framework i ima veliki broj specifičnih metoda u okviru Agile pokreta. U nastavku teksta su neke od metoda Agila:

  • Ekstremno programiranje (Extreme Programming – XP): Poznat kao XP, ekstremno programiranje je vrsta razvojnog softvera koji ima za cilj da poboljša kvalitet i odziv na konstantne zahteve klijenata. Principi XP uključuju povratne informacije, pod pretpostavkom jednostavnosti i prihvatanje promena.
  • Razvoj baziran na karakteristikama (Feature-driven development – FDD): Ovaj ponavljajući i postepen proces razvoja softvera se uklapa u industriju najboljih praksi u jednom pristupu. Postoji pet osnovnih aktivnosti u FDD: razviti sveobuhvatni model, izgraditi listu karakteristika ili tehničkih zahteva, plan po karakteristikama, dizajn po karakteristikama, i građenje softvera po karakteristikama.
  • Adaptivni razvoj sistema (Adaptive system development – ASD): Adaptivni razvoj sistema predstavlja ideju da projekti uvek treba da budu u stanju stalnog prilagođavanja. ASD ima ciklus od tri serije koje se ponavljaju: špekulisanje, sarađivanje i učenje.
  • Razvojni metod dinamičkih sistema (Dynamic Systems Development Method –DSDM): Ovaj Agilni framework se koristi za razvoj softvera i rešenja koja nisu striktno IT. Bavi se zajedničkim neuspesima IT projekata, kao što su prekoračenje budžeta, probijanje rokova, i nedostatak uključivanja u razvoj od strane klijenta ili korisnika. Osam načela DSDM su: fokus na poslovne potrebe, dostavljanje na vreme, saradnja, oko kvaliteta nema kompromisa, postepena gradnja od čvrstih temelja, razvijanje korak po korak, komuniciranje neprekidno i jasno, i demonstriranje kontrole nad razvojem.
  • Lean razvoj softvera (Lean Software Development – LSD): Kod ove metodologije mogu se uočiti sedam principa: eliminacija svega što je nepotrebno, pojačano učenje, odlučiti što je kasnije moguće, dostavi što je brže moguće, osnažiti tim, graditi integritet i sagledati celinu.
  • Kanban: Kanban, što znači “vizuelni znak” ili “kartice” na japanskom, je vizuelni framework za sprovođenje Agilnosti. Promoviše male, stalne promene u vašem trenutnom sistemu. Njegovi principi uključuju: vizualizaciju toka rada, ograničenje rada koji je u toku, upravljanje i povećanje protoka, eksplicitnu politiku , i stalno poboljšanje.
  • Cristal Clear: Deo Cristal porodice metodologija. Može se koristiti sa ekipama od šest do osam programera i koncentriše se na ljude, a ne na procese ili predmete. Cristal Clear zahteva sledeće: čestu isporuku korisnih kodova korisnicima, poboljšanja koja se reflektuju, i osmotsku komunikaciju.
  • Scrum: Scrum je jedan od najpopularnijih načina za implementaciju Agilne metodologije. To je model softvera koji prati niz uloga, odgovornosti i sastanaka koji se nikad ne menjaju. Sprintevi, obično traju od jedne do dve nedelje i omogućuje timu da isporuči softver redovno.

Ostale metodologije za implementiranje agilnosti

Postoji mnogo drugih praksi i framework-a koji se dovode u vezu sa agilnom metodologijom. One uključuju:

  • Agilno Modeliranje (AM): Agilno modelovanje se koristi za modeliranje i dokumentaciju softverskih sistema i predstavlja dodatak drugim agilnim metodologijama kao što su Scrum, Extreme Programming (XP) i Rational Unified Process (RUP). On može poboljšati modele sa kodom, ali ne uključuje programske aktivnosti.
  • Rational Unified Process (RUP): Kreiran od strane Rational Software Corporation, sektora IBM-a, RUP je prilagodljiv framework za razvijanje softvera. RUP-je kao online mentor koji pruža smernice, šablone i primere za razvoj programa.
  • Lean vs Agile: Lean razvoj fokusira se na eliminisanje aktivnosti koje ne daju nikakvu vrednost. Lean razvoj uzima principe iz Lean proizvodnje i primenjuje ih na razvoj softvera. Ovi principi su veoma slični agilnoj metodologiji, međutim Lean je jedan korak dalje. U fazi razvoja, vi birate, planirate, razvijate, testirate samo jednu karakteristiku pre nego što ponovite postupak za narednu karakteristiku.
  • Test-Driven Development (TDD): Oslanja se na kratke cikluse razvoja koji se ponavljaju. Prvo, programer piše (u početku neispravan) automatizovani test slučaj za novu funkciju i brzo dodaje test sa minimalnom količinom koda kako bi prošao taj test. Onda refactors novi kod do prihvatljivih standarda.
  • Scaled Agilni framework (SAFe) Skaliran agilni framework je veoma strukturiran način da se pomogne velikim preduzećima kako bi započeli sa usvajanjem agilne metodoligije. SAFe je zasnovan na Lean i Agile principima i bavi se složenim pitanjima u velikim organizacijama, kao što su arhitekture, integracije, finansiranje i uloge kada je skaliranje u pitanju.. SAFe ima tri nivoa: tim, program i portfolio.
  • Rapid Application Development (RAD): RAD pristupa razvoju softvera stavljajući veći naglasak na razvoj nego na planiranja zadataka. On sledi inkrementalni model, gde je razvijena svaka komponenta paralelno. Faze u RAD-u su: poslovno modeliranje, modeliranje podataka, proces modeliranja, generacija aplikacija, kao i testiranje i obrt.
  • Empirical Control Method: Sa agilnim razvojnim softverom, možete da koristite empirijski kontrolisan metod, što znači da se odluke donose zasnovano na osnovu onoga što posmatrate u toku projekta. Empirijski model kontrole procesa ima tri dela: vidljivost, inspekciju i adaptaciju.

Kako proceniti budžet za agilan projekat

Procenu troškova pred početak projekta uvek predstavlja izazov, bez obzira na to koja se metodologija u projektu koristi. Bez udubljivanja i planiranja unapred, mnogi projektni menadžeri nisu sigurni kako da izkalkulišu trošak i budžet jednog agilnog projekta.

Pre svega, savetuje se da se napravi burn-down grafikon i koristeći burndown stopu da se proceni koliko sprintova će biti u vašem projektu i kada će se projekat završiti. Zatim, potrebno je izračunati koliko će tim koštati na osnovu njihovih satnica.

Pomnožite satnicu svake osobe po broju radnih sati nedeljno i onda to pomnožite sa brojem nedelja u sprintu. Kada ste procenili početni budžet za svoj tim, možete dodati i ostale troškove, kao što su tehnologije, putovanja ili troškovi opreme.

Kako Agile utiče na softverske zahteve 

Agile pomaže razvojnim timovima da se fokusiraju na najvažnije zahteve klijenata što je brže moguće. Sa neprekidnim povratnim informacijama i čestim interakcijama licem u lice, projektni tim i menadžment razumeju i u skladu sa tim prioretizuju potrebne zahteve.

Agilni timovi koriste backlog  za upravljanje zahtevima. Pre nego što počne sledeći razvojni ciklus (obično traju jednu ili dve nedelje), tim definiše zahteve pre sledećeg ciklusa. Ovaj vid saradnje osigurava da se istaknu prioriteti. Takođe zahtevi su konstantno ažurirani tokom celog projekta.

Agile u okviru projekata koji nisu vezani za razvoj softvera

Dok je agilna metodologija tradicionalno stvorena za projekte koji se tiču prvenstveno i pre svega za razvoj softvera, može da se koristi i u mnogim drugim projektima i industrijama.

Važno je imati na umu da je agilan razvoj  softvera stvoren na principima Lean proizvodnje  i organizacionog učenja. Ove ideje nisu bile zasnovane na softveru za početak i mnoge prakse koje se praktikuju u agilnoj metodologiji, kao na primer stand-up sastanci i vizuelno upravljanje se može primeniti na bilo kojoj industriji.

Nema mnogo studija slučaja gde timovi koriste agilnu metodologiju za stvari izvan razvoja softvera, ali svakako se može navesti par interesantnih primera:

Kate Sullivan, korporativni advokat, član pravnog tima u kompaniji The Lonely Planet, transformisao je pružanje pravnih usluga u skladu sa agilnom metodologijom. Tim koristi bele table i kartice, jutarnje stand-up sastanke, prioritizaciju, nedeljna ponavljanja i regulni retrospektivni osvrt.

Agile se definitivno može primeniti na projekte van razvijanja softvera, samo treba naći pravi način i metod koje su u skladu sa vašim potrebama. Možete početi sa belim tablama, karticama, dnevnikom rada, stand-up sastancima, ili nedeljnim sastancima da vidite kako će vaš tim da reaguje.

Kako početi sa agilnom metodologijom

Jednostavan način da započnete sa implementiranjem agilne metodologije je da pre svega počnete sa sprovođenjem dnevnih stand-up sastanaka na kojima se ne sedi već stoji. Ovi sastanci su takođe poznati i kao dnevni scrum i bilo bi dobro da budu u vezi nekog projekta.

Dnevni stand-up sastanci se lako mogu sprovesti u bilo koju drugu metodologiju projekta koji već koristite jer ne zahtevaju nikakvu obuku ili prenos znanja.

Cilj je sastati se na istom mestu svaki dan na desetak minuta i omogućiti svima da ispričaju šta su radili dan pre, šta će raditi u toku dana i da li imaju nekih prepreka u radu i probleme koje bi podelili sa kolegama.

Ako želite kompletan prelazak na ovu metodologiju, trebalo bi pre svega da postavite sebi par pitanja:

  • Zašto moj tim i organizacija želi baš ovu promenu i metodologiju?
  • Šta do sada radimo dobro?
  • Šta do sada ne radimo dobro?
  • Šta želimo da poboljšamo?

Nakon odgovora na ova pitanja, možete sprovesti Agile procenu, gde ćete dobiti potpunu predstavu o ljudima, veštinama i tehnologijama koje se koriste i nakon toga odlučiti o daljim koracima. Svakako koji god put da izaberete, zapamtite da je agilna metodologija vrlo fleksibilna po svojoj prirodi. Ne postoji pogrešan ili pravi način da počnete sa njom.

Uradite ono što je  najbolje za svoj tim i za vas.

Srećno!

O autoru

Dušan Milošević

Curious digital analyst passionate about analytics, funk/disco music and new travel destinations. Always chasing the spark and searching for signal in the noise, combining technical know-how with digital marketing looking for actionable insights.
Proactive thinker, with the ability to adapt and learn quickly. Collaborative, with cross-functional team experience working with product, development and client-side teams.

1 komentar

This site uses Akismet to reduce spam. Learn how your comment data is processed.