agilni razvoj

5
  AGILNI RAZVOJ PROGRAMSKIH PROIZVODA AGILE SOFTWARE DEVELOPMENT Ivan Padavić, Initium Futuri ltd., Zagreb Marko Velić, Initium Futuri ltd., Zagreb Dejan Ljubobratović, Faculty of Teacher Education - University of Rijeka Sadržaj - U posljednje vrijeme u domeni softverskog inženjerstva veoma su popularne tzv. agilne metode izrade softvera.  Agilne metode svoje korijene vuku iz lean men adžmenta koji se pojavio u Japanu 80 -ih godina prošlog stoljeća. Ove metode  postavljaju principe akvizicije korisničkih zahtjeva, projektiranja i razvoja aplikacija i info rmacijskih sustava na način koji uključuje krajnjeg korisnika u puno većoj mjeri nego je to kod tradicionalnih metoda. Osim toga, agilne metode predlažu novi,   fleksibilniji način razmišljanja tj. „opušteniji“ odnos prema cjelokupnom projektu, a sve u svrhu elim inacije nepotrebne dokumentacije, smanjenja nesporazuma i povećanja uspješnosti projekata razvoja informacijskih sustava. U ovom radu opisani su ključni koncepti agilnih metoda razvoja softvera sa nagla  skom na SCRUM metodiku. Agilne metode nisu panacea  za uspješan razvoj softvera posebice u sferi financiranja agilnih projekata pa je u radu opi san i taj praktični problem.   Abstract    Recently in Software engineering, agile software de velopment methods are becoming more and more popular. Agile methods are coming from Japanese industrial lean management practices. These methods involve end user in the entire  software development process much more than in traditional waterfall approach. Besides that, agile methods introduce new  flexible project management concepts and e liminate unnecessary documentation. This paper presents key agile development  practices with emphasis on SCRUM. Agile methods are not panacea for successful project and practical issues are described.  1. Nastanak agilnih metoda Potaknuta nezadovoljstvom uzrokovanim velikim  postotkom neuspješnih IT projekata, skupina sastavljena od sedamnaest stručnjaka iz područja softverskog inženjerstva zagovornika agilnih metoda razvoja, sastala se 2001. godine u maloj kolibici u skijaškom odmaralištu negdje u planinama Utah-a kako bi pokušali naći rješenje za goruće probleme  postojećih metodologija programskog inženjerstva. Rezultat njihovog druženja je čuveni  manifest - Agile Manifesto. [1] Agilni manifest je dokument koji opisuje temeljne  postavke budućih agilnih metoda. Manifest možemo ukratko sažeti na četiri temeljne poruke:  1. Individualci i interakcija ispred procesa i alata 2. Softver koji radi ispred iscrpne dokumentacije 3. Suradnja s klijentom ispred pregovora o ugovoru 4. Reagiranje na promjenu ispred praćenja plana Ove poruke zapravo su prilagodba temeljnih koncepata lean menadžmenta softverskom inženjerstvu. Lean menadžment se pojavio u Japanu 80 -ih godina prošlog stoljeća i njegov je cilj eliminacija nep otrebnih aktivnosti i veća uključenost samih radnika u unaprjeĎenje procesa  proizvodnje. 2. Principi agilnih metoda Vizija - Jedan od temeljnih koncepata agilnog upravljanja  projektima koji se susreće u literaturi koja ga opisuje je vizija. Vizija je prema [2] kritični faktor uspješnosti u ranoj fazi projekta. Prije svega moramo imati viziju što radimo. Zatim, moramo imati viziju tko će biti uključen u projekt –  klijenti, proizvodni menadžeri, članovi projektnog tima i ostali dionici. I treće, članovi pr ojektnog tima moraju imati viziju kako će zajedno odraditi posao.  Špekuliranje - Iako riječ špekulacija ima odreĎeno negativno značenje u smislu nepromišljenog riskiranja ili manipulacija, izvorno značenje riječi je „Naslućivati/pretpostavljati nešto na te melju nepotpunih činjenica ili informacija“. U tradicionalnim metodama izrada softvera slijedi se unaprijed definirani plan, dok se u aginom  pristupu u fazi špekulacije okvirno procjenjuju zahtjevi i funkcionalnosti budućeg softvera, procjenjuje se količi na  posla za odreĎene zahtjeve, okvirni plan isporuke, rizici i strategije ublažavanja rizika te troškovi projekta.  Istraživanje - Faza istraživanja (kako se naziva ponegdje u literaturi) u principu predstavlja sami razvoj proizvoda. Istraživanje je riječ koja opisuje samu suštinu ideje agilnog razvoja. Naime, cilj je kreirati proizvod, ne prema nekom čvrsto definiranom planu, već uz suradnju krajnjeg korisnika kroz proces razvoja istraživati i otkrivati što je to što korisnik zapravo treba. Adaptacija - Agilni razvoj kao svoju prednost ima i mogućnost ranog gašenja projekta. Iako zvuči suludo kada kažemo da je to prednost, gašenje projekta u ranoj fazi može uštedjeti mnogo uzaludnog rada, novca i nezadovoljstva.  Naravno uvjet uza to je realnost u suočavanju s napretkom  projekta od strane klijenta i razvojnog tima. Kako bi se takva situacija uopće prepoznala, a što je još važnije naravno i izbjegla važno je pravovremeno uočavanje pogrešaka i zastranjivanja u projektu. Agilne metode razvoja sa svojim konceptima retrospektiva i redovitih revizija što je učinjeno uz praćenje sukladnosti obavljenog posla sa potrebama klijenta omogućavaju upravo to. Adaptaciju na promjene,  bilo da se radi o promjenama u okolini sustava za koji radimo

