agilne metode razvoja softvera

14
 Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam Dr. Mijo Mirković Poslovni informacijski sustavi Agilne metode razvoja softvera seminarski rad Pula, 2015

Upload: mia-petric

Post on 12-Apr-2018

237 views

Category:

Documents


1 download

TRANSCRIPT

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 1/14

Sveučilište Jurja Dobrile u PuliFakultet za ekonomiju i turizam

Dr. Mijo Mirković

Poslovni informacijski sustavi

Agilne metode razvoja softvera

seminarski rad

Pula, 2015

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 2/14

Sveučilište Jurja Dobrile u PuliFakultet za ekonomiju i turizam

Dr. Mijo Mirković

Poslovni informacijski sustavi

Agilne metode razvoja softvera

seminarski rad 

Izradila:

Mia Petrić

Pula, 2015

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 3/14

SADRŽAJ

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 4/14

1. UVOD

Riječ agilno u prijevodu označava spremno na pokret, aktivnost, žustrost, hitrost. Agilne 

metode imaju korijene u japanskoj poslovnoj filozofiji (kanban) nastaloj prije više od 20 godina, 

a tek u današnje vrijeme postale su popularne u tvrtkama za razvoj softvera. Klasične metode 

 projektiranja informacijskih sustava, kao npr. vodopadni pristup, spiralni pristup i drugi koje su 

vremenski zahtjevne i orjentirane prema opsežnom dokumentiranju, u današnje vrijeme čestih 

 promjena pokazale su se nedovoljno učinkovitima. Kao novi način upravljanja projektima 

razvoja softvera pojavljuju se agilne metode.

Većina agilnih metoda pokušava smanjiti rizik (od programskih pogrešaka, prekoračenja 

vremenskih rokova, itd.) razvijajući softver u kratkim vremenskim okvirima, koji se nazivaju 

iteracije, a koji traju otprilike od jednog do četiri tjedna. Svaka iteracija je nalik na mali 

samostalni projekt razvoja programske podrške, i sadrži sve zadatke koji su potrebni da bi nastao napredak u funkcionalnosti programa: planiranje, analiza zahtjeva, dizajn, kodiranje, testiranje i 

dokumentiranje. Iako pojedina iteracija ne može jamčiti da će dodati dovoljno funkcionalnosti u 

 program da bi se moglo reći da je to gotov proizvod, projekt koji se razvija nekom od agilnih 

metoda nastoji proizvesti novu verziju programa nakon svake iteracije. Na kraju svake iteracije, 

 projektni tim vrši ponovnu evaluaciju prioriteta unutar projekta.

Slika 1 . Iterativni razvojni proces

Agilne metode naglašavaju važnost komunikacije u realnom vremenu, po mogućnosti 

licem u lice, a s druge strane stavljaju puno manje pažnje na pisanu dokumentaciju. Većina 

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 5/14

agilnih timova svrstano je u tzv. bullpen i u njemu se nalaze svi ljudi potrebni za dovršenje 

 programa. Najmanje što agilni tim može sadržavati su programeri i njihovi „klijenti“. Klijenti su 

ljudi koji definiraju konačan proizvod. To naravno mogu biti menadžeri, poslovni analitičari, 

ljudi iz drugih dijelova firme, i stvarni klijenti koji kupuju programsko rješenje.

U bullpen-u mogu biti i testeri gotovog sustava, dizajneri, pisci tehničke dokumentacije, 

te razni slojevi upravljačkog kadra. Ono što agilne metode također naglašavaju je program koji 

radi kao glavni pokazatelj napretka projekta. Kad se to kombinira s naklošću prema komunikaciji 

licem u lice, može se zaključiti da agilne metode proizvode vrlo malo pisane dokumentacije u 

usporedbi sa drugim metodama. To je do sada rezultiralo time da su agilne metode proglašavane 

„nediscipliniranim hakiranjem“ ili „kaubojskim kodiranjem“ (eng. cowboy coding).Sve što je 

ovdje navedeno predstavlja glavna obilježja agilnog razvoja programske podrške.

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 6/14

2. AGILE MANIFESTO

Agilne metode razvoja programke podrške su skup metoda, a ne jedan jedinstveni pristup 

razvoju programske podrške. 2001. godine, 17 bitnih ličnosti u svijetu agilnog razvoja (tada su se 

zvale „lagane metode“) našlo se je na skijalištu Snowbird u američkoj saveznoj državi Utah, 

kako bi raspravili i usuglasili se oko pitanja: „što je jedinstveno za sve te metodologije?“. Tada 

su stvorili takozvani „Agile Manifesto“, za koji se sada smatra da predstavlja osnovnu definiciju 

agilnog razvoja (ovo je prijevod, original se nalazi u Prilogu 1):

Deklaracija agilnog razvoja programske podrške

Mi nalazimo bolje načine razvoja programske podrške radeći to i pomažući drugima da to isto 

rade. Kroz taj posao spoznali smo da više vrijede:

● Pojedinci i interakcije nego procesi i alati

● Programska podrška koja radi nego sveobuhvatna dokumentacija

● Suradnja s klijentima nego pregovaranje oko ugovora

● Odgovor na promjene nego slijeđenje plana

Drugim riječima, iako postoji vrijednost u stvarima na desnoj strani, mi više cijenimo stvari 

na lijevoj strani.

Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin 

Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, 

Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland,Dave Thomas

© 2001, gore navedeni autori

Ova deklaracija se moţe slobodno kopirati u bilo kojem obliku, ali samo u svojoj cijelosti sve do 

kraja ove opaske.

Uz „Agile Manifesto“ dolaze i principi koji stoje iza toga. Principi koji se navode uključuju:

- zadovoljstvo klijenata

- zahtjevi za promjenama su dobrodošli u svakom trenutku

- naglasak na iteracijama

- na projektu rade razvojni inţenjeri i ljudi iz poslovnog područja koji su inicirali projekt

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 7/14

- osnova svakog projekta: motivirani ljudi

- naglasak na komunikaciji licem u lice

- osnovna mjera napretka je program koji radi

- odrţivi razvoj, stalan tempo razvoja

- tehnička potkovanost i dobar dizajn rješenja

- jednostavnost

- timovi koji se sami organiziraju

- povratne informacije o radu tima – poboljšanje efikasnosti

Sudeći prema listi principa koja je usuglašena unutar „Agile Manifesto“, agilne metode 

 programskog razvoja izgledaju vrlo poželjno.

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 8/14

3. POVIJEST NASTANKA AGILNIH METODA

U posljednjih 25 godina isproban je velik dio različitih pristupa u razvoju softvera, od 

kojih je samo nekoliko istinski zaživjelo. Agilne metode su se razvijale sredinom 90-ih godina 

20. stoljeća kao dio reakcije na tzv. visoko formalne metode (engl. high ceremony methods), kao 

što su CMM (engl.Capability Maturity Model), Prince i Rational Unified Process. Proces razvoja 

koji vuče porijeklo od ovih metoda je u određenim primjenama viđen kao birokratski i spor. 

Agilni pokret (engl. Agile Movement) u industriji softvera je započeo 2001. godine kada je 

grupa softverskih praktičara i konzultanta (Kent Beck, Alstair Cockburn i ostali) objavila "Agile 

Software Development Manifesto".

Uvođenje metodologije ekstremnog programiranja (engl. Extreme Programming) 1999 

godine, poznatije kao XP, je široko prihvaćena kao startna točka različitih pristupa agilnog 

razvoja softvera. Postoji, također, mnoštvo drugih metoda koje pripadaju zajedničkoj porodici 

agilnih metoda. Neke od tih metoda, odnosno metodologija su: Crystal Methods(Cockburn, 

2000. godine), Feature-Driven Development (Palmer i Felsing, 2002.godine), Adaptive Software 

