Agilní metodiky vývoje software



Podobné dokumenty
Agilní metodiky vývoje software

}w!"#$%&'()+,-./012345<ya

ÚVOD DO SOFTWAROVÉHO INŽENÝRSTVÍ

Řízení reálných projektů, agilní metodiky

TREND POPIS ODPOVĚDNOSTI PRACOVNÍKA MANAŽER VÝVOJE

Návrh softwarových systémů - úvod, motivace

Návrh softwarových systém. Návrh softwarových systémů

Seminární práce Vývoj informačního systému. Manažerská informatika 2 Ing. Miroslav Lorenc

X36SIN: Softwarové inženýrství. Životní cyklus a plánování

Příloha č. 3. Charta projektu plné znění (pro jiné OSS než MŠMT)

Charta projektu úplné znění pro MŠMT a jeho příspěvkové organizace a Českou školní inspekci

Agile Software Development

Ročníkový projekt. Jaroslav Žáček

Příloha č. 2. Charta projektu plné znění (pro MŠMT/ČŠI a příspěvkové organizace zřízené MŠMT)

Metodika analýzy. Příloha č. 1

Testing as a Service. Přístupné, flexibilní a cenově výhodné řešení pro ověření kvality softwaru. Kompletní portfolio služeb testování softwaru

SOFTWAROVÉ INŽENÝRSTVÍ Řízení IT projektů

ZVÝŠENÍ KVALITY ŘÍZENÍ NA MĚSTSKÉM ÚŘADU LANŠKROUN V RÁMCI OP LIDSKÉ ZDROJE A ZAMĚSTNANOST. Reg. č. CZ.1.04/4.1.01/ KOMPETENČNÍ MODEL

4IT445 - AGILNÍ VÝVOJ WEBOVÝCH APLIKACÍ AGILNÍ METODIKY VÝVOJE SW ING. JAN ČERNÝ

Jak vytvořit správné Zadání IS

VYUŽITÍ HELPDESKOVÉHO INFORMAČNÍHO SYSTÉMU PŘI ROZVOJI A ZÁKAZNICKÉ PODPOŘE KNIHOVNÍHO SYSTÉMU

Plánování ve stavební firmě

PROBLÉMY A SPECIFIKA VÝVOJE SOFTWARE

Rozvoj a údržba systémů

Testování software. Jaroslav Žáček

XINF1. Jaroslav Žáček

Vývoj řízený testy Test Driven Development

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Zuzana Šochová MFF Modelování a realizace softwarových projektů

POČÍTAČE A PROGRAMOVÁNÍ

Agenda. Docházka Odhadování Neohlášený test Vedení projektů Historie projektů

Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

Metodika adaptace nových zaměstnanců

Softwarový proces. Bohumír Zoubek, Tomáš Krátký

Obsah. Zpracoval:

Řízení v souvislostech

Návrh a management projektu. Řízení a koordinace projektu

Semestrální práce z předmětu 4IT421 Téma: CMMI-DEV v.1.3 PA Project Monitoring and Control

Studie webů automobilek

Jakým způsobem lze zlepšit plnění smluv o úrovni poskytovaných služeb a současně snížit náklady?

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Určeno studentům středního vzdělávání s maturitní zkouškou, předmět: Marketing a management, téma: Marketingový výzkum

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

SOFTWAROVÉ INŽENÝRSTVÍ

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

SWOT ANALÝZA. Příloha č. 2, Pracovní list č. 1 SWOT analýza SWOT analýza - obsah. SWOT analýza. 1. Základní informace a princip metody

Manažerská informatika - projektové řízení

Jedno globální řešení pro vaše Mezinárodní podnikání

Předmluva 11. Poděkování 11 O autorech 12 Úvodem 12 Komu je tato kniha určena 13 Jak byste měli tuto knihu číst 13 Web 14

Blacksmith Consulting S. l.

PODNIKATELSKÝ PLÁN. Střední odborná škola a Gymnázium Staré Město. Ing. Miroslava Kořínková III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Vstupní a výstupní hodnocení v rámci projektu EU peníze středním školám

Business Development Rozvoj podniku

I. JAK SI MYSLÍM, ŽE MOHU BÝT PRO TÝM PROSPĚŠNÝ:

Hodnotocentrické metodiky

Podnikatelský plán. Název projektu. Logo. Jméno živnostníka / firmy

Pro koho děláme web. Adam Fendrych, Dobrý web

Testování softwaru. 10. dubna Bořek Zelinka

Nebojte se přiznat, že potřebujete SQA

SOFTWAROVÉ INŽENÝRSTVÍ Řízení IT projektů

SPECIFIKA CERTIFIKACE PODLE ČSN EN ISO 9001:2001 V ORGANIZACÍCH, KTERÉ SE ZABÝVAJÍ VÝVOJEM SOFTWARE

Agile. nejžádanější způsob vývoje software. Tomáš Tureček. Business consultant, Lean&Agile coach Tieto

Psychodiagnostika Hogan a 360 dotazník

Příloha A: Souhlas s využitím obchodního jména GE Money bank, a.s. v diplomové práci

2. Začlenění HCI do životního cyklu software

ELO Analytics Vaše obchodní metriky na jednom místě. Vaše obchodní metriky na jednom místě. Enterprise Content Management

ICT plán. Škola: gyricany - Hodnocení: Vstupní hodnocení. Indikátor Aktuální stav k Plánovaný stav k řízení a plánování

Logistika. REFERENCE Srpen 2018