Transcript of agilni razvoj

5/17/2018 agilni razvoj - slidepdf.com

http://slidepdf.com/reader/full/agilni-razvoj 1/5

 

 

AGILNI RAZVOJ PROGRAMSKIH PROIZVODA

AGILE SOFTWARE DEVELOPMENT

Ivan Padavić, Initium Futuri ltd., Zagreb

Marko Velić, Initium Futuri ltd., Zagreb

Dejan Ljubobratović, Faculty of Teacher Education - University of Rijeka

Sadržaj - U posljednje vrijeme u domeni softverskog inženjerstva veoma su popularne tzv. agilne metode izrade softvera.

 Agilne metode svoje korijene vuku iz lean menadžmenta koji se pojavio u Japanu 80-ih godina prošlog stoljeća. Ove metode

 postavljaju principe akvizicije korisničkih zahtjeva, projektiranja i razvoja aplikacija i informacijskih sustava na način koji

uključuje krajnjeg korisnika u puno većoj mjeri nego je to kod tradicionalnih metoda. Osim toga, agilne metode predlažu novi,  

 fleksibilniji način razmišljanja tj. „opušteniji“ odnos prema cjelokupnom projektu, a sve u svrhu eliminacije nepotrebnedokumentacije, smanjenja nesporazuma i povećanja uspješnosti projekata razvoja informacijskih sustava. U ovom radu

opisani su ključni koncepti agilnih metoda razvoja softvera sa nagla skom na SCRUM metodiku. Agilne metode nisu panacea

 za uspješan razvoj softvera posebice u sferi financiranja agilnih projekata pa je u radu opisan i taj praktični problem. 

 Abstract  –   Recently in Software engineering, agile software development methods are becoming more and more popular. Agile

methods are coming from Japanese industrial lean management practices. These methods involve end user in the entire

 software development process much more than in traditional waterfall approach. Besides that, agile methods introduce new

 flexible project management concepts and eliminate unnecessary documentation. This paper presents key agile development 

 practices with emphasis on SCRUM. Agile methods are not panacea for successful project and practical issues are described. 

1. Nastanak agilnih metoda

Potaknuta nezadovoljstvom uzrokovanim velikim

 postotkom neuspješnih IT projekata, skupina sastavljena odsedamnaest stručnjaka iz područja softverskog inženjerstva

zagovornika agilnih metoda razvoja, sastala se 2001. godineu maloj kolibici u skijaškom odmaralištu negdje u planinamaUtah-a kako bi pokušali naći rješenje za goruće probleme

 postojećih metodologija programskog inženjerstva. Rezultat

njihovog druženja je čuveni manifest - Agile Manifesto. [1]

Agilni manifest je dokument koji opisuje temeljne

 postavke budućih agilnih metoda. Manifest možemo ukratkosažeti na četiri temeljne poruke: 

1.  Individualci i interakcija ispred procesa i alata

2.  Softver koji radi ispred iscrpne dokumentacije

3.  Suradnja s klijentom ispred pregovora o ugovoru

4.  Reagiranje na promjenu ispred praćenja plana 

Ove poruke zapravo su prilagodba temeljnih koncepata

lean menadžmenta softverskom inženjerstvu. Leanmenadžment se pojavio u Japanu 80-ih godina prošlogstoljeća i njegov je cilj eliminacija nepotrebnih aktivnosti i

veća uključenost samih radnika u unaprjeĎenje procesa proizvodnje.

2. Principi agilnih metoda

Vizija - Jedan od temeljnih koncepata agilnog upravljanja

 projektima koji se susreće u literaturi koja ga opisuje je

