Professional Documents
Culture Documents
Skram je pun iskustvenih trikova i mehanizama koji odravaju koncentraciju na sutinu problema
i ne dozvoljavaju degradaciju organizacije, kao to je plaanje 100 din za kanjenje na dnevni
skram sastanak, ili stajanje na sastanku. Jezgro skram metodologije ine odreeni elementi i
prakse, a to su:
Uloge i odgovornosti
Sprint
pedesetdevetominutni skram
Skram tim broji 5-10 lanova od kojih su obavezni jedan vlasnik proizvoda (engl. product owner)
koji je predstavnik klijenta, skram master koji je voa tima i ostali lanovi tima koji mogu biti
specijalisti za pojedine oblasti razvoja.
Kao projektni okvir koristi se za realizaciju razliitih razvojnih procesa. Najee se kombinuje sa
razvojem pomou ekstremnog programiranja, ili drugih agilnih metoda.
Ako elite da projekt ima imalo ansi za uspjeh potrebno je imati dobro razraenu
metodologiju. Metodologije se ugrubo mogu podijeliti na dvije
skupine: standardne i agilne. Standardne metodologije se jo nazivaju
i waterfall (slap), jer se odvijaju po fazama, gdje jedna slijedi drugu i nema iteracija.
Mnogi kritiari smatraju da je ova metodologija, naroito kada se radi o projektima
razvoja softvera, vrlo loa, a poneki su skloni rei i nemogua. Objanjenje nalaze u
tome da se u toj metodologiji mora precizno isplanirati i najmanji detalj i funkcionalnost
prije nego to se krene u razvoj te da su kasnije promjene nemogue ili ako se rade, vrlo
skupe, a timovi koji rade na takvim projektima demotivirani. Agilne metodologije (kao
to je to npr. Scrum ili Kanban) s druge strane govore o tome da su promjene tijekom
razvoja poeljne i konstantne.
zadnjem sprintu? i to uiniti da bi radili bolje?. Nakon toga ciklus zapoinje ponovo
novim Sprint Planningom.
Kada govorimo o standardnom voenju projekata prvo voditelj projekta, ako je imalo
pametan i profesionalan zajedno s timom, prikuplja i analizira zahtjeve koje treba
izvriti. Nakon toga se ti zahtjevi dokumentiraju u tzv. Specifikaciju funkcionalnosti i,
nakon ovjere naruitelja, kree se s radom. Ovdje neu opisivati sve procese, procedure
i podruja znanja (kao to je to npr. Scope Management ili Risk Management) koji su
prisutni kod ove metodologije.
platiti, dakle i konaan budet se ne moe precizno odrediti. Vjerovali ili ne, to je ispravan
nain rada i sve vie tvrtki naruitelja su to prepoznale!
2.
3.
4.
5.
6.
7.
8.
Ureeni kaos
Scrum esto zovemo metodologijom, ali ako elimo biti posve precizni, Scrum
to nije. Scrum je okvir (framework) metodologije razvojnog procesa i za razliku
od nekih drugih agilnih metodologija kao to su XP ili Crystal, Scrum ne
definira detalje procesa ve daje okvir unutar kojega tim stvara proces
prilagoen sebi, odnosno proces ija je karakteristika konstanto usavravanje
i prilagodaba timu koji ga provodi.
Kao i sve druge agilne metodologije, Scrum je
inkrementalni i iterativni pristup razvoju
softvera. Inkrementalni razvoj predstavlja
razvoj softvera korak po korak, dok iterativni
nain predstavlja strategiju vremenskog planiranja u kojem se softver kroz
svaki definirani period vremena dodatno usavruje. Osnovna vremenska
cjelina Scruma jest sprint. Sprint je zaokruena jedinica razvojnog procesa
koja najee traje 30 kalendarskih dana. Unutar svakog sprinta, Scrum
prolazi kroz sve faze razvojnog procesa. Planiranje, programiranje, testiranje i
isporuka ponavljaju se kroz svaki slijedei sprint. Na kraju svakog sprinta
razvojni tim isporuuje zaokrueni dio proizvoda, odnosno potencijalno
isporuiv inkrement proizvoda. Razbijanjem razvojnog procesa na sprintove,
Scrum smanjuje rizik od isporuke loeg softvera, softvera koji nee zadovoljiti
trite, a ujedno se time i lake prilagouje novim i promijenjenim zahtjevima
korisnika koji su neizbjeni. No, Scrum se ne zaustavlja na tome, pa i svaki
pojedini sprint dodatno razbija na jo manje dijelove koji traju tono 24 sata, a
poinju i zavravaju dnevnim scrumom. Dnevni scrum jedna je on malobrojnih
obaveza cijelog razvojnog tima, a nuan je da bi se postigla unutarnja
transparentnost u timu. To je stand-upsastanak na kojem svi lanovi razvojnog
tima u neformalnom okupljanju od 15-ak minuta odgovaraju na tono 3
pitanja:
1. to je uraeno juer?
2. to e se raditi danas?
3. Kakve nam prepreke stoje na putu?
Za provoenje dnevnog scruma kao i cijelog razvojnog procesa odgovoran je
Srcum master. Scrum master donekle odgovara ulozi voditelja projekta, iako
Scrum strogo gledajui ne poznaje ulogu voditelja projekta. Scrum nain
razvoja softvera u svojoj je biti samoorganizirajui proces te kao takav ne
zahtjeva ulogu voditelja, barem ne u onom smislu kako se tradicionalno takva
uloga opisuje. Scrum master ima ulogu prvenstveno kontrolirati proces, ali ne
i ljude u timu. Umjesto da rasporeuje posao i govori svim lanovima tima to
da rade, Scrum master nadzire proces i brine se o tome da se on potuje.
Samoupravljanje na dijelu
svih svojstava koje treba ugraditi u proizvod sortiran prema prioritetu kako ih
vidi sam korisnik. Na vrhu product backolga nalaze se najvanija svojstva, a
na dnu ona sa najmanjim prioritetom. Tijekom sastanka, tim procjenjuje koliko
svojstava iz product backlogamoe staviti u sprint backlog. Na osnovi sprint
backloga sastavljaju se ciljevi sprinta, a sastanak zavrava pristankom cijelog
tima da preuzme odgovornost i obvee se ispuniti te ciljeve u iduih 30 dana.
Tijekom trajanja sprinta izbjegava se svaka mogunost vanjskog utjecaja na
ciljeve sprinta, a svi eventualni zahtjevi za promjenama dodaju se u product
backlog i predmet su rasprave za slijedei sprint. Scrum zahtjevima korisnika
kae Da, ali ne u ovom sprintu!. Tijekom sprinta lanovi razvojnog tima
imaju samo dvije obaveze, ispuniti ciljeve sprinta i redovito dolaziti na dnevne
scrum sastanke. Na kraju uspjeno zavrenog sprinta pakira se isporuevina,
odnosno inkrement sprinta te se prezentira nositelju proizvoda (product
owner), korisnicima i drugim zainteresiranim stranama. Nakon to se napravi
retrospektiva sprinta i unesu podaci u product backlog, sprint je slubeno
zavrio, a time i slijedei poeo. Sprint traje uvijek jednako vrijeme te nije
odreen niti resursima niti planiranim zadacima nego jedino dogovorenim
vremenskim razdobljem. Vrijeme je jedina nepromjenjiva konstanta u
planiranju sprinta.
Odnos sa korisnicima
Scrum u bitovima
alata lako mogu prilagoditi Scrumu. Microsoft ALM sustav baziran na Microsoft
Team Foundation Serveru (TFS) lako se prilagoava raznim razvojnim
procesima. Proces je u Microsoft TFS-u definiran metodolokim predlokom, te
dolazi sa ve nekoliko predefiniranih predloaka za neke od razvojnih procesa.
Najblii Scrumu je MSF Agile predloak koji se u nekim segmentima poklapa
sa Scrumom. Dodatno postoje vanjski predloci koji se mogu dodati u sustav,
a meu takvima je i nekoliko onih koji su upravo Scrum metodoloki predloci.
Najpoznatiji je Scrum for team systempredloak firme EMC Consulting, a od
nedavno je i Microsoft izdao vlastiti Microsoftov Visual Studio Scrum,
predloak za TFS izraen od strane Microsoft razvojnog tima. Oba predloka
omoguit e vam provoenje Scruma kroz Microsoft ALM i oba dva predloka
su potpuno besplatna. EMC predloak sadri sve navedene artefakte i principe
Scruma, ali je relativno kompleksan za koritenje. Microsoftov je jednostavniji,
ali i siromaniji. Ako ste novi u Scrumu svakako e vam u prilagodbi na proces
pomoi alat koji e vas voditi, a s vremenom kada sazrijete poeljet ete u
njega ugraditi neto svoje, pravila ili ideje prilagoene vaem razvojnom timu.
Metodoloki predloci u TFS-u to vam omoguuju, tovie predvieni su za
nadogradnje i mijenjanje. U ostalom, jedan od principa Scruma i jest trajno
usavravanje procesa, te kao to vas Scrum potie da budete kreativni i
spremni na promjene i njima se prilagodite, tako je i sam Scrum proces
predvien da se mijenja i prilagouje vama i vaem timu. Osnove Scruma su
jednostavne te je najbolji nain da ga usvojite taj da ga ponete primjenjivati,
a zatim ga usavravate iterativno i inkrementalno. Scrum trenutno koriste
gotovo sve najvee svjetske softverske kompanije, meu njima i divovi
industrije kao to su Microsoft, IBM i SAP. Ako va razvojni tim jo ne ivi
Scrum, moda se moete barem u tome ugledati na njih i krenuti u va prvi
sprint.
Agilni manifest
Scrum Pojmovnik
Sprint osnovna vremenska radna cjelina Scruma u kojoj nastaje novi
inkrement proizvoda. Najee trajanje sprinta je 30 kalendarskih dana.
Product backlog popis svojstava koji se oekuju od konanog proizvoda.
Svojstva u popisu rasporeena su po prioritetu od najvanijih prema manje
vanim.
Product backlog element jedinini element iz Product backloga. Svaki
element predstavlja jedno svojstvo proizvoda opisano na nain da njegova
implementacija vremenski stane u okvir jednog sprinta. Tijekom izvoenja
sprinta backlogelementi se dalje razbijaju na zadatke i dodjeljuju lanovima
razvojnog tima.
Sprint backlog popis svojstava preuzet iz product backlogakoji su predmet
implementacije jednog sprinta.
Sprint burndown dijagram grafiki prikaz procjene preostalog posla kroz
vrijeme jednog sprinta. Prikazuje gdje se nalazi razvojni tim u odnosu na
zadatke planirane za tekui sprint.
Product owner nositelj proizvoda. Osoba koja donosi konane odluke
korisnika ili naruitelja softverskog rjeenja. Nositelj proizvoda direktno
sudjeluje u definiranju prioriteta elemenata u product backlogu.
Sprint master osoba odgovorna za provoenje scruma u timu. Uloga
najslinija voditelju projekta u klasinim metodologijama. Scrum master
koordinira komunikaciju izmeu nositelja proizvoda i razvojnog tima.
Dnevni Scrum dnevni sastanak razvojnog tima u trajanju od 15 minuta na
kojem lanovi razvojnog tima izmjenjuju kratke informacija o tome to rade i
to planiraju raditi u iduem danu. Takoer ako imaju kakve prepreke u radu,
iznose ih na sastanku. Scrum master zaduen je da se pobrine oko toga da se
te prepreke uklone.
Task Zadatak. Osnovna jedinica rada. Nakon definicije user storya, potrebno
je definirati zadatke po kojima e se on implementirati, te takve zadatke
dodijeliti lanovima tima. U svakom trenutku jedan zadatak moe pripadati
samo jednom lanu tima.
Bug Greka koju treba ispraviti. Bugovi definiraju greku i opisuju korake
kako ju ponoviti. Moe se povezati na odreeni user story uz koji je logiki
vezan, a takoer i uz test case, koji opisuje korake testiranja kojim je utvrena
greka. Svaki bug pridruen je jednom lanu tima, ima svoj prioritet, stanje i
druge atribute. Stanja buga su: otvoren, rijeen i zatvoren. Bug otvara onaj
tko ga je pronaao, tester ili sam programer. Programer ga rjeava i stavlja u
stanje rijeen, a zatim inicijator buga potvruje da je rjeenje dobro i stavlja
ga u stanje zatvoren ili ga pak reaktivira i stavlja natrag u stanje otvoren.
Issue Opis problema koji treba rijeiti da bi se mogao nastaviti rad na
funkcionalnosti user storya. Issue se pridruuje odreenom lanu tima. Meu
atributima moe se definirati i datum due date do kada problem mora biti
razrijeen. Svaki lan tima ima uvid u svoju issue listu, u kojoj je popis
problema za koje je on odgovoran da ih rijei.
Test Case Opis testnog sluaja. Testeri ili druge osobe zaduene za
testiranje prvo definiraju testne sluajeve, a potom ih prolaze prema koracima
koji su dio definicije testnih sluajevima. Test case je osnovna jedinica rada
testera tijekom testiranja. Test Case radne stavke pridruuju se
odreenom user storyui time definiraju to je sve potrebno testirati uz
odreenu funkcionalnost.
Shared Steps Radna stavka koja se koristi kod manualnog testiranja za
opis koraka testa koji se ponavljaju kod vee koliine testnih sluajeva.
Definirani Shared Steps moe se pridruiti raznim test casovima i predstavlja
segment testiranja koje je zajedniko svim pridruenim testnim sluajevima.
zahtjev, radna stavka koja ga opisuje, ve takav zahtjev mora proi kroz
strogo definirani tijek dogaaja (workflow). Od poetne definicije pa da
verifikacije zahtjeva, od raznih nivoa unutar firme pa do faze implementacije,
te testiranja na raznim sustavima i podsustavima. ALM alati, kroz upravljanje
radnim stavkama, moraju omoguiti takav
razvojni proces.
Graditeljstvo softvera
Release i build managament, u slobodnom
prijevodu upravljanje verzijama i
meuverzijama, neizostavni su dijelovi ALMa. Prije pojave ALM sustava, postojali su alati
namijenjeni bilo jednoj, bilo drugoj disciplini.
Meutim njihovim povezivanjem, ALM sustavi
dali su tim disciplinama dodatnu vrijednost. Svaka izdana verzija softvera, bilo
da je rije o verziji za trite ili samo jednog korisnika, bilo da je izdani service
pack ili mala zakrpa, mora biti posebno oznaena i spremljena na dohvatljivo
mjesto. Izvorni kod takve verzije mora biti lako dohvatljiv iz sustava za
upravljanje kodom. Radni kod i kod izdanih verzija mora se moi odvojiti. To
odvajanje verzija nazivamo grananje (branching). Grananjem se dobiva
mogunost istovremenog rada na promjenama izdane verzije i radne verzije
aplikacije.
Daily Build ili dnevna izgradnja
meuverzija
postojanja
su razni alati
za upravljanje buildovima.
Dnevni build zapravo bi bolje
bilo zvati
izvrava u
su uredi
prazni i kad razvojni tim ne radi na projektu, razvojni proces i dalje je aktivan.
No je idealno vrijeme u kojem nai serveri mogu obavljati razne zahtjevne
poslove i tako koristiti vrijeme mira i tiine na razvojnim radnim stanicama.
Preporuka ALM-a je da se svaku no izvri build u kojem e seintegrirati sve
promjene prethodnog dana, te e se nakon toga nova meuverzija pripremiti
SubVersion
SubVersion jedan je od najpoznatijih i najrairenijih alata za verzioniranje
koda. Nije ALM alat, meutim razni ALM alati omoguavaju integraciju s njime.
Najvie koriten u open-source zajednici. Koriste ga razni poznati projekti, a
meu ostalima i Google Code za distribuciju koda. Postoje razni klijentski alati
na raznim platformama koji se povezuju sa SubVersionom. Za Windows
platformu poznat je klijent Tortoise SVN.
Proizvoa: open-source, izvorno proizveden
od kompanije CollabNet
Tip: alat za verzioniranje koda
Url: http://subversion.apache.org/
Platforma: Unix, Linux, Solaris, Windows, Mac
+: Besplatan, jednostavan, dostupan kroz razne platforme, omoguena veina
naprednih funkcija, integrira se u razne druge sustave
-: Ne nudi potpunu integraciju u ALM sustave
CVS
Bazaar
Bazaar je jo jedan jednostavan i besplatan alat. Kroz jednostavno korisniko
suelje omoguuje razne prilagodljive procese (workflowe) tijekom
verzioniranja. Nije toliko rairen kao SubVersion ili CVS. Postoje razni add-in
ovi koji nadopunjuju Bazaar.
Proizvoa: open-source, sponzoriran od
Canonical
Tip: alat za verzioniranje koda
Url: http://bazaar.canonical.com
SourceSafe
SourceSafe stari je Microsoftov alat. Osim to je jednostavan i nezahtjevan za
instalaciju, nema drugih razloga zbog ega bi ga koristili u odnosu na noviji
Microsoftov alat TFS, pogotovo nakon to je Microsoft izdao TFS Basics koji i
po cijeni odgovara SourceSafeu. Veina timova SourceSafe koristi iz inercije,
ekajui priliku da ga zamijene boljim
alatom, najee TFS-om.
Proizvoa: Microsoft
Tip: alat za verzioniranje koda
Url: http://msdn.microsoft.com/enus/vstudio/aa718670.aspx
Platforma: Windows
+: jednostavan, softverski i hardverski nezahtjevan
- : nepouzdan, netransakcijski check-in, zastarjeli alat bez mnotva funkcija
Rational ClearCase
Rational ClearCase alat je iz IBM Rational obitelji. Nije ALM alat, ali je
omogueno povezivanje IBM-ovog ALM sustava TeamConcert na nain da se
uspostavi sinkronizacija ili pak da se jednokratno importiraju podaci u novi
sustav. ClearCase je u odnosu na SubVersion i veinu drugih alata relativno
-: Veliki i sloen sustav, ako vam treba samo sustav za verzioniranje. TFS je
predvien za puno vie od toga.
koliko je nestabilan pojedini dio aplikacije, tj. koliko je bugova vezano uz zahtjeve
koje taj dio ostvaruje. Od svih dijelova koji nisu kljuni za funkcioniranje aplikacije,
na projektni menader jednostavno moe izbaciti najmanje stabilne, one na kojima
ima jo najvie posla, odnosno bugova.
Vrste ALM rjeenja
Kada imamo dobro organizirano verzioniranje koda, slijedei bitni korak ALM-a je
organizacija meuverzija (buildova). Team Build je ime podsustava koji ima za cilj
omoguiti da od prvog dana svaki projekt ima automatizirani build proces. Team
Build izvodi buildove na odvojenim posluiteljima, pri emu se buildovi mogu
pokretati jednom dnevno, nou, u tono odreeno vrijeme ili nakon svake promjene u
kodu, odnosno svakogcheck-ina. Ovo zadnje se naziva continuous integration i
preporuena je build strategija na sloenijim razvojnim projektima, pogotovo onima
na kojima radi vei broj programera. Pokretanje builda nakon svake promjene u kodu
omoguava da, ako se desi greka prilikom izgradnje builda, znamo da je uzrok
greke upravo ta zadnja promjena, pa je tako ispravljanje greaka bitno lake i bre.
Team Build je usko povezan s ostalim dijelovima Team Systema. Upravo zbog
integracije sa sustavom za praenje radnih stavki i sustavom za verzioniranje, nakon
svakog buildamoemo dobiti izvjetaj o svim promjenama na kodu u odnosu na
prethodni build, o tome koji su zadaci tim buildom rijeeni i kakvi su rezultati
automatiziranih testova. Iz takvog izvjetaja vrlo lako moemo koristei poveznice
doi do detaljnih informacija o kodu, radnim stavkama i o testovima izvrenim
tijekom izgradnje zadnjeg builda.
Projektni izvjetaji
Na kraju si moda postavljate pitanje treba li vam i vaem razvojnom timu ALM,
odnosno Team System. Moemo li danas uope razvijati softver bez da upravljamo
razvojnim ciklusom aplikacije? Treba li nam upravljanje zahtjevima, integracija
radnih stavki sa sustavom za verzioniranje koda, trebaju li nam
automatizirani buildovi i automatski izvjetaji o stanju projekta? Nije li to malo
previe za va mali tim od nekoliko ljudi? Moete li i dalje bez toga razvijati
aplikacije? Vjerojatno moete, isto kao to moete komunicirati unutar organizacije i
bez koritenja e-maila, samo je pitanje koliko ete u tome biti efikasni i kvalitetni.
Moda to zvui nezamislivo, ali nekad zaista nije postojao e-mail ili se barem nije
koristio u veini organizacija. Treba li vaem timu ALM? Odgovorite sami.
Primjeri izvjetaja
sa svim zadacima biti gotovi. Projektni menader time ostvaruje pravovremeni uvid u
stanje projekta bez potrebe da svoj tim dodatno optereuje izvjetavanjem.
Izvjetaj Quality indicators osim projektnom menaderu, zanimljiv je i razvojnim
inenjerima jer se odnosi na kod, odnosno na kvalitetu njihovog rada. On pokazuje
nekoliko razliitih indikatora koji svi zajedno daju sliku o kvaliteti koda. Na
prikazanom grafu, kako se pribliavamo kraju iteracije, code churn (broj promjena
koda) se smanjuje, a istovremeno se pokrivenost koda testovima (code coverage)
poveava. Ovo su sve dobri trendovi i kvaliteta koda u ovom projektu s vremenom
raste.
Work Item
Work Item
Tracking
stavki.
Version Control
Checkin
Changeset
Shelving
Branching
Merging
Annotate
Team Build
Continous
integration
Code Churn
Unit testing
Code coverage
ULOGE U SCRUM-U
Scrum nas elegantno zavarava. On je jedan od okvira koji je najlake razumjeti a najtee dobro
implementirati. Kaem dobro implementirati jer naslijeena jednostavnost Scrum-a moe nas
zavesti da pomislimo da ga je lako implementirati, kada su u stvarnosti potrebne godine da se
dobro prakticira. ini se da Scrum ide protiv svega to smo nauili u mnogim, mnogim godinama
tradicionalnog (waterfall) razvoja. Razumljivo je da je potrebno vrijeme da se odviknemo od naih
loih
navika
prilagodimo
se
novoj
realnosti.
Scrum Master
Trkai automobil ima instrumente i senzore kojima se nadgleda motor koji takoer ima ulje. Bez
ulja, motor bi prestao raditi, unitavajui pri tome sebe. Ulje je svuda, omoguujui da dijelovi
motora rade kao podmazani, hladei ih i osiguravajui dobru performansu pod optereenjem.
Scrum Master je takav. On ima ugraene senzore i instrumente koji mu omoguavaju da uoi
kada tim ne daje rezultate prema svojim sposobnostima i ima vjetine (mazivo) potrebno da
pomogne u popravljanju greaka. Biti Scrum Master je teak posao. Dobar Scrum Master je neko
ko razumije neverbalnu komunikaciju, osjea se sigurno u konfliktnim situacijama, efektivan je
komunikator, moe izgraditi povjerenje i zasluiti potovanje, i razumije dinamiku tima. Dobar
Scrum Master evoluira razvojni proces. On gradi povjerenje ne samo unutar tima, ve i sa
klijentima.
Product Owner
Osnovni cilj Product Owner-a je da se vizija koju su traili stejkholderi/klijenti implementira od
strane tima. Product owner ovo postie radei sa stejkholderima, kako bi razumio potrebne
funkcionalnosti sistema u razvoju. Potom e Product Owner pisati korisnike prie (user stories)
ili e ih pisati radei zajedno sa klijentima. Korisnike prie idu u Product Backlog.
Product
Owner
upravlja
predstavlja
interese
stejkholdera
klijenata.
Vratimo se na model automobila. Ako je Scrum Master kao ulje i senzori maine, Product Owner
je poput vozaa. Product Owner usmjerava automobil u pravom smjeru i pravi stalne korekcije
smjera potrebne da ostane na pravom putu i isporui rezultate. On predstavlja interese klijenata i
stejkholdera. Njegov posao je da uspostavi, odrava i komunicira viziju proizvoda timu i drugim
stejkholderima, upravlja povratom investicije (ROI) i finansijama projekta i donosi odluke kada da
pusti oficijelni release (uz pomo informacija koje dobija od klijenta i stejkholdera). Product Owner
je osoba na kojoj je konana odgovornost za uspjeh ili propast projekta. On odluuje ta se
razvija, kada se razvija, i da li ono to je razvijeno zadovoljava oekivanja.
Razvojni tim
Razvojni tim je motor trkaeg automobila. Sve vozake vjetine i svo ulje na svijetu nisu od koristi
automobilu bez motora. Razvojni tim izvrava viziju Product Owner-a uz pomo Scrum Master-a.
Tim je sastavljen od ljudi potrebnih da urade posao developeri, testeri, arhitekti, dizajneri svi
koji su potrebni. Razvojni tim je idealno sastavljen od ljudi koji su u punom radnom angamanu
posveeni jednom projektu. Razvojni tim je odgovoran za upravljanje svojim radom, svojim
obavezama
izvrenju
tih
obaveza.
Veina Scrum materijala e rei da je idealna veliina tima 7, plus ili minus 2 ljudi. Ja preferiram
parne brojeve jer to bolje podrava integraciju sa XP inenjerskom praksom. Tim je upravo to, tim
uloge i titule bi trebalo ukloniti jer to pomae razvoj drugarstva u timu. Cilj je ukloniti nain
razmiljanja Ja sam developer i ja samo piem kod i pomjeriti panju tako da Ja sam lan tima
odgovoran da isporui ovaj rezultat i ja to ne mogu uraditi sam zaivi u timu. U Scrum timu,
testeri mogu pisati kod a developeri mogu pisati testove kros-funkcionalnost je dobra stvar.
tampa
El. pota
Moj prvi susret sa Agile metodologijama je XP projekat u softverskoj kui Leuven (Belgija), koja je
pravila migraciju velikog, 30 godina starog mainframe sistema na Java (jsf, kodo, Oracle, Sun)
platformu. Te 2005. godine bio sam svjedok brzoj transformaciji jednog velikog, staromodnoga i
tromog (RUP) tima u efikasnu XP mainu koja melje sve pred sobom.
NB: RUP (Rational Unified Proces, IBM) sa svojim iterativnim pristupom je u to vrijeme bio "the
way to go" u razvoju softvera u zapadnoj Evropi i generalno u svijetu.
ta je to XP ili eXtreme Programming? Mnogo literature se moe nai na internetu o tome, a
najjednostavnija definicija je da je XP grupa pravila kojih se programerski tim treba pridravati:
collective ownership, continuous integration, test driven development, pair programming, daily
standup, sustainable pace...
Na tim je bio striktan u praenju svih, tada definisanih, XP pravila, i vodio nas je ovjek koji je
ve tada imao dugogodinje iskustvo sa XPom. Ja sam, kao prvi XP coach na naem projektu,
imao svakodnevne "brainwashing sesije" s njegove strane i svi smo proitali Kent
Beckovu knjigu ve u prvih par sedmica itd.
Bilo nas je 20tak programera (ne raunam analiste, menadere) i na poetku smo funkcionisali
kao jedan veliki tim koji se kasnije, dolaskom novih ljudi, organizovao u 3 funkcionalna tima (30ak
programera).
Kakav je osjeaj raditi na XP projektu? Pokuat u da opiem stvari koje su me najvie dojmile u
tom periodu, stvari zbog kojih sam od tada, pa do dananjeg dana vrstog vjerovanja da je Agile
najbolja metodologija za uspjean razvoj softvera.
Collective ownership. Kod je svaiji. Svi treba da znaju sve o sistemu (kodu i konfiguraciji). Ne
postoje ljudi "bez kojih se ne moe". Raunari su svaiji. Kada ujutro doete na posao, vi ne
znate gdje ete sjesti jer nemate svoj raunar (svi raunari su identino konfigurisani i mogu
bukvalno svaki dan da se reformatiraju sa novim imidom), sjedate za prvu mainu koja je
slobodna i ekate stand up meeting (Scrum) da dobijete zadatak za taj dan ili dio tog dana. Cilj je
da su podijeljeni zadaci (tasks ili stories) u to veoj mjeri "vertikalni", a nikada horizontalni;
primjer: ako pravite dio nove stranice, onda zavravate i biznis koja ta stranica koristi, kao i
komunikaciju sa bazom podataka. Klasine podjele meu ljudima "on zna baze" i "ona je najbolja
u stranicama" prestaju da postoje.
Pair programming. XP je glasan. Ako niste dio tima i ako niste koncentrisani da sa svojim parom
zavrite neki zadatak, sve vam se ini kao jedan veliki kokoinjac, jer previe je buke. Za svakim
raunarom u jednoj velikoj prostoriji sjede 2 osobe i neprestano priaju i komentariu stvari koje
vide na ekranu. Pair programming je dakle pravilo u kome za svakim raunarom sjede dva
programera: driver, onaj koji kodira (vozi) i navigator,onaj koji promatra drivera, ukazuje na
greke, razmilja o stvarima koje nas ekaju, koje smo premetnuli s uma. Pravilo je bilo da se
svakih 15ak minuta uloge mijenjaju. Nekada smo tu frekvenciju mijenjali u funkciji TDDa (jedan
pie test, a drugi implementaciju). Pair programming je najefikasniji metod za transfer znanja.
Pair programming je takoer najefikasniji metod za pravljenje kvalitetnoga softvera. Code review
u timu u kome se parovi mijenjaju sa dovoljno dinamike je preteno nepotreban. Dakle, parovi
treba da se mijenjaju, ako ne u jednom danu, onda sigurno u iduem. Moj posao XP coacha je
izmeu ostalog bio da u standupu argumentujem potrebu da neko treba da promjeni paira,
ukoliko taj neko to nije sam izjasnio kao potrebu. Nekada smo "repairing" radili u podne, da
osvjeimo dinamiku rada. U svakom sluaju, "story lead" je onaj koji je odgovoran za delivery (i
burndown update) svog dijela posla, on ostaje sa odgovornou za svoj story, a parovi koji sjede
pored njega/nje se mijenjaju.
Test driven development (TDD) je definitivno najmoniji princip koji sam u tom vremenu
savladao i od tada pokuavam koristiti na svim projektima. Savladati TDD se sastoji u prihvatanju
sljedeeg pravila: ne postoji promjena koda ili konfiguracije ili bilo kojeg artifacta koji je dio
sistema u produkciji, ako prije toga niste napravili test koji pokazuje ta ta promjena tano donosi
sistemu. Taj isti test treba da padne (red) na samom poetku jer vae promjene jo nema. Zatim
napravite planiranu promjenu sistema (kod ili konfiguracija ili baza) i test tada treba da uspije
(green). Faza nakon toga je refactoring ili poboljanje koda koji ste upravo napravili sa redovnim
izvravanjem testova kao garancijom da daljnje promjene i poboljanja nee promijeniti pozitivan
rezultat testa. Red-green-refactor. Testovi su idealan nain dokumentacije. Metode u testu koje
sadre itave reenice u svom naslovu su uobiajena pojava jer nema boljeg naina da se sistem
opie nego u testu koji garantuje da sistem radi ono to treba da radi. Da bi se pobrinuli da niko
ne pie nijedan drugi vid dokumentacije, nismo dozvoljavali bilo koju vrstu komentara u kodu.
Imali smo automatske testove koji skeniraju kod i javljaju ako je neko pisao komentare u kodu.
Continuous build osigurava redovnu egzekuciju svih testova u svrhu kontrole koda koji su svi
programeri checkirali u source control. Prije bilo kojeg checkin-a, svaki programer je duan uzeti
"build token" (kod nas je to bio jedan mali teady bear) i staviti na vidljivo mjesto pored svog
raunara, zatim sinhronizovati svoj kod i pokrenuti build process, nakon ijeg pozitivnog izvrenja
moe da se napravi check in. Taj isti build process ili preteno znatno vea verzija napravljena na
produkcijskom operativnom sistemu ( = full build) je sastavni dio procesa continous builda koji
svaku no provjeri da li je neki test pao kao posljedica svih checkin-ova prethodnog dana. U tom
sluaju se na centralnom monitoru pojavi crvena boja kao znak svima u timu da prvo build treba
da se rijei prije nego se krene sa daljnim razvojem.
Iako ima jo mnogo toga to bih mogao napisati o XPu, zavrit u sa komentarom jo jednog
vanog pravila u XPu: sustainable pace. Stvarno je bitno ne raditi prekovremene sate ako
istinski pratite XP. Pregoriti e te.
U stvari, naa percepcija je bila da sva pravila XPa treba da se potuju ako elite postii balans i
dugotrajnost u izradi kvalitetnoga softvera. Nepotivanje samo jednog od njih moe imati fatalne
posljedice.
Flic
kr: C Knaus
2.Podrka voditelju projekta s pravom timu. "CIO mora adekvatno pripremiti momad s pravim
ljudima", kae Ben Lichtenwalner, vii menader Internet & eCommerce za Whirlpool Corporation
i osniva ModernServantLeader.com.Ne samo da ete izabrati pravi voditelj projekta, ali morate
"podrati svoj projekt menader s pravom reprezentativci (poslovni analitiar, QA manager, itd.)
tako da voditelj projekta moe [pravilno] voenje projekta i [ne ] obaviti sav posao. "
"Dodjela sredstava na temelju sposobnosti ne dostupnosti", kae Gerardo Menegaz, izvrni IT
arhitekt, IBM Global Technology Services."Preesto se sredstva dodjeljuju kako bi se jasno klupu
nego zbog vjetine utakmicu sa zahtjevima. Na kraju, ovo e posluiti samo potkopati uspjeh
projekta," kae on.
"To podrazumijeva smanjenje broja radnih tokova u izvrenju (kako bi se smanjili prioritetnih
sukoba) i pokretanja novih radnih potoci samo ako su svi potrebni ulazi na mjestu", rekao je
Gupta.Osim toga, vano je da odrede prioritete zadatke i utvrditi smjernice i procedure za to
uiniti kada prioritetna sukobi ne nastaju."Ove mjere pomau u kombinaciji premijera poboljati
stopu izvrenja za ak 20 do 50 posto", rekao je on.
6.Aktivno praenje projekata, kao i svoj tim. "Voditelj projekta mora biti budno svjesni onoga
to se dogaa u svakom trenutku", izjavio je Albert Sarvis, PMP, koji vodi projekt menadment
tima na Harrisburg Sveuilita znanosti i tehnologije.
"Uinite to stvar dosljedan rutinu za praenje projektne podatke na razini resursa i ne dopustite
tradicionalni projekt alata biti va jedini vodi," kae on."Ne alat za upravljanje projektima moe
rasvijetliti projektne iznenaenja kao lan projektnog tima moe osigurati putem redovitih jedanna-jedan komunikacije."
7.Koristite softver za upravljanje projektima. "Nemojte koristiti e-mail kao alat za upravljanje
projektima", kae Kent Milholland, predsjednik NeoNexus, koji prua web dizajn, prilagoene web
aplikacije i internet marketing rjeenja."To je previe teko pratiti."
Umjesto toga, Milholland kae, "drati softver za upravljanje projektima na sustavu kao
Assembla, ili ak Basecamp, pa su pojedinosti o svakom zahtjevu dokumentirani bez puno
dodatnog napora. Web-based project management omoguuje svima od korisnika do programera
za klijente na donositelji odluka pratiti napredak s lakoom. "
Flic
kr: VFS digitalni dizajn
8.Drite tjedne sastanke. "Postavljanje kratku, obvezni tjedni sastanak gdje svaki lan tima traje
minutu ili dvije za rei tim to su napravili prolog tjedna, njihovi planovi za ovaj sljedei tjedan i
sve zapreke koje imaju da tim moe pomoi u", kae Grant M . Howe, potpredsjednik odjela za
istraivanje i razvoj, Sage Neprofitne Solutions, koja nudi softverske proizvode i usluge za vladine
agencije i neprofitne organizacije."To stvara hitnost za svakog pojedinca u timu oko napreduje
svaki tjedan."
9.Upravljanje promjenama. "Upravljanje promjenama na izvornom djelokrugu rada je najvanije
za voenje projekata pod kontrolom", kae Jaimin Doshi, glavni konzultant, AppleTech
konzultanti, IT savjetovanje i upravljanje projektima tvrtke.
"Vano je da se [koritenja] kontrole promjena oblika analizirati utjecaj promjena s obzirom na
vrijeme, trokove i bitnost", kae Doshi."Promjene smatraju kozmetike (manje) takoer trebaju
biti praeni od strane voditelja projekta, kao i provoenje testiranje te promjene ponekad mogu
dodati do znaajnih sati."
10.Uzmi vrstu liniju protiv opseg puzanja."Scope creep je glavni uzrok projekata izmiu
kontroli", kae Nick Coons, tehniki direktor, Hyperion Works, pruatelj web stranice, prilagoene
web aplikacije i softver i IT menadment.
Meutim, "troenje vremena unaprijed kako bi se postavili temelji i jasno definirati opseg e vam
pomoi zadrati projekt na pravom putu", kae on.tovie, "kada klijent neizbjeno ini out-ofopseg zahtjeve, nemojte se sramiti rei im da ete dodati njihov zahtjev da se" Faza 2 "projekta,
koji e imati svoj opseg i cijene."
11.Stvaranje kljune toke za svakog lana tima i slaviti ih, kada se sastao. "Stvaranje
prekretnice u fazi planiranja za vas i va tim e vam pomoi pratiti svoj napredak i dati vam
osjeaj postignua kada doete svaki korak", kae G. Karthik, direktor projekta, Hexaware
Technologies, poslovna inteligencija, poslovne analitike i enterprise rjeenja usluga.
Zatim, "kada doete do prekretnice, donijeti svi zajedno za neke zabave drutvene vrijeme (npr.,
drite sladoled socijalne u uredu) na [lanovima nagrada tima] i drati svi uzbueni aboutthe
projekta", kae Michael Hamelin, ef sigurnosti projektant Tufin Technologies, pruatelj rjeenja
firewall upravljanja.Za ekipe koje krue geografski ili rade gotovo, priznaju dogaaje s manjim
gestama, to moe biti kao jednostavan kao estitku e-mail.
12.Razmislite o koritenju agilni metodologiji."Ustanovili smo da upravljanje projektima
slijedei Agile metodologije radi jako dobro za nas", kae Andre Winter, vii menader
inenjering, CA Technologies."Ova metodologija omoguuje tim reagirati i prilagoditi svoje
projekte za potrebe trita, boravei vjerni interese, vrijednosti i sposobnosti nae tvrtke."
13.Pratite vrijeme. "Pratite vremena proveo po kljunim osobljem odgovornim za zavretak
glavnih dijelova projekta," savjetuje Ken Leland III, potpredsjednik inenjerstva, Monmouth
Telecom."To e vas upozoriti na netonosti u svojih prvotnih procjena rano u projekt i dati vam
vie vremena da se bave posljedicama", kae on.Za praenje vremena provedenog od strane
internih resursa, Leland sugerira cloud-based usluge kao to su toggl.com.
Scrum je procesni framework koji se koristi za upravljanje kompleksnim razvojem. Scrum nije
metodologija ili tehnika razvoja sooftware-a , nego je okvir unutar kojega se mogu koristiti razni
procesi i tehnike (npr. ekstremno programiranje). Kao to je ve spomenuto Scrum framework se
sastoji od Scrum timova, njihovih pridruenih uloga, dogaaja, artefakata i pravila.
Scrum tim
Scrum tim sastoji se od vlasnika proizvoda (engl. Product Owner), razvojnog tima (engl. Development
team) i Scrum mastera. Scrum isporuuje proizvode iterativno i inkrementalno, maksimirajui mogue
povratne informacije.
Vlasnik proizvoda
Vlasnik proizvoda je odgovoran za maksimizaciju vrijednosti proizvoda i rada razvojnog tima. Naina
na koji se to postie vrlo je razliit izmeu raznih organizacija, timova i ljudi. Vlasnik proizvoda je jedini
odgovoran za upravljanje Product Backlogom. to ukljuuje jasno objaanjvanje razvojnom timu vizije,
ciljeve i stavke na Product Backlogu. Razvojni tim radi prema naputcima Vlasnika stoga i cijela
organizacija mora potivati njegove odluke.
Razvojni tim
Razvojni tim sastoji se od profesionalaca koji rade konkretan posao isporuujui inkrement proizvoda
na kraju svakog Sprinta. Samo lanovi razvojnog tima stvaraju inkrement proizvoda.
Scrum master
Scrum master je odgovoran da se Scrum razumije i koristi. Scrum Masteri to postiu na nain da
osiguravaju da se Scrum timovi pridravaju teorije, prakse i pravila Scruma.
Dogaaji u Scrumu
Scrum koristi propisane dogaaje radi uspostave pravilnosti i minimizacije potrebe za sastancima koji
nisu definirani Scrumom. Scrum koristi vremenski ograniene dogaaje na nain da svaki vremenski
dogaaj ima odreeno maksimalno trajanje. Na taj nain se osigurava da se dovoljno vremena koristi
za planiranje bez uzaludnog troenja vremena.
Sprint
Srce Scruma je Sprint, vremenski ogranieni period od jednog mjeseca ili manje tijekom kojega se
proizvede zavren, upotrebljiv i potencijalno isporuiv inkrement proizvoda. Sprintovi su jednakog
trajanja tijekom cijelog razvoja proizvoda. Novi Sprint zapoinje neposredno nakon to zavri
prethodni. Sprint se sastoji od sastanka za planiranje Sprinta, dnevnog Scruma, posla razvoja, revizije
Sprinta i retrospektive Sprinta. Svaki Sprint se moe smatrati projektom iji horizont ne prelazi mjesec
dana. Poput projekata Sprint se koristi da se obavi neki posao. Svaki Sprint ima definiciju to e se
obaviti, na koji nain i koji e odrediti izradu, posao i konani proizvod.
Dnevni Scrum
Dnevni Scrum je 15-minutni, vremenski ogranien dogaaj, koji slui da razvojni tim uskladi aktivnosti i
donese plan za sljedea 24 sata. To se ini kontrolom rada od prethodnog dnevnog Scrum sastanka i
procjenom posla koji bi mogao biti odraen prije slijedeeg sastanka. Dnevni Scrum se odrava uvijek
na istom mjestu svaki dan da bi se smanjila kompleksnost. Scrum master forsira pravilo da samo
razvojni tim sudjeluje na dnevnom Scrum sastanku i da sastanak traje 15 minuta.
Artefakti u Scrumu
Product Backlog
Product backlog je sortirana lista svega to e moda biti potrebno za proizvod i jedini izvor zahtjeva
za bilo kakvim promjenama koje se rade na proizvodu. Vlasnik proizvoda je odgovoran za Product
backlog, ukljuujui njegov sadraj, raspoloivost i sortiranje. Product backlog nikad nije konaan. U
poetku sadri samo one zahtjeve koji su inicijalno poznati i razumljiviji. Product backlog evoluira kako
evoluira proizvod i okolina na kojoj e se primjenjivati. Product backlog sadri listu svih mogunosti,
funkcionalnosti, zahtjeva, unaprijeenja i popravaka koja zajedno ine promjene koje e se primijeniti
nad proizvodom u budunosti. Obino je sortiran prema vrijednosti, riziku, prioritetu i nunosti. Stavke
na vrhu backloga su dio trenutnih razvojnih aktivnosti.
Sprint Backlog
Sprint backlog je skup stavki s Product Backloga koje su odabrane za Sprint plus plan realizacije
Inkrementa i realizacije Cilja Sprinta. Sprint Backlog je procjena razvojnog tima koje funkcionalnosti e
biti u sljedeem Inkrementu i posao koji je potreban za realizaciju tog Inkrementa.
Sprint backlog je plan sa dovoljno detalja da bi se na Dnevnom scrumu mogle razumjeti aktualne
promjene. Razvojni tim mijenja Sprint backlog tijekom Sprinta, te se na njega dodaju zadaci tijekom
Sprinta . Ti zadaci se dogaaju kada Razvojni tim, radei prema planu, naui neto vie o poslu koji je
potreban da se zadovolji cilj Sprinta. Kako se pojavi potreba za novim poslom, Razvojni tim ga dodaje
na Sprint backlog. Samo razvojni tim moe mijenjati Sprint backlog tijekom Sprinta. Sprint backlog je
vidljiva slika posla u realnom vremenu kojeg Razvojni tim namjerava obaviti tijekom Sprinta i koji
pripada iskljuivo Razvojnom timu.
to se tie bagova:
Scrum proces bagove tretira tako to ih dodaje kao stavke u Product Backlog,
Scrum kroz stalna poboljanja Definition Of Done tei tome da nema bagova u isporuenom
inkrementu ili da bagovi budu takvog uticaja na rad softverskog sistema da mogu da saekaju
zavretak aktuelnog Sprint-a da bi u sledeem Sprint Planning-u uli, zbog visokog prioriteta, u
sledei Sprint Backlog,
Development Tim sprovodi standarde u toku Sprinta , koji su definisani u Definition Of Done, da
bi stalno odravali i poboljavali kvalitet svog rada i kvalitet proizvoda. Standardi na koje moe da
se oslanja Definition Of Done mogu da budu interno ili eksterno definisani.
Product Owners determine what needs to be built in the next 30 days or less.
Development Teams build what is needed in 30 days (or less), and then
demonstrate what they have built. Based on this demonstration, the Product Owner
determines what to build next.
3.
B
Burn-down Chart: a chart showing the evolution of remaining effort against time.
Burn-down charts are an optional implementation within Scrum to make progress
transparent.
Burn-up Chart: a chart showing the evolution of an increase in a measure against
time. Burn-up charts are an optional implementation within Scrum to make progress
transparent.
D
Daily Scrum: daily time-boxed event of 15 minutes, or less, for the Development
Team to re-plan the next day of development work during a Sprint. Updates are
reflected in the Sprint Backlog.
Definition of Done: a shared understanding of expectations that software must live
up to in order to be releasable into production. Managed by the Development Team.
Development Team: the role within a Scrum Team accountable for managing,
organizing and doing all development work required to create a releasable Increment
of product every Sprint.
Emergence: the process of the coming into existence or prominence of new facts or
new knowledge of a fact, or knowledge of a fact becoming visible unexpectedly.
E
Empiricism: process control type in which only the past is accepted as certain and in
which decisions are based on observation, experience and experimentation.
Empiricism has three pillars: transparency, inspection and adaptation.
Engineering standards: a shared set of development and technology standards
that a Development Team applies to create releasable Increments of software.
F
Forecast (of functionality): the selection of items from the Product Backlog a
Development Team deems feasible for implementation in a Sprint.
I
Increment: a piece of working software that adds to previously created Increments,
where the sum of all Increments -as a whole - form a product.
P
Product Backlog: an ordered list of the work to be done in order to create, maintain
and sustain a product. Managed by the Product Owner.
Product Backlog refinement: the activity in a Sprint through which the Product
Owner and the Development Team add granularity to the Product Backlog.
Product Owner: the role in Scrum accountable for maximizing the value of a
product, primarily by incrementally managing and expressing business and functional
expectations for a product to the Development Team(s).
R
Ready: a shared understanding by the Product Owner and the Development Team
regarding the preferred level of description of Product Backlog items introduced at
Sprint Planning.
S
Scrum: a framework to support teams in complex product development. Scrum
consists of Scrum Teams and their associated roles, events, artifacts, and rules, as
defined in the Scrum GuideTM.
Scrum Board: a physical board to visualize information for and by the Scrum Team,
often used to manage Sprint Backlog. Scrum boards are an optional implementation
within Scrum to make information visible.
Scrum Guide: the definition of Scrum, written and provided by Ken Schwaber and
Jeff Sutherland, co-creators of Scrum. This definition consists of Scrums roles,
events, artifacts, and the rules that bind them together.
Scrum Master: the role within a Scrum Team accountable for guiding, coaching,
teaching and assisting a Scrum Team and its environments in a proper understanding
and use of Scrum.
Scrum Team: a self-organizing team consisting of a Product Owner, Development
Team and Scrum Master.
Scrum Values: a set of fundamental values and qualities underpinning the Scrum
framework; commitment, focus, openness, respect and courage.
Self-organization: the management principle that teams autonomously organize
their work. Self-organization happens within boundaries and against given goals.
Teams choose how best to accomplish their work, rather than being directed by
others outside the team.
Sprint: time-boxed event of 30 days, or less, that serves as a container for the other
Scrum events and activities. Sprints are done consecutively, without intermediate
gaps.
Sprint Backlog: an overview of the development work to realize a Sprints goal,
typically a forecast of functionality and the work needed to deliver that functionality.
Managed by the Development Team.
Sprint Goal: a short expression of the purpose of a Sprint, often a business problem
that is addressed. Functionality might be adjusted during the Sprint in order to
achieve the Sprint Goal.
Sprint Planning: time-boxed event of 1 day, or less, to start a Sprint. It serves for
the Scrum Team to inspect the work from the Product Backlog thats most valuable to
be done next and design that work into Sprint backlog.
Sprint Retrospective: time-boxed event of 3 hours, or less, to end a Sprint. It
serves for the Scrum Team to inspect the past Sprint and plan for improvements to
be enacted during the next Sprint.
Sprint Review: time-boxed event of 4 hours, or less, to conclude the development
work of a Sprint. It serves for the Scrum Team and the stakeholders to inspect the
Increment of product resulting from the Sprint, assess the impact of the work
performed on overall progress and update the Product backlog in order to maximize
the value of the next period.
Stakeholder: a person external to the Scrum Team with a specific interest in and
knowledge of a product that is required for incremental discovery. Represented by the
Product Owner and actively engaged with the Scrum Team at Sprint Review.
V
Velocity: an optional, but often used, indication of the average amount of Product
Backlog turned into an Increment of product during a Sprint by a Scrum Team,
tracked by the Development Team for use within the Scrum Team.
To learn more about the Scrum framework, we highly recommend that you reference
the Scrum Guide and the Scrum Glossary.
A
ALM (Application Lifecycle Management): holistic view on the management of
software applications and systems, accounting for all stages of the existence of a software
product.
ATDD (Acceptance Test-Driven Development): test-first software development
practice in which acceptance criteria for new functionality are created as automated tests. The
failing tests are constructed to pass as development proceeds and acceptance criteria are met.
B
BDD (Behavior-Driven Development): agile software development practice adding to
TDD the description of the desired functional behavior of the new functionality.
Branching: creating a logical or physical copy of code within a version control system so that
this copy might be changed in isolation.
C
Clean Code: software code that is expressed well, formatted correctly, and organized for later
coders to understand. Clarity is preferred over cleverness.
Code Coverage: a measurement indicating the amount of product code that is exercised by
tests.
Cohesion and Coupling: coupling refers to the interdependencies between modules, while
cohesion describes how related the functions within a single module are.
Collective Code Ownership: a software development principle popularized by Extreme
Programming holding that all contributors to a given codebase are jointly responsible for the code
in its entirety.
Continuous Delivery: a software delivery practice similar to Continuous Deployment except
a human action is required to promote changes into a subsequent environment along the pipeline.
Continuous Deployment: a software delivery practice in which the release process is fully
automated in order to have changes promoted to the production environment with no human
intervention.<
D
Definition of Done: a shared understanding of the expectations that software must live up to
in order to be releasable into production, with a purpose of providing transparency over the
software created. Managed by the Development Team.
Developer: any member of a Development Team, regardless of technical, functional or other
specialty.
DevOps: an organizational concept serving to bridge the gap between development and
operations, in terms of skills, mind-set, practices and silo-mentality. The underlying idea is that
developers are aware of, and in daily work consider implications on operations, and vice versa.
Development Team: the self-organizing role within a Scrum Team accountable for managing,
organizing and doing all work required to create a releasable Increment of product every Sprint.
All work is called development.
DRY (dont repeat yourself): software development principle to avoid repetition of the
same information in one system, preventing the same code from being produced multiple times
on a code base.
E
Engineering Standards: a shared set of development and technology standards that a
Development Team applies to create releasable Increments of software, and against which a
Development Team can inspect and adapt.
Extreme Programming (XP): agile software development framework with an extreme focus
on programming and taking engineering practices to an extreme in order to create and release
high quality code. Highly complementary to the Scrum framework.
F
Feature Toggle: software development practice that allows dynamically turning (parts of)
functionality on and off without impacting the overall accessibility of the system by its users.
I
Increment: a fully functional piece of working software, living up to the definition of Done, that
adds to previously created Increments, where the sum of all Increments - as a whole - form a
product. An Increment typically is the result of a Sprint.
P
Pair Programming: agile software development practice popularized by Extreme
Programming in which 2 team members jointly create new functionality.
R
Refactoring: agile software development practice popularized by Extreme Programming in
which code is adjusted within the code base without impacting the external, functional behavior of
that code.
S
Scout Rule: the practice of always leaving the code base in a little better state than it was
found before modifications. A means to progress towards Clean Code.
Scrum: a framework to support teams in complex product development. Scrum consists of
Scrum Teams and their associated roles, events, artifacts, and rules, as defined in the Scrum
Guide.
Scrum Board: a board to visualize information within the Scrum Team primarily, often used to
manage Sprint Backlog. Scrum boards are an optional implementation within Scrum to make
information visible and thereby increase transparency.
Scrum Guide: the definition of Scrum, written and provided by Ken Schwaber and Jeff
Sutherland, co-creators of Scrum. The Scrum Guide consists of Scrums roles, events, artifacts,
and the rules that bind them together.
Scrum Team: a self-organizing team consisting of a Product Owner, Development Team and
Scrum Master.
Self-organization: the organizational principle that teams autonomously organize their work.
Teams choose how best to accomplish their work, rather than being directed by others outside the
team. Self-organization happens within boundaries and toward goals.
Specification by Example: agile software development practice based on TDD and ATDD
that calls for using realistic examples from past experience instead of untested or abstract
statements in the description of the desired functional behavior.
T
TDD (Test-Driven Development): test-first software development practice in which test
cases are defined and created first, and subsequently executable code is created to make the test
pass. The failing tests are constructed to pass as development proceeds and tests succeed.
Technical Debt: the typically unpredictable cost of having to resolve or work with unfinished,
unclean, undone or defect code once it has been released into production.
U
User Story: agile software development practice from Extreme Programming to express
requirements from an end user perspective, emphasising verbal communication. In Scrum, it is
often used to express functional items on the Product Backlog.
Unit Test: low-level technical test focusing on small parts of a software system that can be
executed fast and in isolation. The definition and boundaries of a unit generally depends on the
context and is to be agreed by the Development Team.
V
Velocity: an optional but often used indication of the average amount of Product Backlog
turned into an Increment of product during a Sprint. It is tracked by the Development Team for use
within the Scrum Team.
http://www.free-management-ebooks.com/skills-leadership.htm
http://it-ebooks.info/search/?q=project%20management%20body%20of
%20knowledge&type=title&page=100