160 likes | 293 Views
Agilní metodiky vývoje softwaru. Řízení projektů. Důvody k zavádění nových metodik. Rozšířování komunity programátorů Zmenšování vývojových týmů Změna situace trhu se softwarem mnohem větší důraz na rychlost nasazení rostoucí podíl webových aplikací méně projektů na zakázku
E N D
Agilní metodiky vývoje softwaru Řízení projektů
Důvody k zavádění nových metodik • Rozšířování komunity programátorů • Zmenšování vývojových týmů • Změna situace trhu se softwarem • mnohem větší důraz na rychlost nasazení • rostoucí podíl webových aplikací • méně projektů na zakázku • zákazník nemá přesnou představu o tom, co požaduje
Kvalita a rychlost • Důraz na spojení se zákazníkem, člen týmu • Přímá a osobní komunikace v týmu • Omezení doby na analýzu a návrh • Důraz na implementaci (integrace a, n, i) • Pravidelné vyvíjení prototypů • Zpětná vazba • Odvaha zapracovávat změny • Snaha o jednoduchost • Velmi důsledné a průběžné testování
Agilní metodiky - úvod • Počátek: rok 2001 v Utahu • Cíl: co nejrychlejší vývoj SW • Průkopníci: AlistarCockburn, KentBeck, WardCunningham... • prošli od malých po velké společnosti • zažili krach projektu • hledali příčiny neúspěchu • špičkoví vývojáři • Výsledek schůzky: • založení Aliance pro agilní vývoj softwaru • formulace Manifestu agilního vývoje softwaru • Agilní metodika = skupina metod, které prověřují správnost systému cestou: • nejrychlejšího vývoje • předložení zákazníkovi • zpětné vazby vedoucí k úpravě systému
Tradiční vs. agilní metodiky Tradiční • Implementujeme pro dnešek, navrhujeme pro zítřek Agilní • Implementujeme pro dnešek, navrhujeme pro úspěšnou implementaci zdroje fixní funkcionalita čas proměnné čas zdroje funkcionalita
Agilní metodiky- základní principy • Iterativní a inkrementální vývoj s velmi krátkými iteracemi • Přímá a osobní komunikace v týmu • Nepřetržité sepětí a komunikace se zákazníkem • Rigorózní, opakované a průběžné automatizované testování • Jediným spolehlivým nositelem informace je zdrojový kód
Manifest agilního vývoje softwaru • Základní teze: • jedinou jistotou je změna, proto je nutné být na ni připraven • přijmutí změny je mnohem efektivnější než snaha jí zabránit • Preference: • individualitám a komunikaci (před procesy a nástroji) • provozuschopnému softwaru (před obsáhlou dokumentací) • spolupráci se zákazníkem (před uzavíráním smluv) • reakce na změnu (před striktnímu plnění plánu) • Occamova břitva - jednoduchost:Neměla by být předpokládána existence více věcí, než jsou absolutně nezbytné.
Agilní metodiky- přehled • Extrémní programování (Kent Bect) • Adaptivní vývoj softwaru (Jim Highsmith) • Vlastnostmi řízený vývoj (Jeff De Luca, Peter Coad) • Lean Development (Bob Charette) • SCRUM Development Process (Ken Schwaber, Mike Beedle) • Crystal Methodologies (Alistar Cockburn) • Dynamic System Development Method (DSDM Consortium) • Testy řízený vývoj (Kent Bect)
Extrémní programování (XP)- úvod • Vznik v roce 1999, autor KentBeck • Nejrozšířenější a nejznámější agilní metodiku • Vhodná pro malé až střední týmy • Jediným exaktním, změřitelným a nezpochybnitelným zdrojem informací je zdrojový kód
Extrémní programování- charakteristika • Modifikuje tradiční a přidávánovou proměnnou: • funkcionalita → šíře zadání (nezbytné + zbytné) • zdroje → náklady • čas • kvalita • Zákazníkstanovuje hodnoty libovolných tří proměnných, vývojový tým zbývající čtvrtou • Stanovení všech hodnot by vedlo k nízkékvalitě • Členové týmu jsou méně specializovaní
Extrémní programování- principy • Jednoduchost • Neustálá kontrola kódu • Návrh – denně • Architektura – stálé vylepšování • Testování – všichni a průběžně, testují i zákazníci, integrace denně • Krátké iterace – uvolňování SW po malých částech
Extrémní programování- hodnoty • XP se řídí čtyřmi hodnotami komunikace jednoduchost zpětná vazba odvaha
Extrémní programování- činnosti • Zásadní činnosti z pohledu vývoje testování psaní kódu návrh poslouchání
Extrémní programování- posloupnost kroků a fází • Vývoj softwaru je vždy rozvíjející se dialog mezi možným a žádoucím • Plánovací hra: • účastní se ji obchodníci (+ zákazník) i technici • velmi hrubý a stručný plán, který se průběžně aktualizuje • výstupem je plán verze • Plán verze: • definuje šíři zadání, tým náklady a harmonogram • výstupem jsou karty zadání • Fáze plánovací hry: • průzkum:vedení → tzv. uživatelské příběhy, technici → odhad náročnosti na zdroje a dobu • závazek: vedení → šíře zadání a termín, technici → zaváží se ke splnění; výstupem jsou karty zadání • Řízení: úpravy podle skutečného postupu
Extrémní programování- formality a přizpůsobení • Neortodoxní vztah k formalitám • nedefinuje žádné dokumenty a mezníky • základem je přímá komunikace nad zdrojovým kódem • Nosiče informací: • karty zadání (uživatelské příběhy) • úkolové karty (konkrétní popis úkolů) • nástěnka na pracovišti (základní architektura) • smlouvy • XP je lehkou metodikou • velmi široké možnosti úprav • přechod na XP postupně, řešením nejpalčivějšího problému (v iteracích)
Extrémní programování- shrnutí • Výhody: • instinktivní práce (lidská přirozenost) • iterativní a inkrementální způsob vývoje • nelpění na formalitách, přímočarý postup k cíli • flexibilní • velice rozšířené • Nevýhody: • přechod z tradičních metodik • myslet jednoduše a přiznat chybu • přijmout odklon od individualismu • Vhodnost: • malé týmy • podpora rychlé iterace a komunikace • důvěra v lidi a změnu