vizija. Vizija je prema [2] kritični faktor uspješnosti u ranojfazi projekta. Prije svega moramo imati viziju što radimo.Zatim, moramo imati viziju tko će biti uključen u projekt –  klijenti, proizvodni menadžeri, članovi projektnog tima i

ostali dionici. I treće, članovi pr ojektnog tima moraju imati

viziju kako će zajedno odraditi posao. 

Špekuliranje - Iako riječ špekulacija ima odreĎenonegativno značenje u smislu nepromišljenog riskiranja ili

manipulacija, izvorno značenje riječi je„Naslućivati/pretpostavljati nešto na temelju nepotpunih

činjenica ili informacija“. U tradicionalnim metodama izradasoftvera slijedi se unaprijed definirani plan, dok se u aginom

 pristupu u fazi špekulacije okvirno procjenjuju zahtjevi ifunkcionalnosti budućeg softvera, procjenjuje se količina

 posla za odreĎene zahtjeve, okvirni plan isporuke, rizici istrategije ublažavanja rizika te troškovi projekta. 

Istraživanje - Faza istraživanja (kako se naziva ponegdjeu literaturi) u principu predstavlja sami razvoj proizvoda.

Istraživanje je riječ koja opisuje samu suštinu ideje agilnograzvoja. Naime, cilj je kreirati proizvod, ne prema nekom

čvrsto definiranom planu, već uz suradnju krajnjeg korisnikakroz proces razvoja istraživati i otkrivati što je to što korisnik zapravo treba.

Adaptacija - Agilni razvoj kao svoju prednost ima i

mogućnost ranog gašenja projekta. Iako zvuči suludo kadakažemo da je to prednost, gašenje projekta u ranoj fazi možeuštedjeti mnogo uzaludnog rada, novca i nezadovoljstva.

 Naravno uvjet uza to je realnost u suočavanju s napretkom

 projekta od strane klijenta i razvojnog tima. Kako bi se takva

situacija uopće prepoznala, a što je još važnije naravno iizbjegla važno je pravovremeno uočavanje pogrešaka izastranjivanja u projektu. Agilne metode razvoja sa svojim

konceptima retrospektiva i redovitih revizija što je učinjenouz praćenje sukladnosti obavljenog posla sa potrebamaklijenta omogućavaju upravo to. Adaptaciju na promjene,

 bilo da se radi o promjenama u okolini sustava za koji radimo

5/17/2018 agilni razvoj - slidepdf.com

http://slidepdf.com/reader/full/agilni-razvoj 2/5

 

 proizvod ili o promjenama u shvaćanju konačnog projekta ivlastitih potreba od strane klijenta.

Zatvaranje - Zatvaranje projekta je važan elementdobrog projektnog menadžmenta bez obzira je li riječ ontradicionalnom ili agilnom pristupu upravljanju projektom.

Agilne metode u fazi zatvaranja projekta naglasak stavljaju

na dovršavanje svih otvorenih zadataka, finalizaciju nužnedokumentacije i najvažnije, na komunikaciju i odnose unutar tima.

3. Korisničke priče i prioriteti 

Korisničke priče (engl. User Stories) predstavljajuosnovnu jedinicu u planiranju, izradi i evaluaciji novog

 programskog proizvoda. Korisnička priča je pandanfunkcionalnostima u tradicionalnom pristupu razvoja. Naziv

„funkcionalnost“ zadržao se i kod praktičara agilnih metoda.Iako je sami naziv manje bitan, važno  je percipirati kako taj

novi naziv „korisnička priča“ u sebi sadržava suštinu

filozofije agilnog razvoja. Naime, za razliku od pukefunkcionalnosti koja kaže da se odreĎena radnja trebadogoditi u odreĎenom trenutku, korisnička priča je opis tko,što i zbog čega želi nešto učiniti. Iako se razlika na prvi

 pogled čini minorna, ona je itekako velika. Imajući ovo naumu, sama akvizicija zahtjeva (po tradicionalnom pristupu) je

 ponešto drugačiji proces. Praktičar agilne metode kojikomunicirajući s klijentom od njega saznaje njegove potrebe

i opisuje korisničke priče više ulazi u samu problematiku odtradicionalnog projektanta informacijskog sustava koji

„jednostavno“ popisuje željene funkcionalnosti. Elementikorisničke priče su: korisnička uloga koja će korist iti

funkcionalnost, cilj koji se postiže korištenjem

funkcionalnosti te razlog zbog kojeg se ta funkcionalnostkoristi. Primjer korisničke priče je: „Voditelj prodaje ima

uvid u broj prodanih proizvoda u odabranom razdoblju po

mjesecima kako bi mogao pratiti trendove.“ 

Kod definicije korisničkih priča izuzetno je važnakomunikacija sa krajnjim korisnikom tj. razumijevanje