P R O J E K T O V É Ř Í Z E N Í A M A R K E T I N G 1. Akad. rok 2015/2016, LS Projektové řízení a marketing - VŽ 1

SOUBOR OTÁZEK PRO INTERNÍ AUDIT (Checklist)

End-to-end testování. 26. dubna Bořek Zelinka

Kategorie vytvořené na základě RVP a projektu Evaluace inf. gramotnosti žáků ZŠ.

DOTAZNÍK PRO URČENÍ UČEBNÍHO STYLU

Úvod do problematiky vývoje Vývoj informačních systémů

EFEKTIVNÍ KOMUNIKACE V ORGANIZACI

Co je riziko? Řízení rizik v MHMP

Jednotný NIS Prezentace k zahájení projektu pro Radu kraje Vysočina. Projektový manažer - Ing. Ivan Sokolov, Ph.D.

VÝSTUPNÍ ZPRÁVA. Jan Hodnocený 360 zpětná vazba

ROZHODNUTÍ EVROPSKÉ CENTRÁLNÍ BANKY (EU)

Podklady pro ICT plán

Vývoj informačních systémů. Jak vyvíjet v týmu

Lekce 1: Co je to tým?

Přípravné činnosti projektu. Mgr. Lenka Svrčinová Ing. Jan Ministr, Ph.D.

V.3. Informační a komunikační technologie

1 Popis předmětu plnění projektu implementace MIS

Vývoj informačních systémů. Přehled témat a úkolů

Agilní metodiky a techniky. analýza a vývoj IS

Příloha č.3 Otázka pro hodnocení manažera

Informační média a služby

PROBLÉM DELEGOVÁNÍ v procesu VEDENÍ LIDÍ v praxi vedoucího/řídícího pracovníka:

RUKOVĚŤ ÚSPĚŠNÉHO ŽADATELE V RÁMCI VÝZVY 06

Přihláška Motivační dopis

KOMPETENČNÍ MODEL NÁZEV PROJEKTU: ZVÝŠENÍ KVALITY POSKYTOVANÝCH VEŘEJNÝCH SLUŽEB MĚSTEM KRÁLÍKY A ŘÍZENÍ MĚÚ PRO KLIENTA

Zvládnu to sám nebo potřebuji pomoc?

OZNÁMENÍ O VOLNÉM PRACOVNÍM MÍSTĚ ZA ÚČELEM SESTAVENÍ REZERVNÍHO SEZNAMU

Struktura Pre-auditní zprávy

Zavádění projektového řízení ve společnosti

CHARAKTERISTIKA PŘEDMĚTU INFORMATIKA (4 leté studium)

Problémové domény a jejich charakteristiky

POŘÍZENÍ A IMPLEMENTACE INFORMAČNÍCH SYSTÉMŮ

Transkript:

MASARYKOVA UNIVERZITA V BRNĚ FAKULTA INFORMATIKY ^TIS m p Agilní metodiky vývoje software DIPLOMOVÁ PRÁCE Bc. Tomáš Kotrla Brno, Podzim 2005

Prohlášení Prohlašuji, že tato diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Vedoucí práce: Mgr. Barbora Zimmerová 11

Poděkování Rád bych poděkoval Ing. Václavu Kadlecovi za představení zajímavého odvětví agilních metodik, Mgr. Barboře Zimmerové za cenné rady a trpělivost projevenou při mém vedení a své matce za podporu a zázemí, které jsem měl během celého studia. m

Shrnutí Agilní metodiky vývoje softwaru jsou v poslední době rychle se rozvíjejícím odvětvím softwarového inženýrství, kterému mnozí odborníci předpovídají slibnou budoucnost. Agilní metodiky jsou vyhledávané zejména pro svoji schopnost rychle poskytnout fungující základ systému a flexibilně reagovat na měnící se požadavky. Práce se věnuje odvětví agilních metodik vývoje software a pro důkladnější zkoumání si vybírá metodiky Extrémní programování, Crystal metodiky a Dynamic Systems Development Method, které popisuje a srovnává. Součástí práce je náčrt řešení případové studie pomocí vybraných metodik. IV

Klíčová slova vývoj software, agilní metodiky, Extrémní programování, XP, Crystal metodiky, Crystal Clear, Dynamic Systems Development Method, DSDM v

Obsah 1 Úvod 1 1.1 Struktura práce 1 2 Agilní metodiky 2 2.1 Charakteristika agilních metodik 2 2.2 Srovnaní s klasickým přístupem 3 2.3 Manifest agilního vývoje software 5 2.4 Hodnocení agilních metodik 7 3 Vybrané agilní metodiky 10 3.1 Extrémní programování 11 3.1.1 Principy 12 3.1.2 Role 14 3.1.3 Postupy 15 3.1.4 Životní cyklus 17 3.1.5 Hodnocení 19 3.2 Crystal metodiky 20 3.2.1 Principy 22 3.2.2 Role 23 3.2.3 Postupy 24 3.2.4 Životní cyklus 27 3.2.5 Hodnocení 29 3.3 Dynamic Systems Development Method 29 3.3.1 Principy 30 3.3.2 Role 31 3.3.3 Postupy 33 3.3.4 Životní cyklus 34 3.3.5 Hodnocení 35 3.4 Srovnání vybraných metodik 37 3.4.1 Principy 37 3.4.2 Role 39 3.4.3 Postupy 41 4 Případová studie 44 4.1 Výchozí podmínky 44 4.2 Extrémní programování 45 4.3 Crystal Clear 49 4.4 Dynamic Systems Development Method 51 4.5 Srovnání životních cyklů 52 5 Závěr 54 Literatura 55 vi

