Upload
mia-petric
View
239
Download
1
Embed Size (px)
Citation preview
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