¨====== Agilní vývoj softwaru (Agile) ====== **Agilní vývoj** (často zkráceně označovaný jen jako //Agile//) není jedna konkrétní metodika, ale spíše zastřešující filozofie a soubor principů pro vývoj softwaru (a dnes i řízení projektů obecně). Vznikl jako přímá reakce na těžkopádné, pomalé a byrokratické tradiční metody (především vodopádový model – //Waterfall//), u kterých trvalo měsíce až roky, než zákazník uviděl první funkční verzi produktu, která v té době už často neodpovídala aktuálním potřebám trhu. Základem agilního přístupu je **iterativní a inkrementální vývoj**. Práce se nerozplánuje na roky dopředu, ale rozdělí se na malé, snadno zvládnutelné úseky (iterace). Na konci každé iterace tým dodává malou, ale plně funkční a otestovanou část softwaru, kterou si může zákazník vyzkoušet a poskytnout k ní zpětnou vazbu. [Image of Agile software development iterative cycle diagram] ===== Agilní manifest (Agile Manifesto) ===== Základy této filozofie byly definovány v roce 2001, kdy se 17 předních softwarových inženýrů sešlo v Utahu a sepsalo tzv. **Manifest agilního vývoje softwaru**. Tento manifest nediktuje, jak přesně máte programovat, ale definuje čtyři klíčové hodnoty, které by měly mít vždy přednost: * **Jednotlivci a interakce** mají přednost před procesy a nástroji. * **Fungující software** má přednost před vyčerpávající dokumentací. * **Spolupráce se zákazníkem** má přednost před vyjednáváním o smlouvě. * **Reagování na změny** má přednost před striktním dodržováním plánu. //Poznámka: Manifest neznamená, že procesy, dokumentace nebo plány jsou zbytečné. Znamená to, že ačkoliv mají věci na pravé straně svou hodnotu, věcí na levé straně si agilní týmy cení více.// ===== Nejznámější agilní frameworky (Metodiky) ===== Jelikož je "Agile" pouze myšlenkový směr, k jeho reálnému zavedení do firmy se používají specifické frameworky. Nejrozšířenější z nich jsou Scrum a Kanban. ==== 1. Scrum ==== Absolutní standard dnešního agilního vývoje. Práce je rozdělena do časově ohraničených úseků zvaných **Sprinty** (typicky trvají 2 až 4 týdny). Scrum definuje tři přesné role: * **Product Owner (Vlastník produktu):** Zastupuje zákazníka. Určuje "co" se bude dělat. Udržuje a prioritizuje seznam požadavků (Product Backlog). * **Scrum Master:** Zajišťuje, aby tým správně chápal a dodržoval pravidla Scrumu. Odstraňuje překážky, které týmu brání v práci. * **Vývojový tým (Developers):** Samostatně organizovaná skupina lidí, která reálně vytváří produkt a určuje "jak" se to udělá. Součástí Scrumu jsou pravidelné rituály (Ceremonies), jako je **Daily Stand-up** (krátká 15minutová denní porada o postupu prací), plánování sprintu a retrospektiva (zhodnocení, co se týmu povedlo a co je třeba zlepšit). ==== 2. Kanban ==== Na rozdíl od Scrumu nevyužívá pevně ohraničené sprinty, ale soustředí se na **nepřetržitý tok práce (Continuous Flow)**. Práce je vizualizována na Kanban tabuli (typicky sloupce //To Do, In Progress, Review, Done//). Klíčovým pravidlem Kanbanu je **WIP limit** (Work In Progress) – striktní omezení počtu úkolů, na kterých lze pracovat současně, aby se zabránilo přetížení týmu a nedokončování práce. ===== Výhody a rizika agilního přístupu ===== ==== Výhody ==== * **Rychlá zpětná vazba (Feedback Loop):** Chyby v návrhu nebo v pochopení zadání se odhalí během několika týdnů, nikoliv na konci ročního projektu. * **Flexibilita:** Pokud se změní situace na trhu (např. přijde nová legislativa nebo konkurence uvede novou funkci), tým může okamžitě změnit priority a v dalším sprintu začít pracovat na novém zadání. * **Průběžné dodávání hodnoty:** Zákazník může začít používat klíčové funkce produktu (tzv. MVP – //Minimum Viable Product//) mnohem dříve, než je dokončen celý systém. ==== Rizika a úskalí (Agilní antipatterny) ==== * **Absence pevného rozpočtu a termínu:** Pro mnoho tradičních korporací je velmi těžké přijmout smlouvu, kde dopředu neví přesně, co a kdy za své peníze dostanou (tzv. //Time & Material// kontrakty). * **Nutnost angažovaného klienta:** Agilní vývoj vyžaduje, aby byl zástupce klienta (Product Owner) neustále k dispozici, odpovídal na dotazy a testoval dodanou práci. Pokud klient nemá čas, agilní proces se hroutí. * **Falešný Agile (Scrumfall):** Častý problém, kdy firma formálně přejmenuje své manažery na Scrum Mastery a zavedou Daily Stand-upy, ale vnitřně stále fungují rigidně, zakazují změny a trvají na mikromanagementu. ===== Srovnání: Agile vs. Tradiční Waterfall ===== Následující tabulka ilustruje základní filozofické i procesní rozdíly mezi těmito dvěma světy. ^ Parametr ^ Vodopádový model (Waterfall) ^ Agilní vývoj (Agile) ^ | **Základní přístup** | Lineární a sekvenční (krok za krokem) | Iterativní a inkrementální (cyklický) | | **Přístup ke změnám zadání** | Změny jsou nežádoucí, drahé a vyžadují změnová řízení | Změny jsou vítány a očekávány jako přirozená součást vývoje | | **Kdy klient vidí produkt?** | Až na samém konci projektu (fáze nasazení/testování) | Na konci každé iterace (každé 2-4 týdny) | | **Dokumentace** | Obsáhlá, detailní, vytváří se kompletně před začátkem programování | Udržována na nezbytném minimu, tvoří se průběžně s kódem | | **Vhodné pro** | Projekty s jasným, neměnným zadáním a přísnou regulací (zdravotnictví, letectví) | Inovativní projekty, startupy, vývoj webových aplikací | ~~NOTOC~~