Seznam obrázků 2 Agilní metodiky 2.1 Srovnání tradičních a agilních přístupů 3 3 Vybrané agilní metodiky 3.1 Životní cyklus podle XP 20 3.2 Volba odpovídající metodiky z rodiny" Crystal 21 3.3 Cykly projektu řízeného metodikou Crystal Clear 28 3.4 Životní cyklus podle DSDM 36 4 Případová studie 4.1 Ukázka karty zadání 45 4.2 Ukázka úkolové karty 47 4.3 Ukázka bleskové plánovací karty 49 1

Seznam tabulek 2 Agilní metodiky 2.1 Vlastnosti agilních metodik 8 4 Případová studie 4.1 Část karet zadání vybraných do první iterace 46

Kapitola 1 Úvod Potřeba vývoje software je stejně stará, jako první počítače. Tato disciplína se musela vypořádat s řadou problémů a prodělala tak mnoho změn. Od, ve své době, revolučního vývoje podle modelu vodopád se přes spirálový model dostala až k současným sofistikovaným přístupům k vývoji software. Úspěšným zástupce takových přístupů je metodika firmy IBM s názvem Rational Unified Process [8], zkráceně RUP V poslední době se však objevili nové metodiky, které směle slibují rychlejší a levnější dodávky software. Jsou souhrnně označované jako agilní. Přitahují na sebe čím dal tím větší pozornost a část odborné veřejnosti jim předpovídá slibnou budoucnost. Úkolem a cílem práce je získat přehled o agilních metodikách a následně je zhodnotit. Druhým úkolem je výběr tří metodik a jejich vzájemné srovnání. Posledním úkolem je pak ukázka vývojového cyklu pomocí případové studie. 1.1 Struktura práce Práce je rozdělena na pět kapitol, v první uvádím zadání práce a definuji její cíle. V kapitole 2. Agilní metodiky charakterizuji agilní metodiky, věnuji se důvodům jejich vzniku, srovnávám je s tradičními přístupy a hodnotím jejich vlastnosti. Na začátku kapitoly 3. Vybrané agilní metodiky si vybírám trojici agilních metodik, kterým se v práci více věnuji. Každou stručně představuji, uvádím její principy, definované role v týmech, předepsané postupy, typickou podobu vývojového cyklu a vyjadřuji hodnocení dané metodiky. Na závěr srovnávám principy, role a postupy vybraných metodik, přičemž se zaměřuji většinou jen na rozdíly. V kapitole 4. Případová studie se snažím stručně ukázat průběh projektu ve vybraných metodikách a nakonec metodiky srovnat na základě jejich vývojových cyklů. Poslední kapitola je závěrem práce, kde shrnuji výsledky práce a zabývám se možnostmi dalšího bádání v oblasti agilních metodik. 1

Kapitola 2 Agilní metodiky Tato kapitola se věnuje obecně všem agilním metodikám, popisuje jejich přístup k vývoji software, uvádí jejich společné principy a rozdíly oproti tradičním přístupům. Kapitola je ukončena stručným hodnocením obsahujícím výčet pozitivních a negativních vlastností agilních metodik. 2.1 Charakteristika agilních metodik V angličtině se agilní metodiky označují jako agile methodologies". Toto spojení lze přeložit jako čilé", hbité" nebo živé" metodiky. Dříve se užíval pojem lightweight methodologies", který měl zdůraznit lehkost" metodik (z pohledu produkované dokumentace), tento pojem má však více různých významů, a tak se od jeho používání postupně upustilo. Samotné překlady uvedené v předchozím odstavci výstižně popisují cíle agilních metodik, vývoj software má být hbitý" (software je dodán v co nejkratším čase), lehký" (vývoj se omezuje jen na potřebné činnosti a tvorbu nutných dokumentů) a živý" (software musí být úspěšně dodán, tedy celý projekt má přežít). Vzhledem k rostoucímu počtu firem v oboru ICT 1 získává ekonomická stránka vývoje software na významu. Pokud chce firma v konkurenci obstát, musí být schopná dodat software v co nejkratším čase a udržet přitom minimální náklady. Důvod je zřejmý, zakázku získá konkurenční firma, která je schopná vyvinout software rychleji a levněji. Je nutné si uvědomit, že se při vývoji uvažují dva různé časy. Prvním je celkový čas, který zabere realizace softwarového řešení, tedy od počátečního sepsání smlouvy až po akceptaci konečného řešení. Druhým a významnějším uvažovaným časem je doba potřebná k dodání první fungující části software 2, kterou již může zákazník používat při své práci. Minimalizace právě druhého uvažovaného času je pro vývoj software klíčová z dvou hlavních důvodů. Fungující část software zákazníkovi přináší užitek a tím i určitý příjem, který snižuje náklady na vývoj zbývajících částí software. Čím dříve zákazník uvidí systém v provozu, tím dříve získává vývojový tím zpětnou vazbu. Dalším významným faktorem je psychologie práce ve skupině. Agilní metodiky považují motivované lidi v týmu za klíčový předpoklad pro úspěšný vývoj. Proto se agilní metodiky zaměřují na pracovní prostředí, na zajištění podpory všem členům týmu, aby mohli 1. Informační a komunikační technologie (Information and Communications Technology) 2. Tento čas je často označován zkratkou TTM (Time To Market) 2

2.2. SROVNANÍ S KLASICKÝM PŘÍSTUPEM odvádět svou práci co nejlépe, na vzájemnou komunikaci mezi členy týmu i mezi týmem a zákazníkem. Z pohledu agilních metodik jsou lidé významnější, než dodržované postupy, produkované dokumenty nebo používané nástroje. 2.2 Srovnaní s klasickým přístupem Předchozí část kapitoly byla úvodem do oblasti agilních metodik, v této části jsou zdůrazněny základní principy agilních metodik včetně jejich srovnání s tradičními přístupy. Výstižně tyto různé přístupy srovnává obrázek 2.1 převzatý z přednášky Agilní metodiky [4] Aleny Buchalcevové. Funkcionalita fi cíti Zdroje >- i promáimé Zdroje Funkcionalita Tradiční přístupy Agilní přístupy Obrázek 2.1: Srovnání tradičních a agilních přístupů Z obrázku 2.1 je patrné, že tradiční přístupy považují za fixní funkcionalitu, tedy podepsanou specifikaci na začátku projektu, která se dále v průběhu projektu nemění. Implementace takové specifikace následně zabere nějaký čas a spotřebuje určité zdroje (platy vývojářů a kapitál firmy). Hodnoty těchto proměnných jsou při plánování v úvodní fázi odhadnuty, během průběhu projektu se však mohou a často také mění, vývoj pak trvá déle a stojí víc. Agilní metodiky oproti tradičnímu přístupu zaměňují fixní a volné proměnné. Na začátku se odhadnou a pevně naplánují potřebné zdroje a čas, funkcionalita je ponechána jako volná proměnná jejíž hodnota je upravována podle aktuální úspěšnosti projektu, jinými slovy v případě problémů se implementace části funkčnosti odloží v zájmu dodržení termínu. Zdrojový kód jako nositel informace Jak uvádí Václav Kadlec ve své knize Agilní programování [3], agilní metodiky produkují mnohem méně formální dokumentace, vycházejí totiž z přesvědčení, že základním, jednoznačným, exaktním, nezpochybnitelným a spolehlivým nositelem informace je zdrojový 3

2.2. SROVNANÍ S KLASICKÝM PŘÍSTUPEM kód. Toto přesvědčení nesdílí tradiční přístupy, které vývoj software staví na tvorbě různě objemných dokumentací (formální specifikace, detailní návrh, apod.) před samotným psaním zdrojového kódu. Důraz na dokumentaci je způsoben strachem z neúspěšného projektu, nutností rozumného udržení znalostí a mnohdy přímo vynucen uzavřenou smlouvou. Iterativní a inkrementální vývoj Plán projektu podle agilních metodik sestává z velmi krátkých iterací, během nichž se postupně vyvíjí inkrementy výsledného software. Získává se tak dříve zpětná vazba a eliminuje riziko, kdy vývojový tým na konci dodá něco, co zákazník vůbec nechtěl. Zároveň tým dříve zjistí integrační problémy. Výhody iteračního a inkrementálního vývoje jsou nesporné, našli si proto své místo i mezi tradičními přístupy (spirálový model, iterace a buildy v metodice RUP). Agilní metodiky se tedy liší jen tím, že jejich iterace bývají většinou kratší. Přímá osobní komunikace Mnoho komplikací během vývoje způsobuje špatná komunikace a problémové vztahy mezi členy týmu. Agilní metodiky se tyto komplikace snaží řešit utužováním vzájemných vztahů a zavedením časté osobní komunikace do základních činností vývoje. V každém týmu je osoba zodpovědná za včasné zjištění a vyřešení všech komunikačních problémů. Osobní komunikace je považována za nejlepší způsob předání informace. Tradiční přístupy se většinou zabývají více činnostmi vývoje než vztahy mezi lidmi. Řešení společenských problémů je spíše ponecháno na umu vedoucích pracovníků. Osobní komunikace není tradičními přístupy samozřejmě potlačována, je však vyžadována komunikace podle určených formálních pravidel. Důvodem je snaha o zaznamenání všech důležitých rozhodnutí a o udržení uceleného systému znalostí. Blízká spolupráce s uživatelem Agilní týmy během své práce často komunikují s budoucími uživateli, upřesňují si tak potřebné informace o fungování zákazníkova obchodu nebo o požadavcích na software. Tato komunikace je ve stejné míře během celého projektu, v ideálním případě jsou zástupci budoucích uživatelů přímo členy týmu. Tradiční přístupy oproti tomu s uživateli komunikují na začátku během psaní specifikace, v průběhu během občasných doplňujících schůzek, případně při předvádění prototypů a nakonec během akceptace dodaného software. Lze tedy říci, že komunikace je celkově menší a v průběhu projektu nerovnoměrně rozprostřená. Průběžné testování Vyvíjený software se často během projektu mění, proto je důležité jeho důkladné regresní testování často a pravidelně prováděné v průběhu celého vývoje. Znovu otestování celého software je většinou nelehký úkol, je tedy nutné software navrhovat tak, aby jeho testování 4

