NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 5 - Extrémní programování

V předchozím kvízu, Kvíz - Metodiky RAD, DSDM, SCRUM, Lean a Kanban, jsme si ověřili nabyté zkušenosti z předchozích lekcí.

V této lekci si vysvětlíme pojem Extreme Programming. Ukážeme si jeho prvky a popíšeme proces.

Extrémní programování

Extreme Programming (extrémní programování) je další metodika vývoje softwaru. Tato metodika nespočívá v zavádění zcela nových postupů a doporučení, ale extremizuje ty dosavadní, nám už známé postupy a doporučení z předešlých lekcí.

Metodiky vývoje softwaru

Extremizované prvky

Jak přesně Extreme Programming (zkráceně XP) extremizuje dosavadní principy? Osvědčila se revize kódu? Kód se tedy bude revidovat neustále. Toho je například dosaženo způsobem, kterému se říká pair programming (programování v páru), kdy u jedné pracovní stanice sedí dva programátoři. Jeden píše kód (driver, řidič) a druhý kód kontroluje (observer, pozorovatel). Tito dva programátoři se pravidelně ve svých rolích střídají. Zatímco jeden píše kód, druhý pozoruje, jaké problémy mohou vzniknout a které bude potřeba ošetřit a také jakým strategickým směrem by se měla práce vydat. To dává řidiči možnost plně se soustředit na psaní kódu, zatímco pozorovatel slouží jako jeho záchranná síť. Toto řešení může sice zabrat více času, ale výsledný kód bude obsahovat výrazně méně defektů.

Dalším zextremizovaným prvkem je testování. Dodat někomu produkt bez toho, aniž by byl testován, je hloupost. V Extreme Programming se však testuje pořád a neustále. Využívají se zde jednotkové testy (unit testing) napsané programátory. Tyto testy jsou svým rozsahem často mnohem rozsáhlejší, než výsledný produkt. Snaží se totiž otestovat každou možnost, na které by mohl program selhat. Netestují však pouze programátoři pomocí ručně napsaných testů, ale i zákazníci, kteří testují, jestli program skutečně dělá to, co po něm požadují. Testování v obou případech probíhá neustále. Před změnou kódu, po změně kódu a taky během změny kódu. Testuje se, jestli se funkcionalita programu nijak nepoškodila.

Případné bugy v programu nejsou logické chyby, ale chybějící testy.

Návrh kódu často dělá osoba, která je k tomu určená. Zde ovšem navrhuje kód každý, kdo je toho schopen a dělá to neustále. Refaktorizací (úprava kódu vhodnější alternativou) se zabývá každý a návrh kódu může vhodně upravovat.

Programovat složité programy by se mělo jen v těch nejnutnějších případech, kdy to bohužel nejde jinak. V Extreme Programming se vývoj programu snažíme udržet na té nejmenší možné úrovni složitosti. Toho se daří například programováním pouze toho, co je pro danou chvíli opravdu nezbytné. Nepřidává se žádná omáčka navíc. Snažíme se vytvořit co nejjednodušší program, který bude splňovat požadovanou funkcionalitu a bude fungovat korektně.

To samé platí i o nám už dobře známých krátkých vývojových iteracích, které známe z předchozích metodik. Zde se extremizuje zkracováním těchto cyklů na velmi krátkou dobu. Bavíme se tady o dnech či hodinách, namísto týdnů a měsíců. Jakmile je nová funkcionalita připravena a řádně otestována, ihned se integruje do produkční verze programu.

Hodnoty vhodné k dodržování

