Rychle, levně, kvalitně?

Extrémní programování bývá někdy zjednodušeně prezentováno jako programování párové dva lidé u jediného počí...


Extrémní programování bývá někdy zjednodušeně prezentováno jako programování
párové dva lidé u jediného počítače jsou skutečně změnou postřehnutelnou na
první pohled. Jiný možný přístup k XP zdůrazňuje spíše interakci se zákazníkem,
neustálé testování či absenci detailní analýzy projektu. Z hlediska
ekonomických aspektů vývoje softwaru se jako velmi zajímavý jeví tzv. model
čtyř proměnných. V čem spočívá?
Čtyřmi klíčovými proměnnými jsou pro nás náklady, čas, kvalita a šíře zadání. V
zásadě platí, že programátorský tým je zaúkolován zadáním tří proměnných. Šéf
vývoje potom sdělí (zákazníkovi, manažerovi apod.) hodnotu proměnné čtvrté.
Pokud se vrátíme k našemu titulku požadovaný software půjde skutečně vyvinout
rychle, levně a kvalitně, ovšem pouze pokud v rámci projektu pořádně omezíme
šíři zadání. Důležité je, že vývojářům nelze stanovit všechny čtyři proměnné
současně (byť si zákazníci i manažeři někdy myslí opak).

Náklady
Vztah mezi jednotlivými veličinami není lineární. Například nad určitou mez již
nebude platit, že vložením dalších finančních prostředků je možné vývoj
urychlit. Experti na XP spíše doporučují, aby finance byly do projektů vkládány
postupně. Extrémní programování je jen obtížně použitelné ve velkých vývojových
týmech, proto nelze zkrátit termíny ani prostým zaměstnáním více programátorů.
Protože příslušné techniky, například právě párové programování, představují
nezanedbatelnou psychickou zátěž, doporučuje se spíše nelitovat investic a
vývojářům jejich práci usnadnit (rychlé počítače, kvalitní softwarové nástroje,
vybavení kanceláří...). Extrémní programování obvykle patří k dražším metodám
vývoje softwaru než klasické metody
.
Čas
Čas obvykle nebývá vážnějším problémem, projekty extrémního programování totiž
z podstaty věci netrvají dlouho. Vyžaduje se naopak zpětná vazba od zákazníka a
ladění projektu za běhu. Vývojáři XP se snaží o přehledný kód: pokud začne být
údržba problematická, jsou ochotni namísto úprav dosavadní kód prostě smazat a
napsat další verzi programu úplně znovu.

Kvalita
Zatím jsme sledovali roli času a vložených prostředků. Třetí proměnnou je
kvalita: Cílem XP samozřejmě není (nebo se to alespoň nikdo neodváží otevřeně
deklarovat) vyvíjet nekvalitní kód. Na kvalitu ovšem často dojde ve chvíli, kdy
jsou na tým kladeny nerealistické požadavky ohledně zbylých proměnných. V
takovém případě se může objevit i neduh, kterému se jinak XP snaží vyhnout.
Vývojáři se soustředí spíše na uživatelské rozhraní než na vlastní funkčnost, v
kódu se začnou hromadit nekonzistence.

Šíře zadání
Poslední proměnnou představuje šíře zadání. XP se snaží dodávat zákazníkům
spíše jednodušší, přehledná až jednoúčelová řešení než složité komplexní
systémy. Cílem je rychlý vývoj a rychlé nasazení do provozu. Svět se stále
mění, často se ukáže, že původně zamýšlené nadstavbové funkce nejsou potřeba,
zákazník naopak vyžaduje funkce jiné, eventuálně bude nutné dodat úplně jiný
systém. Vývojáři XP se snaží nedělat zbytečnou práci. Jejich sloganem je
"dnešní problémy řešte dnes, zítřejší až zítra". Složitá řešení navíc vyžadují
předběžnou analýzu návrhu, a to v XP není zvykem. Spíše než na tvorbu diagramů
popisujících vztah jednotlivých komponent systému se všichni zaměřují přímo na
produkovaný kód. A protože ten má být přehledný a jednoduchý, postačí pouze
velmi stručná dokumentace.
Jak se ukazuje, XP má smysl tam, kde prostředí je nejasné a proměnlivé
(konzervativním zákazníkům může extrémní vývoj připomínat spíše neřízený
chaos). Naopak se nehodí v situacích, kde platí klasická programátorská poučka,
podle které náklady na změnu rostou s časem exponenciálně. Metodika XP také
nemá valný smysl, pokud systém není jak testovat např. software pro počítač
řídící přistání kosmické lodi bude třeba vyvíjet jiným způsobem.