2.3. MANIFEST AGILNÍHO VÝVOJE SOFTWARE bylo co nejsnazší a aby ho bylo možné realizovat pomocí nástrojů pro automatizované testování. Metodika Extrémní programování dokonce trvá na vytváření příslušných testů dříve, než programátor přistoupí k implementaci daného požadavku. Při tradičním přístupu etapa testování navazuje na etapu implementace. Detaily provádění samotných testů jsou většinou specifické pro konkrétní projekt. Zpravidla je vyžadováno, aby testování a implementaci prováděly různé osoby a snížila se tak pravděpodobnost opakování chybného porozumění specifikaci. 2.3 Manifest agilního vývoje software Jednotliví autoři se snažili při vytváření metodik reagovat na nové potřeby kladené na úspěšný vývoj software. Dřívější potřebu spolehlivého software v současnosti doplňují nové potřeby jako ekonomická stránka vývoje nebo psychologie skupinové práce, zmiňované již v úvodu této kapitoly. Nejdříve každý autor považoval svou metodiku za ojedinělou, v únoru 2001 ze společného setkání v Utahu vyplynul opak, vznikající metodiky měly řadu společných tezí. Vznikla tak Aliance pro agilní vývoj software [1], zastřešující jejich společnou činnost a byl sepsán Manifest agilního vývoje software [2], kde jsou vyjmenovány společné teze, některé překlady jmen tezí uvedených dále jsou převzaty z knížky Agilní programování [3] od Václava Kadlece. Základní myšlenky manifestu jsou: přijmout a umožnit změnu požadavků je efektivnější než jí bránit, požadavek na změnu se určitě objeví. Na základě uvedených myšlenek autoři manifestu dávají přednost: individualitám a komunikaci před procesy a nástroji, provozuschopnému software před obsáhlou dokumentací, spolupráci se zákazníkem před vyjednáváním formálních smluv, reakci na změnu před striktním plněním plánu. Na základě uvedených myšlenek a předností formulovali autoři manifestu následující teze. Užitná hodnota pro zákazníka Zákazník má větší užitek z dodaného fungujícího software než z rozsáhlé dokumentace v podobě UML-diagramů a ERA-modelů. Metodiky proto dávají větší prioritu vyvíjenému software než jeho dokumentaci. 5

2.3. MANIFEST AGILNÍHO VÝVOJE SOFTWARE Vítané změny Prostředí, ve kterém zákazník podniká, se většinou rychle mění, proto požadavky identifikované na začátku projektu (při psaní specifikace) nemusí být na konci projektu žádané, mohou se výrazně změnit nebo dokonce zrušit. Přidaní nového požadavku až v průběhu realizace projektu může znamenat významnou konkurenční výhodu pro zákazníka. Z těchto důvodů metodiky nefixují požadavky v úvodních fázích, ale přizpůsobují vývoj a plánovaní měnícím se požadavkům. Časté dodávky Vývoj software je iterativní a inkrementální. Dodávky nových verzí jsou v co možná nejkratším intervalu. Tím získává tým od zákazníka včasnou zpětnou vazbu a zákazníkovi přináší běžící software očekávaný užitek. Zákazníci spolupracují s týmem Vítané změny znamenají, že vývojový tým nemá detailní specifikaci k dispozici od začátku implementace, proto jsou nutné časté konzultace se zaměstnanci zákazníka k upřesnění specifikace. Klíčová motivace Základem úspěšného vývoje jsou lidé. Ti musí být patřičně motivovaní a musí jim být dána dostatečná důvěra a kompetence k dělání klíčových rozhodnutí. Vzájemná konverzace Přímá konverzace je nejrychlejší a nejefektivnější formou přenosu informace. Pokud ji podmínky umožňují, je snadnější než psaní a čtení dokumentace. Úspěch posuzujeme podle fungování Fungující software je primárním ukazatelem průběhu projektu. Udržitelný vývoj Lidé nevydrží efektivně tvořit, pokud musejí být v práci dlouhodobě přesčas. Udržitelný vývoj znamená, že lidé dlouhodobě nepřekračují standardní pracovní dobu. Perfektní návrh a řešení Vzhledem k častým změnám v požadavcích je nutné mít perfektní návrh a řešení, které umožní rychlé zapracování změn do již vyvinutého systému. Změna návrhu nebo zdrojových kódů je považována za přirozenou věc při agilním vývoji, neznamená tedy selhání některé předchozí činnosti. Návrh a implementace probíhají současně, navzájem se prolínají ve velmi krátkých cyklech. 6