njegovih potreba. Često se dogaĎa da krajnji korisnik ne posjeduje informatička znanja i da ne zna objasniti što muzapravo treba. Ukolik o se ne pridržavamo ovih načela vrločesto ćemo dobiti odgovor klijenta koji će glasiti poput:„Napravili ste što sam tražio, ali to nije ono što mi treba.“ 

Ako programer koji radi na funkcionalnosti samo pročita

korisničku priču i krene raditi bez komunikacije s klijentom,vrlo je vjerojatno da korisnik neće dobiti što želi. Unajboljem slučaju, dobit će što je napisano. 

Definiranje prioriteta u izradi informacijskog sustava

veoma je važno, posebice kod većih projekata. Na taj načinomogućava se svojevrsno rangiranje funkcionalnosti po

važnosti t j. vrijednosti za krajnjeg korisnika čime je pak omogućena isporuka programskog proizvoda u iteracijama.Upravo isporuke u iteracijama, gdje se nakon svake iteracije

razvoja korisniku isporučuje softver koji radi, temelj je svih

agilnih metoda. Prilikom definiranja prioriteta razvojni tim i

korisnik se moraju usuglasiti oko toga koliko će razina

 prioriteta imati i koje će funkcionalnosti ući u koju razvojnufazu. Lista prioriteta često je i prilog ugovoru koji se sk lapa

izmeĎu naručitelja i isporučitelja. U skladu sa filozofijomagilnih metoda i lista prioriteta je promjenjiva. To zapravo

znači da korisnik u suradnji s razvojnim timom može,ukoliko primijeti potrebu za tim, podignuti ili smanjiti

 prioritet odreĎene f unkcionalnosti sustava. Prilikom

definiranja prioriteta, razvojni tim i klijent moraju razmišljatio tome što donosi najveću vrijednost za klijenta i u skladu stim definirati koje će funkcionalnosti (opisane korisničkim

 pričama) ući u koju fazu. Prilikom definiranja prioriteta treba

 paziti na zamku koja se može dogoditi ukoliko se radi ovremenski kritičnim aplikacijama. Naime, praksa je pokazalada klijenti često žele isporučene funkcionalnosti što ranije tese u ranim fazama projekta definiraju dijelovi sustava koji

 podržavaju proces, a kontrola i praćenje se zanemaruju iuključuju u naknadne iteracije. Ukoliko se rezultat ranijeiteracije pusti u rad, a kontrola i praćenje se prepustesljedećoj iteraciji, postoji opasnost da se druga faza zbogmogućih promjena i dodatnih zahtjeva oduži i da se zbogtoga ne uspije realizirati na vrijeme. Zbog toga menadžmentmože ostati bez primjerice mjesečnog izvještaja koji može

 biti ključan za donošenje odluke, a njegova realizacija kasni. 

4. Karakteristike tima

Kako je jedna od temeljnih pretpostavki agilnog razvoja i

agilnog upravljanja projektom komunikacija, najvažnijakarakteristika tima je upravo sposobnost i volja za

komuniciranje s klijentom. TakoĎer, tim mora imatirazumijevanja za već spomenute probleme vezane uz

shvaćanje ICT-a i budućeg softvera od strane samog klijenta.

Što se tiče veličine timova, to naravno ovisi o samom projektu te tehničkoj zahtjevnosti i opsegu posla koji se trebaobaviti u zadanom vremenu. Agilna metoda XP je pogodna

za manje timove, dok je Scrum, primjerice, najpogodniji za

timove od pet do deset članova. Razmatrajući veličinu tima,na umu valja imati i prednosti i mane malih odnosno velikih

timova. Mali timovi su fleksibilniji, no problem nastaje kada

neki član tima iznenada napusti tim. Kako u agilnim

metodama ne postoji opsežna projektna dokumentacija,gubitak člana tima koji posjeduje mnoga znanja o projektu,

 predstavlja velik rizik. Isto tako, povećanje tima ne značinaravno i linearno povećanje brzine obavljanja nekog posla, asa sobom nosi veću potrebu za koordinacijom. 

Obzirom da su najčešći praktikanti agilnih metoda danasu industriji proizvodnje softvera male tvrtke tj. mali projektni

timovi, postavlja se pitanje što sa različitim ulogama unutar 

samog razvojnog tima. Same aktivnosti potrebne da bi serazvio programski proizvod nisu se značajno promijenile uodnosi na tradicionalne modele razvoja pa tako još uvijek 

 postoje poslovi koje obavljaju uloge kao što su: projektmenadžer, program menadžer, projektant, razvojni inženjer,

tester, dizajner itd. Obzirom na ograničenost ljudskih resursau malim timovima, jasno je da će se ove uloge često morati

 pojavljivati unutar jedne osobe. Zbog mogućeg svojevrsnog„sukoba interesa“ meĎu ulogama unutar pojedinca postojesmjernice koje uloge je poželjno, a koje nije poželjnokombinirati u istoj osobi. Primjer jedne takve preporuke dan

 je na slici 1.

5/17/2018 agilni razvoj - slidepdf.com

http://slidepdf.com/reader/full/agilni-razvoj 3/5

 

 

Slika 1. MSF Timski model [3]

5. Karakteristike klijenta

Sve agilne metode razvoja podrazumijevaju veliku

uključenost klijenta u sami proces razvoja. Neke agilne

metode to preporučaju većoj, a neke u manjoj mjeri, no bez

obzira koju metodu koristili u praksi, najčešće se pokazuje daklijent nažalost nije dovoljno uključen. Kod dogovaranjanovog projekta, veoma je važno klijentu objasniti prednosti

agilnog razvoja te ga pripremiti na sve što ga očekuje. U provoĎenju agilnog projekta nužne su neke karakteristikeklijenta poput sljedećih: strpljenje, spremnost na sudjelovanje

u razvoju, strpljivost, spremnost na plaćanje agilnosti projektnog tima.

TakoĎer važno je imati na umu da naručitelj rješenja nemora nužno biti i budući korisnik toga rješenja. tako se

 primjerice može dogoditi da se razvojni tim povodi zanaputcima naručitelja (sponzora) projekta, koji je često u

menadžerskoj ili vlasničkoj  poziciji, zanemarujući zahtjevekrajnjih korisnika (radnika), a da kasnije taj isti naručitelj plaćanje projekta uvjetuje prihvaćanjem od strane radnika –   budućih korisnika sustava/aplikacije. 

U praksi treba biti oprezan u pogledu očekivanjaklijenta/naručitelja te u pregovorima i pojašnjavanju

 problematike klijentu treba biti i realan jer u suprotnom, u

kasnijim fazama projekta, možemo očekivati pitanja poput:  “Ali vi ste to trebali uočiti…”, “Ali to je bio vaš posao…”,

“Ali nama je to jako skupo…”, “Ali nama je on jako

važan…”, “Ali rekli ste da će vam trebati toliko…” , “Alirekli ste da će to koštati toliko…”.

Još jedna važna aktivnost u agilnom upravljanju projektom je i upravljanje korisničkim očekivanjima.  Naime,

isporuka pojedinih dijelova programskog proizvoda se u

različitim fazama izrade odvija različitom dinamikom. U početnim fazama (iteracijama) razvojni inženjeri viševremena provode na definiranje i kreiranje arhitekture

sustava tj. korisniku nevidljivih dijelova sustava. Kasnije se

više vremena provodi izraĎujući funkcionalnosti za krajnjekorisnike. U skladu s tim i korisnikova percepcija procesa

razvoja je drugačija. Možemo u grubo konstatirati kako sukorisnici u inicijalnim fazama projekta nestrpljivi jer im se

čini da se puno vremena gubi, a ne vide rezultate, dok su u

kasnijim fazama pohlepni obzirom da stječu dojam kako zakreiranje funkcionalnosti za krajnjeg korisnika treba izrazito

malo vremena. U ovom potonjem se krije i opasnost od

nerazumijevanja korisnika koje se često manifestira i

gubitkom povjerenja jer mu se čini kako razvojni tim radinerealne procjene, a zaboravlja pritom vrijeme utr ošeno naizgradnju arhitektonske osnovice sustava. Ilustracija odnosa

aktivnosti izrade arhitekture i korisničkih funkcionalnosti

 prikazana je na slici 2.

Slika 2. Odnos aktivnosti izrade arhitekture i korisničkihfunkcionalnosti kroz vrijeme [4]

6. Procjenjivanje

Procjena opsega i vremenskog roka potrebnog zaobavljanje posla zamišljenog projektom je veoma važnaaktivnost u cijelom procesu agilnog razvoja. Početna

 procjena temelj je za planiranje resursa, očekivanja klijenta irazvojnog tima te pretpostavljenu cijenu samog projekta.

Osim početne procjene, u toku rada na projektu, razvojni timtrebao bi periodički procjenjivati ostatak posla obzirom naidentificirane promjene i nova saznanja.

Općenito, možemo konstatirati da danas u praksi postojedva temeljna načina procjenjivanja. Prvi način je vremenski iobično se izražava u jedinicama čovjek/dan ili čovjek/sat.Drugi način je bodovni i pretpostavlja identificiranje koliko

 je „bodova teška“ odreĎena funkcionalnost koju je potrebnoimplementirati u projektu. Kada govorimo o problemu

 procjenjivanja potrebno je razumjeti razliku izmeĎu točnost i preciznosti. Naime, ako programer kaže da mu je zaobavljanje odreĎenog posla potrebno 25,6 sati, to je vrlo

 precizna informacija. Ako je drugi programer rekao da će za

isti posao biti potrebno 2 dana, onda je to informacija sa

znatno manjom preciznošću. Uzmimo za primjer da je realno

za taj posao bilo potrebno 16 radnih sati (znači 2 dana), ondavidimo da je neprecizni procjenitelj bio zapravo puno bližerealnosti t j. njegova procjena je bila točnija. Iz primjeramožemo zaključiti kako bi nam točnost trebala biti važnija od

 preciznosti same procjene.

Pridjeljivanje tehničke kompleksnosti takoĎer može pridonijeti realnijoj procjeni članova razvojnog tima.Razmišljajući o tehničkoj kompleksnosti, procjenitelj možeidentificirati potencijalne probleme koji bi se mogli pojaviti

 bilo da je riječ o implementaciji ili novim znanjima koja je potrebno usvojiti kako bi se realizirala potrebna aktivnost

Kod procjenjivanja, preporuka je da svi članovi budućegrazvojnog tima daju svoje mišljenje tj. svoju vlastitu procjenu. Kod takvog načina procjenjivanja, voditelj projektamora na umu imati i individualne karakteristike procjenitelja.

5/17/2018 agilni razvoj - slidepdf.com

http://slidepdf.com/reader/full/agilni-razvoj 4/5

 

 Neki članovi tima po svojoj prirodi mogu biti pesimisti, a

neki optimisti. Postoje i matematičke tehnike kako se ovomože uključiti u konačnu procjenu i o tome će biti riječi unastavku.

Jedan od matematičkih metoda za procjenjivanje je ičuveni PERT (engl. Project Evaluation and Review

Technique). PERT dolazi iz područja mrežnog planiranja i jedan od njegovih elemenata je i matematička tehnika procjenjivanja dana sljedećom formulom: 

KPp predstavlja procijenjenu količinu posla, O označavaoptimističnu procjenu potrebnog vremena, N jenajvjerojatnije, a P je pesimistično vrijeme potrebno za

 procjenu. Praksa je pokazala da, kada se od članova tima kojitrebaju procijeniti odreĎeni posao zatraži tri vremena(optimistično, najvjerojatnije, pesimistično), procjenitelji dajutočnije procjene. Objašnjenje toga je poticanje takvog načina

 procjenjivanja na dublje promišljanje o problematici o kojojse radi. Ukoliko procjenitelj mora dati optimističnu procjenu,sam će sebi postavljati pitanja koji su to faktori koji bi mogliutjecati da se posao obavi u optimističnom roku. Ukoliko seradi o programerima, vjerojatno će procjenitelju kroz glavu

 proći pomisao o ponovnoj iskoristivosti nekog ranijenapisanog koda ili nešto slično. Ako se pak od procjeniteljatraži pesimistična varijanta, veća je vjerojatnost da će o soba

 promisliti o mogućim problemima i možda se prisjetiti višemogućih poteškoća negoli da se radi o procjeni koja zarezultat ima samo jednu vrijednost, a ne tri kako je to slučajkod PERT-a.

Kako se zapravo radi o vaganoj aritmetičkoj sredini trijuvrijednosti procjena, ta formula se može i korigirati ovisno oindividualnim karakteristikama procjenitelja. Tako se ovisno

o tome je li procjenitelj pesimist ili optimist, težište u formulimože staviti na optimistično tj. pesimistično vrijeme,množeći to vrijeme sa faktorom različitim od 1 i sukladnotome smanjiti faktor kojim se množi najvjerojatnije

 procijenjeno vrijeme.

7. Razvojni ciklusi

Razvojni ciklusi su u agilnim metodama

organizirani u cikluse koje se popularno nazivaju i iteracije(engl. Iteration). Iteracije obuhvaćaju aktivnosti razvojnogtima koje kao izlaz imaju programski kod tj. aplikaciju ili

sustav spreman za uporabu od strane klijenta. Aktivnosti

članova tima često se u agilnim metodama predstavljajuzadaćama (engl. Task). Nekoliko zadaća čini posao koji trebaodraditi kako bi se realizirala korisnička priča (engl. User Story). Nekoliko korisničkih priča može sačinjavatifunkcionalnost (engl. Feature). Dok skup funkcionalnosti

može predstavljati opseg posla koji se mora odraditi u jednojiteraciji. Nakon jedne ili više iteracija razvoja, može uslijeditiisporuka (engl. Delivery). Isporuka predstavlja preuzimanje

funkcionalnosti od strane naručitelja. TakoĎer, postoje i