Development (Highsmith, 2000. godine) i druge.

Slika 2 . Usporedba agilne metode sa tradicionalnom

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 9/14

4. SVOJSTVA AGILNIH METODA

 Najvažnija svojstva agilnih metoda su jednostavnost i brzina. U razvojnom radu, tim je 

koncentriran samo na funkcije koje su potrebne u prvoj ruci i na njihovu implementaciju, zatim 

na brzu isporuku, dobivanje povratne informacije od naručitelja te reakcije na primljene 

informacije. Glavno pitanje je što čini razvojnu metodu agilnom? To je slučaj kada je razvoj 

softvera:

1)inkrementalan (malene isporuke, s brzim ciklusima)

2)kooperativan (naručitelj i razvojni tim rade neprestano zajedno u bliskoj komunikaciji)

3)izravan (metoda je jednostavna za učenje i modificiranje te dostatno dokumentirana)

4)prilagodljiv  (u mogućnosti da se čine promjene u posljednjem trenutku).

Tipični ciklus projekta je u trajanju od jednog tjedna ili jednog mjeseca i na kraju svakog 

ciklusa se vrši ocjena projektnih prioriteta, što je karakteristika i inkrementalnih metodologija 

razvoja softvera i modernih teorija projektnog vodenja. Općenito, agilne metode nameću 

korištenje nepotrebnih troškova što je manje moguće, u formi principa, opravdanosti, 

izvještavanja i dopuštenja.

4.1 KARAKTERISTIKE AGILNIH METODA

Odabir odgovarajuće procedure nije toliko orijentiran kako bi zaustavio promjene rano u 

 projektu, već kako se bolje nositi s neminovnim promjenama tijekom čitavog životnog ciklusa 

 projekta. Agilne metode su zapravo dizajnirane kako bi:

● proizvele prvu isporuku u ranim tjednima projekta, kako bi se postigla "brza pobjeda" i 

 brza povratna informacija od kupca

● osmislile jednostavno rješenje tako da je manje toga za mijenjati i izrada tih promjena je  jednostavnija

● kontinuirano unaprijedile kvalitetu dizajna, čineći slijedeću iteraciju jeftinijom za 

implementaciju

● potakle kontinuirano testiranje za raniju i time manje skuplju detekciju neispravnosti

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 10/14

Osnovni principi agilnih metoda uključuju čistoću koda koji radi, efektivnost ljudi koji 

rade zajedno sa dobrom voljom te je fokus zapravo na timskom radu. Skup pristupa koji izviru iz 

agilnih procesa razvoja softvera su slijedeći:

● ljudima je stalo da razvojni projekt uspije

● čim manje dokumentacije (ako je moguće)

● komunikacija o kritičnim stvarima

● alati za modeliranje nisu korisni kao što se obično misli

4.2 UPOTREBA AGILNIH METODA

Agilni razvoj dobro funkcionira za male (<10 razvojnih inţenjera) timove koji su locirani 

na jednom mjestu. Agilni razvoj naročito je preporučljiv za timove koji se suočavaju sa 

nepredvidljivim ili brzo mijenjajućim zahtjevima. Iako postoje dobra iskustva timova koji su 

uspjeli koristeći agilni razvoj i ne spadaju u gore navedene skupine, prema postoji premalo 

takvih izvješća da bi se iz njih moglo povući čvrste zaključke.

Primjenjivost agilnih metoda je upitna kod sljedećih scenarija: veliki razvojni timovi 

(>20 razvojnih inţenjera) distribuirani razvoj (cijeli tim nije smješten na jednoj lokaciji) razvoj 

 programske podrške od čijeg korištenja ovise ţivoti razvijena je kultura zapovijedanja i kontrole 

unutar kompanije

4.2.1 BOHEM-OV I TURNER-OV PRISTUP BAZIRAN NA ANALIZI RIZIKA

Barry Boehm i Richard Turner u [3] predlaţu korištenje analize rizika kako bi se donjela 