2.4. HODNOCENÍ AGILNÍCH METODIK Jednoduchost Základem úspěchu je udělat minimum práce přinášející maximum užitku. Vyvíjený software je postupně skládán z jednoduchých částí, které lze snadno změnit. Očekávání častých změn způsobuje maximální možné odkládání implementace požadavků. Samoorganizující se tým Nejlepší výsledky mají samoorganizující se týmy obsahující schopné a kreativní členy, kteří spolu často komunikují. Zdokonalování Během vývoje se často hledají slabá místa a způsoby jejich odstranění. Stejně tak se hledají silné stránky a jejich možné vylepšení. Celkově tato snaha vede ke zvýšení efektivity vývojového týmu. 2.4 Hodnocení agilních metodik Osobně si myslím, že žádná metodika (ani tradiční přístup) nemůže zaručit úspěch každého projektu. Za nejvýznamnější faktor ovlivňující úspěch projektu považuji vlastnosti a schopnosti všech zainteresovaných lidí, které mají mnohem větší vliv než používaná metodika nebo nástroje. Vycházím z předpokladu, že tým rozumných, schopných a zkušených lidí si sám najde pro něj vhodné a potřebné postupy, jak kvalitně a v požadovaný čas (pokud je reálný) vyvinout požadovaný software. Pokud v týmu převládají lidé opačných vlastností a pokud ještě zastávají vedoucí pozice, pak rozsáhlejší a složitější projekt s velkou pravděpodobností skončí neúspěchem. Z jednotlivých prací a metodik autorů agilního manifestu je patrné, že jejich názory jsou stejné jako můj (uvedený v předešlém odstavci). Agilní metodiky tak nelze chápat jako univerzální návody jak tvořit software, ale je nutné je brát jako soubor doporučení, rad, návodů a možných přístupů, který nám poskytují na základě svých dlouhodobých zkušeností autoři metodik. Agilní metodiky obsahují řadu postupů, jejichž nevhodné použití týmu přinese další komplikace. V případech kdy tyto postupy použít lze, dokáží naopak urychlit a usnadnit vývoj software. Je tedy na odpovědnosti vedoucích pracovníků rozhodnout, zda lze metodiku nebo její část použít. V tabulce 2.1 uvádím kladné a záporné body použití agilních metodik, jejich poměr je vyrovnaný. Iterativní a inkrementální vývoj je nespornou výhodou, jsou určeny pevné termíny dodání jednotlivých verzí. Ty bohužel mají nezaručený rozsah, protože nelze dopředu určit, jaké komplikace se objeví a jak zredukují rozsah prováděné iterace. Není známý postup, jak rozsah zaručit, pravděpodobně žádný takový postup ani nemůže existovat. Pro zákazníka je lepší vědomí, že v daném termínu dostane verzi s nezaručeným obsahem, než čekání neznámou dobu na verzi v plném rozsahu. 7

2.4. HODNOCENÍ AGILNÍCH METODIK Kladné iterativní a inkrementální vývoj brzy první verze zdůrazňují význam komunikace regresní testování flexibilní reakce na změny optimalizace metodik Záporné nezaručené rozsahy verzí smlouva nelze formalizovat omezují dokumentaci testuje přímo autor nadprůměrné schopnosti nelze na částečný úvazek Tabulka 2.1: Vlastnosti agilních metodik Metodiky přistupují k implementační fázi velmi rychle, během krátké doby tak vyvinou první verzi software s omezenou funkčností. I tak ale většinou lze software již komerčně využít. Na začátku projektu te těžké odhadnout přesně cenu vývoje a podrobně určit jednotlivé milníky. Lze tedy těžce sepsat nějakou formálnější smlouvu. Pro agilní metodiky je vhodnější zákazník, který týmu důvěřuje a je ochoten přistoupit na neformálně sepsanou smlouvu. Pro zákazníka by mohl být vhodný tzv. team outsourcing, tedy pronajmutí a řízení celého týmu. Měl by tak lépe pod kontrolou své výdaje a práci týmu. Komunikace je pro vývoj důležitá. Myslím si, že každý tým na světě si toho je vědom. Považuji za klad agilních metodik, že se snaží o nastavení podmínek k efektivní komunikaci. Nelze však spoléhat pouze na přímou komunikaci. Důležité závěry a poznatky musí být poznamenané na nějaké místo, kde je půjde v případě potřeby snadno dohledat. Pokud by se dokumentace zcela vynechala, tým by se mohl dostat do problémů. Nelze spoléhat na vědomosti a znalosti obsažené jen v hlavě programátorů a zdrojovém kódu, lidé zapomínají a jejich vlastní kód jim časem nebude dávat smysl. Testování je další nesporně výhodná vlastnost. Rizikem však je, pokud programátor testuje vlastní výtvor. Připouštím však, že v agilním pojetí vývoje nelze čekat, až vytvoří test někdo další. Regresní testování poskytuje týmu velkou míru jistoty, protože jeho pomocí lze najít zavlečenou chybu ve všech částech systému. Z rostoucím objemem systému však i roste rozsah potřebných testů a tím rostou i náklady na jejich tvorbu, údržbu a běh. Proto považuji za vhodnější použití metody Risk Based Testing 3 (RBT), kdy se testování zaměřuje jen na nejvýznamnější část systému. Určení takové části je ale nejkomplikovanějším prvkem RBT. Agilní metodiky jsou ceněné pro svou schopnost flexibilní reakce na změnu požadavků. Aby toho byly schopné, potřebují mít v týmu schopné lidi. Tohle je ale slabé místo metodik, protože na trhu práce nemusí být dostatečný počet uchazečů, kteří mají požadované znalosti a zkušenosti. V průběhu projektu pravidelně věnují agilní metodiky určitý čas a úsilí k optimálnějšímu nastavení svých parametrů. Kontrolují správnost odhadů, hledají možná zlepšení. Vývojový proces se tak postupem času stává lépe ovladatelným a efektivnějším. 3. Informace lze nalézt na <www. riskbasedtesting. com/> 8

2.4. HODNOCENÍ AGILNÍCH METODIK Agilní metodiky je těžší realizovat v týmech zaměstnávajících studenty na částečný úvazek, protože nejsou k dispozici po celou dobu a přicházejí tak o část komunikace. Její zprostředkování nepřítomným je možné, ale zatíží a zpomalí to tým prací navíc. Agilní metodiky jsou zajímavým přístupem k tvorbě software, své uplatnění naleznou při projektech, ve kterých nejsou na začátku zcela jasné požadavky nebo se v průběhu projektu značně mění. Slibují časté a pravidelné dodávky software. Vyžadují úzkou spolupráci s uživateli. Agilní metodiky nelze použít při projektech, kde je provádění změn v průběhu projektu nákladné nebo dokonce nemožné. 9

