Rubriky
Technologie

WS Agilne: Extrémní Programování (XP)

V předchozí části jsme si něco řekli o agilních metodikách jako celku: co mají společného a na jakých principech stojí. V této části se blíže podíváme na principy Extrémního programování.

Tuto metodiku zavedl Kent Beck, poprvé byla použita v roce 1996. Jejím základem je jednoduchý, realistický způsob myšlení, používání poměrně standardních principů a postupů, jako psaní kódu, testování, atd.. Co je na tom extrémní? Myšlenky dotažené do extrémů. Díky tomu je možné dosáhnout vyšší kvality a pružněji reagovat na změny klientových požadavků během vývoje. Manažeři, zákazníci i developeři tvoří jeden tým. Ten se samoorganizuje tak, aby bylo vyřešení problémů co nejefektivnější. Podívejme se na základní pravidla.

Plánování

Základní požadavky jsou sepsány do celků (User stories), které je možné odhadnout a zařadit do iterací. Je to v podstatě ekvivalent rozsáhlých dokumentů s rozebranými požadavky. Každá story je definována tak, aby bylo jasné, co v sobě zahrnuje. Nedostatečné pochopení by mohlo způsobit chybu v odhadu. Je důležité, aby se každá story zaměřovala na to, co klient potřebuje, bez zbytečných detailů použitých technologií. S user stories přímo souvisí vznik akceptačních testů. Slouží k ověření zda byla dána požadavek implementována podle představ. Jedním ze známějších testovacích frameworků je Selenium.

Comic strip: Dilbert – User stories

 

I vývoj je rozdělen do iterací, avšak není přesně definována jejich velikost. Přizpůsobuje se požadavkům klienta a často jsou extrémně krátké. Důležité je časté vydávání releasů s novou funkcionalitou.

Manažování

Mezi nejdůležitější pravidla manažování patří naplánování iterace tak, aby byl tým schopný provádět všechny naplánované story. Příliš mnoho přesčasů dlouhodobě snižuje jeho výkon. Kromě toho je třeba nepřetržitě sledovat postup prací, eliminovat rizika a případně nutnosti konzultovat s klientem přeložení méně prioritních stories do další iterace.

Jiným důležitým principem je zastupitelnost. Členové týmu by se měli při implementaci požadavků do jednotlivých částí projektu střídat. Nemůže nastat situace, že pouze jediný člen týmu bude mít přehled o tom, jak funguje nějaká část systému. Při plánování je takový přístup velkou výhodou.

Extrémnímu programování třeba přizpůsobit i pracovní prostředí. Zařízení by mělo zohledňovat neustálou komunikaci. Ideální je openspace s tabulemi na různé náčrty a seznamem úkolů, které je třeba udělat.

Častým problémem ve firmách bývají dlouhé meetingy, které je třeba plánovat dopředu. Extrémně programování využívá, tak jako další agilní metodiky, stand up meetings. Bývají obvykle ráno. Tým na nich stručně poinformuje a vykomunikuje problémy a jejich řešení. Rychlé meetingy pomáhají udržet tým soustředěný. Je důležité, aby se při stand up meetingu stálo. Podporuje to efektivní a rychlé vyjadřování.

 

Každý člen týmu musí přesně vědět, co může očekávat od ostatních. Pomáhají tomu základní hodnoty a pravidla Extrémního programování. Pokud některé z těchto pravidel nefungují, třeba je upravovat a zlepšovat na pravidelných retrospektivních meetincích.

 

Architektura

Základem je jednoduchost. Implementace jednoduššího designu je vždy kratší než implementace komplexnějšího.

Extrémně programování využívá takzvanou systémovou metaforu. Je to metafora pro jednoduchou architekturu s několika kvalitami. Jedna z nejdůležitějších je její snadná vysvětlitelnost, bez sepisování rozsáhlých dokumentů. Další kvalita je konzistentnost označování tříd a metod. Dobré názvosloví významně pomáhá lepšímu porozumění celkové architektury.

Je důležité implementovat jen funkcionalitu, která je nezbytná a klient ji požaduje. Nesmíme zapomínat ani na neustále refaktorování kódu. V mnoha případech je efektivně použít i Spike řešení. Jsou to jednoduché experimenty, které slouží k rychlejšímu vyřešení problémů. V podstatě jde o kousky kódů nebo programů, které lze ve většině případů po odhalení chyby zahodit. Často se používají na brainstormování OOP aplikací i CRC karty.

Programování

Jelikož programátoři nemají k dispozici kompletní specifikaci aplikace, je nezbytné, aby byl zákazník neustále dostupný na projednání případných nesrovnalostí. Spolupracuje s týmem na vytváření stories a odhadů a určuje jejich prioritu.

 

Každý jeden kousek kódu, který jde do produkce se programuje v párech. Pair programming je metoda, při níž sedí dva programátoři za jedním PC. Zkušenost říká, že pokud pár překoná jisté sociální zábrany a programátoři si uvědomí svou rovnocennost, dokáží za stejný čas implementovat stejné množství funkcionality, jako kdyby pracovali každý sám. Přidaná hodnota spočívá v kvalitnějším kódu a mnohem menší chybovosti.

 

Extrémní programování využívá i principy Test driven developmentu. Před vytvořením jakékoliv funkcionality musí být nejprve napsán jednotkový test (unit test). V případě použití PHP je možné použít PHPUnit framework. Podobné testovací frameworky jsou dostupné i pro jiné jazyky. Psaní testů před funkcionalitou nutí programátory implementovanou funkcionalitu podrobně analyzovat. Dívají se na novou funkcionalitu jako na černou skříňku, o níž vědí, jaký bude mít vstup a jaký výstup. Musí napsat test, který pro všechny možné vstupy otestuje správný výstup. Jelikož testujeme funkcionalitu, která ještě neexistuje, testy musí failovat. Postupným provedením funkcionality by měly testy procházet. Nesmí se vydat nový release, aniž některý z testů neprošel.

Releasovaní hotové funkcionality uskutečňuje vždy jen jeden pár. Ideální je mít na releasovaní vyhrazený jeden počítač, aby i ostatní viděli, kdy je obsazen a releasuje se.

Zdrojový kód je vlastnictvím celého týmu. Znamená to, že každý může dělat změny v celém projektu, jak opravovat chyby, tak přidávat novou funkcionalitu.

 

Testování

Testovat je třeba všechno, neustále a pořád. Psaní unit testů rychleji pomáhá odhalovat chyby i později během vývoje. Stejně se píší unit testy i na chyby. Kromě unit testů se ovšem spouštějí i akceptační testy na každou story a zapisují se jejich výsledky. Story není dokončena pokud neprojde všemi akceptačními testy.

 

 

Základní hodnoty extrémního programování:

  •      Jednoduchost – základ je vytvořit co nejjednodušší verzi, která bude splňovat požadavky a zároveň bude fungovat.
  •      Komunikace – všichni jsou součástí týmu a spolupracují spolu od požadavků až po samotnépsaní kódu.
  •      Zpětná vazba – každou iteraci třeba brát seriózně, demonstrovat hotový kód brzy a často,pozorně naslouchat připomínkám
  •      Odvaha – vždy je třeba mluvit pravdu o průběhu a odhadech, netřeba se ničeho bát, protože nikdo nepracuje sám, ale všichni jako tým
  •      Respekt – členové týmu se musí respektovat a pomáhat si, protože jsou všichni rovnocenní

Blíže popsány procesy, pravidla a hodnoty Extrémního programování můžete nalézt na http://www.extremeprogramming.org

Matúš Kosa (@fetket)

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *