Ve vědě o počítačích a konkrétněji v softwarovém inženýrství je extrémní programování ( XP ) agilní metodou, která se konkrétněji zaměřuje na implementační aspekt aplikace, aniž by zanedbávala aspekt řízení projektu . XP je vhodný pro malé týmy s měnícími se potřebami. XP tlačí jednoduché principy do extrému.
Extrémní programování vynalezli Kent Beck , Ward Cunningham a Ron Jeffries při práci na projektu výpočtu mezd „C3“ ve společnosti Chrysler. Kent Beck, projektový manažer vBřezen 1996, začal zdokonalovat vývojovou metodu použitou na projektu. Toto se oficiálně zrodilo v říjnu 1999 knihou Extreme Programming Explained, kterou napsal Kent Beck .
V knize Extreme Programming Explained je metoda definována jako:
Jeho hlavním účelem je snížit náklady na změnu. V tradičních metodách jsou potřeby definovány a často fixovány na začátku projektu IT, což zvyšuje následné náklady na úpravy. XP usiluje o to, aby byl projekt flexibilnější a otevřenější změnám zavedením základních hodnot, zásad a postupů.
Principy této metody nejsou nové: existují v softwarovém průmyslu po celá desetiletí a v metodách správy ještě déle. Originálností metody je zatlačit je do extrému:
Extrémní programování je založeno na rychlých vývojových cyklech (iterace několika týdnů), jejichž fáze jsou následující:
Cyklus se opakuje tak dlouho, dokud zákazník může poskytnout scénáře k dodání. Cyklus před první dodávkou se obecně vyznačuje svou dobou trvání a velkým objemem palubních funkcí. Po prvním vydání se iterace mohou zkrátit (například týden).
Při zdůraznění dobrých programovacích postupů XP doporučuje rozvinutí pomocí krátkých iterací a kolektivní správu s neustálým zapojením zákazníka. Výsledkem je předefinování vztahu mezi zákazníkem a dodavatelem s překvapivými výsledky, pokud jde o kvalitu kódu, termíny a uspokojení poptávky zákazníka .
Extrémní programování vychází z pěti základních hodnot.
SděleníToto je základní způsob, jak se vyhnout problémům. Postupy doporučené XP vyžadují intenzivní komunikaci. Testování, párování programování a plánování hry nutí vývojáře, rozhodovací orgány a zákazníky ke komunikaci. Pokud se nedostatek objeví navzdory všemu, je odpovědný kouč za jeho identifikaci a uvedení těchto lidí zpět do kontaktu.
JednoduchostNejjednodušší způsob, jak dosáhnout výsledku, je nejlepší. Předvídání budoucích rozšíření je ztráta času. Jednoduchá aplikace bude snazší upgradovat.
Zpětná vazbaZpětná vazba je pro programátora a zákazníka zásadní. Testy jednotek označují, zda kód funguje. Funkční testy udávají postup projektu. Časté dodávky umožňují rychlé testování funkcí.
OdvahaNěkteré změny vyžadují hodně odvahy. Někdy musíte změnit architekturu projektu, vyhodit kód, abyste vytvořili lepší, nebo vyzkoušet novou techniku. Odvaha je východiskem z nevhodné situace. Je to obtížné, ale jednoduchost, zpětná vazba a komunikace tyto úkoly zpřístupňují.
RespektTato hodnota byla přidána ve druhém vydání Extreme Programming Explained K. Beck. Tato hodnota zahrnuje úctu k ostatním i sebeúctu. Programátoři by nikdy neměli provádět změny, které narušují kompilaci, způsobují selhání stávajících testů jednotek nebo zdržují práci svých vrstevníků. Členové respektují svou vlastní práci tím, že vždy hledají kvalitu a nejlepší design řešení, a to prostřednictvím refaktoringu .
Těchto pět hodnot je rozděleno do třinácti vzájemně se posilujících postupů:
Zákazník na místěPokud je to možné, měl by být po celou dobu trvání projektu přítomen zástupce klienta. Musí mít znalosti koncového uživatele a mít globální vizi výsledku, kterého má být dosaženo. Dělá svou obvyklou práci, zatímco je k dispozici, aby odpověděl na otázky týmu.
Plánování hry nebo plánování pokeruZákazník vytváří scénáře funkcí, kterých chce dosáhnout. Tým posoudí čas potřebný k jejich provedení. Klient poté vybere scénáře podle priorit a dostupného času.
Kontinuální integracePo dokončení úkolu se změny okamžitě začlení do kompletního produktu. Tím se zabrání přetížení práce související s integrací všech prvků před dodáním. Testování tuto integraci výrazně usnadňuje: po úspěšném absolvování všech testů je integrace kompletní.
Malé dodávkyDodávky musí být co nejčastěji. Kontinuální integrace a testování dramaticky snižují náklady na doručení.
Udržitelné tempoTým nefunguje přesčas. Pokud nastane případ, musí být plán přezkoumán. Unavený vývojář pracuje špatně.
Přejímací zkoušky (nebo funkční zkoušky)Ze scénářů definovaných zákazníkem tým vytváří testovací procedury, které umožňují ověřit postup vývoje. Po úspěšném absolvování všech funkčních testů je iterace dokončena. Tyto testy jsou často automatizované, ale to není vždy možné.
Ve skutečnosti lze pouze neregresní testy potenciálně automatizovat z důvodu jejich opakování.
Funkční recept aplikace je stále častěji svěřován testovacím odborníkům nezávislým na vývojářích.
Jednotkové testyPřed implementací funkce vývojář napíše test, který ověří, že se jeho program chová podle očekávání. Tento test bude uchován až do konce projektu, pokud je požadována funkčnost. Při každé změně kódu spustíme všechny testy napsané všemi vývojáři a okamžitě víme, jestli už něco nefunguje.
Jednoduchý designCílem iterace je implementace scénářů vybraných zákazníkem a pouze to. Předpokládání dalšího vývoje by plýtvalo časem bez záruky následného zisku. Testy v případě potřeby umožní později změnit architekturu. Čím jednodušší aplikace, tím snazší bude její vývoj v dalších iteracích.
Použití metaforMetafory a analogie se používají k popisu systému a jeho fungování. Funkční a technické si navzájem rozumí mnohem lépe, když se shodnou na podmínkách, které používají.
Refaktoring (nebo přepracování kódu)Pravidelné zlepšování kvality kódu bez úpravy jeho chování. Přepracovali jsme kód, abychom mohli začít znovu na lepším základě při zachování stejných funkcí. Fáze refaktoringu nepřináší zákazníkovi nic, ale umožňují vývojářům postupovat vpřed v lepších podmínkách, a tedy rychleji.
Kolektivní vlastnictví kóduZa aplikaci je kolektivně odpovědný tým. Každý vývojář může provádět změny v kterékoli části kódu, i v těch, které nenapsal. Testy zjistí, jestli už něco nefunguje.
Konvence pojmenováníProtože všichni vývojáři jsou zapojeni do celého kódu, je nezbytné zavést a dodržovat standardy pojmenování proměnných, metod, objektů, tříd, souborů atd.
Párové programováníProgramování se provádí ve dvojicích. První volaný řidič (nebo pilot ) drží klávesnici. Je to on, kdo bude pracovat na části kódu, aby mohl psát. Druhý zvaný partner (nebo druhý pilot ) je tu, aby mu pomohl tím, že navrhne nové možnosti nebo odhalí možné problémy. Vývojáři často mění partnery a role, což zlepšuje kolektivní znalosti aplikace a zlepšuje komunikaci v týmu.
Tato metoda je založena na:
Místo nevýhody metody budeme snadněji hovořit o nepříznivých prostředích, ve kterých není metoda XP použitelná.
V tomto případě lze provést pouze část postupů. Hlavní nepříznivé kontexty jsou: