Predavatelj: Andrej Zrimšek Podjetje: Euro Plus d.o.o. XP, Scrum, Lean: popularne agilne metodologije in njihova uvedba v razvojni proces Predavatelj: Andrej Zrimšek Podjetje: Euro Plus d.o.o.
VSEBINA Agilni razvoj na splošno eXtreme Programming Scrum Lean Software development Izkušnje pri uvajanju v razvojni proces
Od kje potreba po „agilnosti“?
AGILE MANIFESTO Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Glavni principi agilnega razvoja Pogoste in redne dobave delujočega SW Spremembe so dobrodošle, tudi pozno v razvoju Razvojniki in uporabniki morajo delati skupaj dnevno Motivirani posamezniki, ki imajo dobro okolje in podporo Najbolj učinkovit prenos informacij je face-to-face
Glavni principi agilnega razvoja Delujoč SW je glavno merilo za merjenje napredka Agilni proces promovira stalen razvoj – konstanten napredek mora biti možen poljubno dolgo Stalni nadzor nad tehnično dovršenostjo in dobrim designom Enostavnost – umetnost povečevanja stvari ki NISO narejene – je ključna Najboljše arhitekture, zahteve, designi prihajajo iz “self-organizing” timov Ob rednih časovnih razmakih ekipa pregleda, kako lahko postane bolj učinkovita, in popravi svoje delovanje temu primerno.
Euro Plus in agilni razvoj Začetek uvajanja v letu 2006 Potrebno je bilo nekaj spremeniti: Velik produkt, vedno večja ekipa Težko obvladljivi izidi Uvajanje postopno: XP (vsaj nekaj principov) najprej Scrum (vodenje projektov) v 2008 Lean (zajema celo podjetje) v 2009
„Metodologije“ XP – usmerjen v razvoj Scrum – usmerjen v projektno vodenje Lean – pokriva vse vidike projekta, vodilo je poslovna vrednost
eXtreme Programming (XP) Nekaj glavnih pravil: Pisanje „user stories“ namesto podrobnih zahtev Iteracije z izdajami programov „Stand up“ sestanek Komunikacija s stranko Test Driven Development Programiranje v parih Stalna integracija www.extremeprogramming.org
Iterativni razvoj (iteracija, sprint) Kratki časovni intervali (nekaj tednov) Na koncu delujoč produkt Obdobje, ko je razvojni tim „zaščiten“
Dnevni „stand up“ sestanki Vsako jutro 15 minutni sestanek (Standup meeting, Daily Scrum) Vsak pove: Kaj je naredil od prejšnjega sestanka Kaj bo naredil do naslednjega sestanka Kaj mu onemogoča, da bi lahko opravil svoje delo
Komunikacija Ne podcenjevati pomena komunikacije Razvoj s stranko/produktnim vodenjem Člani ekipe med seboj Table po možnosti v vsaki sobi, prostor za debate Pairing – pair programming, TDD
Scrum Vloge: Nosilci informacij: Product backlog Sprint backlog Scrum Master Product Owner Team Nosilci informacij: Product backlog Sprint backlog Burn down
Scrum - sestanki Daily Scrum Sprint planning Sprint DEMO Retrospective Scrum of scrums
Xp + Scrum? Po treh letih smo redno izvajali glavne aktivnosti Še vedno problemi: Dolgotrajna planiranja sprintov Težko obvladljiv backlog Slaba povezava s produktnim vodenjem
LEAN software development 3 glavna pravila Projekti morajo biti usmerjani s poslovno vrednostjo (business value) Nujno je postavljati prioritete Planiranje izdaj mora temeljiti na vrednosti, ki jo bo produkt prinesel na trg Delaj eno stvar naenkrat Inkrementalni razvoj v kratkih korakih Omejevanje vrst Vse delo mora biti vidno
LEAN software development Glavni principi Viden tok vrednosti (see value stream) Zagotoviti jasen vpogled v potek projekta, s poudarkom na vrednosti Project Portfolio, Sprint Backlog – glavna medija Omejiti delo na razpoložljivo kapaciteto Minimizirati količino dela v teku Pull princip, čimmanj multitaskinga Eliminirati izgube Kvaliteta
Product backlog/Project portfolio Vsebina Seznam funkcionalnosti (features) Razvrščen po prioriteti glede na poslovno vrednost Visokonivojske ocene Funkcionalnost za bližnjo prihodnost razbita na manjše zgodbe (stories). Dlje v prihodnosti, manj natančne so ocene Vse zgodbe, ki bodo šle v naslednji sprint, morajo biti že ocenjene Za vsebino je odgovoren tako Product Owner kot Team
Sprint backlog/Scrum board Seznam zgodb (stories) Vsaka zgodba razbita na opravila (task) Enostaven nadzor nad opravili ki so naenkrat v delu Sledenje prioriteti Prikaz poteka (flow) Označiti stvari, ki so oz kakršnegakoli razloga blokirane
Vidnost, ne dostopnost Obe tabli omogočata takojšen vpogled v dogajanje Sta mesto, kamor se odlagajo nove ideje Na tablo dajemo tudi neplanirane aktivnosti Vseeno je potreben tudi elektronski backup
Minimiziranje količine dela v teku Primer projekta: Ena stranka, ena zahteva (240 človek dni), 12 članov ekipe -> 1 mesec Kompleksnejši primer: Tri stranke, tri zahteve (vsaka 240 človek dni) 12 članov (razdeljeni na 3 dele) -> 3 meseci Možnosti Specializacija ljudi Delamo en projekt naenkrat
Eliminiranje izgub (waste) Največja izguba je razvoj nepotrebnih stvari Predaje Ozka grla Zamude pri odzivih Netestirana koda Neprebrane zahetve (requirements)
Ocenjevanje in planiranje Visokonivojsko ocenjevanje funkcionalnosti Ocenjevanje zgodb: Poleg ocene tudi seznanjanje ekipe z vsebino Ocene znane pred sprint planning sestankom Enota: story point (imaginarna enota) Določanje prioritet zgodbam Sprint planning sestanek kratek in učinkovit
Planiranje izdaj – release planning Po določenem času je hitrost tima ocenjena Ker so funckionalnosti ravno tako že ocenjene, lahko postavimo mejnike Potrebno stalno ponavljanje postopka (stalno planiranje namesto sledenje planom) Poudarek na tem, kaj bo narejeno najprej, ne na tem, kdaj bo narejeno vse
Naš razvojni proces – pregled Močna povezava med razvojem in stranko/produktnim vodenjem 2 tedenski sprinti (stalni termini) Sprint DEMO, retrospektiva in planning na en dan Project portfolio in Sprint backlog vidna vsem Ocenjevanje zgodb sproti, pred planning sestankom
Naš razvojni proces – pregled Redni dnevni „stand up“ sestanki Programiranje v parih Test Driven Development Stalna integracija Avtomatizirano testiranje
Kako začeti? Dnevni „stand up“ sestanki – max. 15 minut Razvijajte v etapah (iteracije) Testiranje naj bo del procesa že v začetku Ljudje naj se ukvarjajo z manj projekti Ojačajte kontakt s stranko Ne vztrajajte na „papirologiji“, ki ne koristi ekipi
Nekaj virov in kontakt http://www.netobjectives.com/ http://www.rallydev.com/learn_agile/ http://www.extremeprogramming.org/ ... andrej.zrimsek@europlus.si
Vprašanja? Po predavanju boste na vaš elektronski naslov prejeli vprašalnik o predavanju, ki ste ga ravnokar poslušali. Vprašalniki bodo dostopni tudi preko profila na spletnem portalu konference. Z izpolnjevanjem le tega pripomorete k izboljšanju konference. Hvala!