Agilní metodiky vývoje softwaru Řízení projektů Agilní metodiky vývoje softwaru
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: Alistar Cockburn, Kent Beck, Ward Cunningham... 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 Implementujeme pro dnešek, navrhujeme pro zítřek Agilní Implementujeme pro dnešek, navrhujeme pro úspěšnou implementaci funkcionalita čas zdroje funkcionalita čas zdroje fixní proměnné
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ím plněním 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 Kent Beck 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ík stanovuje 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 zpětná vazba odvaha jednoduchost
Extrémní programování - činnosti Zásadní činnosti z pohledu vývoje testování návrh poslouchání psaní kódu
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