Professional Documents
Culture Documents
godina
Mentor:
prof. dr Pere Tumbas
Student-autor:
Vladimir Vasovi
Sadraj
1. Uopte o softverskom inenjeringu i razliitim metodologijama razvoja softvera ..... 1
1.1. Pojam i istorijat softverskog inenjerstva ............................................................. 1
1.2. ivotni ciklus razvoja softvera .............................................................................. 2
1.3. CASE alati ............................................................................................................. 2
1.4. Kratak predled najznaajnijih metodologija razvoja softvera ............................... 3
1.4.1. Model vodopada (Waterfall) .......................................................................... 5
1.4.2. Model prototipskog razvoja ............................................................................ 5
1.4.3. Spiralni model ................................................................................................ 6
2. Uopte o agilnim metodologijama razvoja softvera .................................................... 6
2.1. Agilni Manifest ..................................................................................................... 7
2.1.1. etiri vrednosti Agilnog Manifesta ................................................................ 7
2.1.2. Dvanaest principa Agilnog Manifesta ............................................................ 8
2.2. Specifinosti pojedinih agilnih metodologija ........................................................ 9
2.4. Iskustva primene agilnih metodologija ................................................................. 9
3. Uopte o Scrumu ........................................................................................................ 10
3.1. Pojam i istorijat Scrum-a ..................................................................................... 10
3.2. Uloge ................................................................................................................... 12
3.2.1. Vlasnik proizvoda (Product Owner) ............................................................. 13
3.2.2. Scrum Master ............................................................................................... 13
3.2.3. Razvojni tim (Development Team) .............................................................. 13
3.3. Dogaaji .............................................................................................................. 14
3.3.1. Sprint ............................................................................................................ 14
3.3.2. Sastanak planiranja Sprinta (Sprinta Sprint Planning) ................................. 15
3.3.3. Dnevni Scrum sastanak (Daily Scrum) ........................................................ 16
3.3.4. Sastanak pregleda Sprinta (Sprint Review) .................................................. 16
3.3.5. Sastanak ostvrta na Sprint (Sprint Retrospective) ........................................ 16
3.4. Artefakti .............................................................................................................. 17
3.4.1. Lista zahteva proizvoda (Product Backlog) ................................................. 17
3.4.2. Lista zahteva Sprinta (Sprint Backlog) ........................................................ 18
3.4.3. Inkrement proizvoda (Product Increment) ................................................... 18
3.4.4. Grafikon sagorevanja (Burndown Chart) ..................................................... 19
3.5. Terminologija ...................................................................................................... 19
Odravanje
modifikacija softverskog reenja nakon
isporuke, korekcija greaka i poboljanje
karakteristika - nove verzije i rilizi (releases)
Testiranje
sistemsko testiranje (system testing) i
korisniko testiranje (user acceptance testing)
Dizajn
prevoenje korisnikih specifikacija u tehnike
specifikacije - arhitektonski dizajn visokog
nivoa i detaljan dizajn niskog nivoa - programa,
baze podata i korisnikog interfejsa
Implementacija
transformacija dizajna u programski kod
(coding), testiranje jedinica koda (unit testing) i
integraciono testiranje (integration testing)
su veliku popularnost stekle tokom 1970-ih i 1980-ih godina, objekte tokom 1990-ih, a
agilne tokom 2000-ih.
Takoe je mogua podela na kaskadni pristup i iterativni pristup razvoju softvera.[4]
Osnova razlika izmeu ova dva pristupa je nain podele projekta na manje delove. [4]
U kaskadnom pristupu (waterfall) projekat delimo po osnovu pojedinih aktivnosti
ivotnog ciklusa razvoja softvera.[4] Na primer, jednogodinji projekat moe imati
dvomesenu fazu analize, etvoromesenu fazu dizajna, tromesenu fazu programiranja
i na kraju tromeseno testiranje. [4]
U iterativnom pristupu projekat delimo na podskupove koje sadre odreene
funkcionalnosti softvera.[4] Na primer, godina moe da se podeli na tromesene
iteracije.[4] U prvoj iteraciji uzima se etvrtina zahteva i izvravaju se sve aktivnosti
ivotnog ciklusa proizvoda za to tromeseje: analiza, dizajn, programiranje i testiranje.[4]
Na kraju prve iteracije imamo softverski proizvod - inkrement - sa etvrtinom
potrebnih funkcionalnosti.[4] Zatim prelazimo na drugu iteraciju, i posle est meseci od
poetka rada na projektu imamo jo jedan inkrement i proizvod sa polovinom potrebnih
funkcionalnosti.[4] Nakon tree imamo tri etvrtine potrebnih funkcionalnosti, a nakon
etvrte sve potrebne funckionalnosti, nakon ega se realizacija projekta okonava.
Dakle, svakim inkrementom se dodaju nove funcionalnosti proizvodu, dok se postojee
zadravaju.
Kaskadni pristup se odnosi na model vodopada (waterfall model), dok se iterativni
pristup odnosi na ostale modele kao to su: modifikovani watefall modeli, model
prototipskog razvoja, spiralni model, RUP (Rational Unified Process), RAD (Rapid
Application Development) i sve agilne metodologije, ukljuujui i Scrum.
Generalno posmatrano, iterativni pristup se danas smatra "modernim" pristupom i
mnogo ee se primenjuje, dok se kaskadni pristup smatra "zastarelim" i uglavnom se
mnogo manje primenjuje nego nekad.[4] Osnovni razlog za naputanje kaskadnog
pristupa je tekoa utvrivanja da li se projekat u toku realizacije nalazi na pravom
putu.[4] Obino je to mogue utvrditi tek na kraju projekta kada su trokovi bilo kakvih
izmena veoma visoki.[4] Naime, u mnogim projektima dolazi do velike izmene zahteva u
kasnijim fazama realizacije projekta.[4] Kaskadni pristup podrazumeva zamrzavanje
zahteva u ranim fazama i ne dozvoljava promene, ali to nosi sa sobom rizik
isporuivanja proizvoda koji uopte ne odgovara potrebama korisnika. Pristalice
iterativnog pristupa smatraju da su izmene zahteva od strane korisnika neizbene, a
poto taj pristup dozvolja promene, verovatnije je da emo tako kreirati softverski
proizvod koji odgovara potrebama korisnika. Takoe, proizvod je upotrebljiv i pre
zavretka realizacije itavog projekta poto svaki inkrement zadovoljava odreeni
podskup korisnikih zahteva. Dakle, kod iterativnog pristupa postoji povratna sprega i
mogunost ugranje korisnikog iskustva u redefinisani proizvod na jeftiniji nain nego
kod kaskadnog pristupa.
finalnog proizvoda.[13]
Model prototipskog razvoja zapoinje prikupljanjem zahteva korisnika; zatim sledi brzi
dizajn; nakon toga, razvija se prototip koji slui za preiavanje zahteva; to
preiavanje je iterativno i ponavlja se dok prototip u potpunosti ne zadovolji zahteve
korisnika. [13] Tek kada prototip proe korisniku evaluaciju, tek tada se prelazi u
razvojnu fazu proizvoda.[13]
Vizuelno se predstavlja
spiralom
u
kojoj
su
definisane
etiri
faze
razvoja: planiranje, razvoj
alternativa i rizika, inenjering i procene korisnika.[13] Svakom iteracijom se
progresivno razvijaju kompletnije i sloenije verzije proizvoda.[13]
U prvoj iteraciji prikupljaju se zahtevi i planira projekat razvoja, vri se analiza rizika.[13]
Ukoliko postoje neizvesnosti u zahtevima, razvija se prototip zarad bolje spoznaje
zahteva.[13] Nakon to se donese odluka o daljem razvoju, obavlja se inenjering u
svakoj iteraciji i to odabranim modelom (model vodopada ili prototipski model)[13]. Po
zavretku inenjeringa, korisnik ocenjuje proizvod i daje sugestije za njegovu
modifikaciju.[13] Zatim zapoinje naredna iteracija. Svaka iteracija zahteva analizu
rizika i donoenje odluke "nastaviti" ili "ne nastaviti" dalji razvoj.[13] Ukoliko je rizik
isuvie visok, projekat se okonava i zadrava se u upotrebi proizvod nastao u
prethodnim iteracijama.[13]
Agilne metodologije su nastale jo sredinom 1990-ih, ali tada nisu nazivane "agilne",
ve "lagane" (lightweight) metodologije.[2] Pojavile su se kao kritika reakcija na
"robusne" (heavyweight) metodologije, koje su teko savladive i u kojima je proces
razvoja propisan do svakog, i najmanjeg detalja (to su pre svega metodologije bazirane
na waterfall modelu razvoja).[2] Naime, pobornici agilnog pristupa razvoja su smatrali
da su "robusne" metodologije isuvie birokratske i spore.[2] Zato su oni pokuali da nau
kompromis izmeu dve suprotne krajnosti - biti u potpunosti bez postupka i imati
previe postupaka.[2]
Drugim reima, iako cenimo znaaj inilaca predstavljenih na desnoj strani, stavke
prikazane na levoj strani vrednujemo vie.[14]
Znaenje stavki na levoj strani:
Pojedinci i interakcije - procesi treba da budu prilagoeni ljudima, a ne obruto.
Veoma su vani komunikacija i interakcija u timu. Preporuuje se korienje
besplatnih alata, a samo po potrebi kupovina licenci za skupe CASE alate.[13]
Primenljiv softver - primenljiv softver je korisniji za prezentovanje klijentima nego
obimna i detaljna dokumentacija.
Saradnja sa klijentima - zahtevi ne mogu odmah na poetku razvojna biti u
potpunosti definisani, zato je veoma vano stalno uee klijenata u svim
aktivnostima razvoja. Ugovor ne sme biti zamena za saradnju.
Reakcija na promene - poto su promene u toku projekta neminovnost, agilni razvoj
je fokusiran na brz odziv na promene. Predvianje daleko u budunost nije mogue,
zato planovi moraju biti fleksibilni i prilagodljivi promenama.[13]
Dakle, zakljuak je da tradicionalne metodologije vrednuju vie stavke na desnoj strani,
dok agilne vrednuju vie stavke na levoj strani.
Sline rezultate koji ukazuju na veu stopu uspenosti agilnih projekata u odnosu na
tradicionalne projekte pokazuju mnoge ankete sprovedene od strane konsultantske firme
"Scott Ambler & Associates".[16]
Agilni pristup nije prikladan za sve situacije.[12] Nametanje agilnog pristupa procesno
orijentisanim, nekooperativnim organizacijama, mirnim i staloenim timovima vodi u
neuspeh projekta i raspad tima.[12] Takoe, taj pristup nije za velike timove najuspenije se izvodi u timovima do deset lanova, na ta i ukazuje anketa "State of
Agile".[23]
Agilni razvoj se pokazao kao uspean u ekstremnim, kompleksnim, visokopromenljivim
projektima.[12] Okruenje u kojem taj pristup daje najbolje rezultate je organizaciona
kultura usmerena na ljude i saradnju.[12] Koliko je vana organizaciona kultura za
uspenu primenu agilnog pristupa ukazuju rezultati ankete "State of Agile" prema
kojima je nesposobnost promene organizacione kulture glavna barijera za dalje usvjanje
tog pristupa.[23]
3. Uopte o Scrum-u
3.1. Pojam i istorijat Scrum-a
Scrum je iterativno-inkrementalni agilni radni okvir (framework) za upravljanje
projektima razvoja sloenih softverskih proizvoda. On omoguuje isporuku poslovnih
10
vrednosti u najkraem roku. Projekti ostvaruju napredak kroz niz iteracija (Sprint-eva)
koji traju od 1 do 4 nedelje i u kojima se kreira inkrementalni softverski proizvod
(potencijalno isporuiv inkrement). Scrum se oslanja na samoorganizujue,
viefunkcionalne timove. Osim u razvoju softvera, nalazi primenu i u proizvodnji,
marketingu, logistici, obrazovanju i sl.[18] Razvili su ga Ken Schwaber i Jeff Sutherland
ranih 1990-ih godina.[9] Obojca su, inae, potpisnici Agilnog Manifesta iz 2001.
godine.[14] Scrum je prvi put javno prezentovan 1995. godine na konferenciji OOPSLA
(Object-Oriented Programming, Systems, Languages & Applications) u Ostinu, Teksas,
SAD.[9] [7]
Scrum je pojam preuzet iz ragbija i oznaava momenat kada se protivniki timovi
sakupljaju na gomilu i bore za posed lopte.[2] To predstavlja suprotnost tafetnim trkama
u kojima svaki takmiar deluje kao pojedinac, a ne kao deo tima. Iako nije akronim,
esto se pogreno pie velikim slovima - SCRUM.
Od svog prvog objavljivanja 1995. do danas, Scrum je prihvaen od strane velikog broja
softverskih kompanija irom sveta. Vie od hiljadu knjiga je objavljeno na temu Scruma[9], izmeu ostalih i "Agilni razvoj softvera sa Scrum-om" (Ken Schwaber i Mike
Beedle, 2002.) i "Agilno upravljanje projektima sa Scrum-om" (Ken Schwaber, 2004.).
Schwaber i Sutherland su autori i Scrum Vodia objavljenog 2010. godine i prevedenog
na 30 jezika, izmeu ostalog i na srpski.[9]
Schwaber je 2002. godine osnovao Scrum Alijansu ("Scrum Alliance") i kreirao
program "Cerfified Scrum Master" kurseva.[9] Napustio je Scrum Alijansu 2009. godine
da bi osnovao Scrum.org u cilju daljeg poboljanja kvaliteta i efikasnosti Scrum-a, pre
svega kroz program "Professional Scrum" kurseva.[9]
Scrum je danas najpopularniji agilni metod razvoja softvera, to potvruju izvetaji
"State of Scrum"[22] (objavljuje ga Scrum Alijansa) i "State of Agile"[23] (objavljuje ga
firma VersionOne) - prema prvom, zastupljenost Scrum-a je 40%, a prema drugom
55%.
Slika 8: zastupljenost Scrum-a(State of Agile)[23]
11
Scrum radni okvrir ine odgovarajue uloge, sastanci i artefakti kao i pravila koja ih
povezuju.[8]
Slika 10: Scrum radni okvir (framework)
3.2. Uloge
U Scrum-u postoje tri uloge: vlasnik proizvoda (Product Owner), Scrum Master i
razvojni tim (Development Team). Oni zajedno predstavljaju Scrum tim (Scrum
Team).[8]
Scrum timovi su samoorganizovani i viefunckionalni.[8] Samoorganizovanim timom ne
upravlja niko izvan tima, nego sam tim odluuje kako najbolje obaviti posao.[8]
Viefunkcionalan tim poseduje sve kompetencije za obavljanje posla bez zavisnosti od
12
drugih (izvan tima).[8] Ovaj model Scrum tima ima za svrhu veu flesibilnost,
kreativnost i efikasnost.[8]
Scrum timovi isporuuju proizvod iterativno i inkrementalno, maksimizirajui tako
mogunost dobijanja povratnih informacija (feedback).[8]
13
3.3. Dogaaji
Dogaaji u Scrum-u su Sprint-evi (iteracije) i Scrum sastanci. Trebali bi da se odravaju
redovno u cilju umanjenja potreba za dodatnim sastancima koji nisu deo Scrum-a.[8]
Vremenski su ogranieni (time-boxed), tako da svaki ima definisanu maksimalnu
duinu trajanja.[8]
Svaki dogaaj je ansa za nadgledanje i prilagoavanje neega (inspect and adapt).[8]
Dogaaji su osmiljeni s ciljem da omogue potrebnu transparentnost i nadgledanje.[8]
Izostanak bilo kojeg od Scrum dogaaja ima za rezultat smanjenu transparentnost i
proputenu priliku za nadgledanje i prilagoavanje.[8]
Slika 11: Scrum proces[22]
3.3.1. Sprint
Sprint (iteracija) je osnovna jedinica razvojnog vremena u Scrum-u.[15] To je srce
Scrum-a.[8] Vremenski je ogranien (time-boxed) i uobiajeno traje izmeu jedne i etiri
14
Sastanci
3.3.2. Sastanak planiranja Sprint-a (Sprint Planning)
Sprint se zapoinje Sprint Planning sastankom. Posao koji treba da se obavi tokom
Sprint-a planira se na ovom sastanku.[8] Ovaj plan se stvara saradnjom itavog Scrum
tima - Product Owner-a, Scrum Master-a i razvojnog tima.[8] Vremenski je ogranien na
najvie osam sati za jednomeseni Sprint.[8] Ako je Sprint krai, onda e i ovaj sastanak
trajati krae.[8]
Za realizaciju svih zahteva iz Product Backloga potrebno je mnogo vie vremena nego
to je duina trajanja jednog Sprint-a. Zato je potrebno selektovati najprioritetnije
zahteve za koje razvojni tim proceni da je realistino da ih moe realizovati u toku
jednog Sprint-a. Dakle, razvojni tim je taj koji odabira zahteve koje e realizovati u
tekuem Sprint-u.
Nakon to razvojni tim odredi zahteve koji mogu biti isporueni kao rezultat tekueg
Sprint-a, Scrum tim odreuje Cilj Sprint-a (Sprint Goal).[8] To je cilj koji e biti
ispunjen u okviru Sprint-a realizacijom zahteva iz Product Backlog-a i on daje smernice
razvojnom timu zato se kreira inkrement.[8]
Nakon to su odreeni Cilj Sprint-a i najprioritetniji zahtevi iz Product Backlog-a, koji
e biti realizovani u tekuem Sprint-u, razvojni tim odluuje o tome kako stvoriti
inkrement proizvoda tokom Sprint-a. Zahtevi, najee u formi korisnikih pria (user
stories), se analiziraju i ralanjuju na zadatke (tasks). Za svaki zadatak razvojni tim
procenjuje vreme potrebno za njegov zavretak, najee u asovima. U tu svhu se
15
pre sastanka planiranja Sprint-a (Sprint Planning).[5] Cilj ovog sastanka je nadgledanje i
prilagoavanje (inspect and adapt) procesa.[5]
Vremenski je ogranien na tri sata kod jednomesenog Sprint-a.[8] Za sluaj da je Sprint
krai, sastanak e biti krai.[8]
Tokom ovog sastanka, Scrum Master, Product Owner i razvojni tim diskutuju o tome
kako je tekao proces, ta je dobro raeno, a ta nije i identifikuju potencijalna
poboljanja.[5] Oni onda dalje planiraju kako e realizovati ta poboljanja u toku
narednog Sprinta.[5]
Jedan od najjednostavnijih, ali i najefektivnijih nain odravanja ovog sastanka je da
svaki lan Scrum tima odgovori na pitanje ta bi oni trebali da:[20]
ponu da rade
prestanu da rade
nastave da rade
Dakle, moe se sumirati da se sastanak pregleda Sprint-a (Sprint Review) fokusira na
proizvod, dok se sastanak osvrta na Sprint (Sprint Retrospective) fokusira na proces
kojim tim gradi taj proizvod.
3.4. Artefakti
Scrum radni okvir definie etiri artefakta:
se stavke sa manje detalja nalaziti na dnu liste.[8] Procenu razvojnog napora za svaku
stavku vri razvojni tim, dok procenu poslovne vrednosti vri Product Owner.
Prioritizacija podrazumeva da e se stavke koje imaju najviu poslovnu vrednost
nalaziti na vrhu liste, dok se e one koje imaju najmanju poslovnu vrednost nalaziti na
dnu liste.
Tokom sastanka planiranja Sprint-a Product Owner prezentuje Product Backlog stavke
razvojnom timu. Razvojni tim procenjuje koliko stavki sa vrha liste moe da realizuje u
predstojeem Sprintu. Te odabrane stavke se onda prenose u Sprint Backlog.
3.5. Terminologija
Scrum tim (Scrum Team) - ine ga: Scrum Master, vlasnik proizvoda (Product
Owner) i razvojni tim (Development Team).
Razvojni tim (Development Team) - uloga odgovorna za razvoj inkrementa proizvoda
u svakom Sprint-u.
Vlasnik proizvoda (Product Owner) - uloga koja reprezentuje interese klijenata.
Odgovorna za maksimizaciju isporuene poslovne vrednosti. Odrava listu zahteva
proizvoda (Product Backlog).
Scrum Master - uloga odgovorna za usvajanje i razumljivost Scrum procesa od strane
svih lanova Scrum tima.
Sprint - iteracija koja je vremenski ograniena na najvie 30 dana i nakon koje se
isporuuje inkrement proizvoda. Sastoji se iz sledeih sastanaka i aktivnosti:
19
20
21
Literatura
[1] Abrahamsson Pekka, Salo Outi, Ronkainen Jussi & Warsta Juhani, Agile softvare
development methods, review and analysis, 2002.
[2] Borjan Milo, Agilne i tradicionalne metodologije u razvoju informacionih sistema,
magistarski rad, 2010.
[3] urkovi Jovica, Zoran iri, Vuk Vukovi, Struktura analiza i dizajn, 2011.
[4] Fowler Martin, UML ukratko, kratak vodi korz standardni jezik za modelovanje, 2003.
[5] Keneth S. Rubin, Essential Scrum A Practical Guide to the Most Popular Agile Process,
2012.
[6] Royce W. Winston, Managing the Development of Large Software Systems, 1970,
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
[7] Schwaber Ken, SCRUM Development Process, 1995,
http://agilix.nl/resources/scrum_OOPSLA_95.pdf
[8] Schwaber Ken, Sutherland Jeff, Scrum Guide, 2013,
http://www.scrumguides.org/docs/scrumguide/v1/Scrum-Guide-US.pdf#zoom=100
[9] Schwaber Ken, Sutherland Jeff, Scrum Guides, 2013,
http://www.scrumguides.org/history.html
[10] Tomaevi Violeta, Razvoj aplikativnog softvera, 2012.
[11] Tumbas Pere, Objektni softverski inenjering, Materijal za ispit, 2008,
http://www.ef.uns.ac.rs/Download/objektni_si/28-01-08 materijal za ispit.pdf
[12] Tumbas Pere, Razvoj informacionih sistema, Literatura za usmeni ispit, 2012,
http://www.ef.uns.ac.rs/Download/ris/2012-06-05-literatura-usmeni.pdf
[13] Tumbas Pere, Razvoj informacionih sistema, Literatura za drugi teorijski test, 2012,
http://www.ef.uns.ac.rs/Download/ris/2012-05-15-literatura-2-teorijski-test.pdf
22
23