odluka o korištenju prilagodljivih („agilnih“) ili predvidljivih („planskih“) metoda. Autori 

navode da svaka strana spektra ima svoje temelje:

Tablica 1. Usporedba temeljnih osobina agilnih i planskih metoda

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 11/14

5. METODE RAZVOJA AGILNIH METODA

Agilne metode predstavljaju samo mali podskup svih agilnih metoda koje se danas mogu 

susresti. Neke od ostalih češće korištenih metoda su: Crystal porodica metoda, RUP (Rational 

Unified Process), DSDM (Dynamic Systems Development Method), ASD(Adaptive Software 

development), Open Source Software Development, agilno modeliranje i pragmatično 

 programiranje. Zbog ograničenosti prostora, te metode ovdje nisu opisane, ali za njihove 

osnovne osobine najbolje je pogledati. Prilikom usporedbe bilo kakvih metoda, postavlja se 

 pitanje do kolike mjere je određena usporedba subjektivna? Ovdje će se nastojati koristiti 

objektivan način usporedbe, na način da se tablično pobroje osobine koje određena metoda ima. 

U sljedećoj tablici radi se usporedba metoda po tri kriterija: ključne osobine, specijalne osobine i 

nedostaci. Ključne osobine označavaju osnovne postupke i osobine određene metode. Specijalne 

osobine označavaju jednu ili više osobina koje određena metoda ima a ostale nemaju.

Tablica 2 . Usporedba temeljnih osobina agilnih metoda

FDD   ne pokušava biti cjelokupno rješenje za razvoj programske podrške, nego se 

fokusira na jednostavni pristup od 5 koraka, koji se bazira na uočavanju, dizajniranju i implementaciji osobina. FDD pretpostavlja da su određene stvari u smjeru nastanka projekta 

odrađene, te zbog toga ta metoda ne pokriva rane faze projekta.

XP   predstavlja metodu koja gleda na problem iz kuta prakse. Sastoji se od određenog 

 broja u praksi prokušanih postupaka te je zbog toga vrlo vrijedna.

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 12/14

Scrum  predstavlja metodu upravljanja projektima koja se oslanja na samoorgazirajuće 

razvojne timove. Ti timovi rade nove verzije sustava u 30-dnevnim ciklusima koji se nazivaju 

Sprintovi. Integracija i test prihvata novog sustava nisu opisani unutar metode.

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 13/14

5. ZAKLJUČAK

U današnje doba razvojni softverski inženjeri sve manje programiraju planski. Sve se 

više pribjegava novim metodama, koje se pak više koncentriraju na ljude, funkcionalne 

 programe, klijente i fleksibilnost nego na procese, dokumentaciju, pregovaranje i slijepo 

slijeđenje zacrtanog plana. Sve te karakteristike imaju opisane agilne metode. Agilne metode su 

izvrstan pomoćni alat u mnogim situacijama. Problem sa agilnim metodama je što ih se 

 pojavljuje sve veći i veći broj. Programeri bi se mogli (ako već i nisu) naći usituaciji da ostanu 

zbunjeni sa tolikim izborom metoda. Koju metodu odabrati za konkretan problem? Zašto se u 

svim agilnim metodama srodni postupci ne nazivaju jednako? Zašto ne postoje empirijska 

istraživanja o korištenim metodama u razvoju programske podrške? Sve su to pitanja koja si 

 programer može postaviti, a trenutno na ta pitanja ne postoje konkretni odgovori.

7/21/2019 Agilne metode razvoja softvera

http://slidepdf.com/reader/full/agilne-metode-razvoja-softvera 14/14

 6.LITERATURA

1. Agile Software Development, Wikipedia

2. Pekka Abrahamsson, Outi Salo, Jussi Ronkainen, Juhani Warsta, Agile Software Development 

Methods, VTT Publications, ESPOO, 2002.

3. http://www.xprogramming.com

4. http://www.zpr.fer.unizg.hr