Extrémní vývojář hledá místo na slunci
Extrémnímu programování (XP) jsme se na stránkách Computerworldu již věnovali
několikrát. Toto Téma týdne si proto spíše než obecných principů bude všímat
konkrétního nasazení XP, specializovaných vývojových nástrojů pro tuto metodu
tvorby softwaru a budoucnosti celého přístupu.
XP je na jednu stranu pokládáno za odpověď na stav, kdy je třeba kód dodat
rychle a v průběhu vývoje se navíc mohou kdykoliv měnit podmínky zadání.
Metodika je někdy prezentována přímo jako revoluční cesta z krize, ve kterém se
má vývoj softwaru nacházet (jinou takovou revoluci, "změnu paradigmatu", může
představovat třeba genetické programování). Existuje ovšem nějaká krize?
Kritici přitom tvrdí, že termín XP představuje spíše populární nálepku a metody
extrémního programování se v té či oné podobě používají i jinde (nebo dokonce
všude). Tady samozřejmě vyvstává několik otázek: Především, nakolik je pro
extrémní programování typická synergie? Můžeme skutečně použít jen několik
principů XP, nebo dávají smysl pouze jako celek? Zastánci XP preferují vesměs
druhou možnost. XP ovšem jako nový přístup nestojí úplně samo, ale je zřejmě
nejznámější součástí obecnější skupiny technik, které jsou jako celek
označovány agilní (agile) vývoj.
Zájemce o podrobnější informace lze odkázat na seznam dalších zdrojů uvedených
na str. 12. V češtině představuje zřejmě nejpodrobnější zdroj informací kniha
Kenta Becka, kterou vydalo nakladatelství Grada. Některým obecným principům
extrémního programování se věnujeme i v závěrečné části tohoto Tématu týdne,
která srovnává extrémní programování s metodami vývoje open source softwaru.

Kdo dnes programuje extrémně?
Jaké aplikace se dnes vyvíjejí metodami extrémního programování? Kdo tímto
způsobem vyvíjí? V jakých vývojových nástrojích je implementována speciální
podpora pro XP? Chtějí dodavatelé vývojových nástrojů uvádět na trh nějaké "XP
kity"? A nakonec, jakou má extrémní programování vůbec budoucnost?
Abychom získali odpovědi na tyto otázky, podnikli jsme malou anketu. Jedním z
jejích výsledků je kompromisní vztah k XP: Řada zásad této metodiky se používá,
obvykle však ne všechny.
"Základní metodikou Unicornu je Rational Unified Process, který je XP v mnohém
podobný," říká David Kimr, strategický ředitel společnosti Unicorn. "XP se
soustředí zejména na design, psaní kódu a testování, RUP je širší a pokrývá
celý životní cyklus vývoje a údržby softwaru. V oblastech, kde se XP a RUP
překrývají, používají z velké části shodné postupy, i když odchylky se
samozřejmě najdou RUP například nevyžaduje striktně párové programování, které
je v XP tak populární." Pro Unicorn je jeho vlastní metodika preferovaná a
nějaký přechod na XP se zde nechystá. Co se týče typu zakázek, "RUP používáme
na všechny softwarové projekty Unicornu vyjma projektů, kde pracujeme v širším
týmu několika společností a metodika vývoje je předem dána," vysvětluje Kimr.
Extrémní programování je někdy pokládáno za vhodné pro vývoj jednoúčelových
aplikací. Do této skupiny spadají mnohé systémy pracující v prostředí webu.
Proto jsme oslovili redakci serveru, který se zaměřuje právě na tvorbu
internetových aplikací. Vilém Málek, redaktor serveru Interval.cz, nicméně
tvrdí: "Extrémní programování zatím ještě není běžně používáno pro vývoj
internetových aplikací. To se samozřejmě může změnit v několika měsících,
otázkou však zůstává, zda se nasazení XP na internetu vyplatí. Snadno by se
totiž mohlo stát, že výstupem mimořádně náročného projektu bude stejná
aplikace, jakou by dodal standardní programátorský tým jen o nějaký týden
později." K hlavním přednostem XP tedy patří rychlost a kvalita, naproti tomu
nevýhodou je cena. "XP se podle mého vyplatí nasadit jen tam, kde jsou k
dispozici kvalitní zdroje a kde je přitom zapotřebí odvést rychlou a dlouhodobě
spolehlivou práci. Kritické aplikace, u nichž je požadována rychlá implementace
s maximální spolehlivostí, jsou, zdá se, přirozenou doménou XP. Upřímně řečeno,
internetových aplikací tohoto typu v současnosti moc není." Jak se na extrémní
programování dívají dodavatelé vývojových nástrojů? "Vývojové nástroje
Microsoftu i metodika XP se výborně doplňují," uvádí Jan Stoklasa z .Net
Developer Group Microsoft ČR. "Ron Jeffries, šéfredaktor časopisu o extrémním
programování http://www.xprogramming.com, používá Visual Studio .Net jako své
hlavní vývojové prostředí."

Zajímavou perličkou z českého zákulisí může podle Stoklasy být, že některé
postupy extrémního programování byly využity také při vývoji testovací aplikace
pro vývojářskou soutěž Piškvorky .Net 2002
(http://msdn.microsoft.cz/Piskvorky.net).

V tuzemském Borlandu je zkušenost jiná: "V současnosti nemáme informace, že by
někdo z našich zákazníků výrazně využíval extrémního programování," uvádí Josef
Štěpán, který v českém Borlandu působí na pozici Software Specialist.
Hodlají dodavatelé vývojových nástrojů dodávat nějaké speciální verze svého
softwaru určené pro týmy vyvíjející metodami XP? "Konzistenci mezi návrhem a
implementací velkých projektů řeší extrémní programování především postupným
zjemňováním návrhu a silná podpora pro zjemňování návrhu bude k dispozici i v
další generaci vývojových nástrojů společnosti Microsoft," odpovídá Stoklasa.
"Nejlepší podporu XP mezi našimi produkty poskytuje Borland JBuilder v
nejvyšších edicích, tj. Enterprise a Enterprise Studio for Java. Jde vlastně o
soubor programovacích technik, které vedou k dosažení maximální efektivity při
psaní zdrojového kódu, jako jsou např. refactoring, testování unit a
automatická tvorba dokumentace," uvádí Štěpán. Borland ani Microsoft však
nehodlají nabízet pro vývojáře nějaký speciální produkt. "Očekáváme spíše trend
podpory technik používaných v XP v rámci jednotlivých produktových řad," soudí
Štěpán. Připouští samozřejmě, že vše závisí i na poptávce trhu.
Na závěr naší ankety se logicky dostáváme k odpovědím na otázku týkající se
budoucnosti extrémního programování. Nejprve názor Davida Kimra z Unicornu: "K
popularitě XP určitě přispívá i geniálně zvolený název. Výhodou XP je
jednoduchost a srozumitelnost, díky tomu je XP vývojovými týmy relativně snadno
přijímáno zejména pokud předtím žádnou formální metodiku nepoužívaly. Jako
hlavní nevýhodu vidím přílišné zaměření na vlastní vývoj, bez toho, aby byly do
hloubky pokryty disciplíny, které jsou pro úspěch větších projektů nezbytné
například business modelování nebo konfigurační řízení. Přes své nevýhody je
ale XP moderním přístupem k vývoji softwaru a lze očekávat, že se v mnoha,
zejména těch menších, týmech rozhodně uplatní."
Vilém Málek z Interval.cz souhlasí, že extrémní programování se hodí jen pro
určitý druh aplikací. "Osobně se domnívám, že XP zůstane doménou několika
špičkových specializovaných firem, které budou toto řešení nabízet ostatním.
Stálý zdroj zakázek by mohly najít v oblasti intranetu a extranetu. Zde je
dostatek finančních zdrojů a navíc panuje velký hlad po kvalitních a rychlých
řešeních."
Co se týče smyslu XP, nejskeptičtější je člen výboru Českého sdružení uživatelů
operačního systému Linux Pavel Janík. "Extrémní programování je podle mého
názoru do jisté míry takovou zaklínací formulkou. Jde o snahu jednoduše
pojmenovat několik základních obecných pravidel pro vývoj softwaru, které
programátoři při své práci již tak či onak stejně používají," domnívá se Janík.
Relativní optimismus naproti tomu panuje v Microsoftu. "Podle mého názoru je
extrémní programování dobře navrženou a promyšlenou metodikou, která bude v
dalších letech hrát stále větší úlohu," tvrdí Jan Stoklasa.

Jan Stoklasa
.Net Developer Group, Microsoft ČR: "Podle mého názoru je extrémní programování
dobře navrženou a promyšlenou metodikou, která bude v dalších letech hrát stále
větší úlohu. Vývojové nástroje Microsoftu i metodika XP se výborně doplňují."

Vilém Málek
redaktor serveru Interval.cz: "XP zůstane doménou několika špičkových
specializovaných firem... Stálý zdroj zakázek by mohly najít v oblasti
intranetu a extranetu. Zde je dostatek finančních zdrojů a navíc panuje velký
hlad po kvalitních a rychlých řešeních."

Pavel Janík
člen výboru Českého sdružení uživatelů operačního systému Linux: "Extrémní
programování je podle mého názoru do jisté míry jen zaklínací formulkou. Jde o
snahu jednoduše pojmenovat několik základních obecných pravidel pro vývoj
softwaru, které programátoři při své práci již tak či onak stejně používají."

David Kimr
strategický ředitel společnosti Unicorn: "Přes své nevýhody je XP moderním
přístupem k vývoji softwaru a lze očekávat, že se v mnoha, zejména těch
menších, týmech rozhodně uplatní. Výhodou XP je jednoduchost a srozumitelnost,
díky tomu je XP vývojovými týmy relativně snadno přijímáno zejména pokud
předtím žádnou formální metodiku nepoužívaly."

Další informace o extrémním programování
Alan Radding: Extrémně agilní vývoj, Computerworld 17/2002
Maggie Biggsová: Extrémní prakticky programátorů, Computerworld 36/2001
Kent Beck: Extrémní programování (Grada, Praha, 2002, recenze viz Computerworld
30/2002)
Webové stránky zaměřené na extrémní programování:
http://extremeprogramming.com, http://www.xprogramming.com,
http://www.martinfowler.com, http://www.xdeveloper.com
Související metody agilního vývoje: http://www.controlchaos.com (Scrum),
http://crystalmethodologies.org (Crystal), http://www.adaptivesd.com
(Adaptive), http://www.dsdm.org (Dynamic System Development Method).

Kdy se nevyplatí používat XP
Ani zastánci XP se nedomnívají, že by jejich postupy byly při tvorbě softwaru
použitelné zcela univerzálně. Kdy je lépe se extrémnímu programování vyhnout?
Pokud zákazník trvá na kompletní specifikaci, analýze či návrhu předtím, než se
vůbec začne programovat.
Příliš velké vývojové týmy (50 a více vývojářů).
Nutnost zachování kompatibility s velkým množstvím již existujících aplikací
(programování pro mainfarmy apod.).
Dlouhá zpětná vazba (několikaměsíční testování, dlouhá kompilace programu,
konzervativní zákazník, nemožnost testování...).
Nevyhovující, např. hlučné pracovní prostředí, nutnost příliš mnoha přesčasů.
XP je, zřejmě i kvůli pro mnoho vývojářů nezvyklému párovému programování,
psychicky poměrně náročné.
(Zdroj: Kent Beck: Extrémní programování, Grada, Praha, 2002)









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