Extrémně agilní vývoj

Stále častěji skloňovaným pojmem na poli vývojových metodologií se stává tzv. agile programming agilní programován...


Stále častěji skloňovaným pojmem na poli vývojových metodologií se stává tzv.
agile programming agilní programování. Tento výraz zahrnuje hned několik
různých směrů, které se snaží vyřešit nedostatky dosavadních (tradičních)
přístupů, jež při rostoucích nárocích na rychlost a kvalitu vývojových procesů
mnohdy narážejí na hranice svých možností.
Jens Coldewey zastává funkci poradce pro řešení problémů při vývoji aplikací.
Jestliže se objeví u nějakého projektu, je to obvykle takový, který se právě
zmítá v potížích tedy v takových situacích bývá management natolik zoufalý, že
ochotně přistoupí na možnost vyzkoušet takřka cokoliv. A právě tehdy Coldewey,
nezávislý konzultant z Mnichova specializující se na bankovnictví a finanční
služby, začíná využívat Crystal jednu z nových metodologií tzv. agilního vývoje
(agile development).
Označení "agilní" se začíná objevovat ve spojitosti se stále vzrůstajícím
počtem vývojových metodologií, které jsou nazývány Scrum, Crystal, Adaptive,
Feature-Driven Development či Dynamic Systems Development Method (DSDM). Tyto
nové přístupy mají jedno společné všechny počítají s tím, že jestliže si
najmete schopné a kvalifikované programátory, dá se předpokládat, že jednoduše
umějí napsat potřebný kód. Z toho plyne, že veškeré problémy, na které vaši
vývojáři při realizaci projektu narazí nesouvisejí se samotným psaním kódu, ale
mají své kořeny v organizaci takového projektu a v nedokonalé komunikaci těch,
kdo se na něm podílejí. A to jsou oblasti, které se pokoušejí agilní přístupy
řešit.
Sám Coldewey se např. dostal k projektu, kde byl tým programátorů vystaven
extrémnímu tlaku, aby rychle ukazoval výsledky. Zvolil řešení na základě
zmíněného přístupu Crystal. "Způsob, jakým pracují, by měl záležet především na
nich samotných. Pokusili jsme se proto společně znovu definovat vývojový
proces," říká. Nechal vývojáře, aby určili všechny faktory, které měly na
rychlost vývoje pozitivní vliv, a naopak i ty, které celý proces zpomalovaly.
Na jejich základě navrhli proces, který obsahoval pouze ty prvky, které vývoj
zrychlovaly, přičemž se vyhnuli těm, které práci programátorů zdržovaly. Tento
postup vývojáři dodržovali, aby se dostali k první iteraci systému v průběhu
několika málo týdnů a nepropásli termín dokončení. "Tuto proceduru jsme
opakovali i nadále u každé iterace až do té doby, než jsme dospěli ke
stabilnímu procesu celkově to obnášelo asi tři iterace," říká Coldewey.
Ačkoliv různé agilní přístupy jsou odlišné, lze vypozorovat několik společných
znaků. Hlavním záměrem je vývoj softwaru, který může být rychle obměňován, a
všechny specifikují krátké iterace, přičemž maximalizují čas strávený
komunikací mezi členy týmu. Velká pozornost se soustřeďuje i na morálku
programátorů. "Není možné mluvit o agilních metodologiích bez toho, abyste
současně hovořili i o morálce vývojového týmu," tvrdí Alistair Cockburn, tvůrce
metody Crystal.
Agilní přístupy jsou odlišné od známého extrémního programování (extreme
programming, XP), ačkoliv všechny lze charakterizovat jako "odlehčené"
metodologie to znamená, že snižují režii vývojového procesu softwaru tím, že
obcházejí některé prvky, které programátory příliš zdržují (příliš zdlouhavé
definice požadavků či rozshlá dokumentace). Extrémní programování se nicméně
liší od agilních postupů tím, že je v porovnání s nimi mnohem více normativní v
některých situacích až dogmatické. XP se v podstatě točí kolem 12 základních
praktik, které identifikoval Kent Beck, autor knihy Extreme Programming
Explained.
Přesto, že XP je v různých formách využíváno už po několik let, podnikový
sektor jeho existenci teprve nedávno začal registrovat. Hlavní výhradou a
překážkou je, že některé z praktik předepsaných v rámci extrémního programování
odporují dlouholeté politice mnoha firem. Typicky jde zejména o programování v
párech, kdy dvojice vývojářů sedí společně u jediné pracovní stanice to se jeví
jako očividně neefektivní, nicméně již několik studií ukázalo, že výsledkem je
nižší chybovost kódu, která ve svém důsledku vyústí v rychlejší ukončení
projektu. Méně časově náročné je následné hledání a opravování chyb. Často
uváděné problémy s vyššími náklady na vývoj pak mohou být z tohoto pohledu
diskutabilní.
Tento přístup však vyžaduje po zákazníkovi, pro něhož je aplikace vyvíjena,
aktivní přístup až do té míry, že se po něm vyžaduje, aby sám psal testy pro
odzkoušení požadované funkce, a to ještě před tím, než je příslušná část
systému skutečně naprogramována. Ve světě XP vše probíhá např. tak, že zákazník
definuje požadované funkce a vývojáři odhadnou, jakou dobu zabere psaní kódu
pro jednotlivé funkce. Na základě toho se zákazník rozhodne, se kterými z nich
se začne, poté sestaví příslušné testy a programátoři píší kód tak, aby těmto
testům vyhověl. To samozřejmě klade na zákazníky vysoké nároky, výsledkem však
je, že dostanou přesně to, co požadují.

Agilně ve firmách
"Odlehčené" metodologie byly adoptovány zatím ponejvíce ze strany nezávislých
výrobců softwaru a internetových start-upů, kteří neměli zaběhnutý vývojový
proces. Tyto přístupy nejlépe fungují tam, kde v průběhu vývoje často a rychle
dochází ke změnám či přizpůsobování požadavků, nebo v počátku nejsou zcela
jasné a jednoznačné.
Např. společnost Lante je schopná použít mnoho různých přístupů od tradičních
až po agilní ale teprve nedávno se objevil první zákazník, který byl ochoten
vyzkoušet XP. Aby se pro ně XP stalo přijatelnější, zavedli dokonce přístup
označovaný "one-team", který kombinuje XP vývoj s analýzou ROI (return on
investments), která vyhodnocuje požadavky na bázi návratnosti investic.
Přechod k agilnímu programování však zasahuje především jeden z nejcitlivějších
problémů: nedostatek otevřené komunikace. V průběhu dosavadních let pracovali
uživatelé a firemní IT oddělení odděleně, zatímco agilní přístupy přinášejí
prvek přímé komunikace, která může znamenat řešení problémů s nepřesnými
požadavky či zkreslenými odhady.

Agilně, či neagilně?
Je právě váš podnik vhodným kandidátem pro použití některé z metodologií
agilního programování? Odpověď může znít "ano" jestliže máte:
- nejisté nebo proměnlivé požadavky
- zodpovědné a dobře motivované vývojáře
- zákazníka, který rozumí problému a je schopen se v procesu angažovat

Na druhou stranu, spíše tradiční a lépe předvídatelný přístup se doporučuje u
projektů, které mají:
- více než 50 vývojářů
- kontrakt stanovující fixní cenu nebo určitý pevný rámec
(Zdroj: Martin Fowler: The New Methodology, www.martinfowler.com)

Systémy agilního programování
Více informací o agilních programovacích metodách najdete na stránkách
www.agilealliance.com v sekci Agile Manifesto nebo také v dokumentu "The New
Methodology" Martina Fowlera na
www.martinfowler.com/articles/newMethodology.html.

Extreme programming (www.extremeprogramming.org, www.xprogramming.com)
Tato metodologie je založena na 12 základních praktikách počínaje programováním
ve dvojicích a konče častým refactoringem kódu díky tomu je více svazující než
novější metody agilního programování.

Scrum (www.controlchaos.com)
Přístup je založen na empirickém modelu kontrolního procesu. Programování s
využitím metody Scrum probíhá v týmech, které samy rozhodují o řízení projektu,
a obejde se bez důslednějšího plánování, podrobnější definice úkolů a
reportování.

Crystal (http://crystalmethodologies.org/)
U přístupu označovaného jako Crystal definuje programátorský tým vývojový
proces a optimalizuje jej v dalších iteracích, dokud není stabilní.

Adaptive (www.adaptivesd.com)
Metoda je založena na adaptivních, nikoliv deterministických teoriích a nabízí
frameworky pro aplikování adaptivních principů a podporu spolupráce.

Feature-Driven Development
Modelově orientovaný a na krátké iterace zaměřený proces je vybudován kolem
funkcí jakožto pracovních jednotek, které mají určitý smysl pro klienta i
vývojáře a jsou dostatečně malé, aby je bylo možné rychle realizovat.
Podrobnosti obsahuje kniha Java Modeling Color With UML autorů Petera Coada,
Erica Lefebvra a Jeffa De Lucy (Prentice Hall PTR, 1999).

Dynamic Systems Development Method (www.dsdm.org)
Jde o metodologii pro rychlý vývoj aplikací (rapid application development).
DSDM je založena na principech, mezi něž náleží zplnomocnění programátorského
týmu, inkrementální vývoj a integrované testování.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.