Kapitola 3 Vybrané agilní metodiky Mezi nejznámější agilní metodiky patří Extrémní programování (XP) SCRUM Development Process Crystal metodiky Vlastnostmi řízený vývoj (FDD) Dynamic System Development Method (DSDM) Adaptivní vývoj software (ASD) Lean Development Testy řízený vývoj (TDD) Pro důkladnější zkoumání byly vybrány metodiky Extrémní programování, Crystal metodiky a Dynamic System Development Method, tato a následující kapitola 4 Případová studie se jim postupně věnují. Informace o ostatních metodikách je možné nalézt v přednášce Aleny Buchalcevové Agilní metodiky [4], v knize Václava Kadlece Agilní programování [3], v diplomové práci Tomáše Hajdina Agilní metodiky vývoje software [6] nebo v práci Agile software development methods [11]. Každá podkapitola nejprve metodiky stručně charakterizuje. Následně jmenuje principy, na kterých jsou metodiky postavené. Zabývá se rolemi, které lze identifikovat v týmech eticích danou metodiku. Poté uvádí postupy metodik odvozené z jejich principů. Je popsán životní cyklus vývoje software podle zvolené metodiky. Na závěr je uvedeno stručné hodnocení metodiky. Některé detaily metodik jsou prezentovány až v následující kapitole 4 Případová studie, spolu s náčrtem řešení studie vybranou metodikou. Poslední podkapitola obsahuje přehledné srovnání vybraných metodik. 10

3.1. EXTRÉMNÍ PROGRAMOVÁNÍ 3.1 Extrémní programování Extrémní programování (XP) je jednou z nejznámějších agilních metodik. Pojmy XP a agilní metodiky jsou dokonce někdy nesprávně považovány za ekvivalentní. Tato podkapitola podrobněji popisuje tuto metodiku na základě informací získaných z knihy Extrémní programování [12], jejímž autorem je Kent Beck. Kniha byla přeložena do češtiny před třemi lety, metodika jistě prošla řadou zlepšení, které zde tak nejsou zahrnuty. Extrémní programování vznikalo během devadesátých let minulého století na základě praktických zkušeností jeho autorů, kterými jsou Kent Beck a Ward Cunningham. Je postavené na známých a běžných postupech, ale dotahuje tyto postupy do extrémů. Když se vyplácí revize, tak se reviduje neustále. Pokud je nutné testovat, tak se testuje několikrát denně. XP pomocí svých principů a postupů dovádí do extrému všechny části vývoje software jako jsou revize kódu, testování aplikace, návrh architektury, integrace systému a iterační vývoj. Stejně tak se XP snaží bojovat proti rizikům jako zpoždění harmonogramu, zrušení celého projektu, krachující systém, zvětšující se míra poruchovosti, nepochopení zadání, průběžné změny zadání, přemíra funkcí a fluktuace pracovníků. Základem celého vývoje software je pro XP psaní zdrojového kódu a testování. Prostřednictvím zdrojového kódu komunikují členové týmu. Výsledky spouštěných testů vypovídají o stavu projektu. XP vychází z představy, jak by vývoj vypadal, kdyby na něj bylo dost času. Vývojáři by psali dobře strukturovaný a řádně otestovaný kód. Psaní zdrojového kódu a testovaní se v metodice XP prolíná. Programátoři během dne střídavě píší jednotlivé testy a implementace, nejdříve test jedné funkčnosti, následně její implementaci. Když test projde, přechází se na další funkčnost. Tento způsob vývoje řízeného testy je možné použít jako samostatnou metodiku Test Driven Development (TDD), Kent Beck ji popisuje v knize Programování řízené testy [10]. Informace lze také nalézt v knize Václava Kadlece Agilní programování [3] nebo diplomové práci Tomáše Hajdina Agilní metodiky vývoje software [6]. Další důležitou činností v XP je poslouchání. Kent Beck tvrdí, že nejlepším způsobem komunikace je rozhovor, a proto je XP navrženo tak, aby maximálně podporovalo a vynucovalo vzájemnou komunikaci jak mezi jednotlivými programátory, tak mezi programátory a zákazníkem. Konkrétně to zajišťují postupy s jménem párové programování a zákazník na pracovišti, které jsou spolu s dalšími postupy vysvětleny v kapitole 3.1.3 Postupy. Poslední podstatnou činností pro XP je navrhování. Navrhování provádějí všichni programátoři každý den. XP klade důraz na zdrojový kód, a tak programátory nenutí ke kreslení diagramů, pokud to sami nechtějí. Návrh systému začíná psaním testů, kdy si musí programátoři dobře rozmyslet rozhraní vyvíjené aplikace, neboť právě toto rozhraní testují. Dalším postupem, kdy se programátoři plně věnují navrhování je refaktorizace, tedy změna zdrojového kódu při zachování funkčnosti. Více je postup refaktorizace popsán v kapitole 3.1.3 Postupy, detaily pak obsahuje kniha Refaktoring [9], jejímž autorem je Martin Fowler. Při své práci se snaží programátoři navrhnout a udržet vyvíjený systém v nejjednodušší možné podobě, která může ještě fungovat a přitom přináší zákazníkovi očekávaný užitek. Pro řízení vývojového procesu uvažuje XP čtyři řídící proměnné, jsou to náklady, čas, 11

