====== Extreme Programming (XP) ====== Extreme Programming (zkráceně XP) je agilní metodika vývoje softwaru, která klade důraz na vysokou kvalitu kódu, rychlou odezvu na měnící se požadavky zákazníků a kontinuální spolupráci mezi vývojáři a zákazníkem. XP byla formulována koncem 90. let 20. století jako reakce na neefektivní, příliš byrokratické přístupy k vývoji (např. klasický vodopádový model). ===== Základní principy XP ===== XP je založeno na pěti klíčových hodnotách: Komunikace – tým komunikuje často a otevřeně, včetně pravidelné interakce se zákazníkem. Jednoduchost – řešení by mělo být co nejjednodušší možné a zároveň splňovat aktuální požadavky. Zpětná vazba – získává se prostřednictvím testů, kódových revizí a pravidelných demonstrací fungujícího softwaru. Odvaha – vývojáři se nebojí provádět refaktoring, odmítnout špatné požadavky nebo komunikovat obtíže. Respekt – členové týmu si navzájem váží a spolupracují konstruktivně. ===== Klíčové praktiky XP ===== XP definuje řadu konkrétních praktik, které podporují jeho hodnoty: Párkové programování (Pair Programming) – dva vývojáři pracují společně na jednom počítači; jeden píše kód, druhý ho okamžitě kontroluje. Testování první (Test-Driven Development, TTD) – nejprve se napíší automatizované testy, poté teprve kód, který tyto testy splní. Průběžný integrační proces (Continuous Integration) – kód se integruje do hlavní větve několikrát denně a automaticky testuje. Refaktoring – průběžné zlepšování struktury kódu bez změny jeho funkcionality. Malé vydání (Small Releases) – software se dodává často a v malých, funkčních částech. Plánovací hry (Planning Game) – společné plánování s vlastníkem produktu (zákazníkem), který určuje priority funkcí. Metaphor (architektonická metafora) – jednoduchý, sdílený model systému, který pomáhá týmu porozumět architektuře. 40hodinový pracovní týden – XP odmítá vyhoření; doporučuje udržitelný pracovní temp. ===== Výhody XP ===== Vysoká adaptabilita na měnící se požadavky. Vysoká kvalita kódu díky testování a refaktoringu. Lepší komunikace a vztah se zákazníkem. Snížení rizika selhání projektu díky častým dodávkám. ===== Omezení a kritika ===== Náročné na disciplínu a zkušenosti týmu. Může být náročné implementovat v rozsáhlých nebo distribuovaných týmech. Vyžaduje aktivní a dostupného zákazníka – což není vždy realistické. ===== Související témata ===== [[Agilní metodiky]] [[Scrum]] [[Test-Driven Development]] [[DevOps]] ===== Literatura ===== Kent Beck: Extreme Programming Explained: Embrace Change, 2nd Edition, Addison-Wesley, 2004. Ron Jeffries, Ann Anderson, Chet Hendrickson: Extreme Programming Installed, Addison-Wesley, 2001.