Jak to bylo už v předešlých lekcích, tak i zde se uznávají nějaké základní hodnoty.

  • Komunikace je jedna z nejdůležitějších věcí při vývoji softwaru. Ať už je to komunikace uvnitř týmu nebo komunikace se zákazníkem. Pokud selže komunikace mezi některými zainteresovanými subjekty, velmi pravděpodobně selže i výsledný produkt. Bez řádné komunikace se nebude vědět, jaký produkt se má vlastně vytvořit. Extreme Programming přichází s postupy, které komunikaci přímo vyžadují, mezi které patří například již zmíněné párové programování.
  • Plýtvaní se v Extreme Programming snaží co nejvíce předejít. Kód musí být co nejjednodušší, nesmí obsahovat zbytečnosti navíc. Programuje se jenom to, co zákazník doopravdy chce. Práce se soustředí hlavně na aktuální požadavky. Ne na to, co se očekává, že zákazník možná bude chtít. Požadavky zákazníka se mohou kdykoliv změnit, a proto se neprogramuje nic, co by se další den mohlo zahodit do koše.
  • Zpětná vazba je důležitá nejen při vývoji softwaru. Tu nám svým způsobem poskytují zmíněné jednotkové testy, které slouží ke kontrole, že program pracuje tak, jak má a že se při poslední úpravě programu nic nerozbilo. To samé dělají i zákazníci, kteří testují, jestli program splňuje jimi požadovanou funkcionalitu. Zpětné vazby se zde dočkávají také zákazníci, kteří jsou informováni o tom, jak vývoj pokračuje a jak dlouho bude trvat.
  • Další velmi uznávanou hodnotou tohoto stylu vývoje softwaru je kuráž. Tu například potřebuje programátor, který po celém dni práce nad kusem kódu musí tento kód zahodit a začít znovu. Není jednoduché zahodit něco, na čem jste tvrdě pracovali, někdy je to ale nutné. Někdy je také nutné mít kuráž na puštění se do opravy složitého kódu, která zabere klidně celý den.
  • Respekt k práci ostatních, ale i respekt k práci vlastní je další velmi ceněná hodnota. Musí se respektovat již odvedená práce a nesmí se dělat změny, které by ohrozily integritu programu a které by vedly k selhání jednotkových testů. Dodržování výše zmíněných hodnot také vede k získání respektu od ostatních členů týmu. Nikdo z týmu by se neměl cítit méněcenný nebo ignorovaný. To napomáhá lepší motivaci a lepším pracovním výkonům.

Proces vývoje

V každé části vývoje pomocí Extreme Programming existují pravidla jako jsou například:

  • Zadávací část
    • Sepsání tzv. „User Stories“, tedy zjištění různých scénářů toho, jak má program fungovat.
    • Zákazník může požadavky na systém kdykoliv doplnit nebo pozměnit. V takovém případě musí již rozběhlý cyklus začít od začátku.
  • Plánovací část
    • Naplánování vydání hotového produktu. Díky toho se dá lépe utvořit pevný časový harmonogram.
    • Rozdělení projektu do iterací, díky čemuž se můžou v každé iteraci častěji vydávat malé změny.
    • Konání rychlých schůzí podobně jako u metodiky SCRUM.
  • Designová část
    • Čím jednodušší, tím lepší.
    • Nepřidávat funkcionality, dokud nám zákazník neřekne.
    • Častý refaktoring, pokud možno kdykoliv a kdekoliv.
  • Programovací část
    • Nejdříve se píšou jednotkové testy, poté program.
    • Všechen kód se programuje ve dvojicích. Dva programátoři u jedné stanice.
    • Integraci nově vytvořených částí kódu do programového celku provádí pouze jeden pár programátorů. Integrace probíhá často.
    • Optimalizace se provádí jako poslední krok.
    • Žádné přesčasy (to by se určitě líbilo každému :) ).
  • Testovací část
    • Všechen napsaný kód musí mít své jednotkové testy. Všechny testy musí být splněny, než je finální software vydán.
    • Pokud se v programu ocitne chyba, je na ní napsán nový jednotkový test.
    • Jenom jednotkové testy nestačí, je třeba i cílené testování funkčnosti.

Ukázka procesu vývoje:

Iterativní cyklus extrémního programování - Metodiky vývoje softwaru

Závěr

Díky tomu, že Extreme Programming vede již k tradiční činnosti do extrému, dokáže se vývoj softwaru vedený touto metodikou lépe přizpůsobit měnícím se požadavkům ze strany zákazníka a je tak dodáván software vyšší kvality.

V další lekci, Metodiky ASD, FDD a Crystal Methodologies, probereme metodiky Adaptive Software Development, Feature-Driven Development a Crystal Methodologies.


 

Předchozí článek
Kvíz - Metodiky RAD, DSDM, SCRUM, Lean a Kanban
Všechny články v sekci
Metodiky vývoje softwaru
Přeskočit článek
(nedoporučujeme)
Metodiky ASD, FDD a Crystal Methodologies
Článek pro vás napsal Lukáš Grossmann
Avatar
Uživatelské hodnocení:
33 hlasů
Aktivity