3.1. EXTRÉMNÍ PROGRAMOVÁNÍ kvalita a šíře zadání. Zákazníci nebo manažeři zadávají hodnoty tří libovolně zvolených proměnných, vývojový tým pak určí odpovídající hodnotu zbývající proměnné. Tento přístup vychází z jednoduchých úvah. Například když má málo lidí v krátkém čase udělat moc práce, jsou ve stresu a výsledky jejich snažení nedosahují odpovídající kvality. Ve většině případů stres a nereálné požadavky způsobí zpoždění projektu a s tím i zvýšené náklady. Právě z těchto důvodů XP říká, že týmu nelze nadiktovat hodnoty všech řídících proměnných, ale musí mu být dáno právo určit odpovídající hodnotu zbývající proměnné. Pokud nejsou manažeři s odpovědí spokojeni, mohou si vybrat jiné tři proměnné, ale nikdy nesmí určovat hodnoty všech čtyř proměnných. Za nejvhodnější volnou proměnou pak XP považuje právě šíři zadání. 3.1.1 Principy Tato část práce prezentuje principy XP tak, jak jsou uvedené v knize Kenta Bečka Extrémní programování [12]. Prvních pět principů je považovaných za hlavní, zbytek pak za doplňkové. Rychlá zpětná vazba Doba reakce je důležitá kvůli učení. Společnost se naučí, jak může systém nejlépe přispívat, a tento poznatek předá zpětnou vazbou během dnů či týdnů, a nikoliv během měsíců nebo let. Programátor se naučí, jak systém nejlépe navrhnout, implementovat a testovat, a tento poznatek předá zpětnou vazbou během vteřin či minut, a nikoliv během dnů, týdnů nebo měsíců. Předpoklad jednoduchosti Dělejme systém co nejjednodušší, složitější věci přidávejme až když jsou opravdu třeba. Vyvíjíme pro dnešek, ne pro zítřek. Věříme ve své schopnosti kdykoliv přidat požadovanou funkčnost, nemusíme s ní tedy počítat předem. Jednoduchý systém se lehce testuje, je přehledný a snadný na údržbu. Přírůstková změna Nelze udělat velkou změnu najednou. Návrh, plán a velikost týmu se musí měnit postupně. Nemůžeme vše navrhnout okamžitě, svůj návrh upřesňujeme za základě znalostí již vyvinutého systému a zjištěných problémů. Stejně tak nevíme, jak přesně bude vývoj probíhat, proto nemůže provést důkladné plánování hned na začátku. Nejprve vytvoříme hrubý odhad, který postupně upřesňujeme pro každou iteraci. Je nesmyslné mít na začátku projektu tým čítající deset programátorů, pokud máme práci sotva pro dva. Dokonce i přijmutí XP je postupné, po malých krocích. Nejdříve se použije XP na část, se kterou má náš vývoj největší problémy. Využití změny 12

3.1. EXTRÉMNÍ PROGRAMOVÁNÍ Nejlepší strategie je ta, která zachovává nejvíce možností a přitom skutečně vyřeší ten nejnaléhavější problém. Tento princip souvisí s předpokladem jednoduchosti. Vyvíjený systém je nejjednodušší možný, který pokrývá všechny klíčové požadavky. Přidanou hodnotou využití změny je pak možnost rychle reagovat na změněný požadavek a uvedení nové funkčnosti do provozu dřív než konkurence. Kvalitní práce Práce bude tým bavit, jen pokud ji bude odvádět kvalitně, tedy kvalita není ve skutečnosti volná proměnná, může nabývat jen dvou hodnot a to vynikající" a neuvěřitelně skvělá". Kvalitní práce je důležitou složkou XP, tuto metodiku není možno provozovat s týmem neobsahujícím velmi zkušené programátory. Tým se nemusí skládat jen z výborných programátorů, musí však obsahovat alespoň nějaké, kteří budou svým vlivem zdokonalovat méně zkušené programátory. Výuka poznatků Metodika XP se zaměřuje na výuku strategií k získávání poznatků o tom, kolik testování, navrhování, refaktorizace a všeho ostatního bychom měli provádět. Těmto strategiím dává přednost před dogmatickými postupy, jak dělat určitou činnost. Malá počáteční investice Nízké rozpočty nutí programátory a zákazníky, aby zredukovali své požadavky a přístupy. Většinou všichni vystačí s nižšími prostředky, než které by chtěli. Prostředky však mohou být také příliš malé. Hraní na výhru Vývoj programového vybavení hraný na výhru dělá všechno, co týmu pomůže vyhrát a nedělá nic, co k výhře nepomůže. Opakem je hraní, aby se neprohrálo, kdy se vše dělá předpisově, aby jsme byli krytí, když se projekt nepovede. Konkrétní experimenty Neotestovaná rozhodnutí představují riziko, že nebudou správná. To znamená, že debata o návrhu nebo o požadavcích by měla vyústit v řadu experimentů, které prověří jejich realizovatelnost. Všechna abstraktní rozhodnutí by měla být takto otestovaná. Otevřená a upřímná komunikace Dobrá komunikace je jeden z nejnutnějších předpokladů úspěšného vývoje software. Pokud je dlouhá doba odezvy, nebo někdo něco podstatného nesdělí ostatním, protože zapomněl nebo se bál, má to negativní vliv na celkový vývoj. Programátoři proto musejí mít absolutní svobodu, aby mohli vyjadřovat své obavy a získávat podporu, aby mohli sdělit nedobrou zprávu zákazníkům a manažerům, aby ji mohli sdělit včas a aby za ní nebyli potrestáni. 13