agilne metode gdje ove granice nisu strogo definirane pa setako i po završetku rada na nekoj korisničkoj priči i potestiranju iste od strane razvojnog tima može odmah prijeći

na isporuku realiziranog dijela sustava te korisnik možeodmah početi s korištenjem. 

Primjer hijerarhije ciklusa i aktivnosti u nekom projektu:

Isporuka 1.

Iteracija 1.1.

Funkcionalnost 1.1.1.

Korisnička priča 1.1.1.1. Task 1.1.1.1.1.

Task 1.1.1.1.2.

Korisnička priča 1.1.1.2. 

8. Retrospektive

Restrospektive su sastavni koncept većine današnjihagilnih metoda za upravljanje projektima izrade softvera.

Restrospektive se izvode nakon svake iteracije (sprinta) i

 predstavljaju diskusiju u kojoj sudjeluju članovi razvojnogtima. Za vrijeme osvrta na proteklu iteraciju članovi tima

 pokušavaju odgovoriti na sljedeća pitanja:  „Što nije bilo u

redu?“, „Gdje smo pogriješili?“, „Kako ćemo izbjeći site probleme u budućnosti?“. 

9. Softver

Iako agilne metode u svojoj suštini minimiziraju kakodokumentaciju tako i alate (uključujući i softverske) većfokus stavljaju na ljude i procese, praksa je pokazala kako je

ipak dobro imati način praćenja provoĎenja agilnih metoda iosiguranje neke vrste repozitorija svih artefakata projekta u

digitalnom obliku. Razlozi za to su naravno

dokumentarističke prirode. Osim samog bilježenja svihaktivnosti, poželjno je i povećanje efik asnosti i osiguranje

konzistentnosti korištenjem nekog softverskog alata. Vrlo praktičan primjer u kojem bi korištenje softvera umjestoklasične ploče, samoljepljivih papirića i tabličnog kalkulatora

 bilo poželjno je slučajno otpadanje papirića s ploče zbog lošekvalitete ljepila, čime se stvara nekonzistentnost u„project/sprint backlog-u“. 

Svakako, pri odabiru softverskog alata za podrškuagilnom razvoju ne smijemo smetnuti s uma samu bit agilnih

metoda i dozvoliti da primjena softvera odvede u nepotrebnu

 birokratizaciju i otuĎenje samih članova tima jednih oddrugih. Upravo stoga, zahtjevi koji se postavljaju pred takav

softver su brzina i jednostavnost korištenja te fleksibilnost u

smislu prilagodbe individualnoj organizaciji/projektu tj.modifikaciji agilne metode koja se koristi.

10. Popularne agilne metode razvoja softvera

XP - Ekstremno programiranje predstavlja model razvoja

softvera posebno dizajniran za malene i srednje velike

razvojne timove, koji se susreću za ubrzanim promjenama uzahtjevima. [5] Ekstremno programiranje uvodi niz obrazaca

kojima se pospješuje razvoj softvera u uvjetima stalnih promjena zahtjeva. Neki do tih obrazaca su programiranje u

 paru, unit testiranje, refaktoriranje, konstantno mijenjanje i

 prilagoĎavanje arhitekture i kratke iteracije. [6] 

Scrum - Agilno upravljanje projektima primjenom Scrum

metodike izvorište ima u radu japanaca Takeuchi-a i Nonaka-

e i njihovih analiza najboljih praksi u kompanijama poput

5/17/2018 agilni razvoj - slidepdf.com

http://slidepdf.com/reader/full/agilni-razvoj 5/5

 

Fuji-Xerox, Honda, Canon i Toyota. [7] Scrum je metodika

razvoja softvera koja slijedi sve paradigme agilnog razvoja i

donosi obrasce za upravljanje timom i razvojnim ciklusom

 programskog proizvoda. Samo ime metodike dolazi iz

američkog nogometa i inspirirano je načinom na se kojitimovi u tom sportu dogovaraju prije akcije i kako malo pomalo kroz sprintove osvajaju teritorij. Razvojni ciklus u

Scrumu se naziva Sprint. Sprint je zapravo jedna iteracija urazvoju i obično traje od dva tjedna do pet tjedana. Scrum poput većine ostalih agilnih metoda podrazumijeva korištenjekorisničkih priča za planiranje i izvoĎenje projekta. Svekorisničke priče koje opisuju rad planiran za projekt čine tzv.„Project Backlog“, dok skup korisničkih priča koje će serealizirati tijekom jednog Sprinta čine „Sprint Backlog“, a

 primjer je dan na slici 3.

Slika 3. Sprint backlog [6]

Ostale metode - Osim XP-a i Scrum-a koji su danas

najrasprostranjenije agilne metode, u stručnoj i znanstvenojliteraturi mogu se pronaći i brojne druge metode za agilnoupravljanje projektima i to ne samo za industriju proizvodnje

softvera. Od agilnih metoda za proizvodnju softvera možemospomenuti FDD (engl. Feature Driven Development), TDD

(Test Driven Development), Kanban itd. no njihovo

opisivanje nadilazi okvire ovog rada. Osim navedenih i neki

stariji ustaljeni okviri upravljanja projektima razvoja softvera

u novije vrijeme dobivaju inačice za agilni razvoj. Tako primjerice i popularni Microsoftov MSF (engl. Microsoft

Solution Framework) ima inačicu za agilni razvoj. 

11. Zašto agilne metode nisu panacea za projektni

menadžment (pogotovo kod nas) 

U praksi se pokazalo kako prakticiranje agilnih metoda

uvelike može povećati postotak uspješnosti IT projekataobzirom da razvojni tim kroz intenzivnu komunikaciju s

klijentom i odgovaranje na promjene u zahtjevima koje

nastaju u tijeku provoĎenja projekta stječe bolji uvid ustvarne korisnikove potrebe i na taj način kreira softver koji

 je usklaĎeniji sa korisničkim očekivanjima. Iako agilnemetode imaju mnogo pozitivnih strana, postoje i problemi s

kojima se suočavaju praktičari. Ti problemi tiču se znanjastečenih u radu, obzirom da ne postoji opširnadokumentacija, velikih napora koje klijent mora uložiti,

obzirom da se od njega očekuje uključenost u razvoj,nedorečenosti u smislu pravne popraćenosti projekta,obzirom da ne postoje smjernice za stvaranje agilnog ugovora

te problem financiranja i osiguravanja projektnog budžeta,

obzirom da se od agilnog tima očekuje prilagoĎavanje promjenama u zahtjevima što neminovno znači i probijanjevremenskog okvira projekta. Postavlja se dakle pitanje  –  štosa rokovima i što sa cijenom izrade softvera? Slobodnomožemo reći sljedeće –  ako se radi o agilnom projektu i

agilnom timu, nužno je da i klijent bude agilan. Kako usmislu suradnje, tako i u smislu plaćanja vaše agilnosti. 12. Zaključak  

Agilne metode razvoja softvera naglasak stavljaju na većukomunikaciju i kreiranje korisnog programskog proizvoda, a

u drugi plan su stavljeni strogi okviri unaprijed definiranih

 projektnih faza i opširna dokumentacija. U praksi se pokazalok ako prakticiranje agilnih metoda uvelike može povećati

 postotak uspješnosti IT projekata obzirom da razvojni timkroz intenzivnu komunikaciju s klijentom i odgovaranje na

 promjene u zahtjevima koje nastaju u tijeku provoĎenja projekta stječe bolji uvid u stvarne korisnikove potrebe i na

taj način kreira softver koji je usklaĎeniji sa korisničkim

očekivanjima. Iako agilne metode imaju mnogo pozitivnihstrana, postoje i problemi s kojima se suočavaju praktičari. Ti problemi tiču se znanja stečenih u radu, obzirom da ne postoji

opširna dokumentacija, velikih napora koje klijent morauložiti, obzirom da se od njega očekuje uključenost u razvoj,nedorečenosti u smislu pravne popraćenosti projekta,obzirom da ne postoje smjernice za stvaranje agilnog ugovora

te pr oblem financiranja i osiguravanja projektnog budžeta,obzirom da se od agilnog tima očekuje prilagoĎavanje

 promjenama u zahtjevima što neminovno znači i probijanjevremenskog okvira projekta. Svi ovi, ali i neki drugi problemi

 prakticiranja agilnih metoda mogu biti predmet budućihistraživanja iz ove domene. 

LITERATURA 

[1] Agile Manifesto, http://agilemanifesto.org/

[2] Jim Highsmith. (2004). Agile Project Management:

Creating Innovative Products. Addison Wesley.

[3] MSF for Agile Software Development Process

Guidance:

http://www.microsoft.com/downloads/details.aspx?FamilyId

=9F3EA426-C2B2-4264-BA0F-

35A021D85234&displaylang=en

[4] Mountain Goat Software

http://www.mountaingoatsofware.com

[5] Beck, K. (1999). Extreme Programming Explained:

Embrace Change. Addison-Wesley Professional.

[6] Padavić, I. (2009). Postupak evaluacije teimplementacija agilnog modela razvoja softvera, diplomski

rad. Varaždin: Fakultet organizacije i informatike.  

[7] Sutherland, J., Viktorov, A., & Blount, J. (2006).

Distributed Scrum: Agile Project Management withOutsourced Development. Agile 2006, international

Conference. Mineapolis.