ˇ ´ vysoke ´ uc ˇen´ı technicke ´ v Praze Cesk e ´ Fakulta elektrotechnicka
´ RSK ˇ ´ PRACE ´ BAKALA A Agiln´ı metodiky programov´ an´ı DAQ a ˇ r´ıdic´ıch aplikac´ı
Praha, 2011
Autor: Adam Hamr
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem pˇredloˇzenou pr´aci vypracoval samostatnˇe a ˇze jsem uvedl veˇsker´e pouˇzit´e informaˇcn´ı zdroje v souladu s Metodick´ ym pokynem o dodrˇzov´ an´ı etick´ ych princip˚ u pˇri pˇr´ıpravˇe vysokoˇskolsk´ ych z´avˇereˇcn´ ych prac´ı.
V Praze dne podpis
i
Podˇ ekov´ an´ı Na tomto m´ıstˇe bych r´ad podˇekoval pˇredevˇs´ım panu Doc. Ing. Jaroslavu Roztoˇcilovi, CSc., vedouc´ımu bakal´ aˇrsk´e pr´ace, za jeho vstˇr´ıcnost bˇehem veden´ı pr´ ace. Tak´e dˇekuji panu Ing. Milanu Kaˇsi za odbornou pomoc a ochotu spolupracovat ´ı dalˇs´ım, kdo podpoˇrili mou pr´ aci dobrou radou.
ii
Abstrakt V posledn´ı dobˇe se rozmach agiln´ıch metodik v´ yvoje softwaru ustaluje a ty z´ıskaly svou konkr´etn´ı podobu. Mnoz´ı softwarov´ı specialist´e jiˇz vˇed´ı, co se d´ a od nich oˇcek´avat. Jejich spr´ avn´e uˇzit´ı vede k rychl´emu dosaˇzen´ı kvalitn´ıch v´ ysledk˚ u. V´ yvojov´emu t´ ymu pˇritom do jist´e m´ıry z˚ ust´ av´ a moˇznost postupovat podle sv´ ych zabˇehnut´ ych zvyklost´ı. Pr´ace poskytuje n´ahled na techniky agiln´ıho v´ yvoje a porovn´av´a je. Tak´e shrnuje zkuˇsenosti odborn´ık˚ u.
iii
Abstract In the last years the expansion of agile software development methodics stabilizes. Therefore methodics obtain a clear schemes. Many software experts are aware of what we can expect from them. The right use of them leads to a fast achievement of quality results. In addition to this the developing team could continue to a certain extent with his custom practice. This essay has to provide a view on agile techniques of software development and compares them. It summarises experience of experts as well.
iv
vi
Obsah Seznam obr´ azk˚ u
xi
´ 1 Uvod
1
1.1
Struktura p´ısemn´e pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Z´ akladn´ı pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.1
Metodika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.2
Iterativn´ı v´ yvoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.3
Inkrement´ aln´ı postup . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Historick´ y kontext vzniku agiln´ıch metodik 2.1
2.2
2.3
2.4
Vodop´ adov´ y model ˇzivotn´ıho cyklu . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.1.1
V´ yhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.1.2
Nev´ yhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Spir´ alov´ y model ˇzivotn´ıho cyklu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.1
Pr˚ ubˇeh v´ yvoje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.2
V´ yhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.3
Nev´ yhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Rational unified process (RUP) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.1
Kl´ıˇcov´e pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.2
V´ yhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.3
Nev´ yhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Unified software development process (UP) . . . . . . . . . . . . . . . . . . . . .
8
3 Agiln´ı metodiky 3.1
3
9
Z´ akladn´ı charakteristika agiln´ıch metodik . . . . . . . . . . . . . . . . . . . . . .
9
3.1.1
Manifest agiln´ıho v´ yvoje softwaru
9
3.1.2
Principy umoˇzn ˇuj´ıc´ı progresivn´ı v´ yvoj . . . . . . . . . . . . . . . . . . . . 10
3.1.3
Omezuj´ıc´ı poˇzadavky
3.1.4
Odliˇsnosti od tradiˇcn´ıch metodik . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
vii
3.1.5
Nev´ yhody agiln´ıch metodik . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2
Pˇrehled nejbˇeˇznˇejˇs´ıch agiln´ıch metodik . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3
Extr´emn´ı programov´ an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.1
Charakteristika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.2
Z´ akladn´ı principy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.2.1 3.3.2.2 3.3.2.3
3.4
3.5
Pˇr´ıklady zn´ am´ ych myˇslenek a postup˚ u . . . . . . . . . . . . . . 15 ˇ ri promˇenn´e charakterizuj´ıc´ı v´ Ctyˇ yvoj . . . . . . . . . . . . . . . 16 ˇ ri hodnoty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Ctyˇ
3.3.3
Z´ akladn´ı metody XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.4
Z´ akladn´ı ˇcinnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.5
Pr˚ ubˇeh v´ yvoje jedn´e verze . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.6
V´ yvoj prvn´ı verze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3.7
T´ ymov´e role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.8
Z´ avˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Lean software development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4.1
Z´ akladn´ı charakteristika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.2
Kl´ıˇcov´e pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4.2.1
Pl´ ytv´ an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.2.2
Hodnota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.3
Kl´ıˇcov´ a pravidla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.4
Z´ akladn´ı principy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.5
Z´ avˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Scrum development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.1
Z´ akladn´ı charakteristika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.2
Kl´ıˇcov´e pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.3
3.5.2.1
Flexibilita a spolupr´ace . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.2.2
Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5.2.3
Graf zb´ yvaj´ıc´ı pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5.2.4
Riziko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.2.5
Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.2.6
Pigs a chickens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.2.7
Denn´ı sch˚ uzka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Pr˚ ubˇeh v´ yvoje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5.3.1
Pr˚ ubˇeh jednoho sprintu . . . . . . . . . . . . . . . . . . . . . . . 32
3.5.3.2
Pˇredˇcasn´e ukonˇcen´ı sprintu . . . . . . . . . . . . . . . . . . . . . 33
3.5.4
T´ ymov´e role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5.5
Spolupr´ace v´ıce t´ ym˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 viii
3.5.6 3.6
Feature driven development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6.1
Z´akladn´ı charakteristika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6.2
Kl´ıˇcov´e pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6.2.1
Vlastnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6.2.2
Pˇr´ıstup ˇr´ızen´ y modelem . . . . . . . . . . . . . . . . . . . . . . . 36
3.6.3
Pr˚ ubˇeh v´ yvoje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6.4
Z´ akladn´ı principy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.6.5 3.7
Z´avˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6.4.1
Objektov´e modelov´ an´ı dom´en
3.6.4.2
V´ yvoj podle vlastnost´ı . . . . . . . . . . . . . . . . . . . . . . . 39
3.6.4.3
Vlastnictv´ı tˇr´ıd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.6.4.4
T´ ymy sestavovan´e podle vlastnost´ı . . . . . . . . . . . . . . . . . 39
3.6.4.5
Inspekce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Z´avˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Test driven development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.7.1
Charakteristika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.7.2
Z´akladn´ı principy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7.3
Pr˚ ubˇeh v´ yvoje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.7.3.1
3.7.4 3.8
. . . . . . . . . . . . . . . . . . . 38
Pr˚ ubˇeh jednoho cyklu . . . . . . . . . . . . . . . . . . . . . . . . 42
Z´avˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Porovn´ an´ı agiln´ıch metodik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.8.1
Velikost t´ ym˚ u a projekt˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8.2
N´aroˇcnost na zaveden´ı a provoz . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8.3
M´ıra omezen´ı pravidly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.4
Rozˇs´ıˇrenost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.5
Pˇrijatelnost pro z´akazn´ıka . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.6
Zajiˇstˇen´ı kvality (quality assurance) . . . . . . . . . . . . . . . . . . . . . 44
3.8.7
Kombinace metodik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.8.8
Truck factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.8.9
Psan´ı nadbyteˇcn´eho k´odu . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.8.10 Dokumentace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.9
3.8.11 Spoleˇcn´e vlastnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 ˇ ızen´ı projekt˚ R´ u v praxi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.9.1
3.9.2
Agiln´ı metodiky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.9.1.1
V´ yhody, kter´ ych si firmy nejv´ıc cen´ı . . . . . . . . . . . . . . . . 48
3.9.1.2
Nev´ yhody, kter´e firm´ am nejv´ıc vad´ı . . . . . . . . . . . . . . . . 48
Ostatn´ı zp˚ usoby ˇr´ızen´ı projekt˚ u . . . . . . . . . . . . . . . . . . . . . . . . 49 ix
4 Z´ avˇ er
51
A N´ azev pˇ r´ılohy
I
B Obsah pˇ riloˇ zen´ eho CD
III
x
Seznam obr´ azk˚ u 2.1
Sch´ema vodop´ adov´eho modelu ˇzivotn´ıho cyklu . . . . . . . . . . . . . . . . . . .
2.2
Sch´ema spir´ alov´eho modelu ˇzivotn´ıho cyklu; zdroj - http://3.bp.blogspot.
4
com/_El72O8-WX9g/TNDqfSRLFbI/AAAAAAAAACU/2DXXgJJ99CY/s1600/spiral_model. gif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.1
Cena zmˇeny poˇzadavk˚ u; zdroj - developerfusion.com . . . . . . . . . . . . . . . . 12
3.2
Moˇzn´ a podoba karty zad´an´ı pouˇz´ıvan´e v XP. Jej´ı obsah stanovuje z´akazn´ık.; pˇrekresleno podle 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3
Vz´ ajemn´ y vztah ˇcinnost´ı v XP; pˇrekresleno podle 9 . . . . . . . . . . . . . . . . 19
3.4
Postup pˇri v´ yvoji podle tradiˇcn´ıch metodik; pˇrekresleno podle 9 . . . . . . . . . 25
3.5
Graf zb´ yvaj´ıc´ı pr´ ace; zdroj - http://www.businessvize.cz/rizeni-a-optimalizace/agilniprojektove-rizeni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.6
Sch´ema v´ yvoje softwaru podle FDD; pˇrekresleno podle 9 . . . . . . . . . . . . . 36
3.7
Postup pˇri v´ yvoji softwaru podle TDD; pˇrekresleno podle 9 . . . . . . . . . . . . 42
xi
xii
Kapitola 1
´ Uvod St´ ale v´ıce softwarov´ ych spoleˇcnost´ı se v dneˇsn´ı dobˇe zab´ yv´ a efektivitou v´ yvoje a pokouˇs´ı se o co nejlepˇs´ı vyuˇzit´ı sv´ ych sil a zdroj˚ u. Kaˇzd´a kter´ a mezi nˇe patˇr´ı, zcela jistˇe pouˇzije z´asady, kter´e jiˇz zavedly nˇekter´e z agiln´ıch metodik. Aplikuje tyto principy, at’ se na agiln´ı techniky pˇr´ımo orientuje nebo ne. Tak´e je st´ale v´ıce firem, kter´e se zab´ yvaj´ı ot´azkou, jestli by tyto techniky nebyly pˇr´ınosn´e pr´ avˇe pro nˇe. To svˇedˇc´ı o tom, ˇze agiln´ı programov´ an´ı uˇz nen´ı nic mimoˇr´adn´eho nebo nadstandardn´ıho. Pravdˇepodobnˇe pˇrich´ az´ı jako nov´a etapa softwarov´eho inˇzen´ yrstv´ı1 a v budoucnu se bez zaveden´ı podobn´ ych postup˚ u neobejde ˇz´adn´ y projektov´ y manaˇzer. ´ celem t´eto pr´ Uˇ ace je pˇribl´ıˇzit a zhodnotit jednotliv´e zp˚ usoby organizace v´ yvoje. D´ale tak´e porovnat v´ yhody a nev´ yhody jednotliv´ ych agiln´ıch metodik a naznaˇcit moˇznosti jejich zaˇclenˇen´ı. Tak´e jsem se zamˇeˇril na eventuality jejich kombinac´ı. Pr´ace tedy m˚ uˇze pomoci jako vod´ıtko pˇri hled´ an´ı vhodn´eho zp˚ usobu ˇr´ızen´ı projekt˚ u pro konkr´etn´ı v´ yvojov´ y t´ ym.
1.1
Struktura p´ısemn´ e pr´ ace
Pr´ ace m´ a ˇctyˇri kapitoly. V prvn´ı kapitole je rozebr´ ano zad´an´ı, pops´ ana struktura dokumentu a uvedeny nˇekter´e d˚ uleˇzit´e pojmy. Druh´ a kapitola slouˇz´ı jako ilustrace historick´ ych souvislost´ı a prezentuje tradiˇcn´ı postupy. Tˇret´ı kapitola nejprve charakterizuje a d´ al porovn´av´ a r˚ uzn´e agiln´ı metodiky. Tak´e je zaˇrazena podkapitola se souhrnem praktick´ ych zkuˇsenost´ı v ˇr´ızen´ı softwarov´ ych projekt˚ u. Zhodnocen´ı pˇr´ınosu jednotliv´ ych druh˚ u ˇr´ızen´ı projekt˚ u se nach´ az´ı v kapitole ˇctvrt´e. V pˇr´ıloze je pops´ana funkcionalita modulu do ˇr´ıdic´ıho syst´emu DisCo. 1
Softwarov´e inˇzen´ yrstv´ı je zaveden´ı a pouˇz´ıv´ an´ı ˇra ´dn´ ych inˇzen´ yrsk´ ych princip˚ u tak, abychom dos´ ahli ekono” ´ clav mick´e tvorby softwaru, kter´ y je spolehliv´ y a pracuje u ´ˇcinnˇe na dostupn´ ych v´ ypoˇcetn´ıch prostˇredc´ıch.“ (Va Kadlec, 2004, strana 22)
1
´ KAPITOLA 1. UVOD
2
1.2
Z´ akladn´ı pojmy
V oblasti ˇr´ızen´ı softwarov´ ych projekt˚ u jsou kl´ıˇcov´e n´asleduj´ıc´ı pojmy, kter´e budu pouˇz´ıvat.
1.2.1
Metodika
V oblasti v´ yvoje softwaru jde o komplexn´ı postup, n´avod pro v´ yvoj aplikace. Zab´ yv´ a se pohledem z v´ yˇsky na projekt jako celek. Rad´ı, proˇc a kdy se m´ a co dˇelat, co se m´a vytvoˇrit a kdo m´a na starosti jak´ yu ´kol. Neodpov´ıd´ a na podrobn´e ot´ azky, jak pˇresnˇe se m´ a nˇeco prov´adˇet - na ty odpov´ıdaj´ı d´ılˇc´ı metody. Avˇsak metodika vypov´ıd´a v´ıc neˇz model ˇzivotn´ıho cyklu, kter´ y pouze ˇr´ık´a, kter´ ymi f´ azemi softwarov´ y produkt proch´ az´ı. Je d˚ uleˇzit´e, aby kaˇzd´ y ˇclen t´ ymu metodiku znal a ˇr´ıdil se j´ı.
1.2.2
Iterativn´ı v´ yvoj
V´ yvojov´ y proces se rozdˇel´ı do nˇekolika iterac´ı. V kaˇzd´e z nich se kompletnˇe zpracuje nˇekter´ y fragment syst´emu. Po jeho dokonˇcen´ı se otestuje integrace t´eto ˇc´asti do cel´eho syst´emu a je moˇzn´e ji odevzdat z´ akazn´ıkovi. N´ asleduje dalˇs´ı iterace.
1.2.3
Inkrement´ aln´ı postup
Spoˇc´ıv´a v tom, ˇze uˇz od prvn´ı iterace existuje funkˇcn´ı a pouˇziteln´ y syst´em. S kaˇzdou dalˇs´ı iterac´ı se rozˇsiˇruje o nov´e funkcionality. T´ım se umoˇzn ˇuje otestov´ an´ı v praxi uˇz od ran´ ych f´az´ı v´ yvoje. Z´aroveˇ n z´akazn´ık vid´ı, jak postupuje pr´ ace a m˚ uˇze se k n´ı vyjadˇrovat.
Kapitola 2
Historick´ y kontext vzniku agiln´ıch metodik Do konce ˇsedes´ at´ ych let 20. stolet´ı se daj´ı pokusy o v´ yvoj softwarov´ ych aplikac´ı oznaˇcit jako pr˚ ukopnick´e. Koncem ˇsedes´at´ ych let doˇslo k softwarov´e krizi zp˚ usoben´e ˇspatn´ ym veden´ım projekt˚ u a tak´e zvyˇsov´ an´ım n´ arok˚ u na nˇe. Jej´ım hlavn´ım d˚ usledkem byl ne´ uspˇech, pˇresnˇeji nedod´an´ı, vˇetˇsiny projekt˚ u [ 9 kap. 2.2]. V sedmdes´ at´ ych letech vznik´a obor softwarov´e inˇzen´ yrstv´ı [ 9 kap. 2 ]. Ten souvis´ı pˇredevˇs´ım s rozˇs´ıˇren´ım aplikac´ı interaguj´ıc´ıch s uˇzivatelem a d´ale se zv´ yˇsen´ım dostupnosti hardwaru. V roce 1967 vznikl Ericsson˚ uv model, kter´ y zaˇcal modelovat sloˇzit´e syst´emy jako mnoˇzinu propojen´ ych blok˚ u [ 9 kap. 8.1]. V t´eto dobˇe se v´ yvoj´ aˇri zaˇcali zam´ yˇslet nad t´ım, jak zv´ yˇsit efektivitu pr´ace, a v´ yvoj se formoval do konkr´etn´ıch podob. Efektivita spoˇc´ıvala pˇredevˇs´ım v uspoˇr´ad´an´ı v´ yvoje softwarov´eho projektu do posloupnosti f´az´ı. Mezi nˇe byla novˇe zaˇrazena zejm´ena anal´ yza a specifikace poˇzadavk˚ u. T´ım vznikl vodop´adov´ y model ˇzivotn´ıho cyklu. V osmdes´at´ ych letech se softwarov´e inˇzen´ yrstv´ı d´ale rozv´ıjelo. Vypukl pˇrevratn´ y objektovˇe orientovan´ y pˇr´ıstup a s n´ım nov´e postupy. Efektivita v´ yvoje spoˇc´ıvala v jeho ˇr´ızen´ı urˇcitou metodikou. Roku 1985 Barry Boehm pˇredstavil spir´ alov´ y model ˇzivotn´ıho cyklu, kter´ y pˇrinesl iterativn´ı pˇr´ıstup. T´ım se zaˇcala oˇsetˇrovat rizika, kter´a mohou pˇri v´ yvoji vzniknout. 1987 vyvinul Ivar Jacobson ve spolupr´aci s telekomunikaˇcn´ı firmou metodiku Objectory process a t´ım byly poloˇzeny z´ aklady pro metodiky RUP a UP - viz d´ ale. Objectory process poprv´e pracuje s pojmem pˇr´ıpad uˇzit´ı. Devades´at´ a l´eta pˇrinesla dalˇs´ı dva d˚ uleˇzit´e koncepty. Roku 1995 ˇslo o metodiku Rational unified process a roku 1999 o Unified software development process. Zaˇc´atkem 21. stolet´ı se efektivity v´ yvoje dosahuje pomoc´ı nov´e skupiny metodik v´ yvoje - agiln´ıch. Roku 2001 byl pro nˇe poloˇzen z´ aklad Manifestem agiln´ıho v´ yvoje softwaru. Nyn´ı se pod´ıvejme, o co jde v tradiˇcn´ıch metodik´ ach. 3
´ KONTEXT VZNIKU AGILN´ICH METODIK KAPITOLA 2. HISTORICKY
4
Obr´ azek 2.1: Sch´ema vodop´adov´eho modelu ˇzivotn´ıho cyklu
2.1
Vodop´ adov´ y model ˇ zivotn´ıho cyklu
Jde o prvn´ı a pravdˇepodobnˇe nejzn´amˇejˇs´ı model ˇzivotn´ıho cyklu. Z´aroveˇ n prvn´ı pˇredpis postupu pˇri v´ yvoji softwaru. Ten zaˇcal b´ yt poprv´e ˇclenˇen na jednotliv´e aktivity. Postupuje se sekvenˇcnˇe podle logick´e posloupnosti f´az´ı bez jak´ ychkoli iterac´ı. Pˇri kaˇzd´em pˇrechodu mezi dvˇema f´ azemi doch´az´ı ke schvalovac´ımu procesu. Bˇehem v´ yvoje lze pˇrech´ azet mezi f´ azemi vˇzdy o jednu dopˇredu nebo zpˇet. Bˇehem u ´drˇzby je moˇzn´e se vr´ atit ke kter´ekoliv f´azi a pokraˇcovat n´asleduj´ıc´ımi. Tento model lze povaˇzovat za nejobecnˇejˇs´ı pˇr´ıpad metodiky, protoˇze kaˇzd´a urˇcit´ ym zp˚ usobem zahrnuje f´aze v´ yvoje vodop´ adov´eho modelu: 1. Definice probl´emu, pozn´an´ı z´ akazn´ıka, proniknut´ı do c´ılov´e oblasti 2. Anal´ yza a specifikace poˇzadavk˚ u 3. N´avrh syst´emu 4. Implementace syst´emu 5. Integrace a testov´an´ı syst´emu 6. Provoz a u ´drˇzba Model m´ a spousty r˚ uzn´ ych podob a tato vych´ az´ı ze [ 2 ].
2.1.1
V´ yhody
Kaˇzd´a f´aze vych´ az´ı pouze z v´ ystupn´ıho dokumentu t´e pˇredchoz´ı. K hlavn´ım pozitiv˚ um modelu ˇ ızen´ı procesu je tedy snadn´e a velice pˇrehledn´e. Velmi se patˇr´ı, ˇze je jednoduch´ y a pˇr´ıstupn´ y. R´
´ ´ MODEL ZIVOTN ˇ ´IHO CYKLU 2.2. SPIRALOV Y
5
hod´ı pro jednoduch´e syst´emy. V´ ysledn´ y projekt pak m´ a disponovat u ´plnou dokumentac´ı.
2.1.2
Nev´ yhody
Tento postup se vˇsak svou jednoduchost´ı nehod´ı pro projekty rozs´ahlejˇs´ı. Striktnˇe dan´ a posloupnost f´ az´ı zp˚ usobuje, ˇze je v´ yvoj nepruˇzn´ y, kdyˇz nen´ı moˇzn´e se vracet k f´ az´ım procesu starˇs´ım neˇz je pˇredchoz´ı. Pot´ıˇze vznikaj´ı tak´e t´ım, ˇze nen´ı moˇzn´e dodrˇzet p˚ uvodn´ı pl´an, pokud se zpozd´ı i jedin´a f´ aze. Po zah´ ajen´ı procesu z´ akazn´ık nekomunikuje s dodavatelem a do posledn´ı chv´ıle pˇred dod´ an´ım mu nen´ı zn´am´e, jak´ y bude v´ ysledek. D˚ usledkem toho je nejistota, zda je n´avrh spr´ avn´ y. Jeho kompletn´ı tvorba je v praxi nesplniteln´a a nav´ıc zab´ır´ a pˇr´ıliˇs mnoho ˇcasu. Z´ asadn´ı probl´em vodop´ adov´eho modelu tedy spoˇc´ıv´ a ve specifikaci poˇzadavk˚ u, kterou nen´ı moˇzn´e prov´est najednou a pozdˇeji nemˇenit. Kv˚ uli tomu je v´ yvoj velmi neefektivn´ı.
2.2
Spir´ alov´ y model ˇ zivotn´ıho cyklu
Nejd˚ uleˇzitˇejˇs´ım pˇr´ınosem tohoto modelu pro softwarov´e inˇzen´ yrstv´ı jsou dva nov´e postupy. Je to anal´ yza rizik1 a iterativn´ı pˇr´ıstup. S n´ım je spojena v´ yhoda modularity aplikace2 . V kaˇzd´e iteraci se opakuj´ı f´ aze, kter´e popisuje vodop´ adov´ y model. Pˇritom se zpˇresˇ nuj´ı poˇzadavky, odhaluj´ı se nov´ a rizika a pl´ anuje se n´asleduj´ıc´ı cyklus. Bˇehem anal´ yzy rizik se zjiˇst’uje, co m˚ uˇze ohrozit hladk´ y pr˚ ubˇeh projektu, a pˇripravuj´ı se reakce na tyto ud´alosti. Rozliˇsuj´ı se tyto druhy rizik: • Projektov´ a rizika - pˇr´ıkladem je odchod lid´ı z t´ ymu • Technick´ a rizika - mezi nˇe patˇr´ı probl´emy s v´ yvojov´ ymi n´ astroji • Obchodn´ı rizika - napˇr. uveden´ı konkurenˇcn´ı aplikace Dalˇs´ı z nejpouˇz´ıvanˇejˇs´ıch metod k odstranˇen´ı rizik a chyb je vytv´ aˇren´ı prototyp˚ u.
2.2.1
Pr˚ ubˇ eh v´ yvoje
Pod´ıvejme se podrobnˇeji na posloupnost krok˚ u pˇri v´ yvoji podle spir´ alov´eho modelu. Postupuje se podle obr´azku obr. 2.2 po spir´ ale od stˇredu na kraj. Nejprve popiˇsme ˇctyˇri kvadranty, kter´ ymi spir´ala proch´ az´ı. Kdykoliv se projekt dostane do lev´eho horn´ıho kvadrantu, stanovuj´ı se c´ıle, 1 2
Riziko je jak´ akoliv ud´ alost, pˇri kter´e m˚ uˇze b´ yt projekt ohroˇzen. Aplikace je sloˇzena z modul˚ u, z nichˇz kaˇzd´ y zahrnuje urˇcitou element´ arn´ı funkcionalitu. Jednotliv´e moduly
jsou pouˇziteln´e nez´ avisle na ostatn´ıch a m˚ uˇzou b´ yt pouˇzity i v aplikac´ıch zcela jin´ ych, neˇz pro kter´e byly poprv´e vyrobeny.
6
´ KONTEXT VZNIKU AGILN´ICH METODIK KAPITOLA 2. HISTORICKY
Obr´ azek 2.2: Sch´ema spir´ alov´eho modelu ˇzivotn´ıho cyklu; zdroj http://3.bp.blogspot.com/_El72O8-WX9g/TNDqfSRLFbI/ AAAAAAAAACU/2DXXgJJ99CY/s1600/spiral_model.gif
alternativy a omezen´ı pro aktu´ aln´ı iteraci. Prav´ y horn´ı kvadrant je vyhrazen anal´ yze rizik. V prav´em spodn´ım kvadrantu prob´ıh´ a realizace, coˇz je hlavnˇe specifikace poˇzadavk˚ u, podrobnˇejˇs´ı n´ avrh, implementace a testov´ an´ı. Posledn´ı kvadrant je urˇcen k pl´ anov´an´ı dalˇs´ı iterace.
2.2.2
V´ yhody
Je kladen velk´ y d˚ uraz na anal´ yzu rizik a u ´spˇeˇsnˇe se tedy pˇredch´ az´ı vˇetˇsinˇe probl´em˚ u, ke kter´ ym m˚ uˇze pˇri v´ yvoji doj´ıt. To vˇcas vylouˇc´ı nevhodn´a ˇreˇsen´ı. Dalˇs´ı v´ yhody spir´alov´eho modelu spoˇc´ıvaj´ı v jeho komplexnosti, takˇze je vhodn´ y pro sloˇzit´e projekty. Tak´e v tom, ˇze je pro kaˇzdou aktivitu a zdroj definov´ ana m´ıra dostatku. Riziky ˇr´ızen´ y pˇr´ıstup napˇr´ıklad umoˇzn ˇuje stanovit, kolik ˇcasu je potˇreba vyhradit jednotliv´ ym krok˚ um.
2.2.3
Nev´ yhody
Komplikovan´ y spir´ alov´ y model pˇrin´ aˇs´ı n´asleduj´ıc´ı nev´ yhody: Je zat´ıˇzen mnoˇzstv´ım byrokraˇ tick´ ych povinnost´ı, coˇz sniˇzuje efektivitu a rychlost v´ yvoje. Clenov´ e t´ ymu mus´ı b´ yt schopni spolehlivˇe analyzovat zdroje rizik, jinak projekt m˚ uˇze ztroskotat. Bˇehem pr´ace nelze prov´ adˇet zmˇeny kdykoliv, jen po dokonˇcen´ı cyklu. T´ım vznikaj´ı zbyteˇcn´e ˇcasov´e prodlevy. Pˇred koneˇcnou f´az´ı nen´ı dod´ an ˇz´ adn´ y software a do t´e doby nen´ı z´ akazn´ıkovi zn´am´ a jeho podoba. Spir´ alov´ y model nen´ı skuteˇcnou metodikou a nepopisuje tedy ani zhruba vˇsechny d˚ uleˇzit´e ˇcinnosti.
2.3. RATIONAL UNIFIED PROCESS (RUP)
2.3
7
Rational unified process (RUP)
V tomto odstavci se zamˇeˇr´ıme na velmi obecnou, ˇsirokou a mohutnou metodologii3 vhodnou pro mnoho druh˚ u projekt˚ u. Jej´ım tv˚ urcem je Ivar Jacobson s firmou Rational. Ta v souˇcasnosti spad´ a pod IBM [ ?? ]. V´ yvoj prob´ıh´a v iterac´ıch, coˇz m´a podobn´ y pˇr´ınos jako u spir´alov´eho modelu. Pˇredch´ az´ı se rizik˚ um, sn´ az se spravuj´ı zmˇeny a moduly tvoˇr´ıc´ı aplikaci jsou pouˇziteln´e opakovanˇe. Tak´e se daˇr´ı pˇribl´ıˇzit se l´epe k z´akazn´ıkovi. F´aze kaˇzd´e iterace jsou zah´ajen´ı (Inception), projektov´ an´ı (Elaboration), realizace (Construction) a pˇred´ an´ı (Transition) [ 1 ]. Pˇr´ıstup RUP nen´ı pˇr´ımo ˇr´ızen´ y riziky jako Spir´alov´ y model, n´ ybrˇz pˇr´ıpady uˇzit´ı. Metodologie je objektovˇe orientovan´ a - definuje vˇsechny d˚ uleˇzit´e elementy pro modelov´ an´ı a pro pl´anov´an´ı v´ yvojov´eho procesu. Kaˇzd´ y element m´a podrobn´ y popis, jak ho realizovat. Jsou ˇctyˇri [ 1 ]: • Role a pracovn´ıci - Rad´ı jak obsadit role. Odpov´ıd´a na ot´azku kdo? ˇ • Cinnosti - Kaˇzd´ a z nich m´ a konkr´etn´ı v´ ysledek (meziprodukt). Popisuje, jak ho dos´ahnout. Odpov´ıd´ a na ot´ azku jak? ˇ asti informace pouˇzit´e v procesu. Odpov´ıd´a na ot´azku co? • Meziprodukty - C´ • Pracovn´ı procesy - Posloupnost ˇcinnost´ı a interakce mezi pracovn´ıky. Odpov´ıd´a na ot´ azku kdy?
2.3.1
Kl´ıˇ cov´ e pojmy
ˇ ızen´ı a spr´ Co je pro RUP specifick´e, je napˇr´ıklad pr´ace se z´ akazn´ıkov´ ymi poˇzadavky. R´ avu z´akazn´ıkov´ ych n´ arok˚ u ani jeden ze dˇr´ıvˇejˇs´ıch model˚ u nezahrnuj´ı. D´ ale je definov´ ana u ´spora zdroj˚ u. K tomu je zˇr´ızena podpora komponentov´e architektury. Komunikace mezi v´ yvoj´ aˇri je zjednoduˇsena d´ıky vizu´ aln´ımu modelov´ an´ı softwaru - vyuˇz´ıv´ a se notace UML. Metodologie je s n´ı dokonale prov´azan´ a a pouˇzit´ı UML pak pˇri v´ yvoji je v´ yhodn´e. Kvalita je kontrolov´ana a zajiˇst’ov´ana pr˚ ubˇeˇznˇe, a tak se kaˇzd´a chyba odhal´ı kr´atce po tom, co nastane. Jej´ı oprava je o to levnˇejˇs´ı. Dalˇs´ım ulehˇcen´ım korekc´ı chyb, ale i jin´ ych u ´prav je doporuˇcen´ı, aby zmˇeny byly ˇr´ızen´e.
2.3.2
V´ yhody
Tato metodologie umoˇzn ˇuje upravit a pˇrizp˚ usobit n´ avod pro kaˇzd´ y projekt. Ten pak obsahuje podrobnˇe propracovan´e a zdokumentovan´e kroky v´ yvoje od zaˇc´atku aˇz do konce. V´ yrobce RUP u ´dajnˇe pr˚ ubˇeˇznˇe pracuje na v´ yvoji metodologie, takˇze podporuje i nov´e technologie. Je zn´ am´ a a rozˇs´ıˇren´ a a existuje k n´ı mnoˇzstv´ı doplˇ nuj´ıc´ıch informac´ı a n´avod˚ u. 3
Metodologie je obecnˇejˇs´ı pojem neˇz metodika. Je vˇedn´ı discipl´ınou, kter´ a se zab´ yv´ a metodikami.
8
2.3.3
´ KONTEXT VZNIKU AGILN´ICH METODIK KAPITOLA 2. HISTORICKY
Nev´ yhody
Existuje vˇsak mnoˇzstv´ı d˚ uvod˚ u, proˇc se RUP pouˇz´ıvat nehod´ı. Pˇredevˇs´ım pro mal´e projekty je postup neefektivn´ı. Metodologie poˇzaduje hlubok´e studium a t´ ym vˇzdy str´ av´ı mnoho ˇcasu zkoum´an´ım n´ avodu a vytv´ aˇren´ım meziprodukt˚ u. Dalˇs´ım argumentem je, ˇze projektov´ı inˇzen´ yˇri a manaˇzeˇri mus´ı b´ yt tr´enov´ani v pr´ aci s RUP, jinak projekt nemus´ı skonˇcit u ´spˇeˇsnˇe. RUP se prod´ av´ a jako komerˇcn´ı softwarov´ y produkt.
2.4
Unified software development process (UP)
Tuto metodiku vydal Ivar Jacobson jako knihu ˇctyˇri roky po vzniku RUP. UP je urˇcit´ ym zjednoduˇsen´ım RUP. Rovnˇeˇz jde o inkrement´ aln´ı v´ yvoj v iterac´ıch. Kaˇzd´a z nich se skl´ad´a z f´az´ı pl´ anov´ an´ı, anal´ yza a n´ avrh, implementace, testov´ an´ı a integrace, dod´ an´ı. V´ yvoj je ˇr´ızen pˇr´ıpady pouˇzit´ı a riziky. UP poˇzaduje d´ avat d˚ uraz na architekturu. Na rozd´ıl od RUP nerozeb´ır´ a do hloubky vˇsechny postupy. Je bezplatn´a, avˇsak neposkytuje ˇz´adn´e doplˇ nky a bonusy. Tak´e podpora r˚ uzn´ ych v´ yvojov´ ych n´astroj˚ u pro UP nen´ı takov´a, jako pro RUP.
Kapitola 3
Agiln´ı metodiky Agiln´ı metodiky byly zavedeny z potˇreby uˇcinit v´ yvoj efektivnˇejˇs´ı, kvalitnˇejˇs´ı a rychlejˇs´ı. Proto se silnˇe zamˇeˇruj´ı na v´ ysledek. Tak´e v´ yznam slova agiln´ı znaˇc´ı, ˇze jde o v´ yvoj velmi aktivn´ı, sviˇzn´ y, bez zdrˇzov´ an´ı a ˇcasov´ ych prostoj˚ u u jednotliv´ ych f´az´ı.
3.1
Z´ akladn´ı charakteristika agiln´ıch metodik
Tyto techniky zabezpeˇc´ı softwarov´ ym firm´ am flexibilitu, pˇrizp˚ usobivost a pruˇznost. D´ ale metodiky omezuj´ı zmatek, nejistotu a nervozitu v t´ ymu a maximalizuj´ı produktivitu. Jedn´ım slovem lze agiln´ı v´ yvoj charakterizovat jako - progresivn´ı. Charakteristika je d´ ana manifestem agiln´ıho v´ yvoje softwaru (viz [ 3 ]a d´ ale). Bˇehem pr´ace je dobˇre vidˇet postup k c´ıli. Program´ ator pr˚ ubˇeˇznˇe odevzd´ av´a jednotliv´e ˇc´asti projektu. Tˇem jiˇz nemus´ı vˇenovat pˇr´ıliˇsnou pozornost a m˚ uˇze se plnˇe zamˇeˇrit na aktu´aln´ı probl´em. Pokud vznikaj´ı nˇejak´e pot´ıˇze, pracovn´ık se o nich vˇcas dozv´ı. Napˇr´ıklad nespokojenost s ovl´adac´ımi prvky uˇzivatelsk´eho rozhran´ı m˚ uˇze z´akazn´ık sdˇelit bˇehem ran´ ych iterac´ı, protoˇze v´ yvoj ˇcasto zaˇc´ın´ a formov´an´ım interface. Agiln´ı metodiky jsou vhodn´e pro mal´e a stˇrednˇe velk´e projekty. Nevedou k efektivn´ımu ˇreˇsen´ı velmi sloˇzit´ ych a komplexn´ıch probl´em˚ u. Takov´e je nutno dekomponovat na jednoduˇsˇs´ı. Vˇetˇsina autor˚ u tˇechto metodik m´ a zkuˇsenosti s velk´ ym ne´ uspˇechem nˇejak´eho projektu. Kaˇzd´ y z nich si dobˇre uvˇedomil vˇsechny v´ yhody i nedostatky v´ yvojov´ ych proces˚ u. To je vedlo k vyvinut´ı flexibiln´ıch metodik, kter´e vylepˇs´ı produktivitu a efektivitu v´ yvojov´eho procesu.
3.1.1
Manifest agiln´ıho v´ yvoje softwaru
V roce 2001 se setkali nejv´ yznamnˇejˇs´ı pˇredstavitel´e nov´ ych pˇr´ıstup˚ u ke tvorbˇe softwaru a formulovali principy pro agiln´ı v´ yvoj. Mezi nejzn´amˇejˇs´ı autory Manifestu agiln´ıho v´ yvoje patˇr´ı Kent 9
KAPITOLA 3. AGILN´I METODIKY
10
Beck, Mike Beedle, Alistair Cockburn, Ward Cunningham, Martin Fowler, Jim Highsmith, Ken Schwaber, Jeff Sutherland. Neˇz se tito lid´e seˇsli, pracovali prakticky nez´ avisle na sobˇe a na v´ yvoj softwaru si vytv´ aˇreli vlastn´ı n´azory, ˇcasto radik´ aln´ı. Konsensus takto reformn´ıch osobnost´ı na koneˇcn´e formulaci manifestu znamen´ a, ˇze se shodli na nˇeˇcem podstatn´em. Z´ akladn´ı teze, ze kter´ ych manifest vych´ az´ı: • Pˇrijmout a umoˇznit zmˇenu je mnohem efektivnˇejˇs´ı, neˇz se pokouˇset j´ı zabr´anit. • Je tˇreba b´ yt pˇripraven reagovat na nepˇredv´ıdateln´e ud´alosti, nebot’ ty bezpochyby nastanou. Jedin´ a jistota je zmˇena. Na z´akladˇe tˇechto tez´ı autoˇri manifestu d´avaj´ı pˇrednost (pˇreklad z [ 3 ]): • individualit´ am a komunikaci pˇred procesy a n´ astroji • provozuschopn´emu softwaru pˇred obs´ ahl´ymi, objemn´ymi dokumentacemi • spolupr´ aci se z´ akazn´ıkem pˇred uzav´ır´ an´ım mnoha smluv • reakci na zmˇenu pˇred striktn´ım plnˇen´ım pl´ anu V´ aˇz´ı si v´ıce poloˇzek na lev´e stranˇe, i kdyˇz hodnoty napravo tak´e uzn´ avaj´ı.
3.1.2
Principy umoˇ zn ˇ uj´ıc´ı progresivn´ı v´ yvoj
Existuje v´ıcero princip˚ u, kter´e vedou k progresivitˇe. Mezi hlavn´ı z nich patˇr´ı jednoduchost a rychlost. Lid´e nedˇelaj´ı nic neˇz to, co vede k c´ıli - funkˇcn´ı software. Neztr´ ac´ı ˇcas nadbyteˇcnou anal´ yzou, tvorbou m´ alo v´ yznamn´e dokumentace nebo k´ odu, jehoˇz d˚ uleˇzitost je pouze teoretick´a, ne skuteˇcn´a. Z´ asadn´ı je umˇen´ı naj´ıt co nejvˇetˇs´ı mnoˇzstv´ı ˇcinnost´ı, kter´e nen´ı nutno dˇelat. Dalˇs´ı z´ asadou je navrhovat jen to, co je nezbytn´e pro aktu´aln´ı implementaci. Nic se nenavrhuje s vˇetˇs´ım pˇredstihem, protoˇze je pravdˇepodobn´e, ˇze se to v budoucnu zmˇen´ı. Jedinˇe n´avrh pro okamˇzitou potˇrebu je zaruˇcenˇe spr´avn´ y. Jinou d˚ uleˇzitou vˇec´ı je d˚ uraz na komunikaci uvnitˇr t´ ymu. Metodiky zd˚ urazˇ nuj´ı, ˇze osobn´ı komunikace je nejrychlejˇs´ı a nejspolehlivˇejˇs´ı. Popisuj´ı konkr´etn´ı zp˚ usoby komunikace a pˇredmˇety jedn´ an´ı. Vedouc´ı projektu m´ a spr´avnˇe motivovat pracovn´ıky a tak´e d˚ uvˇeˇrovat v jejich schopnost a zodpovˇednost. Kvalitu projektu podstatnˇe ovlivˇ nuje, jak je u ´zk´a spolupr´ace se z´akazn´ıky a obchodn´ıky. Ti podle agiln´ıch metodik ˇcasto maj´ı b´ yt souˇc´ast´ı v´ yvojov´eho t´ ymu.
3.1.3
Omezuj´ıc´ı poˇ zadavky
Agiln´ı metodiky tak´e poˇzaduj´ı jistou discipl´ınu, aby bylo moˇzn´e dos´ahnout progresivity. Jedno z omezen´ı spoˇc´ıv´ a v tom, ˇze program´ator nem´a rozˇsiˇrovat zad´ an´ı sv´ ymi pˇredstavami. Kvalita aplikace nen´ı pˇr´ımo u ´mˇern´ a jej´ı robustnosti nebo obs´ ahlosti. Napˇr´ıklad nen´ı u ´ˇceln´e pˇredpokl´ adat,
´ ´I CHARAKTERISTIKA AGILN´ICH METODIK 3.1. ZAKLADN
11
ˇze vytv´aˇren´ y datab´ azov´ y syst´em m´ a umˇet nar´ az obslouˇzit stovky klient˚ u, pokud je z´ akazn´ık pˇresvˇedˇcen o tom, ˇze uˇzivateli budou pouze zamˇestnanci jeho mal´e firmy. Za nejv´ yznamnˇejˇs´ı zn´amku kvality se tedy m´ a povaˇzovat v´ yhradnˇe dan´a funkˇcnost. Tou nen´ı nic z toho, co jen program´ator vid´ı jako potˇrebn´e. Disciplinovan´ y pracovn´ık pravidelnˇe ovˇeˇruje funkˇcnost u z´akazn´ıka. Ten pr˚ ubˇeˇznˇe sleduje stav aplikace d´ıky pravidelnˇe vyd´avan´ ym meziv´ ysledk˚ um. Urˇcuje spr´ avnost vˇsech ˇc´ ast´ı syst´emu a jejich odezev. D˚ ukladn´ a komunikace se zadavatelem vede k tomu, ˇze se vˇzdy implementuje pr´avˇe takov´e chov´an´ı syst´emu, jak´e je spr´avn´e. D´ ale je d˚ uleˇzit´e, aby se nov´e verze dod´avaly ˇcasto a v mal´ ych d´avk´ ach. T´ım se zajist´ı okamˇzit´ a a pˇresn´a zpˇetn´a vazba. Nav´ıc ˇcast´e odevzd´ av´an´ı subsyst´em˚ u pom´ ah´a v´ yvoj´aˇr˚ um odhalovat chyby a urychluje z´ısk´av´ an´ı zkuˇsenost´ı. Dalˇs´ım pˇredpokladem je, ˇze program´atoˇri jsou otevˇren´ı nov´ ym potˇreb´ am zadavatele. Na poˇzadovan´e zmˇeny mus´ı reagovat prakticky ve kter´ekoliv f´ azi v´ yvoje. To je umoˇznˇeno hlavnˇe iterativn´ım postupov´ an´ım. Manaˇzer projektu mus´ı b´ yt schopn´ y s´am pl´anovat podrobn´e kroky v dan´e situaci. Agiln´ı metodiky nedefinuj´ı detailn´ı metody, jak prov´adˇet jednotliv´e ˇcinnosti. M´ alokdy porad´ı konkr´etn´ı postup, coˇz m˚ uˇze na jednu stranu vypadat jako nev´ yhoda. Avˇsak na druhou stranu se z´ amˇernˇe zp˚ usob ˇr´ızen´ı projektu nech´av´ a pˇrizp˚ usobit okolnostem. Autoˇri Feature driven development tvrd´ı, ˇze metodiky definovan´e do detail˚ u funguj´ı jen v pˇr´ıpadech, kdy v´ yvojov´ y proces je pˇredv´ıdateln´ y a prob´ıh´ a podle pˇresnˇe stanoven´eho pl´ anu. To se vˇsak v praxi dˇeje ojedinˇele, proto je cennˇejˇs´ı volnost v rozhodov´ an´ı neˇz slep´e dodrˇzov´an´ı pˇredepsan´ ych krok˚ u. Manaˇzer tedy mus´ı zv´ aˇzit, jestli mu staˇc´ı, ˇze metodika jen uk´ aˇze smˇer, jak´ ym se ub´ırat. Jinak si mus´ı zajistit n´avod na veˇsker´e postupy.
3.1.4
Odliˇ snosti od tradiˇ cn´ıch metodik
Podm´ınky kaˇzd´eho v´ yvojov´eho procesu se d´ a charakterizovat tˇremi z´akladn´ımi promˇenn´ ymi. Jsou to: ˇcas vyhrazen´ y pro v´ yvoj, zdroje a funkcionalita produktu. C´ılem pˇri v´ yvoji tradiˇcn´ım zp˚ usobem je splnit co nejpˇresnˇeji konkr´etn´ı pˇredpoklady dan´e dokumentem specifikace poˇzadavk˚ u. Pˇri v´ yvoji podle agiln´ı metodiky je c´ıl jin´ y - vytvoˇrit projekt v definovan´em ˇcase a za urˇcit´e n´aklady. Vˇetˇsinou je pro zadavatele pˇrijatelnˇejˇs´ı zmˇena specifikace poˇzadavk˚ u neˇz zdraˇzen´ı nebo posunut´ı term´ınu dod´an´ı oproti pˇredpokladu. Poˇzadavky se stejnˇe mˇen´ı vˇzdycky, at’ chceme nebo nechceme. Rozd´ıl mezi obˇema zp˚ usoby tedy spoˇc´ıv´ a v tom, ˇze podle tradiˇcn´ıch zvyklost´ı je hlavn´ı neporuˇsit podm´ınky vymezen´e promˇennou funkcionalita produktu a ostatn´ı dodrˇzet jen v r´ amci moˇznost´ı v´ yvojov´eho t´ ymu. A pˇri agiln´ım programov´ an´ı se naopak m´ a zachovat ˇcas vyhrazen´ y pro v´ yvoj a pouˇz´ıt jen stanoven´e zdroje. Podle tradiˇcn´ıch metodik se m´a pˇredpokl´ adat, ˇze v´ yvoj softwaru je definovan´ y proces. Podle nich u ´koly mohou b´ yt detailnˇe definov´any, sloˇzitost implementace algoritm˚ u je moˇzno popsat. V´ ysledky pr´ ace jsou pˇresnˇe mˇeˇriteln´e a mˇeˇritelnost je vod´ıtko pˇri opakov´an´ı proces˚ u tak dlouho,
KAPITOLA 3. AGILN´I METODIKY
12
Obr´ azek 3.1: Cena zmˇeny poˇzadavk˚ u; zdroj - developerfusion.com
dokud tolerance nejsou zanedbateln´e. Je tedy moˇzn´e pˇredem urˇcit, jak bude prob´ıhat v´ yvojov´ y proces. Tradiˇcn´ı metodiky jsou ˇr´ızeny pl´anem. Agiln´ı metodiky pl´ anu nepodl´ehaj´ı, vych´azej´ı ˇ ım v´ıce z promˇenliv´ ych podm´ınek a vlastnˇe jsou ˇr´ızeny moment´ aln´ımi poˇzadavky z´ akazn´ıka. C´ jsou nest´al´e, a z´ aroveˇ n ˇc´ım v´ıce je technologie nezn´am´ a, t´ım vyˇsˇs´ı ˇsanci na u ´spˇech maj´ı agiln´ı pˇr´ıstupy oproti tradiˇcn´ım. Tolik je nejd˚ uleˇzitˇejˇs´ıch odliˇsnost´ı ohlednˇe obecn´eho pˇr´ıstupu. N´asleduj´ı rozd´ıly v konkr´etn´ıch postupech. Anal´ yza poˇzadavk˚ u a cel´eho probl´emu v˚ ubec je pˇri agiln´ım programov´ an´ı podstatnˇe zrychlen´a. Vˇzdy se analyzuje pouze to, co je moment´alnˇe d˚ uleˇzit´e. O to d˚ uslednˇejˇs´ı mus´ı b´ yt testov´ an´ı. Barry Boehm ˇr´ık´ a: Nalezen´ı a odstranˇen´ı chyby je stokr´ at draˇzˇs´ı po dokonˇcen´ı produktu neˇz ze zaˇc´ atku v´yvoje. Coˇz tak´e v´ ystiˇznˇe dokumentuje obr´azek obr. 3.1. Hojnˇe se vyuˇz´ıvaj´ı automatizovan´e testy. Obvykle se maj´ı ps´at dˇr´ıve neˇz zdrojov´ y k´ od programu. Neztr´ ac´ı se ˇcas vytv´aˇren´ım dokument˚ u, bez kter´ ych se program´ atoˇri obejdou. D˚ uleˇzitˇejˇs´ı neˇz dokumentace je orientace ve zdrojov´em k´odu. Ten tvoˇr´ı ˇcasto spolu s testovac´ım k´odem hlavn´ı ˇc´ast dokumentace. Lid´e oceˇ nuj´ı i fakt, ˇze v´ yvoj podle agiln´ıch metodik je z´abavnˇejˇs´ı neˇz podle tradiˇcn´ıch.
3.1.5
Nev´ yhody agiln´ıch metodik
Byla pops´ ana vˇsemoˇzn´ a pozitiva agiln´ıch metodik. Nyn´ı jsou na ˇradˇe jejich nev´ yhody a pot´ıˇze, t´ ykaj´ıc´ı se pˇredevˇs´ım manaˇzera projektu. Protoˇze jsou tyto metodiky novˇejˇs´ı neˇz tradiˇcn´ı techniky, jev´ı se m´enˇe pˇrirozen´e a h˚ uˇr se zav´ ad´ı. Nˇekter´e metodiky jsou velmi pˇr´ısn´e a vyˇzaduj´ı velkou discipl´ınu (napˇr´ıklad XP). Obecnˇe kladou velk´e n´aroky na kvalitu pracovn´ık˚ u. D´ ale je pot´ıˇz pˇresvˇedˇcit z´ akazn´ıka o tom, ˇze se mu vyplat´ı investovat vlastn´ı ˇcas do spolupr´ace na v´ yvoji.
ˇ ˇ ZN ˇ EJ ˇ Sˇ´ICH AGILN´ICH METODIK 3.2. PREHLED NEJBE
13
Na zaˇc´ atku se d´ a jen obt´ıˇznˇe urˇcit, jak´ y bude v´ ysledek. Nelze tedy pˇresnˇe ˇr´ıct, jak dlouho potrv´a v´ yvoj syst´emu a jestli se do stanoven´eho term´ınu stihnou vytvoˇrit vˇsechny poˇzadovan´e souˇc´asti. Podobnˇe pˇredem nejde urˇcit, zda bude k dokonˇcen´ı projektu staˇcit stanoven´a koneˇcn´ a cena. Ta se odv´ıj´ı bud’ od doby str´aven´e na projektu, nebo se urˇc´ı cena za jednotku pr´ ace a dopl´ac´ı se za nov´e poˇzadavky. V praxi doch´ az´ı k rozˇsiˇrov´ an´ı zad´ an´ı a t´ım k posouv´ an´ı term´ınu dod´an´ı. Na konci projektu jde pak tˇeˇzko rozliˇsit, co z´ akazn´ık definoval na zaˇc´atku a co dodefinoval v pr˚ ubˇehu. Jestliˇze m´ a v´ yvoj prob´ıhat agilnˇe, nen´ı moˇzn´e dokumentovat kaˇzdou zmˇenu. Je tedy nutn´e prov´est jak´ ysi kompromis a vydat nˇekolik dokument˚ u nav´ıc. Z´akazn´ık typicky nechce pˇristoupit na nejist´e podm´ınky. Tak´e nechce zaplatit za pr´aci na pˇr´an´ıch, kter´a nebyla prokazatelnˇe vyslovena aˇz v pr˚ ubˇehu v´ yvoje. Vˇetˇsinou se agiln´ı metodiky nehod´ı pro pˇr´ıliˇs velk´e projekty. Rozs´ ahl´e t´ ymy potˇrebuj´ı striktn´ı pravidla a ta jsou v rozporu s agiln´ım v´ yvojem. Jak je vˇsak uvedeno d´ ale , podle nˇekter´ ych agiln´ıch metodik jdou ˇr´ıdit i rozs´ ahl´e projekty.
3.2
Pˇ rehled nejbˇ eˇ znˇ ejˇ s´ıch agiln´ıch metodik
1. Extr´ emn´ı programov´ an´ı (Extreme Programming, d´ ale jen XP) Autor - Kent Beck XP je zˇrejmˇe nejpropracovanˇejˇs´ı metodika. Vych´ az´ı z pˇrirozen´eho lidsk´eho pˇr´ıstupu. Na jeho z´akladˇe jsou postavena pravidla, kter´ a jsou extr´emn´ım zes´ılen´ım myˇslenek tohoto pˇr´ıstupu. Napˇr´ıklad jde snadno kaˇzd´a jednoduch´ a pr´ace, proto vytv´ aˇrejme co nejjednoduˇsˇs´ı produkt, kter´ y ale jeˇstˇe bude fungovat. Metodika se velmi dobˇre hod´ı pˇri tvorbˇe menˇs´ıch produkt˚ u, kter´e maj´ı nejasn´e nebo ˇcasto se mˇen´ıc´ı zad´ an´ı. 2. Lean Software Development (d´ ale jen Lean development) Autoˇri - Tom a Mary Poppendieck Lean development nevzniklo jako formalizace v´ yvoje softwaru. Bylo vytvoˇreno podle v´ yrobn´ıho procesu Lean manufactoring, jehoˇz pravidla byla upravena pro potˇreby agiln´ıho programov´an´ı. Nen´ı pravou metodikou, kter´a by pˇresnˇe popisovala, jak´ ym zp˚ usobem postupovat. Ale jde o souhrn myˇslenek vedouc´ıch k rychlejˇs´ımu v´ yvoji s menˇs´ım mnoˇzstv´ım chyb a ekonomiˇctˇejˇs´ım v´ ysledkem. 3. SCRUM Development (d´ ale jen Scrum) Autoˇri - Ken Schwaber a Mike Beedle Metodiku nejl´epe charakterizuje vysok´a flexibilita t´ ymu a snaha o dokonalou spolupr´aci. Z´asadn´ı prvek Scrum jsou denn´ı sch˚ uzky t´ ymu, kter´e umoˇzn ˇuj´ı nejen dobˇre projednat vˇse
KAPITOLA 3. AGILN´I METODIKY
14
d˚ uleˇzit´e ohlednˇe projektu, ale tak´e pom´ ahaj´ı celkov´emu zkvalitˇ nov´an´ı t´ ymu. Usnadˇ nuj´ı napˇr´ıklad ˇs´ıˇren´ı vˇedomost´ı a budov´ an´ı soci´aln´ıch vztah˚ u mezi ˇcleny. 4. Feature Driven Development (d´ ale jen FDD) Autory metodiky jsou projektov´ y manaˇzer Jeff De Luca a zn´am´ y odborn´ık na v´ yvoj softwaru Peter Coad. Ten se zamˇeˇril pˇredevˇs´ım na objektovˇe orientovan´e koncepce. Podle FDD je v´ yvoj softwaru ˇr´ızen poˇzadovan´ ymi vlastnostmi v´ ysledn´eho produktu, kter´e slouˇz´ı jako z´ akladn´ı stavebn´ı sloˇzky. Tˇemi se rozum´ı vˇsechny konkr´etn´ı funkcionality, d˚ uleˇzit´e ˇc´ asti nebo charakteristiky syst´emu. Vlastnosti jako by odkrokovaly celou ˇcinnost. 5. Test Driven Ddevelopment (d´ ale jen TDD) TDD je technika, jej´ıˇz vedlejˇs´ı efekt je dokonal´e provˇeˇren´ı zdrojov´eho k´odu jednotkov´ ymi testy. Vych´az´ı z jednoduch´eho faktu, ˇze ˇc´ım dˇr´ıv se zaˇcne s testov´an´ım, t´ım dˇr´ıve se odhal´ı chyby a t´ım levnˇejˇs´ı jsou jejich opravy [ 20 ]. Proto TDD poˇzaduje formulovat jednotkov´e testy v nejranˇejˇs´ı f´ azi v´ yvoje - pˇred zhotoven´ım funkc´ı. Ze stejn´eho d˚ uvodu se maj´ı formulovat i akceptaˇcn´ı, vyˇsetˇrovac´ı testy (acceptance tests, investigative tests) a testy uˇzivatelsk´eho rozhran´ı co nejdˇr´ıve, ne aˇz po dokonˇcen´ı projektu.
3.3
Extr´ emn´ı programov´ an´ı
Metodika XP je jedn´ım z nejd˚ uleˇzitˇejˇs´ıch z´astupc˚ u agiln´ıho v´ yvoje, jehoˇz pˇrednosti splˇ nuje vˇsechny. Je vhodn´a pro mal´e projekty a mal´e t´ ymy o dvou aˇz deseti lidech. Nejvˇetˇs´ı d˚ uraz d´av´a na u ´ˇcinnost procesu, jeˇz se snaˇz´ı dos´ ahnout velmi racion´ aln´ı postupy. U kaˇzd´e ˇcinnosti mus´ı b´ yt na prvn´ı pohled zˇrejm´ a jej´ı d˚ uleˇzitost. Produktivitu tak´e viditelnˇe zvyˇsuje pˇredepsan´ a snaha vytvoˇrit takov´e prostˇred´ı, aby pr´ ace byla z´ abavn´ a. Autor se inspiroval ne´ uspˇeˇsn´ ym projektem Chrysler Comprehensive Compensation (C3) [ 6 ]. To byla pro nˇej v´ yzva vybudovat metodiku, kter´a by byla flexibilnˇejˇs´ı a umoˇzn ˇovala l´epe reagovat na pr˚ ubˇeˇzn´e zmˇeny.
3.3.1
Charakteristika
Metodika pˇrevzala nˇekter´e myˇslenky z v´ yroby ve firmˇe Toyota [ 5 ]. Ty hovoˇr´ı o tom, ˇze kaˇzd´ y pracovn´ık je odpovˇedn´ y za celou v´ yrobn´ı linku, vylepˇsov´ an´ı vych´az´ı ze sniˇzov´an´ı pl´ ytv´an´ı a nejvˇetˇs´ım pl´ ytv´an´ım je nadprodukce. T´e je v´ yvoj softwaru pln´ y a tak´e proto XP poˇzaduje jednoduchost a upˇrednostˇ nuje ji pˇred nevyuˇzitelnou robustnost´ı produktu. N´avrh a implementace jsou sepjat´e a nikdy se nenavrhuje nic, co nen´ı moment´alnˇe potˇreba. Nikdy se nem´ a tvoˇrit v´ıce verz´ı k´ odu ani v pˇr´ıpadˇe, ˇze nen´ı jist´e, kter´a verze by byla spr´avn´ a. V takov´e situaci se m´ a
´ ´I PROGRAMOVAN ´ ´I 3.3. EXTREMN
15
nejdˇr´ıve vyˇreˇsit nejz´ akladnˇejˇs´ı probl´em a implementovat funkcionalitu spr´avn´ ym zp˚ usobem. I zde kaˇzd´ y pracovn´ık odpov´ıd´ a za cel´ y v´ yvoj, t´ ym m´ a b´ yt ucelen´ y a jednolit´ y. XP d´ av´a pˇrednost pˇr´ım´e komunikaci o zdrojov´em textu pˇred p´ısemnou komunikac´ı, formalitami a dokumenty. Ty maj´ı jen nezbytnˇe malou d˚ uleˇzitost.
3.3.2
Z´ akladn´ı principy
XP vych´az´ı ze zn´am´ ych zkuˇsenost´ı s t´ım, co pom´ ah´ a pˇri obecn´e lidsk´e ˇcinnosti. Pouˇzit´ı myˇslenek tˇechto zkuˇsenost´ı dotahuje do extr´em˚ u. 3.3.2.1
Pˇ r´ıklady zn´ am´ ych myˇ slenek a postup˚ u
• Jednoduchost projektu pom´ ah´a snadn´e orientaci v k´odu a udrˇzen´ı v´ yvoje v rychl´em tempu. Proto se podle metodiky m´ a vytvoˇrit tak jednoduch´ y produkt, kter´ y jeˇstˇe funguje a splˇ nuje aktu´ aln´ı poˇzadavky na syst´em. Je nev´ yhodn´e budovat sloˇzit´e aplikace s c´ılem usnadnit hypotetick´ a budouc´ı rozˇs´ıˇren´ı. XP pˇresvˇedˇcuje o tom, ˇze stoj´ı nejm´enˇe pr´ ace udrˇzovat syst´em v minim´ aln´ı konfiguraci a pˇrebudovat ho aˇz v pˇr´ıpadˇe, kdy je potˇrebn´ a u ´prava, tˇrebaˇze v danou chv´ıli jiˇz znaˇcnˇe rozs´ ahl´ a. • N´ avrh a architektura syst´emu maj´ı z´ asadn´ı vliv na pr˚ ubˇeh v´ yvoje. Vyuˇz´ıv´a se toho, ˇze se aplikace implementuje t´ım l´epe, ˇc´ım l´epe je navrˇzena. N´avrh se tedy vylepˇsuje dennˇe refaktorizac´ı, avˇsak v souladu s charakterem agiln´ıch metodik. • Testov´ an´ı funkcionality odhal´ı nejv´ıce chyb, proto budou pr˚ ubˇeˇznˇe a neust´ ale testovat vˇsichni vˇcetnˇe z´ akazn´ık˚ u. • Revize a kontroly odstran´ı nejvˇetˇs´ı mnoˇzstv´ı chyb v projektu. Z toho d˚ uvodu XP rad´ı nepˇretrˇzitˇe kontrolovat a proch´azet zdrojov´ y text a pˇredkl´ ad´a metodu tzv. p´arov´eho programov´ an´ı. • Nepˇretrˇzit´ a integrace a testov´ an´ı m´a prob´ıhat nˇekolikr´ at dennˇe. • Iterace maj´ı b´ yt tak kr´ atk´e, jak to odpov´ıd´a nejmenˇs´ım moˇzn´ ym a pouˇziteln´ ym ˇc´astem syst´emu. Dalˇs´ı poznatky, kter´e XP vyuˇz´ıv´ a, jsou n´asleduj´ıc´ı: Je v´ yhodnˇejˇs´ı vyuˇz´ıt probl´emy jako pˇr´ıleˇzitost nˇeco dok´ azat, neˇz se snaˇzit je obch´azet. Typick´e je tak´e lidsk´e jedn´ an´ı mezi ˇcleny t´ ymu a vyvaˇzov´ an´ı jejich potˇreb. Tak´e se lid´e r´adi uˇc´ı a rozv´ıjej´ı. Jako pˇr´ıklad XP uv´ ad´ı, ˇze bˇehem f´ aze pr˚ uzkum program´atoˇri z´ısk´ avaj´ı praxi s technologiemi a z´akazn´ık s psan´ım zad´ an´ı. Vz´ ajemn´ y prospˇech obecnˇe je jeden z nejd˚ uleˇzitˇejˇs´ıch princip˚ u XP [ 5 ]. Z´ aroveˇ n je zˇrejmˇe nejn´ aroˇcnˇejˇs´ı k dodrˇzov´ an´ı. Jde jak o vz´ajemn´e podporov´an´ı uvnitˇr t´ ymu, vedouc´ı k u ´spˇechu, tak o to
KAPITOLA 3. AGILN´I METODIKY
16
d´ at si z´ aleˇzet na spokojenosti z´akazn´ıka. Ta by vˇsak nemˇela b´ yt na u ´kor prospˇechu vyv´ıjej´ıc´ı spoleˇcnosti. Efektivitu pr´ ace pozitivnˇe ovlivˇ nuje radost z kvalitn´ıch v´ ysledk˚ u, viditeln´eho postupu a vylepˇsov´ an´ı. S kvalitn´ımi v´ ysledky souvis´ı nutnost pˇripustit i moˇznost ne´ uspˇechu a umˇen´ı k nˇemu pˇristupovat. Jak autoˇri XP ˇr´ıkaj´ı: Kdo dopust´ı u ´spˇech jeho probl´emu, selh´ av´ a. Neselhat je podle m´eho n´azoru siln´ a motivace k ˇreˇsen´ı pot´ıˇz´ı. Metodika d´ ale upozorˇ nuje na v´ yznam r˚ uznorodosti kon´ an´ı, nebo vˇedom´ı odpovˇednosti za nˇeco d˚ uleˇzit´eho. L´epe pracuje ˇclovˇek, kter´ y prov´ ad´ı l´akavˇejˇs´ı ˇcinnost, neˇz st´an´ı u bˇeˇz´ıc´ıho p´ asu. Nebo tak´e ten, kdo m´ a odpovˇednost a vyˇsˇs´ı sebevˇedom´ı. 3.3.2.2
ˇ ri promˇ Ctyˇ enn´ e charakterizuj´ıc´ı v´ yvoj
Obecnˇe agiln´ı metodiky sice zav´ad´ı tˇri promˇenn´e, avˇsak XP pouˇz´ıv´a dalˇs´ı ˇctvrtou a tak´e zmˇenˇen´e n´ azvy pro p˚ uvodn´ı tˇri. Jsou to kvalita (coˇz odpov´ıd´a funkcionalitˇe projektu), ˇcas vyhrazen´ y pro v´ yvoj, n´aklady (obecnˇe zdroje) a ˇs´ıˇre zad´an´ı. Posledn´ı z nich je mnoˇzina funkc´ı produktu, strukturovan´a podle jejich d˚ uleˇzitosti, a autor ji povaˇzuje za nejd˚ uleˇzitˇejˇs´ı parametr. Ke zmˇenˇe ˇs´ıˇre zad´ an´ı m˚ uˇze doj´ıt pˇri rozhodnut´ı implementovat v´ıce nebo m´enˇe funkˇcnost´ı produktu. Z´akazn´ık m˚ uˇze volit tˇri parametry a podle nich v´ yvojov´ y t´ ym urˇc´ı ˇctvrt´ y. Snaha z´akazn´ıka volit vˇsechny ˇctyˇri parametry vede ke sn´ıˇzen´ı kvality pr´ ace a k nedodrˇzen´ı term´ınu dod´ an´ı. 3.3.2.3
ˇ ri hodnoty Ctyˇ
Patˇr´ı mezi z´akladn´ı pojmy metodiky. Ta je na nich postavena, ˇr´ıd´ı se jimi a vylepˇsuje jimi v´ yvojov´ y proces [ 4 ]. Mezi ˇctyˇri nejv´ıce uzn´ avan´e hodnoty XP patˇr´ı komunikace, jednoduchost, zpˇetn´a vazba, odvaha a sebevˇedom´ı. Je definov´ana jeˇstˇe p´at´ a podprahov´a hodnota - respekt. Dobr´ a komunikace umoˇzn ˇuje odstraˇ novat chyby a pˇrek´aˇzky s nejmenˇs´ım moˇzn´ ym zpoˇzdˇen´ım. Nejvˇetˇs´ı objem dorozum´ıv´ an´ı by mˇel b´ yt u ´stn´ı osobn´ı. Proto by cel´ y t´ ym mˇel pracovat v jedn´e m´ıstnosti. Je vylouˇcen´e jak´ekoliv zatajov´ an´ı nedostatk˚ u nebo probl´em˚ u. Jednoduchost je ekonomiˇctˇejˇs´ı neˇz v´ yvoj nevyuˇzitelnˇe robustn´ıch aplikac´ı, kter´e jdou snadno rozˇs´ıˇrit. Vˇzdy se m´ a zaˇc´ıt co nejjednoduˇsˇs´ım syst´emem, kter´ y se zdokonal´ı, aˇz kdyˇz pˇrijde ˇcas. T´ım se pˇredejde vytv´aˇren´ı nˇeˇceho, co nebude nakonec potˇreba. Zpˇetn´a vazba je ukazatel a prostˇredek hodnot´ıc´ı, v jak´em je syst´em stavu a jestli produkt odpov´ıd´ a klientov´ ym potˇreb´ am. Prov´ ad´ı se zejm´ena testov´an´ım, kter´e se podle XP m´a maximalizovat. Testov´ an´ım proch´ az´ı jak mal´e moduly, tak vˇetˇs´ı ˇc´asti - subsyst´emy apod. a je do nˇej zapojen i z´ akazn´ık. Odvaha a sebevˇedom´ı jsou obzvl´ aˇst’ d˚ uleˇzit´e v XP. T´ ym se nesm´ı b´ at okamˇzitˇe odstraˇ novat chyby a prov´adˇet nutn´e zmˇeny, a to za kaˇzdou cenu. XP upozorˇ nuje, ˇze cenou m˚ uˇze b´ yt i nepouˇzitelnost dvou tˇretin vˇseho hotov´eho k´ odu. ˇ P´at´ a podprahov´a hodnota - respektov´ an´ı osob okolo sebe. Clenov´ e t´ ymu mus´ı spolupracovat,
´ ´I PROGRAMOVAN ´ ´I 3.3. EXTREMN
17
Obr´ azek 3.2: Moˇzn´ a podoba karty zad´ an´ı pouˇz´ıvan´e v XP. Jej´ı obsah stanovuje z´ akazn´ık.; pˇrekresleno podle 9
zaj´ımat se jeden o druh´eho, a ne vˇenovat se v´ yhradnˇe sv´e pr´aci, aby metodika byla funkˇcn´ı.
3.3.3
Z´ akladn´ı metody XP
Jde o postupy, kter´e je nutn´e do v´ yvoje zaˇradit vˇsechny. Je vidˇet, ˇze pˇrijmout vˇsech dvan´ act pravidel jde jen v extr´emn´ım pˇr´ıpadˇe, kdy je t´ ym skuteˇcnˇe schopn´ y a uk´aznˇen´ y. Nedodrˇzen´ı nˇekter´e z praktik je v rozporu s XP. Business praktiky 1. Pl´anovac´ı hra - Cel´ y t´ ym vytv´aˇr´ı tzv. karty zad´an´ı, kter´e nesou z´ akladn´ı informace o poˇzadovan´ ych funkcionalit´ ach obr. 3.2. 2. Vyd´ av´ an´ı mal´ ych verz´ı - Verze se maj´ı vyd´avat v konfigurac´ıch co nejmenˇs´ıch, kter´e jako ˇ ım ˇcastˇejˇs´ı je vyd´av´an´ı, t´ım lepˇs´ı je celek ale jeˇstˇe maj´ı viditeln´ y v´ yznam pro z´akazn´ıka. C´ zpˇetn´a vazba. Tak´e na z´ akazn´ıka dobˇre p˚ usob´ı zˇretelnˇejˇs´ı produktivita t´ ymu. 3. Metafora - Obrazn´ y n´ azev pro architekturu pom´ ah´a u ´ˇcastn´ık˚ um sjednotit pohledy na syst´em, tak aby mu rozumˇeli vˇsichni. Pˇr´ıklad metafory je tabulka, kter´a m˚ uˇze b´ yt ve skuteˇcnosti realizov´ ana jako tabulka, nebo zcela jinak. 4. Z´ akazn´ık na pracoviˇsti - Z´akazn´ık je souˇc´ast´ı t´ ymu na pln´ yu ´vazek a je osobnˇe pˇr´ıtomen. Mus´ı vˇedˇet, ˇze aplikace d´ıky nˇemu funguje o to dˇr´ıve a l´epe. Pokud klient odm´ıt´ a vstoupit do procesu na pln´ y u ´vazek, protoˇze je pro nˇej cennˇejˇs´ı jeho pr´ace a ˇcas neˇz uˇzitek ze syst´emu, je lepˇs´ı se do v´ yvoje nepouˇstˇet.
KAPITOLA 3. AGILN´I METODIKY
18 Programovac´ı praktiky
5. Jednoduch´ y n´ avrh - Veˇsker´e inovace se prov´ad´ı, aˇz kdyˇz jsou potˇreba. Co je pˇr´ıliˇs sloˇzit´e, ihned se odstran´ı. 6. Testov´an´ı - XP definuje f´ azi pl´ anov´an´ı, ale ne n´ avrh. To znamen´ a, ˇze n´avrh prob´ıh´a, ale ne ve zvl´ aˇstn´ı f´ azi. Vych´ az´ı ˇcistˇe ze psan´ı zdrojov´eho k´odu. Testov´ an´ı je tedy t´ım d˚ uleˇzitˇejˇs´ı. 7. Refaktorizace k´ odu - Pˇrestrukturov´ an´ı k´ odu beze zmˇen jeho chov´an´ı je d˚ uleˇzit´e pro jednoduchost a pˇrehlednost k´odu. Je nutn´e rozliˇsovat dobu refaktorizace a implementace. Refaktorizace se nejˇcastˇeji t´ yk´ a zvyˇsov´ an´ı soudrˇznosti k´ odu odstraˇ nov´an´ım duplicit. Jejich odstranˇen´ı je zˇreteln´ y znak jednoduchosti. 8. Neust´ al´ a integrace - Projekt se integruje nˇekolikr´ at dennˇe po kaˇzd´em splnˇen´ı urˇcit´eho u ´kolu. Hlavnˇe v rozs´ ahl´ ych projektech se vyplat´ı testovat integraci nˇekolikr´ at dennˇe. T´ ymov´e praktiky 9. P´ arov´e programov´ an´ı - U jednoho poˇc´ıtaˇce vˇzdy pracuj´ı dva program´atoˇri. Jeden z nich se snaˇz´ı o co nejlepˇs´ı implementaci na aktu´ aln´ım m´ıstˇe. Druh´ y pˇrem´ yˇsl´ı o tom, jak dan´ y kus k´ odu zapad´a do celkov´e koncepce syst´emu a jestli z˚ ustane zachovan´ a jeho integrita. Tak´e hled´ a zp˚ usoby, jak produkt zjednoduˇsit. Pr´ ace ve dvou vede ke zkvalitnˇen´ı k´odu a k menˇs´ı chybovosti. M˚ uˇze trvat nˇekolik t´ ydn˚ u, neˇz se metoda uk´aˇze jako v´ yhodn´a. 10. Kolektivn´ı vlastnictv´ı k´ odu - XP zav´ ad´ı tzv. truck faktor a rad´ı maximalizovat ho. Tento ukazatel znaˇc´ı, kolik program´ ator˚ u rozum´ı jedn´e ˇc´asti zdrojov´eho textu. Nejvˇetˇs´ıho moˇzn´eho faktoru se m´a dos´ ahnout t´ım, ˇze vˇsechen k´od vlastn´ı vˇsichni a kdokoliv ho m˚ uˇze upravovat. 11. Udrˇziteln´e tempo - Pracovn´ıci maj´ı b´ yt rychl´ı a nabit´ı energi´ı, a proto nesmˇej´ı b´ yt pˇretˇeˇzov´ani. Pracovn´ı t´ yden nem´a v´ıc neˇz ˇctyˇricet hodin a nadmˇern´ a pr´ace pˇres ˇcas vede ke zv´ yˇsen´e chybovosti pracovn´ık˚ u. 12. Standardy k´ odu - Maj´ı existovat v kaˇzd´em t´ ymu, nebot’ zdrojov´ y text je z´ akladn´ı a jedin´ a forma uchov´an´ı informace. Proto mus´ı b´ yt pˇrehledn´ y a srozumiteln´ y vˇsem.
3.3.4
Z´ akladn´ı ˇ cinnosti
ˇ Cinnosti, kter´e prob´ıhaj´ı bˇehem v´ yvoje podle XP, jsou na obr´ azku obr. 3.3. 1. Testov´an´ı - Kaˇzd´ a funkce a funkcionalita m´ a jednotkov´ y test [ 6]. Ten mus´ı probˇehnout bez chyb pˇred pokraˇcov´ an´ım v dalˇs´ım v´ yvoji. Testy jsou izolovan´e, tedy nemaj´ı vliv na jin´e testy. Jsou automatizovan´e, a tak je v´ ysledek vˇzdy nez´avisl´ y na okoln´ıch datech. Test modulu se nap´ıˇse dˇr´ıv, neˇz modul zaˇcne vznikat.
´ ´I PROGRAMOVAN ´ ´I 3.3. EXTREMN
19
Obr´ azek 3.3: Vz´ajemn´ y vztah ˇcinnost´ı v XP; pˇrekresleno podle 9
2. Psan´ı zdrojov´eho k´ odu - Jde o c´ıl a z´aroveˇ n metodu XP. V dobˇe v´ yvoje neexistuj´ı jin´e dokumenty, ze kter´ ych by ˇclovˇek nˇeco vyˇcetl o syst´emu. 3. Poslouch´an´ı - V´ yvoj´ aˇri mus´ı m´ıt z´ ajem o sv´e spolupracovn´ıky a aktivnˇe jim naslouchat. Komunikace m´ a m´ıt urˇcitou strukturu. 4. Navrhov´an´ı, design - N´avrh je jedin´ y n´astroj, kter´ ym jde zabr´ anit neˇreˇsiteln´ ym situac´ım (efektivn´ım zp˚ usobem). Zmˇena v jedn´e ˇc´asti by nemˇela zp˚ usobit pokaˇzd´e nutnost zmˇen ostatn´ıch ˇca´st´ı.
3.3.5
Pr˚ ubˇ eh v´ yvoje jedn´ e verze
XP nedefinuje posloupnost pˇresn´ ych f´ az´ı popisuj´ıc´ıch konkr´etn´ı u ´kony. V´ yvoj podle agiln´ıch metodik neprob´ıh´a podle pˇresn´ ych postup˚ u, ale jde o dialog mezi jeho moˇzn´ ym a ˇz´adouc´ım pˇrizp˚ usoben´ım urˇcit´emu vod´ıtku. Jsou definov´ any tyto f´aze: 1. Pr˚ uzkum Program´atoˇri zkouˇs´ı sestavit syst´em tˇremi aˇz ˇctyˇrmi r˚ uzn´ ymi zp˚ usoby, neˇz naleznou nejvhodnˇejˇs´ı architekturu. D´ale sh´ an´ı co nejvˇetˇs´ı mnoˇzstv´ı materi´alu pro vytvoˇren´ı karet zad´an´ı. 2. Pl´ anov´ an´ı V r´ amci tzv. pl´anovac´ı hry vznikne pl´ an jedn´e verze. Pˇred zah´ajen´ım v´ yvoje se v r´ amci pr˚ uzkumu z minul´eho bodu vytvoˇr´ı hrub´ y a jednoduch´ y pl´an. V t´eto chv´ıli je pl´ an pouze pˇribliˇzn´ y a oˇcek´avaj´ı se zmˇeny odhad˚ u i priorit. Na z´akladˇe podrobnˇejˇs´ıho pr˚ uzkumu situace se urˇc´ı n´ aplˇ n tvorby verze. Ta trv´a typicky jeden aˇz dva dny. Jde o tvorbu mnoˇziny karet zad´ an´ı jako z´akladn´ıho materi´ alu popisuj´ıc´ı poˇzadovan´e funkcionality. Pr˚ ubˇeh pl´ anovac´ı hry (a) Pr˚ uzkum - Najde se nov´ a funkcionalita. Veden´ı ji pop´ıˇse bˇeˇznou ˇreˇc´ı, ˇc´ımˇz vznikne tzv. user story a jedna karta zad´ an´ı. V´ yvoj odhadne n´ aroˇcnost a dobu implementace.
KAPITOLA 3. AGILN´I METODIKY
20
(b) Z´ avazek - V´ yvoj se zav´ aˇze k vytvoˇren´ı nov´e verze za dan´ ych finanˇcn´ıch podm´ınek. Karty zad´ an´ı se seˇrad´ı podle d˚ uleˇzitosti. Veden´ı zvol´ı ˇs´ıˇri zad´ an´ı a datum uvolnˇen´ı verze. ˇ ızen´ı - Pl´ (c) R´ anov´an´ı iterac´ı a u ´pravy pl´ anu podle pr˚ ubˇehu v´ yvoje. Pl´anovac´ı hry se u ´ˇcastn´ı cel´ y t´ ym. Obchodn´ıci rozhoduj´ı o ˇs´ıˇri zad´ an´ı, technici rozhoduj´ı o odhadech, o d˚ usledc´ıch volby dan´ ych prvk˚ u a podrobn´em harmonogramu. 3. Testov´ an´ı Testov´ an´ı se stav´ı na dvou z´ akladn´ıch principech. Za prv´e prob´ıh´a dvoj´ı kontrola - automatick´e testy a proch´azen´ı k´ odu. Druh´ y princip ˇr´ık´a, ˇze oprava chyby je t´ım levnˇejˇs´ı, ˇc´ım dˇr´ıv se chyba odhal´ı. 4. Konstrukce, design Inkrement´ alnˇe po iterac´ıch se navrhuje a konstruuje syst´em. Postup mus´ı b´ yt vhodn´ y pro v´ yvojov´ y t´ ym. Zaˇcne se iteraˇcn´ı pl´anovac´ı hrou, coˇz je u ´kon podobn´ y pl´anovac´ı hˇre pro celou verzi aplikace. Z´ akazn´ık vybere karty zad´ an´ı, kter´e maj´ı urˇcit ˇcinnost pro jednu iteraci. Jejich poˇcet z´aleˇz´ı na tempu v´ yvoje a urˇc´ı se jako poˇcet splnˇen´ ych karet v pˇredchoz´ı iteraci. Vytv´aˇr´ı se u ´kolov´e karty, kter´e jsou podrobnˇejˇs´ı neˇz karty zad´ an´ı. Nikdy se nepl´ anuje d´ele dopˇredu neˇz na dobu bezprostˇredn´ı implementace. Osobn´ı komunikace je nezbytn´a. Konstrukce a design nejsou jednor´ azovou z´aleˇzitost´ı, je nutn´e povaˇzovat v´ yvoj za neust´ al´ y proces. Pˇri nˇem je udrˇzov´ ana integrita syst´emu a jej´ı nezachov´ an´ı zvyˇsuje chybovost pˇri programov´an´ı. T´ ym mus´ı b´ yt na udrˇzov´ an´ı celistvosti zvykl´ y. Jinak se prodluˇzuj´ı intervaly odevzd´ av´ an´ı nov´ ych funkcionalit. 5. Dekompozice Podle velikosti t´ ymu se probl´em rozdˇel´ı na menˇs´ı a aplikuj´ı se jednoduch´ a ˇreˇsen´ı. Pokud z˚ ustane sloˇzit´ y nerozloˇziteln´ y probl´em, aplikuje se komplexn´ı ˇreˇsen´ı.
3.3.6
V´ yvoj prvn´ı verze
1. Pl´ anov´ an´ı 2. Zprovozˇ nov´ an´ı Kaˇzd´ a iterace trv´ a jeden aˇz ˇctyˇri t´ ydny, dokud nen´ı vytvoˇrena z´akladn´ı architektura syst´emu neboli jeho kostra. Pot´e se interval mezi jednotliv´ ymi iteracemi zkr´ at´ı zhruba na tˇretinu. T´ım se doc´ıl´ı z´ısk´ an´ı lepˇs´ı zpˇetn´e vazby a reakce na zmˇeny poˇzadavk˚ u. U kaˇzd´e zmˇeny je nutn´e zv´ aˇzit, jestli je aktu´ aln´ı, ˇci jestli ji staˇc´ı zapracovat aˇz v dalˇs´ı verzi. Zde je tak´e prostor na vylad’ov´an´ı a optimalizaci projektu. ´ zba spoˇc´ıv´ 3. Udrˇ a v zav´ adˇen´ı nov´ ych funkc´ı a zaˇcleˇ nov´an´ı nov´ ych osob do projektu. Tak´e mus´ı b´ yt nab´ızena technick´ a podpora vˇsem uˇzivatel˚ um.
´ ´I PROGRAMOVAN ´ ´I 3.3. EXTREMN
21
4. Smrt nast´ av´a v situaci, kdy z´ akazn´ıka nenapadaj´ı nov´a zad´ an´ı, kter´a by chtˇel nechat vydat. Pˇr´ıpadnˇe syst´em ztrat´ı moˇznost existovat za rozumn´ ych finanˇcn´ıch podm´ınek. F´ aze smrt je prvn´ı chv´ıle za celou dobu, kdy m´a smysl napsat pˇeti aˇz desetistr´ ankov´ y dokument s popisem syst´emu. Ten se v t´e dobˇe uˇz nemˇen´ı a dokumentace se m˚ uˇze sepsat bez obav o jej´ı pouˇzitelnost v budoucnosti.
3.3.7
T´ ymov´ e role
XP je agiln´ı metodika nejv´ıce zamˇeˇren´ a na pr´ aci s lidmi a na jak´ ykoliv lidsk´ y faktor. Motivace lid´ı je podpoˇrena tak´e t´ ymov´ ymi oslavami v pr˚ ubˇehu v´ yvoje - napˇr´ıklad po kaˇzd´e iteraci nebo po ukonˇcen´ı pr´ ace na projektu. C´ılem tˇechto oslav je kladn´e vz´ajemn´e hodnocen´ı ˇclen˚ u t´ ymu a z´ abavnˇejˇs´ı a uvolnˇenˇejˇs´ı v´ yvojov´ y proces. • Program´ator - m´a u ´stˇredn´ı roli. Vytv´ aˇr´ı zdrojov´ y text, design, refaktoruje a testuje jednotky. Mus´ı dobˇre komunikovat s ostatn´ımi ˇcleny a pˇrijmout p´arov´e programov´ an´ı. • Z´ akazn´ık - je ten, kdo v´ı, co se m´ a programovat, i kdyˇz nev´ı jak. M´a naplno vyuˇz´ıt moˇznost ovlivˇ novat projekt. Mus´ı pˇrijmout pravidla XP a spoluodpovˇednost za projekt. Jeho povinnost´ı je ps´ at zad´ an´ı a testy funkcionality. • Tester - pom´ ah´ a z´ akazn´ıkovi se psan´ım test˚ u funkcionality. • Stopaˇr - m´a nadhled nad syst´emem. Odhaduje term´ıny, zpracov´ av´a informace ze zpˇetn´e vazby a analyzuje zpoˇzdˇen´ı projekt˚ u. • Kouˇc - odpov´ıd´ a za proces jako celek. Star´ a se o otevˇrenost komunikace a hl´ıd´a spr´avnost postup˚ u. • Konzultant - je expert v konkr´etn´ı oblasti, kter´a t´ ymu nen´ı zn´am´ a. • Velk´ y ˇs´ef - vede organizaci. Mus´ı m´ıt odvahu, trpˇelivost, rozvahu a t´ım i schopnost pˇrijmout principy XP, vˇcetnˇe zd´ anlivˇe nesmysln´ ych krok˚ u. Tˇemi m˚ uˇzou b´ yt napˇr´ıklad p´ arov´e programov´ an´ı, refaktorizace, zahozen´ı nepouˇziteln´eho k´odu.
3.3.8
Z´ avˇ er
XP je flexibiln´ı metodika, kter´a si klade za c´ıle harmonii a vyv´ aˇzen´ı. Boˇr´ı konzervativn´ı pˇredstavy o d˚ uleˇzitosti dokumentace a podrobn´eho pl´ anov´an´ı. Vych´ az´ı z toho, co je pˇrirozen´e a co lid´e maj´ı r´ adi, coˇz je napˇr´ıklad v´ yhra, t´ ymov´ a spolupr´ace, d˚ uvˇera, bl´ızk´ y viditeln´ y c´ıl, funguj´ıc´ı software. Pro metodiku existuje ˇrada zdroj˚ u informac´ı a n´ astroj˚ u ve v´ yvojov´ ych prostˇred´ıch. ˇ ık´a se o n´ı napˇr´ıklad v [ 4 ], ˇze je jednou z nejrozˇs´ıˇrenˇejˇs´ıch a nejzn´ R´ amˇejˇs´ıch. Jsem pˇresvˇedˇcen o
KAPITOLA 3. AGILN´I METODIKY
22
ˇ e republiky jsou ˇcastˇejˇs´ı jin´e tom, ˇze toto plat´ı v Americe, avˇsak ovˇeˇril jsem si, ˇze na u ´zem´ı Cesk´ agiln´ı metodiky. Evropan´e nem´ıvaj´ı na rozd´ıl od Ameriˇcan˚ u tak v´ yhodn´e povahov´e vlastnosti (napˇr´ıklad velkou odvahu), kter´e jsou uˇziteˇcn´e pro XP. Tak´e jsou lid´e zvykl´ı pracovat sp´ıˇse samostatnˇe, ale v XP mus´ı spolupracovat.
3.4
Lean software development
Pˇr´ınos Lean development nespoˇc´ıv´ a v popisu pr˚ ubˇehu v´ yvoje software, ale rad´ı, jak´ ym zp˚ usobem zefektivnit pr´ aci. Jako c´ıle si klade na prvn´ı pohled n´ aroˇcn´e poˇzadavky. Ty jsou produkovat software za tˇretinu obvykl´eho ˇcasu, vystaˇcit se tˇretinou obvykl´eho rozpoˇctu a sn´ıˇzit ˇcetnost chyb na tˇretinu obvykl´eho mnoˇzstv´ı [ 9 str. 159 ]. C´ıle nejsou absurdn´ı. Jak se m˚ uˇzeme doˇc´ıst d´ale, z´ akladn´ı principy Lean development naopak vysvˇetluj´ı, ˇze ˇcast´e doruˇcov´ an´ı prototyp˚ u, vysok´ a kvalita a n´ızk´ a cena jsou plnˇe v souladu. Nejsou stanoveny ˇz´adn´e kroky, jejichˇz pomoc´ı se c´ıl˚ u jistˇe dos´ahne. Lean development pouze vymezuje pravidla, kter´a umoˇzn´ı proces zefektivnit.
3.4.1
Z´ akladn´ı charakteristika
Lean development navazuje na Lean manufactoring. To vych´az´ı ze snahy zabr´ anit probl´em˚ um, na kter´e narazili japonˇst´ı v´ yrobci automobil˚ u pˇri ˇr´ızen´ı produkce. Avˇsak tyto komplikace byly stejn´eho charakteru, jako pot´ıˇze pˇri v´ yvoji softwaru - mˇen´ıc´ıch se poˇzadavk˚ u, efektivity a pruˇznosti v´ yroby. Hlavn´ı automobilov´ y producent, kter´ y rozv´ıjel Lean Manufacturing, je Toyota. Jeho v´ yznamnˇe ovlivnil Dr. W. Edwards Deming uˇcen´ım s n´azvem Absolutnˇe kvalitn´ı management a ˇctrn´ acti body t´ ykaj´ıc´ımi se managementu. Lean Manufactoring dobˇre definuje pojmy kl´ıˇcov´e pro efektivn´ı ˇcinnost. Ta spoˇc´ıv´a v dovedn´em zach´ azen´ı s pojmem hodnota a v zamezen´ı pl´ ytv´an´ı. Kromˇe toho, ˇze metodiku formovali, tak´e ji prosadili v Agiln´ı alianci Tom a Mary Poppendieck.
3.4.2 3.4.2.1
Kl´ıˇ cov´ e pojmy Pl´ ytv´ an´ı
Jedno z nejd˚ uleˇzitˇejˇs´ıch pravidel je odstranˇen´ı pl´ ytv´an´ı. Autorka FDD ho definuje v [ 8 str. 3] sedm druh˚ u. Pˇritom vych´az´ı ze sedmi z´akladn´ıch zp˚ usob˚ u pl´ ytv´an´ı v pr˚ umyslov´e v´ yrobˇe. Pˇri produkci softwaru se objevuj´ı tato: • Nadv´ yroba je zhotovov´ an´ı vlastnost´ı, kter´e z´akazn´ık nepoˇzadoval. Nepˇridaj´ı ˇz´adnou hodnotu produktu, protoˇze ten m˚ uˇze stejnˇe fungovat i bez nich. Nadv´ yroba je kaˇzd´a
3.4. LEAN SOFTWARE DEVELOPMENT
23
aktivita, kterou je moˇzno pˇri cestˇe k v´ ysledku pˇreskoˇcit. Kaˇzd´ y kus k´odu, kter´ y nakonec nejde pouˇz´ıt. Nadv´ yrobu je moˇzn´e omezit konkr´etn´ım opatˇren´ım, kter´ ym se daj´ı odstranit vˇsechny nadbyteˇcn´e ˇcinnosti. Takov´ ym opatˇren´ım m˚ uˇze b´ yt napˇr´ıklad revize prov´ adˇen´a nadˇr´ızen´ ym. • Nevyuˇ zit´ı pˇ r´ıleˇ zitost´ı se uˇ cit Vyplat´ı se pˇri v´ yvoji vˇenovat nezbytn´ y ˇcas zpracov´ an´ı zkuˇsenost´ı, kter´e lze pˇri projektu z´ıskat. • Ztr´ ata ˇ casu ˇ cek´ an´ım na dokonˇcen´ı nˇejak´e funkˇcnosti Pracovn´ıci maj´ı b´ yt pˇridˇelov´ ani na jednotliv´e u ´koly vhodnˇe, pokud moˇzno dynamicky. Jako pˇr´ıklad uv´ad´ım testery, kteˇr´ı vˇzdy mus´ı naj´ıt jinou pr´ aci, pokud moment´ alnˇe nemaj´ı pˇr´ıstup k pˇridˇelen´e funkˇcnosti. • Ztr´ ata ˇ casu pˇ ri transportu je zbyteˇcn´e ˇcek´an´ı pˇri stahov´ an´ı dat, hled´an´ı informac´ı. Pr´ ace m´ a b´ yt vhodnˇe rozdˇelena. Pokud je to moˇzn´e, procesy se maj´ı automatizovat. • Pl´ ytv´ an´ı souvisej´ıc´ı se zpracov´ an´ım jsou vˇsechny nadbyteˇcn´e aktivity bˇehem v´ yvoje. Veden´ı t´ ymu m´a m´ıt pˇrehled o ˇcinnosti vˇsech. Je d˚ uleˇzit´e odhalit chyby pˇred jejich implementac´ı. • Neefektivn´ı pr´ ace m˚ uˇze m´ıt v´ıce pˇr´ıˇcin. Jde o zbyteˇcn´e ”pˇrep´ın´an´ı”mezi u ´koly nebo vracen´ı se k p˚ uvodn´ım n´avrh˚ um. D´ale sem patˇr´ı technick´e nedostatky a nevyuˇzit´ı automatick´ ych n´ astroj˚ u. To zp˚ usobuje sniˇzov´an´ı v´ ysledn´e hodnoty produktu a zvyˇsov´ an´ı spotˇreby zdroj˚ u. Program´atoˇri maj´ı ohl´ıdat, aby pouˇzili vˇsechny dostupn´e n´astroje. Veden´ı mus´ı zajistit, aby se program´ atoˇri o n´astroj´ıch dozvˇedˇeli. • Pl´ ytv´ an´ı spojen´ e s chybami v programu Je potˇreba vyuˇz´ıt mechanismy pro hled´ an´ı a odstraˇ nov´ an´ı chyb.
3.4.2.2
Hodnota
Z´asadn´ı mˇeˇr´ıtko je hodnota v´ ysledn´eho produktu, kter´ y si nˇekdo chce koupit. Proto metodika rad´ı zab´ yvat se v´ yhradnˇe t´ım, co zvyˇsuje jeho hodnotu. Kaˇzd´ y model, n´avrh, dokument, komponenta nebo jak´ ykoliv jin´ y meziprodukt m´ a hodnotu, pokud umoˇzn´ı zlevnit dokonˇcen´ı v´ ysledn´eho produktu. Hodnota m´ a nˇekolik podob. Jednou z nich jsou zdroje, coˇz je ˇcas pracovn´ık˚ u a tak´e pˇredpˇripraven´e komponenty. D´ale to jsou n´astroje pouˇz´ıvan´e pˇri v´ yrobˇe a dovednosti, kter´e t´ ym z´ısk´ av´a bˇehem pr´ ace.
KAPITOLA 3. AGILN´I METODIKY
24
3.4.3
Kl´ıˇ cov´ a pravidla
Autoˇri Lean development pˇrevzali od Lean manufacturing pravidla, kter´ a vyloˇzili zp˚ usobem odpov´ıdaj´ıc´ım v´ yvoji softwaru. 1. Odstranit vˇ se, co je zbyteˇ cn´ e Vˇsechny zbyteˇcn´e produkty a meziprodukty sniˇzuj´ı efektivitu a zvyˇsuj´ı n´aklady, proto je nutn´e odstranit vˇsechny zbyteˇcn´e dokumenty a funkcionality. To se m´ a prov´adˇet vˇedom´ ym rozhodov´an´ım o tom, co nepˇrinese nic v´ ysledn´emu produktu ˇci z´akazn´ıkovi, a co je naopak nezbytn´e. Pokud nedok´aˇzeme ˇr´ıct, jestli se bez artefaktu obejdeme nebo ne, m˚ uˇzeme ho prohl´ asit za zbyteˇcn´ y. Kl´ıˇcov´e je zamˇeˇrit se na z´ akazn´ıka. Kaˇzd´ y program´ ator o nˇem mus´ı vˇedˇet, kdo to je a co je pro nˇej skuteˇcnˇe hodnotn´e [ 7 ]. Pro efektivn´ı hled´an´ı zbyteˇcn´ ych ˇcinnost´ı Lean manufacturing pouˇz´ıv´ a princip, kter´ y se d´a snadno aplikovat v softwarov´em inˇzen´ yrstv´ı. Zkoum´ a se kaˇzd´a aktivita a hodnota, kterou aktivita pˇrid´av´ a v´ ysledku. Pot´e se zkouˇs´ı naj´ıt efektivnˇejˇs´ı zp˚ usob, jak t´eto hodnoty dos´ ahnout. V pˇr´ıpadˇe softwarov´eho v´ yvoje jde o omezen´ı dokument˚ u, jejichˇz pouˇz´ıv´an´ı nen´ı zcela u ´ˇcinn´e. 2. Minimalizovat z´ asoby a meziprodukty Pl´ ytvat se nesm´ı ani na meziproduktech, u kter´ ych je zˇrejm´ y jejich v´ yznam pro lepˇs´ı dosaˇzen´ı v´ ysledku. Kaˇzd´ y potˇrebuje specifikaci, ze kter´e se dozv´ı, jak m´ a aplikace fungovat. Ovˇsem je nutn´e zachovat nezbytnou d´elku dokument˚ u a t´ım pˇredej´ıt pl´ ytv´an´ı. Neefektivn´ı meziprodukty spotˇrebov´ avaj´ı pˇr´ıliˇs mnoho zdroj˚ u nejen jejich vytv´aˇren´ım, ale tak´e schvalov´ an´ım, prohl´ıˇzen´ım a aktualizac´ı. Nejlepˇs´ı zp˚ usob jak minimalizovat, zkr´ atit d˚ uleˇzit´e produkty je zv´ yˇsen´ı jejich m´ıry abstrakce. Nˇekter´e dlouh´e v´ yˇcty popisuj´ı tot´eˇz, co se d´ a vyj´adˇrit nˇekolika pravidly s dokumentac´ı v´ yjimek nebo jedn´ım sch´ematem. Nejvˇetˇs´ı pl´ ytv´an´ı zp˚ usobuje dokumentace, kter´ a je chybn´ a nebo nesplˇ nuje zcela poˇzadavky uˇzivatele. 3. Maximalizovat tok Maximalizovat to znamen´ a vylouˇcit ˇcek´an´ı pracovn´ık˚ u na dokonˇcen´ı f´az´ı procesu, kter´e pˇredch´ azej´ı jejich ˇcinnostem. T´ım se m´a zkr´ atit ˇcas pro v´ yvoj oproti postup˚ um podle tradiˇcn´ıch metodik obr. 3.4. Lean development proto doporuˇcuje jako z´ asadn´ı paradigma iterativn´ı v´ yvoj, kter´ y umoˇzn ˇuje pr´aci vhodnˇe rozdˇelovat. V´ yvoj jde zrychlit tak´e br´anˇen´ım pˇr´ıliˇsn´e kumulaci pr´ ace prov´ adˇen´e v jednom okamˇziku. T´ım se zkr´ at´ı doba iterac´ı. ˇ ıdit se popt´ 4. R´ avkou a prov´ adˇ et kl´ıˇ cov´ a rozhodnut´ı tak pozdˇ e, jak je to jen moˇ zn´ e
3.4. LEAN SOFTWARE DEVELOPMENT
25
Obr´ azek 3.4: Postup pˇri v´ yvoji podle tradiˇcn´ıch metodik; pˇrekresleno podle 9
M´a se odloˇzit kaˇzd´ y z´ avˇer, na kter´em moment´ alnˇe nen´ı z´ avisl´ y dalˇs´ı postup. Z´aroveˇ n nen´ı moˇzn´e usn´ aˇset se na nˇeˇcem v dobˇe, kdy uˇz je pozdˇe. Metodika pˇresvˇedˇcuje o tom, ˇze u ´spˇeˇsn´ y nen´ı ten, kdo pˇredpov´ıd´a zmˇeny. Vhodnˇejˇs´ı je upravit syst´em v´ yvoje tak, aby mˇel co nejkratˇs´ı odezvu na nov´ a pˇr´an´ı klienta. Manaˇzer stav´ı sv´a rozhodnut´ı z´ aroveˇ n na sv´ ych zkuˇsenostech a na v´ ypovˇed´ıch z´akazn´ıka. Nicm´enˇe pro z´akazn´ıka je obt´ıˇzn´e urˇcit vyˇcerp´avaj´ıc´ım zp˚ usobem i jeho souˇcasn´e poˇzadavky. Tedy nem´ a v´ yznam zab´ yvat se jeho budouc´ımi potˇrebami ani vyslovovat dalekos´ ahl´e z´avˇery. Toto pravidlo pom´ ah´a l´epe a pruˇznˇeji reagovat na nov´e poˇzadavky a prov´adˇet v´ yhradnˇe ty kroky, kter´e jsou nezbytn´e. ˇ adn´ Z´ a akce se nem´ a prov´adˇet dˇr´ıv, neˇz je vyˇzadov´ ano [ 8 str. 7 ]. 5. Rozhodnut´ı delegovat pracovn´ık˚ um na u ´ rovn´ıch co nejniˇ zˇ s´ıch Jsou rozhodnut´ı, kter´a m˚ uˇze vykonat manaˇzer stejnˇe dobˇre jako program´ ator. Toho vˇsak dobˇre motivuje ke kvalitn´ı pr´aci, pokud m´ a nˇejak´e pravomoci, pocit urˇcit´e zodpovˇednosti a nejen povinnost vykon´avat pˇr´ıkazy. Proto se hod´ı d´at vˇsem pracovn´ık˚ um nˇejakou pravomoc. Kaˇzd´ y ˇclen v´ yvojov´eho t´ ymu mus´ı vˇedˇet, kam spoleˇcnost smˇeˇruje, ˇceho chce dos´ ahnout a jak s´ am pom´ ah´a dosaˇzen´ı c´ıle. Pak je snazˇs´ı mu sdˇelit, co je jeho d´ılˇc´ım c´ılem, a nechat ho nal´ezt ˇreˇsen´ı. Dokumenty se pak st´avaj´ı struˇcnˇejˇs´ı, pruˇznˇejˇs´ı a zv´ yˇs´ı se m´ıra jejich abstrakce. Opaˇcn´ y zp˚ usob zad´av´an´ı pr´ace je detailn´ı popis toho, co maj´ı program´atoˇri udˇelat, aby spoleˇcnost dos´ahla c´ıle, aniˇz by ho znali. D˚ uleˇzit´e je motivovat pracovn´ıky tak´e ke snaze o efektivitu a smysluplnost jejich pr´ ace. Za tohoto pˇredpokladu nen´ı nutn´e se ob´avat udˇelit nˇekomu podˇr´ızen´emu nˇejakou pravomoc. Je pak menˇs´ı pravdˇepodobnost, ˇze se uch´ yl´ı k anarchii nebo nerozumn´ ym ˇcinnostem. 6. Jako hlavn´ı c´ıl stanovit uspokojen´ı z´ akazn´ıka To plat´ı nejen pro vyhovˇen´ı moment´ aln´ım pˇr´an´ım, ale i budouc´ım. Metodika vyb´ız´ı softwarovou spoleˇcnost, aby uvaˇzovala stylem v´ yhra - v´ yhra. M´ a d´at pˇrednost partnerstv´ı se
KAPITOLA 3. AGILN´I METODIKY
26
z´ akazn´ıkem pˇred nucen´ım ho definitivnˇe podepsat specifikaci poˇzadavk˚ u pˇred zah´ajen´ım pr´ ace. S postupn´ ym a mˇen´ıc´ım se z´ısk´av´an´ım poˇzadavk˚ u t´ ym mus´ı poˇc´ıtat. Syst´em proto mus´ı umoˇzn ˇovat hladk´e reakce na zmˇeny bˇehem ˇzivotn´ıho cyklu. Kl´ıˇcov´ y a samozˇrejm´ y je zde iterativn´ı v´ yvoj. 7. Zav´ est zpˇ etnou vazbu Je d˚ uleˇzit´e napoprv´e vytv´aˇret spr´avn´ y produkt a vyhnout se dalekos´ahl´ ym oprav´ am v pozdn´ıch f´ az´ıch ˇzivotn´ıho cyklu. To neznamen´a zmrznut´ı specifikace poˇzadavk˚ u. Podle ˇctvrt´eho pravidla nen´ı moˇzn´e se ubr´anit zmˇen´am v zad´an´ı, ale tato z´ asada vyb´ız´ı br´ anit se z´ avaˇznˇejˇs´ım pˇrevrat˚ um. Ty mohou b´ yt zp˚ usobeny jak chybou v architektuˇre syst´emu zp˚ usobenou v´ yvoj´ aˇri, tak odkl´ad´ an´ım vyˇzadovan´eho pˇrizp˚ usoben´ı klientov´ ym potˇreb´ am. Takov´ ym pot´ıˇz´ım se d´a zamezit spr´ avnou spoluprac´ı s klientem, kter´ y upravuje a upˇresˇ nuje zad´ an´ı po ˇc´astech. Z´aroveˇ n se t´ ym nesm´ı b´at zmˇen v uˇcinˇen´ ych rozhodnut´ıch, nebot’ iterativn´ı v´ yvoj s sebou nese nutnost pˇrebudovat dokonˇcenou architekturu nebo pˇripraven´e rozhran´ı. Podstatnou roli zde hraje testov´ an´ı, nebot’ tyto zmˇeny jsou velk´ ym zdrojem chyb. Avˇsak jde o mal´e modifikace ve srovn´ an´ı s pˇretv´ aˇren´ım cel´eho produktu ke konci implementace po zjiˇstˇen´ı odchylek od zad´an´ı. 8. Odstranit lok´ aln´ı optimalizaci Podle Lean Manufacturing zamˇestn´ av´a developery snaha o u ´pln´e vyt´ıˇzen´ı vˇsech stroj˚ u natolik, aˇz vznik´ a takov´ a ˇrada nevyˇr´ızen´ ych u ´kol˚ u, ˇze t´ım opˇet doch´az´ı ke sn´ıˇzen´ı vyt´ıˇzen´ı. Podobnˇe ztr´ acej´ı smysl neust´ al´e lok´aln´ı optimalizace st´ avaj´ıc´ıho ˇreˇsen´ı v softwarov´em inˇzen´ yrstv´ı. Ty vedou k celkov´e nevyv´aˇzenosti produktu. Nejde toitˇz zaruˇcit, aby kaˇzd´a jeho souˇc´ast byla optimalizovan´ a podle zcela stejn´eho krit´eria a ve stejn´e m´ıˇre. Optimalizace se tak´e prov´ ad´ı vzhledem k aktu´ aln´ı ˇs´ıˇri zad´ an´ı, kter´a se vˇetˇsinou mˇen´ı neust´ ale. Je tedy lepˇs´ı db´at na hladk´ y bˇeh cel´eho syst´emu neˇz se zamˇeˇrovat na co nejlepˇs´ı splnˇen´ı d´ılˇc´ıho u ´kolu. Syst´em je moˇzn´e optimalizovat jako celek aˇz ke konci v´ yvojov´eho procesu a lok´aln´ı optimalizace m´ a sv´e m´ısto pouze v pˇr´ıpadˇe v´ yraznˇe nekvalitn´ıho modulu ve srovn´ an´ı s ostatn´ımi. 9. Db´ at na partnerstv´ı s dodavateli Vyplat´ı se vyuˇz´ıvat subdod´avek pˇredpˇripraven´ ych komponent, neprogramovat vˇsechno od zaˇc´atku. Pro z´ akazn´ıka je nejd˚ uleˇzitˇejˇs´ı v´ ysledn´a hodnota a nez´ aleˇz´ı na tom, jak hodnoty dos´ahneme. Pˇri pouˇz´ıv´ an´ı ciz´ıch komponent je velmi d˚ uleˇzit´ a osoba partnera. Je nutn´e ohl´ıdat nˇekolik hledisek - zejm´ena bezpeˇcnost dod´ avky, jistota nov´ ych verz´ı a spolehlivost podpory produktu pˇri pozdˇejˇs´ıch zmˇen´ach. Nejlepˇs´ıch v´ ysledk˚ u s obchodn´ımi vztahy dos´ ahli v osmdes´ at´ ych letech firmy, kter´e uzavˇreli pˇr´atelsk´e partnerstv´ı jen s nˇekolika m´alo dodavateli. Spoleˇcnosti pak st´ aly o vz´ ajemnou
3.4. LEAN SOFTWARE DEVELOPMENT
27
pomoc sp´ıˇs, neˇz uvaˇzovat stylem v´ yhra - prohra. Nav´ıc sloˇzit´e a zaruˇcenˇe bezpeˇcn´e smlouvy stoj´ı mnoho ˇcasu pˇri produkci i vyˇrizov´an´ı a tak´e mnoˇzstv´ı pap´ıru, jehoˇz cena je vˇetˇs´ı, neˇz se d´ a oˇcek´avat. Nepˇrinesou takovou v´ yslednou hodnotu za dan´ ych finanˇcn´ıch podm´ınek, jako pozitivn´ı vztahy zaloˇzen´e na d˚ uvˇeˇre. 10. Vybudovat kulturu pro moˇ znost neust´ al´ eho zlepˇ sov´ an´ı Organizace m´a m´ıt takov´ y syst´em fungov´an´ı, kter´ y nedus´ı jej´ı softwarovou vyspˇelost. Naopak podporuje rozvoj pracovn´ık˚ u i organizace jako celku a umoˇzn ˇuje se pouˇcit z kaˇzd´eho projektu. Zamˇestnanci mus´ı b´ yt ke spoleˇcnosti loaj´ aln´ı a povaˇzovat ji za svou. K tomu je spoleˇcnost mus´ı motivovat, jinak nejdou oˇcek´avat maxim´aln´ı nasazen´ı pracovn´ık˚ u.
3.4.4
Z´ akladn´ı principy
V tomto odstavci rozeberme principy Lean development, kter´e vych´az´ı z kl´ıˇcov´ ych pravidel popsan´ ych v pˇredchoz´ım odstavci. 1. Eliminace pl´ ytv´ an´ı Urˇc´ı se hodnoty v´ yznamn´e pro projekt. Z´ uˇcastnˇen´e osoby se nemaj´ı zab´ yvat niˇc´ım jin´ ym, neˇz t´ım, co produktu d´ av´ a tyto hodnoty [ 8 str. 3]. Systematicky se hledaj´ı a likviduj´ı zdroje pl´ ytv´an´ı. 2. Rozvinout uˇ cen´ı Bˇehem v´ yvoje ˇclenov´e t´ ymu nab´ yvaj´ı nejen technick´e znalosti, ale i praxi v mezilidsk´e komunikaci a ve vz´ajemn´em porozumˇen´ı. Nejlepˇs´ı zp˚ usob, jak zkvalitnit v´ yvoj softwaru, je zintenzivnit z´ısk´av´ an´ı zkuˇsenost´ı. Kromˇe toho je nutn´e pˇred kaˇzd´ ym nevratn´ ym rozhodnut´ım co nejl´epe nastudovat dom´enu dan´eho probl´emu. 3. Rozhodov´ an´ı co nejpozdˇ eji ˇ ım je syst´em komplexnˇejˇs´ı, t´ım v´ıce chyb m˚ C´ uˇze vzniknout pˇri n´ avrhu. Odloˇzen´ı ˇc´asti rozhodnut´ı umoˇzn´ı odd´alit tak´e nˇekter´e chyby a t´ım jim pˇredej´ıt. S t´ım je spojeno, ˇze o lecˇcem mus´ı rozhodovat tak´e program´ atoˇri na nejniˇzˇs´ıch pozic´ıch, protoˇze v´ ysledek obvykle ovlivˇ nuje je. Kaˇzd´ y m´ a uvaˇzovat o vˇsech variant´ ach, kter´e pˇrich´ azej´ı v u ´vahu. Proto je potˇreba vhodnˇe pˇridˇelovat zodpovˇednosti a podporovat pˇr´ımou spolupr´aci. 4. Rychl´ eaˇ cast´ e dod´ avky Tento princip vysvˇetluje souvislost mezi tˇremi c´ıli Lean development, uveden´ ymi na zaˇc´ atku kapitoly. Dod´ av´ an´ı produktu po v´ıce ˇc´astech umoˇzn´ı z´akazn´ıkovi delˇs´ı dobu specifikovat ˇ ım dˇr´ıve je iterace dokonˇcena, t´ım v´ıce zdroj˚ poˇzadavky a rozhodovat se. C´ u uˇsetˇr´ı na ˇcase,
KAPITOLA 3. AGILN´I METODIKY
28
kter´ y zabere. Tak´e m´ a uˇzivatel t´ım delˇs´ı dobu na pod´av´an´ı zpˇetn´e vazby. Proto se vyplat´ı zrychlovat iterace. Podle metodiky dev´ıti aˇz dvan´actimˇes´ıˇcn´ı projekt generuje asi 25% zmˇen. Jeho rozdˇelen´ı na nˇekolik mˇes´ıˇcn´ıch cykl˚ u se mnoˇzstv´ı odchylek od p˚ uvodn´ıho zad´an´ı sn´ıˇz´ı na jedno aˇz dvˇe procenta [ 9 str. 174 ]. 5. Pravomocn´ı pracovn´ıci K lidem nejde pˇristupovat pouze jako ke zdroj˚ um hotov´e pr´ace, ale lid´e potˇrebuj´ı motivaci a vˇedom´ı sv´e osobn´ı uˇziteˇcnosti. Nejd˚ uleˇzitˇejˇs´ı osoby v t´ ymu maj´ı b´ yt pr´avˇe ty, kter´e produkuj´ı hodnoty projektu [ 8 str. 4], ne manaˇzer. Jeho hlavn´ı role nen´ı ˇr´ıdit vˇsechno, ale poskytovat podporu a pomoc v obt´ıˇzn´ ych situac´ıch a nechat t´ ym uvaˇzovat pozitivnˇe. Urˇcit´ a hierarchie pravomoc´ı poˇzaduje vhodnˇe a peˇclivˇe vyb´ırat osobnosti do t´ ymu a zaˇskolovat je. 6. Integrita softwaru i v´ yvojov´ eho procesu Integrita se m´a udrˇzovat zamˇeˇren´ım se na vˇsechny sloˇzky produktu a bedliv´ ym soustˇredˇen´ım na v´ yvojov´ y proces. K tomu jsou vyuˇziteln´e metody jako svˇedomit´e testov´ an´ı, pokud moˇzno automatick´e, a refaktorizace. Tak´e je nutn´e rozumˇet dan´e dom´enˇe probl´emu, kter´ y je ˇreˇsen dan´ ym produktem. Avˇsak se j´ı v´ yvoj´ aˇri mus´ı zab´ yvat jako celkem, ne po ˇc´astech. 7. Vidˇ et celek Dneˇsn´ı velk´e syst´emy nejdou povaˇzovat jako prost´e souˇcty jeho ˇc´ast´ı, ale sp´ıˇse jako produkt ˇ ım vˇetˇs´ı je projekt, t´ım d˚ vztah˚ u mezi jeho subsyst´emy. C´ uleˇzitˇejˇs´ı je dokonale definovat vztahy mezi jeho u ´seky a mezi d´ılˇc´ımi t´ ymy. Toto plat´ı, obzvl´ aˇstˇe pokud na projektu pracuje v´ıce organizac´ı. Pokud se mˇeˇr´ı neefektivita nebo chybovost, nemaj´ı se hodnotit konkr´etn´ı moduly, ale celek.
3.4.5
Z´ avˇ er
Tato metodika zkvalitˇ nuje v´ yvojov´ y proces zaveden´ım deseti pravidel a sedmi princip˚ u. Ty jdou pomˇernˇe snadno zav´est, protoˇze nejsou na sobˇe pˇr´ıliˇs silnˇe z´avisl´e. Je tedy moˇzn´ y postupn´e pˇrej´ım´ an´ı a zvyk´ an´ı si na nˇe. Charakteristika Lean development jen volnˇe odpov´ıd´a pˇrekladu slova lean - ˇst´ıhl´ y, zeslaben´ y. Ten se t´ yk´ a zmenˇsen´ı n´ aklad˚ u na v´ yvoj odstranˇen´ım vˇsech nadbyteˇcn´ ych krok˚ u.
3.5. SCRUM DEVELOPMENT
3.5
29
Scrum development
Scrum je dalˇs´ı metodika vznikl´ a s c´ılem zv´ yˇsit efektivitu v´ yvoje softwaru. D˚ uraz na iterativn´ı a inkrement´ aln´ı pˇr´ıstup je tedy u n´ı samozˇrejmost´ı. N´azev Scrum podle chumlu lid´ı v ragby kumulovan´ ych na jednom m´ıstˇe za u ´ˇcelem dotlaˇcen´ı m´ıˇce na poˇzadovan´e m´ısto. Toto metodika bere jako metaforu pro v´ yvojov´ y proces, bˇehem nˇejˇz jsou pracovn´ıci shrom´ aˇzdˇen´ı na jednom m´ıstˇe s posl´ an´ım spoleˇcnˇe dos´ ahnout c´ıle - uspokojit z´akazn´ıka. Metodika zaˇcala vznikat v roce 1995 a jej´ı myˇslenky pˇredstavili Ken Schwaber a Mike Beedle.
3.5.1
Z´ akladn´ı charakteristika
Scrum vyuˇz´ıv´ a objektovˇe orientovan´ y pˇr´ıstup, kter´ y je dobˇre rozˇs´ıˇren´ y a existuje pro nˇej mnoho informac´ı. Kaˇzd´ y v´ yvoj´ aˇr odpov´ıd´ a za mnoˇzinu objekt˚ u s chov´ an´ım a rozhran´ım jasnˇe definovan´ ym, coˇz usnadˇ nuje rozdˇelen´ı pr´ ace. Nev´ yhoda je, ˇze kaˇzd´ y ˇclen t´ ymu je nezastupiteln´ y. Na druhou stranu se program´ator star´a o odpov´ıdaj´ıc´ı tˇr´ıdy jako o sv´e vlastn´ı, coˇz motivuje k vˇetˇs´ı snaze o kvalitu. Pr˚ ubˇeh v´ yvoje je ˇclenˇen do nˇekolika urˇcit´ ych ˇcasov´ ych interval˚ u - sprint˚ u (Sprints). Kaˇzd´ y z nich m´ a konkr´etn´ı v´ ystup (Demo). Na poˇca´tku projektu nen´ı zn´ am´e, co vˇsechno bude nutn´e prov´adˇet. Nejde tedy pˇredem urˇcit nejvhodnˇejˇs´ı posloupnost ˇcinnost´ı jako anal´ yza, n´avrh nebo v´ yvoj. Proto nem´ a smysl pl´anovat pˇresn´ y pr˚ ubˇeh sprint˚ u. Centr´aln´ı pl´ anov´an´ı podrobn´ ych krok˚ u nahrazuj´ı pravideln´e kaˇzdodenn´ı sch˚ uzky - Scrum meetings. T´ım je v´ yvoj flexibilnˇejˇs´ı, pruˇznˇejˇs´ı a t´ ym se m˚ uˇze l´epe pˇrizp˚ usobovat zmˇen´am. Na sch˚ uzk´ ach se podle aktu´aln´ı situace urˇc´ı pˇresn´ y postup pro nejbliˇzˇs´ı dobu.
3.5.2 3.5.2.1
Kl´ıˇ cov´ e pojmy Flexibilita a spolupr´ ace
Flexibiln´ı pˇredmˇety dod´ an´ı - V r˚ uzn´ ych pˇr´ıpadech jsou nejvhodnˇejˇs´ı r˚ uzn´e formy v´ ystup˚ u z jednotliv´ ych ˇcinnost´ı. Forma a obsah dokument˚ u a jin´ ych dod´ avek se urˇcuje v pr˚ ubˇehu projektu. Napˇr´ıklad specifikace poˇzadavk˚ u m˚ uˇze b´ yt v dan´em pˇr´ıpadˇe nejvhodnˇejˇs´ı, kdyˇz jej´ı forma je dan´ a normou IEEE, jindy je lepˇs´ı prototyp nebo objektov´ y model. Flexibiln´ı harmonogram - term´ıny dod´ an´ı se mohou mˇenit. Je nutn´e o tom ˇsikovnˇe pˇresvˇedˇcit i z´akazn´ıka, aby neurˇcitost term´ın˚ u nepovaˇzoval za projev neprofesionality. Spolupr´ ace - Je d˚ uleˇzit´e, aby ˇclenov´e t´ ymu spolupracovali vz´ajemnˇe i se sv´ ym okol´ım, pˇredevˇs´ım se z´akazn´ıky. Mal´e t´ ymy - T´ ym nem´ıv´ a v´ıc neˇz deset ˇclen˚ u. Na jednom projektu m˚ uˇze pracovat nˇekolik t´ ym˚ u.
KAPITOLA 3. AGILN´I METODIKY
30
Obr´ azek 3.5: Graf
zb´ yvaj´ıc´ı
pr´ ace;
zdroj
-
http://www.businessvize.cz/rizeni-a-optimalizace/agilniprojektove-rizeni
ˇ e revize - Bˇehem denn´ıch sch˚ Cast´ uzek se podrobnˇe zkoum´ a syst´em a dosavadn´ı postup. Jinak zmˇeny a pokrok se zkoum´ a neust´ ale.
3.5.2.2
Backlog
Obsahuje z´ akladn´ı informace o funkc´ıch a vlastnostech, kter´e jeˇstˇe je potˇreba implementovat, a tak´e zmˇeny, kter´e se maj´ı prov´est. Jeho forma je libovoln´a, m˚ uˇze j´ıt napˇr´ıklad o uˇzivatelsk´e pˇr´ıbˇehy, tabulku nebo to-do list. Avˇsak nejl´epe se osvˇedˇcuj´ı uˇzivatelsk´e pˇr´ıbˇehy [ 10 ]. Backlog m˚ uˇze kdokoliv ˇc´ıst, ale zapisovat do nˇej a upravovat zad´an´ı pouze vlastn´ık produktu. Ten ho z´aroveˇ n udrˇzuje co nejl´epe seˇrazen´ y. Pˇriˇrazuje prioritu jednotliv´ ym poloˇzk´am. Ty hodnot´ı nejprve z obchodn´ıho hlediska a v pˇr´ıpadˇe shody d˚ uleˇzitost´ı je rozhoduj´ıc´ım faktorem u ´sil´ı, kter´e je nutn´e vynaloˇzit pro implementaci. Vyˇsˇs´ı prioritu dostane u ´kol jednoduˇsˇs´ı na realizaci. Rozliˇsuje se • Syst´emov´ y backlog - Ten obsahuje hrub´ y popis u ´kol˚ u t´ ykaj´ıc´ıch se cel´eho projektu. Odhady doby plnˇen´ı u ´kol˚ u se pohybuj´ı ve dnech (1 - 20). Patˇr´ı vlastn´ıkovi produktu. • Sprint backlog - obsahuje podrobnˇejˇs´ı popis u ´kol˚ u urˇcuj´ıc´ıch pr´ aci pro cel´ y sprint. Doby pr´ace na u ´kolech se odhaduj´ı v hodin´ach (1 - 16). Patˇr´ı t´ ymu. Kaˇzd´ y ˇclen pr˚ ubˇeˇznˇe upravuje poˇcet hodin, kter´e jeˇstˇe potˇrebuje k dokonˇcen´ı jeho u ´kolu. Jednotliv´e poloˇzky nab´ yvaj´ı stavy ”V pl´anu”, ”Zpracov´ av´ a se”nebo ”Dokonˇceno”.
3.5.2.3
Graf zb´ yvaj´ıc´ı pr´ ace
(Burn down chart obr. 3.5) Jde o prostˇredek, kter´ y slouˇz´ı k odhadu ˇcasu potˇrebn´eho k dokonˇcen´ı projektu. Pomoc´ı grafu jde odhadnout poˇcet sprint˚ u, kter´e projekt zabere. Burn down
3.5. SCRUM DEVELOPMENT
31
zobrazuje odhad mnoˇzstv´ı zb´ yvaj´ıc´ı pr´ace na zaˇc´atku kaˇzd´eho sprintu. Toto mnoˇzstv´ı se ukazuje v urˇcit´ ych jednotk´ ach (hodiny, body. . . ). Z´aroveˇ n se zobrazuje, kolik pr´ ace pˇribylo kv˚ uli zmˇen´am. Kladn´e hodnoty grafu zobrazuj´ı poˇcet jednotek pr´ace urˇcen´e pˇred zah´ajen´ım projektu. Absolutn´ı hodnoty vyˇc´ıslen´ı, kter´a jsou zobrazena jako z´ aporn´a, ukazuj´ı, kolik pr´ ace pˇribylo v pr˚ ubˇehu v´ yvoje. Jednou z nˇekolika grafick´ ych metod se urˇc´ı, bˇehem kolika dalˇs´ıch sprint˚ u je t´ ym schopn´ y dokonˇcit projekt. Obr´ azek ukazuje jeden z moˇzn´ ych zp˚ usob˚ u, jak odhadnout zb´ yvaj´ıc´ı potˇrebn´ y ˇcas [ 10 ]. Graf slouˇz´ı jako pom˚ ucka, kter´ a umoˇzn ˇuje sledovat rychlost postupu. Je d˚ uleˇzit´e vˇedˇet, jestli se napˇr´ıklad sn´ıˇz´ı rychlost v´ yvoje kv˚ uli poklesu produktivity t´ ymu, nebo kv˚ uli mnoˇzstv´ı nov´ ych ´kol˚ u u. 3.5.2.4
Riziko
Scrum d´ av´ a velk´ y d˚ uraz na anal´ yzu rizik. Ta prob´ıh´a na konci kaˇzd´e iterace a bˇehem denn´ıch sch˚ uzek. 3.5.2.5
Sprint
Jde o z´akladn´ı v´ yvojovou etapu, jej´ıˇz v´ ysledek je nov´e viditeln´e rozˇs´ıˇren´ı produktu. D´elka t´eto iterace se uv´ ad´ı nejˇcastˇeji jako tˇricet dn´ı, avˇsak ˇcasto se osvˇedˇcuje tak´e poloviˇcn´ı doba [ 10]. Sprint zahrnuje kromˇe pr´ ace pˇr´ımo na produktu tak´e ˇr´ıdic´ı ˇcinnost, kter´ a br´ an´ı zmatk˚ um, ale nepotlaˇcuje pruˇznost v´ yvoje. 3.5.2.6
Pigs a chickens
Jde o rozdˇelen´ı t´ ymov´ ych rol´ı do dvou skupin. V´ yvoj (Development) prov´ ad´ı veˇskerou pr´aci t´ ykaj´ıc´ı se v´ yvojov´eho procesu a ˇr´ık´a se jim pigs. Veden´ı (Management) nejsou pˇr´ımo souˇc´ast´ı v´ yvojov´eho procesu, ale poˇc´ıtaj´ı se do projektu jako zadavatel´e pr´ace. Tˇem se pˇrezd´ıv´a chickens. N´azvy podle tˇechto zv´ıˇrat vych´ azej´ı ze zn´am´eho americk´eho ˇzertu, ve kter´em m´ a b´ yt kuˇre jen nepˇr´ımo zapleteno a vepˇr pˇr´ımo zapojen, odevzd´ an do urˇcit´eho projektu [5]. 3.5.2.7
Denn´ı sch˚ uzka
(Scrum meeting) Pravideln´ a kaˇzdodenn´ı sch˚ uzka cel´eho t´ ymu trvaj´ıc´ı patn´act, maxim´ alnˇe tˇricet minut. Jej´ım u ´ˇcelem je podpoˇrit komunikaci v t´ ymu mezi vˇsemi u ´ˇcastn´ıky. Sejdou jak ˇclenov´e v´ yvoje, tak veden´ı. Nepˇrehl´ednuteln´ yu ´ˇcinek setk´ an´ı je tak´e zˇreteln´e scelov´an´ı t´ ymu. Hovoˇrit sm´ı jen pigs. Chickens nem˚ uˇzou dˇelat nic jin´eho neˇz pozorovat a uˇcit se. Chickens, kteˇr´ı jak´ ymkoliv zp˚ usobem d´ avaj´ı najevo sv´e n´ azory, maj´ı sch˚ uzku radˇeji opustit. N´ apln´ı sch˚ uzky je pˇrehled vykonan´e pr´ ace, pl´an pˇr´ıˇst´ıho dne, projedn´an´ı vˇsech aktu´aln´ıch, d˚ uleˇzit´ ych rizik, zmˇen a dalˇs´ıch t´emat. Je vedena t´ ymem. Kaˇzd´ y jeho ˇclen vysvˇetluje [ 13]:
KAPITOLA 3. AGILN´I METODIKY
32 • Co udˇelal od posledn´ı sch˚ uzky. • Na ˇcem bude pracovat do pˇr´ıˇst´ı sch˚ uzky. • Jestli nˇeco br´an´ı jeho postupu. • Jestli detekoval nˇejak´ a nov´ a rizika.
• Nˇejak´e nov´e moˇznosti ke zlepˇsen´ı nebo zefektivnˇen´ı pr´ace.
3.5.3
Pr˚ ubˇ eh v´ yvoje
Nejde o ˇz´adnou posloupnost detailnˇe popsan´ ych postup˚ u. Pr˚ ubˇeh v´ yvoje je neline´arn´ı a empirick´ y. Urˇcuje se a upravuje na t´ ymov´ ych sch˚ uzk´ ach. Skl´ad´a se z n´asleduj´ıc´ıch ˇc´ast´ı. F´aze pˇredehry: 1. Pl´anov´ an´ı - Mapuj´ı se poloˇzky z backlogu na objekty. Urˇc´ı se rozsah aktu´ aln´ı verze, harmonogram, zdroje. Vol´ı se v´ yvojov´e n´astroje a prob´ıh´a anal´ yza rizik. 2. Architektura a design - Vytvoˇr´ı se nebo uprav´ı architektura podle nov´ ych poˇzadavk˚ ua rizik. F´aze hry: 3. V´ yvoj - Cyklus sprint˚ u. D´elka cyklu se urˇc´ı podle komplexnosti produktu, velikosti t´ ymu, mnoˇzstv´ı rizik. F´aze dohry 4. 4. Uzavˇren´ı - Doch´ az´ı ke komplexn´ı integraci, testov´an´ı a tvorbˇe dokumentace. Jakmile na konci posledn´ıho sprintu schv´ al´ı veden´ı nebo z´akazn´ık, ˇze aktu´aln´ı verze m´a dostaˇcuj´ıc´ı parametry, n´ asleduje tato f´ aze. 3.5.3.1
Pr˚ ubˇ eh jednoho sprintu
Sprint zaˇc´ın´a sch˚ uzkou t´ ymu, vlastn´ıka produktu a dalˇs´ıch, kdo maj´ı b´ yt u pl´anov´an´ı sprintu. Nem´ a pˇres´ahnout osm hodin a je rozdˇelena do dvou stejnˇe dlouh´ ych ˇc´ast´ı [ 14 ]. V prvn´ı z nich vˇsichni vyberou skupinu poˇzadavk˚ u ze syst´emov´eho backlogu, na kterou se chtˇej´ı zamˇeˇrit. Tyto poloˇzky nejsou pˇr´ıliˇs obs´ahle pops´ any a doba implementace nen´ı pˇresn´a. Vlastn´ık produktu smluv´ı s t´ ymem, kolik pr´ ace se d´a prov´est bˇehem nadch´ azej´ıc´ıho sprintu. Stanov´ı a odsouhlas´ı c´ıl sprintu. Ve druh´e p˚ uli sch˚ uzky se provede expanze poloˇzek vybran´ ych ze syst´emov´eho backlogu. Podrobnˇe se zmapuj´ı poˇzadavky a vloˇz´ı se do sprint backlogu. Stanov´ı se postup a pl´ an v´ yvoje.
3.5. SCRUM DEVELOPMENT
33
Po t´eto u ´vodn´ı sch˚ uzce n´asleduj´ı f´aze v´ yvoj (develop), zabalen´ı (wrap), revize (review) a pˇrizp˚ usoben´ı (adjust). Funkcionality se po implementaci zabal´ı do jednoho celku a provede se jejich revize. To je sch˚ uzka, na kter´e se pˇredvede funkˇcn´ı prototyp cel´emu t´ ymu a vlastn´ıkovi produktu. T´ ym t´ım z´ısk´ a zpˇetnou vazbu na nov´e funkcionality. Zkoumaj´ı se nedokonˇcen´e u ´koly. Sch˚ uzka je ˇcasovˇe omezen´a na ˇctyˇri hodiny. Potom se provedou potˇrebn´ a pˇrizp˚ usoben´ı a pˇred´ an´ım prototypu. Nakonec se uplynul´ y sprint zhodnot´ı na z´avˇereˇcn´em zased´ an´ı. Sejde se cel´ y t´ ym vˇcetnˇe veden´ı a vlastn´ıka produktu. Kaˇzd´ y m´ a dostat pˇr´ıleˇzitost sdˇelit, co se zdaˇrilo, a navrhnout moˇznosti, jak pˇr´ıˇst´ı sprint vylepˇsit. Posledn´ım bodem setk´ an´ı je hled´ an´ı nov´ ych poloˇzek backlogu a odhad obsahu n´ asleduj´ıc´ıho sprintu. Vˇse by se mˇelo stihnout do tˇr´ı hodin. 3.5.3.2
Pˇ redˇ casn´ e ukonˇ cen´ı sprintu
Za urˇcit´ ych okolnost´ı se m˚ uˇze st´at, ˇze sprint je nutn´e ukonˇcit pˇredˇcasnˇe. Pˇreruˇsen´ı vyˇzaduj´ı tyto situace: • Je jist´e, ˇze nejde dos´ ahnout c´ıle sprintu. • Z´ asadn´ı a nal´ehav´e vnˇejˇs´ı zmˇeny, kter´e zp˚ usob´ı neplatnost c´ıle sprintu nebo v´ yznamn´e funkcionality. • Selh´ an´ı implementace Scrum kv˚ uli nemoˇznosti pˇresvˇedˇcit vlastn´ıka produktu, aby z´ıskal odpovˇedi na ot´ azky t´ ymu. • Selh´ an´ı implementace Scrum kv˚ uli z´asadn´ımu sporu uvnitˇr t´ ymu. Po pˇredˇcasn´em ukonˇcen´ı sprintu n´asleduje pl´anov´an´ı dalˇs´ıho sprintu, pˇri kter´em se tak´e projedn´ a d˚ uvod ukonˇcen´ı pˇredeˇsl´eho sprintu.
3.5.4
T´ ymov´ e role
Projekt ˇr´ızen´ y podle Scrum vyˇzaduje obsazen´ı tˇechto rol´ı: • V´ yvoj (pigs) – Manaˇzer t´ ymu (Scrum master) se star´a o spr´avn´ y postup vedouc´ı k urˇcen´emu c´ıli sprintu. H´aj´ı z´ajmy t´ ymu a pom´ ah´a mu dosahovat co nejlepˇs´ıch v´ ysledk˚ u. Kontroluje pokroky a odchylky od zad´ an´ı. Jeho zodpovˇednost je mluvit za t´ ym s okol´ım. Jelikoˇz se t´ ym s´ am um´ı podle Scrum nejl´ıp organizovat, nemˇel by toto dˇelat manaˇzer t´ ymu. – T´ ym - Hlavn´ım u ´kolem je vyvinout produkt podle zad´an´ı. Skl´ ad´a se ze tˇr´ı aˇz deseti pracovn´ık˚ u nevyhranˇen´ ych ve schopnostech jen na jednu ˇcinnost. Podle moment´aln´ı potˇreby berou na sebe role program´ ator˚ u, tester˚ u, dokument´ ator˚ u a osob
KAPITOLA 3. AGILN´I METODIKY
34
zodpovˇedn´ ych za ˇr´ızen´ı kvality. Kaˇzd´ y by mˇel dˇelat cokoliv, co t´ ymu pom˚ uˇze k dosaˇzen´ı c´ıle sprintu. T´ ym um´ı s´am rozhodovat, jak´e konkr´etn´ı kroky m´ a kdo prov´adˇet pˇri ˇreˇsen´ı probl´emu. – Vlastn´ık produktu (product owner) - Reprezentuje z´ akazn´ıka, jehoˇz neust´ alou pˇr´ıtomnost na pracoviˇsti Scrum nepˇredepisuje. M´ a na starosti backlog. Kontroluje, jestli t´ ym pracuje spr´avnˇe z obchodn´ıho hlediska a pod´av´a zpˇetnou vazbu na hotov´e ˇc´asti produktu. M˚ uˇze b´ yt ˇclenem, ale ne manaˇzerem t´ ymu. Nˇekdy se ˇrad´ı mezi veden´ı. • Veden´ı (chickens) – Investoˇri (z´ akazn´ıci, obchodn´ıci) - Spouˇst´ı projekt. Pˇr´ımo jsou do nˇej zapojeni pouze bˇehem revize sprintu. – Manaˇzer projektu (project manager) - Definuje obsah a harmonogram dod´ avek verz´ı. Vytv´aˇr´ı prostˇred´ı pro organizaci vyv´ıjej´ıc´ı produkt. ˇ Clenov´ e spoleˇcnosti organizovan´e podle Scrum mus´ı b´ yt • Flexibiln´ı - umˇet pruˇznˇe reagovat na zmˇeny pˇri v´ yvoji • Zodpovˇedn´ı - schopn´ı vysvˇetlit pˇr´ıˇciny zmˇen a odpov´ıdat za pˇr´ıpadn´e probl´emy • Spolehliv´ı - aby mohli odpov´ıdat za mˇen´ıc´ı se syst´em
3.5.5
Spolupr´ ace v´ıce t´ ym˚ u
Pokud je t´ ym na rozsah projektu pˇr´ıliˇs mal´ y, nen´ı vhodn´e ho rozˇsiˇrovat, lepˇs´ı je vytvoˇrit dalˇs´ı. Existuj´ı dvˇe metody, jak vhodnˇe projekt rozdˇelit na v´ıce ˇc´ast´ı. Jedna z nich je funkcion´ aln´ı dˇelen´ı, kdy se vytvoˇr´ı shluky funkc´ı. Druh´ a moˇznost je syst´emov´e dˇelen´ı, coˇz je rozˇclen´ı projektu po vrstv´ach. Podobnˇe jako t´ ym lid´ı jde koordinovat podle Scrum tak´e klastr t´ ym˚ u. Kaˇzd´ y t´ ym potom deleguje jednoho z´ astupce na denn´ı sch˚ uzky mezit´ ymov´eho Scrum. Denn´ı sch˚ uzky klastr˚ u t´ ym˚ u prob´ıhaj´ı po sch˚ uzk´ ach t´ ym˚ u. Bˇehem nich se jedn´a hlavnˇe o integraci a pˇresahem zad´ an´ı jednotliv´ ych t´ ym˚ u. Ot´azky manaˇzera klastru jsou rozˇs´ıˇreny o tyto [ 11 ]: • Co dˇelal tv˚ uj t´ ym od posledn´ıho naˇseho setk´ an´ı? • Na ˇcem bude tv˚ uj t´ ym pracovat do pˇr´ıˇst´ıho setk´ an´ı? • Je zde nˇeco, co zpomaluje tv˚ uj t´ ym? • Chyst´ aˇs se zas´ ahnout do ˇcinnosti jin´eho t´ ymu? Je tak´e moˇzn´e vytvoˇrit klastr klastr˚ u rovnˇeˇz ˇr´ızen´ y podle Scrum a t´ımto zp˚ usobem v´est projekt, na kter´em pracuje aˇz pˇet set lid´ı [ 11 ].
3.6. FEATURE DRIVEN DEVELOPMENT
3.5.6
35
Z´ avˇ er
Mezi hlavn´ı pˇrednosti Scrum patˇr´ı flexibilita t´ ymu jako celku. Ten dok´aˇze reagovat na zmˇeny vznikaj´ıc´ı bˇehem pr´ace na projektu. V libovolnou chv´ıli je tedy moˇzn´e pˇrej´ıt na efektivnˇejˇs´ı cestu k c´ıli. D´ıky denn´ım sch˚ uzk´ am je v´ yvojov´ y t´ ym velmi dobˇre soudrˇzn´ y a reaguje na potˇreby sv´ ych ˇclen˚ u. Je mal´ y a dobˇre se v nˇem komunikuje. Kaˇzd´ y m´a moˇznost se poradit s ostatn´ımi, pokud m´a pot´ıˇze. Pr´ ace podle t´eto metodiky je pˇr´ıjemn´ a, protoˇze ˇclenov´e t´ ymu si sami vol´ı, jakou budou dˇelat pr´ aci a kolik na ni potˇrebuj´ı ˇcasu. Mohou navrhovat optim´ aln´ı ˇreˇsen´ı podle sebe. Zp˚ usob odhadu pracnosti m´ a vysokou u ´roveˇ n. Manaˇzer t´ ymu tedy dobˇre vid´ı, jak t´ ym postupuje k vytyˇcen´emu c´ıli a je vˇcas informov´ an, pokud se oˇcek´avaj´ı nˇejak´e obt´ıˇze.
3.6
Feature driven development
Metodika povaˇzuje za z´ akladn´ı pil´ıˇre projektu vlastnosti a lidi. Projekt jde rozdˇelit na jednotliv´e vlastnosti a vyv´ıjet zvl´aˇst’ kaˇzdou z nich. Kvalita aplikace m´ a b´ yt zaruˇcena co nejlepˇs´ı implementac´ı jednotliv´ ych ˇc´ ast´ı. D´ ale povaˇzuje za kl´ıˇcov´e tr´avit pracovn´ı dobu co nejpˇr´ıjemnˇeji. Snaha autor˚ u metodiky je podat n´ avod, jak pracovat efektivnˇe, produktivnˇe a bez zbyteˇcn´ ych rozvrat˚ u ˇci jin´ ych pˇrek´ aˇzek u ´ˇcinn´emu pokroku.
3.6.1
Z´ akladn´ı charakteristika
FDD m´ a pˇrehledn´ y ˇzivotn´ı cyklus. Soustˇred’uje se na f´ aze n´ avrh a implementace. V´ yvoj je rozˇclenˇen do kr´atk´ ych iterac´ı - kaˇzd´a trv´a jeden aˇz tˇri t´ ydny. V pr˚ ubˇehu jedn´e z nich je vytvoˇrena urˇcit´ a skupina vlastnost´ı. S dokonˇcen´ım iterace se z´ akazn´ıkovi pˇred´ av´a nov´a betaverze. Vych´ az´ı se z objektov´ ych model˚ u: Glob´ aln´ı model je znaˇcnˇe abstraktn´ı a je obecnˇejˇs´ı strukturou neˇz podrobn´ y popis architektury syst´emu. D´ale se pro kaˇzdou iteraci vytv´ aˇr´ı jeden nebo v´ıce objektov´ ych model˚ u, kter´e obsahuj´ı vˇsechny d˚ uleˇzit´e detaily.
3.6.2 3.6.2.1
Kl´ıˇ cov´ e pojmy Vlastnost
Jak je jiˇz uvedeno v u ´vodu, je vlastnost z´akladn´ım stavebn´ım kamenem. Jde o mal´ y v´ ysledek uˇziteˇcn´ y z pohledu z´ akazn´ıka, o konkr´etn´ı funkcionalitu, kter´a m´a vˇsechny tyto tˇri pˇr´ıznaky: • Mˇeˇritelnost - Mus´ı j´ıt rozhodnout, jestli je implementovan´ a vlastnost shodn´a s poˇzadovanou. • Srozumitelnost - Je zˇrejm´e, ˇceho se vlastnost t´ yk´ a a co bude jej´ım v´ ysledkem.
KAPITOLA 3. AGILN´I METODIKY
36
Obr´ azek 3.6: Sch´ema v´ yvoje softwaru podle FDD; pˇrekresleno podle 9
• Realizovatelnost - Doba implementace nepˇres´ahne d´elku jedn´e iterace, jinak se vlastnost m´a rozˇclenit na menˇs´ı. Aby vlastnosti mohly l´epe odpov´ıdat charakteristik´am, je pro jejich n´ azev pˇredeps´an konkr´etn´ı form´at: akce - pˇredmˇet - podrobnosti. Akce vyjadˇruje ˇcinnost, kterou vlastnost realizuje. Rad´ı, ˇ ık´ jak´ a se m´ a napsat metoda. Pˇredmˇet popisuje artefakt, se kter´ ym se akce prov´ ad´ı. R´ a, jak´e tˇr´ıdy se vlastnost t´ yk´ a. Podrobnosti upˇresˇ nuj´ı vlastnost. Na rozd´ıl od pˇr´ıpad˚ u uˇzit´ı jde pˇri ˇclenˇen´ı projektu dos´ ahnout vyrovnan´ ych vlastnost´ı z hlediska n´ aroˇcnosti na implementaci. 3.6.2.2
Pˇ r´ıstup ˇ r´ızen´ y modelem
Metodika proti agiln´ımu manifestu upˇrednostˇ nuje n´avrh pomoc´ı modelu pˇred funkˇcn´ım k´odem. Vlastnost je mnohem menˇs´ı z´ akladn´ı element neˇz iterace v pˇr´ıpadˇe jin´ ych agiln´ıch metodik. Proto se n´ avrh ned´ a obej´ıt, aby mohl vzniknout funkˇcn´ı celek. Cel´ y syst´em m´ a glob´aln´ı model a kaˇzd´a iterace m´ a podrobnˇejˇs´ı model.
3.6.3
Pr˚ ubˇ eh v´ yvoje
FDD definuje pˇet proces˚ u obr. 3.6 1. Vytvoˇren´ı glob´ aln´ıho modelu 2. Vypracov´an´ı podrobn´eho seznamu vlastnost´ı 3. Pl´anov´ an´ı podle vlastnost´ı 4. N´avrh podle vlastnost´ı 5. Implementace podle vlastnost´ı
3.6. FEATURE DRIVEN DEVELOPMENT
37
Kaˇzd´ y proces prob´ıh´ a podle ˇsablony ETVX (Entry, Task, Verification, eXit) [ 16 ], kterou zaˇradil do metodiky Jeff De Luca. Podle n´ı m´a m´ıt proces specifikov´ any (kromˇe obecn´eho popisu) n´ asleduj´ıc´ı parametry: • Vstupn´ı krit´eria ´ • Ukoly, kter´e se maj´ı splnit (vˇcetnˇe identifikace ˇreˇsitel˚ u a odpovˇedn´ ych manaˇzer˚ u) • N´ astroje a metody verifikace (uk´ aˇzou, jestli uˇz je proces dokonˇcen´ y) • V´ ystupn´ı krit´eria procesu (fyzick´e v´ ystupy, dokumenty a prototypy) Nejprve probˇehnou vˇsechny procesy v uveden´em poˇrad´ı. Pot´e se stˇr´ıdaj´ı f´aze 4 a 5 a t´ım prob´ıhaj´ı jednotliv´e iterace. Kdykoliv se zjist´ı, ˇze je nutn´e pˇrizp˚ usobit a modifikovat objektov´ y model a dalˇs´ı dokumenty, je moˇzn´e se po skonˇcen´ı iterace vr´ atit k u ´vodn´ım f´az´ım. Ty zab´ıraj´ı v cel´em procesu asi pˇetinu celkov´eho ˇcasu, ve zb´ yvaj´ıc´ı dobˇe se prov´ad´ı implementace. 1. Vytvoˇ ren´ı glob´ aln´ıho modelu Vstupn´ımi krit´erii jsou urˇcen´ı funkc´ı hlavn´ıho program´ atora a hlavn´ıho architekta. Dalˇs´ım vstupn´ım poˇzadavkem je tak´e existence tzv. dom´enov´ ych expert˚ u. To jsou lid´e, kteˇr´ı dobˇre znaj´ı prostˇred´ı, ve kter´em m´ a b´ yt syst´em nasazen. Z´ aroveˇ n d˚ ukladnˇe znaj´ı obor, ˇ kter´eho se aplikace t´ yk´ a. Casto jde o z´ akazn´ıky. Vˇsechny tyto osoby sestav´ı t´ ym pro vytvoˇren´ı glob´aln´ıho modelu. Nechaj´ı t´ ym vytvoˇrit model, vylad´ı ho a nap´ıˇsou k nˇemu pozn´amky. Vznikl´ y model demonstruje z´ akladn´ı u ´ˇcel syst´emu a je smˇerodatn´ y pro vˇsechny z´ uˇcastnˇen´e. Je tedy abstraktn´ı a je odst´ınˇen od podruˇzn´ ych podrobnost´ı [1]. B´ yv´ a objektov´ y a formovan´ y v jazyce UML. V t´eto f´ azi je tedy d˚ uleˇzit´e nepˇredb´ıhat do dalˇs´ıch krok˚ u, vyvarovat se u ´vah´ am nad detaily a t´ım se uˇz od zaˇc´atku ubr´anit nekonzistenc´ım. 2. Vypracov´ an´ı podrobn´ eho seznamu vlastnost´ı V dalˇs´ı f´ azi hlavn´ı program´ ator, hlavn´ı architekt a dom´enov´ı experti sestav´ı t´ ym pro vytvoˇren´ı seznamu vlastnost´ı. V´ ystupn´ımi krit´erii jsou hotov´ y seznam hlavn´ıch oblast´ı dom´eny, seznam obchodn´ıch proces˚ u ke kaˇzd´e z tˇechto oblast´ı a seznam vlastnost´ı. Kaˇzd´emu kroku kaˇzd´eho obchodn´ıho procesu odpov´ıd´a jedna vlastnost. Jako pˇr´ıklad obchodn´ıho procesu vezmˇeme pˇrihl´ aˇsen´ı uˇzivatele do syst´emu pomoc´ı uˇzivatelsk´eho jm´ena a hesla. Tento proces m´ a vyvolat nˇekolik krok˚ u. Tˇem pak odpov´ıdaj´ı jednotliv´e vlastnosti a patˇr´ı mezi nˇe pˇredevˇs´ım kontrola existence uˇzivatelsk´eho jm´ena, ovˇeˇren´ı spr´avnosti hesla a pˇridˇelen´ı sady pˇr´ıstupov´ ych pr´ av, urˇcen´e pro dan´e uˇzivatelsk´e jm´eno. Seznam vlastnost´ı mus´ı b´ yt seˇrazen podle priorit a m´a pokr´ yvat co nejv´ıc poˇzadavk˚ u na syst´em. V t´ehle f´ azi vˇsak jeˇstˇe nen´ı definitivn´ı.
KAPITOLA 3. AGILN´I METODIKY
38 3. Pl´ anov´ an´ı podle vlastnost´ı
Nejprve se stanov´ı datum ukonˇcen´ı v´ yvoje produktu. To m´a b´ yt definitivn´ı a jemu se maj´ı pˇrizp˚ usobit vˇsechny ostatn´ı mezn´ıky, aby se nezvyˇsovaly n´ aklady produktu. N´ aslednˇe se pˇridˇel´ı vedouc´ı program´ atoˇri obchodn´ım proces˚ um a vlastn´ıci skupin´am vlastnost´ı a tˇr´ıd. Tito lid´e odpov´ıdaj´ı za dokonˇcen´ı jejich pr´ace do urˇcit´eho data. Na z´akladˇe priorit a vz´ajemn´ ych z´ avislost´ı mezi vlastnostmi se rozhodne o poˇrad´ı, ve kter´em se budou implementovat. Nejde vˇsak o striktn´ı a nemˇennou posloupnost. 4. N´ avrh podle vlastnost´ı Hlavn´ı program´ ator vybere pro n´asleduj´ıc´ı iteraci mnoˇzinu vlastnost´ı podle pl´anu z pˇredchoz´ı f´aze a tak´e db´ a na to, aby mnoˇzina co nejl´epe sd´ılela stejn´e tˇr´ıdy. Potom zah´ aj´ı proces zvan´ y ”Design by feature”, kter´ y spoˇc´ıv´a zejm´ena v podrobn´em zkoum´an´ı dom´eny a relevantn´ıch dokument˚ u. Pot´e se vylad´ı objektov´ y model a nap´ıˇsou se hlaviˇcky tˇr´ıd a metod. Podrobnosti jsou v [ 18 str. 7 ]. Je d˚ uleˇzit´e rozliˇsovat v´ ysledky pr´ ace, kter´e se t´ ykaj´ı n´avrhu a kter´e implementace [ 17 ]. Spojov´an´ı tvorby oboj´ıho do jedn´e ˇcinnosti by sn´ıˇzilo efektivitu napˇr´ıklad proto, ˇze se pˇri n´ avrhu pracuje se znalostmi dom´enov´ ych expert˚ u, zat´ımco pˇri implementaci se vych´az´ı hlavnˇe z n´ avrhu. 5. Implementace podle vlastnost´ı Tento proces m´ a n´azev ”Build by feature”. Vlastnost se implementuje pˇrid´an´ım k´odu do nˇekolika tˇr´ıd. Je jasn´e, ˇze funkcionality jedn´e tˇr´ıdy se mohou t´ ykat mnoha vlastnost´ı. Kaˇzd´a tˇr´ıda m´ a sv´eho vlastn´ıka; ti vytvoˇr´ı t´ ym pro danou vlastnost. Podle aktu´aln´ıho stavu hlavn´ı program´ ator shromaˇzd’uje do r˚ uzn´ ych skupin program´atory, kteˇr´ı jsou mu podˇr´ızen´ı. Mus´ı stanovit, kteˇr´ı lid´e danou vlastnost vytv´aˇrej´ı. Typicky se t´ ymy vz´ajemnˇe prol´ınaj´ı, v pr˚ ubˇehu jedn´e iterace vznikaj´ı a zanikaj´ı. Proto hlavn´ı program´ ator mus´ı udrˇzet o situaci pˇrehled. Verifikace procesu se prov´ad´ı pr˚ ubˇeˇznou inspekc´ı a jednotkov´ ymi testy. ˇ Cinnost program´ ator˚ u spoˇc´ıv´ a ve psan´ı jednotkov´ ych test˚ u, implementaci a testov´an´ı tˇr´ıd. Hotov´e tˇr´ıdy ukl´ adaj´ı do tzv. Class repositury a hlavn´ı program´ ator je schvaluje. Pot´e je integruje do hlavn´ı aplikace. Pro zajiˇstˇen´ı kvality k´odu FDD pˇredepisuje z´aroveˇ n defenzivn´ı programov´an´ı a jednotkov´e testy. Srovn´an´ı tˇechto dvou metod je uvedeno v [ 21 ].
3.6.4 3.6.4.1
Z´ akladn´ı principy Objektov´ e modelov´ an´ı dom´ en
Pro kaˇzdou oblast probl´emu - dom´enu - se vytv´aˇr´ı model, kter´ y zn´azorˇ nuje vˇsechny v´ yznamn´e objekty. Objektov´ y model dom´eny je abstraktn´ı r´ amec, do kter´eho se pozdˇeji vkl´ adaj´ı jednotliv´e
3.6. FEATURE DRIVEN DEVELOPMENT
39
funkce. Toto je dokument, kter´ y pom´ ah´a orientovat se v projektu a slouˇz´ı k udrˇzen´ı integrity syst´emu. FDD doporuˇcuje realizovat modely pomoc´ı objektov´ ych diagram˚ u tˇr´ıd (class diagrams) a sekvenˇcn´ıch diagram˚ u. V´ yhodou diagram˚ u tˇr´ıd oproti sekvenˇcn´ım je zn´ azornˇen´ı vztah˚ u mezi tˇr´ıdami, mezi nˇeˇz patˇr´ı dˇediˇcnost. Z´ aroveˇ n je na sekvenˇcn´ıch diagramech vidˇet, jak´ ym zp˚ usobem mezi sebou objekty komunikuj´ı. Jde o ER-diagramy (Entity-Relationship diagrams) a ERAdiagramy (Entity-Relationship-Attribute diagrams). Peter Coad navrhnul metodu barevn´eho odliˇsen´ı prvk˚ u v modelu. Na prvn´ı pohled jde rozliˇsit napˇr´ıklad ˇcasov´ yu ´daj ˇci roli od objektu. V´ıce v [ 24 ].
3.6.4.2
V´ yvoj podle vlastnost´ı
Pˇri v´ yvoji podle tradiˇcn´ıch metodik t´ ym ˇcasto povaˇzuje za z´ akladn´ı stavebn´ı sloˇzky projektu velk´e u ´seky, cel´e moduly. FDD navrhuje postup po ˇc´astech menˇs´ıch, neˇz jsou moduly, a to pˇrin´ aˇs´ı nˇekolik v´ yhod. M´ısto propracov´ av´an´ı modul˚ u se v´ yvoj´ aˇri zamˇeˇruj´ı pˇr´ımo na poˇzadovan´e funkcionality a tak se o to v´ıce zab´ yvaj´ı poˇzadavky z´akazn´ıka. D´ ale tento princip do znaˇcn´e m´ıry omezuje nepouˇzit´e metody a atributy. Nen´ı d˚ uleˇzit´e to, o ˇcem si v´ yvoj´ aˇr mysl´ı, ˇze se m´ a naprogramovat. Vytv´ aˇr´ı se pr´ avˇe ty metody, kter´e jsou na seznamu funkˇcn´ıch poˇzadavk˚ u a pˇrin´ aˇs´ı hodnotu uˇzivateli.
3.6.4.3
Vlastnictv´ı tˇ r´ıd
S vlastnictv´ım tˇr´ıd souvis´ı n´asleduj´ıc´ı v´ yhody: Vlastn´ık m´ a nad sv´ ymi tˇr´ıdami nadhled a zabr´ an´ı kaˇzd´emu naruˇsen´ı jejich konceptu´ aln´ı integrity. Rovnˇeˇz dok´aˇze tˇr´ıdu upravovat rychleji, neˇz ˇclovˇek, kter´ y k´ od nezn´a. Vˇetˇsinou vlastn´ıkovi z´ aleˇz´ı na tom, aby ”jeho”tˇr´ıdy byly co nejkvalitnˇejˇs´ı. Ale s vlastnictv´ım tˇr´ıd jsou spojen´e i nˇekter´e nev´ yhody. Projev´ı se hlavnˇe tehdy, kdyˇz nˇekdo opust´ı t´ ym. Vlastn´ık b´ yv´ a pˇresvˇedˇcen o dokonalosti sv´ ych tˇr´ıd a tak´e je nerad nech´ av´ a kvalitnˇe otestovat.
3.6.4.4
T´ ymy sestavovan´ e podle vlastnost´ı
Kaˇzdou vlastnost implementuje t´ ym lid´ı sloˇzen´ y z vlastn´ık˚ u tˇr´ıd, kter´ ych se dan´ a vlastnost t´ yk´a. Na dobu vyhotoven´ı vlastnosti sestav´ı t´ ym. Jeho jedin´ yu ´kol je realizovat vlastnost. Kaˇzd´ y ˇclen tvoˇr´ı ˇc´ ast vlastnosti, jej´ıˇz k´ od obsahuje jeho tˇr´ıda. Avˇsak je typick´e, ˇze v jedn´e tˇr´ıdˇe je implementov´ ano v´ıcero ˇc´ ast´ı vlastnost´ı. Tedy jeden vlastn´ık tˇr´ıdy je ˇclenem nˇekolika t´ ym˚ u. T´ımto pˇr´ıstupem se dos´ahne zˇreteln´eho rozdˇelen´ı u ´kol˚ u a je jasn´e, kdo m´a co ps´ at. Prol´ın´ an´ı t´ ym˚ u vˇsak klade velk´e n´ aroky na ˇs´efy t´ ym˚ u. Od nich se poˇzaduje velk´ a odpovˇednost, komunikaˇcn´ı dovednosti a jin´e schopnosti.
KAPITOLA 3. AGILN´I METODIKY
40 3.6.4.5
Inspekce
Bˇehem kaˇzd´e z f´az´ı v´ yvoje se prov´ ad´ı inspekce nebo posudkov´e ˇr´ızen´ı, aby se detekovaly chyby. Mezi hlavn´ı techniky patˇr´ı kontroly designu, k´ odu, testov´ an´ı jednotek, intern´ı a extern´ı posudkov´ a ˇr´ızen´ı. Intern´ı prob´ıhaj´ı uvnitˇr t´ ymu a extern´ı je konzultace se z´ akazn´ıkem. Za nejefektivnˇejˇs´ı techniky FDD povaˇzuje posudkov´ a ˇr´ızen´ı a proch´azen´ı k´odu. Naopak nejm´enˇe chyb odhal´ı jednotkov´e testy, coˇz je uvedeno v [ ?? ].
3.6.5
Z´ avˇ er
FDD je velmi praktick´a metodika, kter´a vych´az´ı ze skuteˇcn´ ych zkuˇsenost´ı. Projekty ˇr´ızen´e podle n´ı b´ yvaj´ı pro z´akazn´ıka hodnotn´e, coˇz dokazuje napˇr´ıklad ˇcl´anek v [ 23 ]. Metodika definuje, jak m´a vypadat obecn´ y r´ amec projektu a popisuje pˇet kl´ıˇcov´ ych proces˚ u. Navrhuje dekomponovat v´ yvojov´ y proces na velmi mal´e ˇca´sti - vlastnosti. Nezav´ad´ı ˇz´adn´ a sloˇzit´ a pravidla pro v´ yvoj a pˇri nov´em zav´adˇen´ı metody nevyˇzaduje pˇr´ıliˇs mnoho zmˇen v postupech pracovn´ık˚ u. Nedefinuje ˇz´adn´e konkr´etn´ı metody, jak prov´ adˇet jednotliv´e ˇcinnosti. Tvrd´ı, ˇze tyto metody m´ a zn´at hlavn´ı program´ator. V opaˇcn´em pˇr´ıpadˇe potˇrebuje zkuˇsen´eho poradce, kter´ ym m˚ uˇze b´ yt i extern´ı pracovn´ık [ 15 ].
3.7
Test driven development
Z´akladem cel´eho procesu v´ yvoje podle TDD je testov´ an´ı. Je zam´ıtunuto psan´ı jak´ehokoliv k´ odu, dokud pro nˇej neexistuje test. Pokud se vyplat´ı implementovat urˇcitou funkˇcnost, m´ a v´ yznam i tvoˇrit pro ni jednotkov´ y test.
3.7.1
Charakteristika
P5i tomto postupu je skuteˇcnˇe podstatn´e ps´at nejprve testovac´ı a pak zdrojov´ y k´ od. Vznik´ a tak zaj´ımav´ y synergick´ y efekt [ 23 ]: • Program´ator l´epe porozum´ı zad´ an´ı. • Lepˇs´ı zamˇeˇren´ı se na u ´kol je zp˚ usobeno t´ım, ˇze program´ator se pokaˇzd´e zab´ yv´ a jedn´ım jednoduch´ ym testovac´ım pˇr´ıpadem. Nemus´ı se tedy moment´alnˇe soustˇredit na pˇr´ıliˇs sloˇzit´ y probl´em. • Postup po mal´ ych ˇc´ astech je spojen se snadnou identifikac´ı a opravou chyb v dan´em u ´seku. D´ale poskytuje moˇznost udrˇzovat projekt st´ale funkˇcn´ı t´ım vyd´ avat ˇc´asteˇcn´e verze pˇred dokonˇcen´ım cel´eho procesu [ 21 ].
3.7. TEST DRIVEN DEVELOPMENT
41
• Jak jsem si mohl ovˇeˇrit malou anketou, ˇcasto je pˇred naps´an´ım zdrojov´eho k´odu v´ıce ˇcasu ke psan´ı testu. Pokud psan´ı testu nem´ a d˚ uleˇzitost, nem´a smysl ani produkce zdrojov´eho k´odu [ 25 ]. Je pochopiteln´e, ˇze mnoˇzstv´ı test˚ u sice zpomaluje v´ yvoj, avˇsak v´ ysledek b´ yv´a kvalitnˇejˇs´ı. TDD nedefinuje f´ azi celkov´eho n´avrhu. Zamˇeˇruje se aˇz na chv´ıli, kdy je potˇreba implementovat konkr´etn´ı funkˇcnost. Do t´e doby nech´ av´ a prostor jin´ ym metodik´ am.
3.7.2
Z´ akladn´ı principy
Kent Beck, kter´ y je z´ aroveˇ n autor XP, klade d˚ uraz na efektivn´ı produkci testovac´ıch modul˚ u a architekturu. Jej´ı kvalita z´aleˇz´ı hlavnˇe na jej´ı konzistenci. Umoˇzn ˇuje jednoduchost testov´ an´ı, u ´prav a u ´drˇzby. Ide´ aln´ı podoba je voln´e spojen´ı komponent. Beck od testovac´ıch modul˚ u oˇcek´av´ a [1]: • Rychl´ y bˇeh bez zdrˇzov´ an´ı konfigurac´ı a okamˇzit´e vracen´ı v´ ysledk˚ u. • Testy jsou samostatn´e a vz´ ajemnˇe nez´avisl´e - bez rozd´ılu, v jak´em poˇrad´ı jsou spouˇstˇeny. • Vypisuj´ı relevantn´ı data, ze kter´ ych je snadno pochopiteln´ y v´ ysledek testu. • Pracuj´ı s re´aln´ ymi daty. • Z testu m´ a b´ yt jasn´e, jak´ a nov´a funkcionalita byla do aplikace pˇrid´ana. TDD vyˇzaduje pouˇzit´ı n´ astroj˚ u, kter´e podporuj´ı testov´ an´ı, jinak by byla aplikace TDD obt´ıˇzn´ a.
3.7.3
Pr˚ ubˇ eh v´ yvoje
Implementace prob´ıh´ a v cyklech dlouh´ ych ˇr´adovˇe minuty. Bˇehem kaˇzd´eho z nich se vytvoˇr´ı jedna funkce, pˇr´ıpadnˇe jeden modul. Pro lepˇs´ı orientaci v postupu jsou definov´any dva stavy aplikace - zelen´ y a ˇcerven´ y, kdy nejm´enˇe jeden test selˇze. Zelen´ y stav znaˇc´ı, ˇze vˇsechny testy probˇehnou u ´spˇeˇsnˇe a ukazuje, ˇze bud’ je vˇsechen k´od v poˇra´dku, nebo jsou nˇekter´e testy chybn´e. Cel´ y proces prob´ıh´ a v tˇechto f´ az´ıch: 1. Syst´em je v zelen´em stavu. Nen´ı ˇz´adn´ y test, kter´ y by hl´ asil chybu. 2. Pokud produkt nen´ı dokonˇcen, m˚ uˇze se prov´est refaktorizace hotov´eho k´odu nebo implementovat nov´a funkcionalita. Spust´ı se vˇsechny testy. Pokud vˇsechny projdou, vr´ at´ıme se do f´ aze 1. Jinak pokraˇcujeme f´ az´ı 3. 3. Syst´em je v ˇcerven´em stavu. Uprav´ı se zdrojov´ y k´ od, kter´ y neproˇsel testem, a vr´at´ıme se do f´ aze 2.
KAPITOLA 3. AGILN´I METODIKY
42
Obr´ azek 3.7: Postup pˇri v´ yvoji softwaru podle TDD; pˇrekresleno podle 9
3.7.3.1
Pr˚ ubˇ eh jednoho cyklu
Bˇehem jedn´e iterace je nutn´e dodrˇzet poˇrad´ı ˇcinnost´ı jako je na obr´azku obr. 3.7: 1. V´ yvoj´aˇr co nejrychleji nap´ıˇse testovac´ı k´od pro nov´ y zdrojov´ y k´ od. 2. Spust´ı se vˇsechny testy (nebo jejich podmnoˇzina v pˇr´ıpadˇe rozs´ ahl´ ych projekt˚ u) pro kontrolu konzistence testovac´ı sady. Ovˇeˇr´ı se, ˇze selˇze jen nov´ y test kv˚ uli absenci nov´eho k´ odu. 3. M˚ uˇze se ps´at, upravovat a testovat zdrojov´ y k´od - tak dlouho, dokud test nepˇrestane hl´ asit chybu. Pokud nen´ı moˇzn´e upravit testovan´ y k´ od bˇehem nˇekolika minut tak, aby proˇsel testem, je lepˇs´ı oba k´ ody zahodit a napsat je jednoduˇseji. Pomoc´ı refaktorizace se zdrojov´ y k´od zjednoduˇs´ı a zefektivn´ı a tot´eˇz plat´ı i pro testovac´ı k´ od. Kent Beck upozorˇ nuje, ˇze nov´e funkce se p´ıˇsou pouze tehdy, kdyˇz pro nˇe selhal automatizovan´ y test. Podle nˇej tak´e maj´ı b´ yt eliminov´ any veˇsker´e duplicity. [ 25 ]. 4. Spust´ı se vˇsechny ostatn´ı testy (nebo jejich podmnoˇzina). Pokud neprojdou, je nutn´e upravit zdrojov´ y k´ od. 5. Provedou se potˇrebn´e u ´pravy testovac´ıch pˇr´ıpad˚ u i zdrojov´eho k´ odu a odstran´ı se pˇr´ıpadn´e duplicity. Testovac´ı pˇr´ıpad se pˇresune do knihovny test˚ u spouˇstˇen´ ych automaticky.
3.7.4
Z´ avˇ er
K´od projektu stvoˇren´ y podle TDD m´ a velmi pˇrehlednou a dobrou strukturu d´ıky jeho testovatelnosti a odstranˇen´ı duplicit. Testy se tedy p´ıˇsou l´epe, kdyˇz uˇz je zdrojov´ y k´od hotov´ y, ˇclovˇek m´ a lepˇs´ı pˇredstavu o tom, co testovat [ 22 ]. Avˇsak je logick´e, ˇze pˇri opaˇcn´em postupu se o to l´epe p´ıˇse zdrojov´ y k´od, coˇz je d˚ uleˇzit´ a v´ yhoda TDD. Metodika je obl´ıben´ a, svˇedˇc´ı o tom
´ ´I AGILN´ICH METODIK 3.8. POROVNAN
43
napˇr´ıklad fakt, ˇze lid´e chtˇej´ı TDD vyuˇz´ıvat co nejl´epe a pˇrizp˚ usobit ji vlastn´ım potˇreb´ am. Je tak dostupn´a podpora TDD d´ıky ˇsirok´emu spektru jednotkov´ ych test˚ u (xUnit tests). Vznikaj´ı tak´e r˚ uzn´e odnoˇze - napˇr´ıklad Storytest driven development (STDD) [ 24 ]. Jde o propojen´ı FDD a TDD, kde se na zaˇc´ atku nep´ıˇsou testy pro jakoukoliv ˇc´ast k´odu, ale definuje se vlastnost. Vytvoˇr´ı se testy pro ni a d´ ale se pokraˇcuje jako u TDD. Testov´ an´ı je jedna z nejzn´amˇejˇs´ıch a nejviditelnˇejˇs´ıch sloˇzek zabezpeˇcen´ı kvality (QA). Kritici TDD vˇsak tvrd´ı, ˇze v´ıce chyb se d´ a efektivnˇe naj´ıt jin´ ymi sloˇzkami QA jako revize n´avrh˚ u nebo strukturovan´e proch´ azen´ı. Na jedn´e studii ukazuj´ı, ˇze kvalita projektu jen pomalu roste s mnoˇzstv´ım napsan´ ych test˚ u nez´ avisle na pouˇzit´e strategii v´ yvoje [ 23 ]. Nez´aleˇz´ı na tom, jestli se testy nap´ıˇsou dˇr´ıve, nebo pozdˇeji neˇz zdrojov´ y k´od. Existuje silnˇejˇs´ı korelace mezi mnoˇzstv´ım napsan´ ych test˚ u a produktivitou t´ ymu pˇri testov´ an´ı aˇz po dops´an´ı zdrojov´eho k´odu. Metodika nepokr´ yv´ a vˇsechny v´ yvojov´e f´ aze. Napˇr´ıklad nejde pouˇz´ıt na celkov´ y design velk´ ych projekt˚ u, n´ avrh uˇzivatelsk´eho rozhran´ı.
3.8
Porovn´ an´ı agiln´ıch metodik
Na tomto m´ıstˇe rozeberme, v ˇcem se liˇs´ı jednotliv´e agiln´ı metodiky a na co se kter´a metodika hod´ı. Kaˇzd´emu v´ yvojov´emu t´ ymu vyhovuje jin´ a charakteristika zp˚ usobu pr´ ace. Necht’ je moˇzn´e podle t´eto kapitoly urˇcit, kter´a metodika je nejvhodnˇejˇs´ı pro dan´ y t´ ym lid´ı. Krit´eria jsou seˇrazena podle pˇredpokl´ adan´e d˚ uleˇzitosti.
3.8.1
Velikost t´ ym˚ u a projekt˚ u
Nejvˇetˇs´ı t´ ymy jdou ˇr´ıdit jen podle Scrum, avˇsak metodika je vhodn´ a i pro mal´e. Nejvˇetˇs´ı t´ ym, se kter´ ym jsem se setkal bˇehem pr˚ uzkumu, je sloˇzen ze dvou set v´ yvoj´ aˇr˚ u ˇr´ızen´ ych podle Scrum. Nˇekter´e informaˇcn´ı zdroje [ 11 ] uv´ad´ı, ˇze t´ ymy sloˇzen´e z klastr˚ u klastr˚ u Scrum t´ ym˚ u m´ıvaj´ı aˇz pˇet set ˇclen˚ u. Tak´e TDD se hod´ı i pro velk´e projekty. XP je vhodn´e pro mal´e t´ ymy do deseti ˇclen˚ u.
3.8.2
N´ aroˇ cnost na zaveden´ı a provoz
Agiln´ı metodiky jsou obecnˇe n´ aroˇcn´e na kvalitu ˇclen˚ u t´ ymu. Zjistil jsem, ˇze nejn´aroˇcnˇejˇs´ı je XP. Setkal jsem se s jedin´ ym v´ yjimeˇcn´ ym pˇr´ıkladem jeho zaveden´ı. Pr´aci upravuje mnoˇzstv´ım pravidel. Ta sice vych´ azej´ı z pˇrirozen´ ych princip˚ u, ale pˇresto se na nˇekter´ a tˇeˇzko zvyk´ a, pˇrestoˇze N´aroˇcnost se t´ yk´ a jak program´ ator˚ u, tak manaˇzer˚ u. U Scrum je na prvn´ı pohled zˇrejm´e, ˇze se zav´ad´ı snadno. Je pomˇernˇe rozˇs´ıˇren´ y a tak´e
KAPITOLA 3. AGILN´I METODIKY
44
d´ av´ a prostor t´ ymu pro vlastn´ı zp˚ usob pr´ace. Konkr´etn´ı poˇzadavky se net´ ykaj´ı ˇclen˚ u t´ ymu, jen manaˇzer˚ u. T´ ym se m´a organizovat s´ am. V tomto ohledu je Scrum protikladem TDD, kter´e ned´ av´ a ˇz´adn´e u ´koly manaˇzer˚ um. Ovˇsem je tˇeˇzk´e naj´ıt do t´ ymu Scrum vhodn´e lidi, kteˇr´ı um´ı metodiku efektivnˇe vyuˇz´ıt. Co zav´ ad´ı Lean development nav´ıc oproti tradiˇcn´ım pˇr´ıstup˚ um je pˇrirozen´a efektivita v´ yvoje, kter´e softwarov´e spoleˇcnosti ˇcasto dosahuj´ı i bez zaveden´ı t´eto metodiky. Vzhledem k pˇrirozenosti pravidel je nen´aroˇcn´ a. Avˇsak pokud uˇz nˇekdo chce programovat agilnˇe, vˇetˇsinou uplatn´ı jinou metodiku. Snadno se zav´ ad´ı, nebot’ nepˇrikazuje postupovat nijak nepˇrijateln´ ym zp˚ usobem. Doporuˇcuje jen ˇradu pravidel, jinak ponech´ av´a v´ yvoj´ aˇr˚ um volnost v ˇcinnosti. Lean nen´ı ne´ uspˇeˇsn´a metodika, neˇz si na ni t´ ym zvykne. Napˇr´ıklad ˇr´ızen´ı projektu jen ˇc´asteˇcnˇe pomoc´ı XP vede k v´ ysledk˚ um velmi ˇspatn´ ym. FDD je nen´ aroˇcn´a metodika, snadno se na ni zvyk´a, v´ yvojov´ y proces se j´ı d´ a dobˇre pˇrizp˚ usobit. Spoˇc´ıv´ a pouze v pˇeti z´ akladn´ıch procesech (vytvoˇren´ı glob´ aln´ıho modelu, vypracov´ an´ı podrobn´eho seznamu vlastnost´ı, pl´ anov´an´ı podle vlastnost´ı, n´avrh podle vlastnost´ı, implementace podle vlastnost´ı).
3.8.3
M´ıra omezen´ı pravidly
Nejstriktnˇejˇs´ı pravidla poˇzaduje XP. Je jich dvan´ act, coˇz je mnoho. Nejm´enˇe z´akladn´ıch pouˇcek zav´ad´ı FDD. Je jich jen pˇet - objektov´e modelov´ an´ı, v´ yvoj podle vlastnost´ı, t´ ymy sestavovan´e podle vlastnost´ı, vlastnictv´ı tˇr´ıd a pr˚ ubˇeˇzn´e inspekce.
3.8.4
Rozˇ s´ıˇ renost
XP je rozˇs´ıˇren´e hlavnˇe v Americe. V naˇsich oblastech jsem si vˇsimnul sp´ıˇse s odm´ıtav´eho pˇr´ıstupu. Nejˇcastˇeji jsem se setkal se Scrum, pˇr´ıpadnˇe se Scrum kombinovan´ ym s FDD.
3.8.5
Pˇ rijatelnost pro z´ akazn´ıka
XP je velmi n´aroˇcn´e nejen pro softwarovou spoleˇcnost, ale i pro z´ akazn´ıka. Pˇrikazuje mu, aby byla pˇr´ımo jeho osoba, nˇekdy dvˇe v prostˇred´ı softwarov´e spoleˇcnosti po celou dobu v´ yvoje. FDD vyˇzaduje z´ akazn´ıkovu aktivn´ı u ´ˇcast jen bˇehem u ´vodn´ı f´aze. Podle Scrum se m´ a klient dostavit po kaˇzd´em sprintu. Jinak metodiky samozˇrejmˇe nut´ı klienty pr˚ ubˇeˇznˇe kontrolovat ˇcinnost, ale kromˇe XP je moˇzn´ a komunikace na d´alku.
3.8.6
Zajiˇ stˇ en´ı kvality (quality assurance)
Rozd´ıly dan´e t´ımto krit´eriem snad nejv´ıce ovlivˇ nuj´ı v´ ysledek a n´ aroˇcnost dosaˇzen´ı jeho kvality. N´azory na pˇredch´ azen´ı chyb´ am v pr˚ ubˇehu implementace se r˚ uzn´ı. Mezi hlavn´ı metody patˇr´ı jed-
´ ´I AGILN´ICH METODIK 3.8. POROVNAN
45
notkov´e testy a defenzivn´ı programov´ an´ı, pˇri kter´em se napˇr´ıklad kontroluj´ı vstupn´ı parametry metody, jejichˇz nespr´ avnost vyvol´ a v´ yjimku. Vloˇzen´ı defenzivn´ıho k´odu do metody je jednoduˇsˇs´ı, neˇz pokr´ yt vˇsechny pˇr´ıpady jednotkov´ ym testem. Ten jen prok´ aˇze, ˇze v k´odu je chyba, ale jej´ı absenci nezaruˇc´ı t´ım, ˇze probˇehne s kladn´ ym v´ ysledkem. Defenzivn´ı programov´ an´ı naopak prokazuje bezchybnost dan´e ˇc´asti k´ odu. Tak´e napˇr´ıklad umoˇzn ˇuje okamˇzitˇe naj´ıt m´ısto, kde reference ukazuje na null nebo na hodnotu mimo oˇcek´avan´ y rozsah. Odp˚ urc˚ um jednotkov´ ych test˚ u vad´ı, ˇze jejich produkce zab´ır´ a ˇcas [ 22 ]. Pˇritom je ale dobr´e si uvˇedomit, jak´ y n´ azor m´ a Jeff De Luca, spoluautor FDD [ 20 ]: ”Jednotkov´ y test nen´ı nˇeco nav´ıc, co nem´ a nic spoleˇcn´eho s implementac´ı. Tvorba jednotkov´eho testu pˇred implementac´ı vlastnosti jednoduˇse nut´ı pˇrem´ yˇslet pˇredem.”Jin´ı v´ yvoj´ aˇri jsou pˇresvˇedˇcen´ı o tom, ˇze defenzivn´ı programov´ an´ı zdrˇzuje bˇeh programu a s pomoc´ı jednotkov´ ych test˚ u jdou odhalit vˇsechny d˚ uleˇzit´e chyby. Jejich pouˇzit´ı podle nich nen´ı ˇcasovˇe n´aroˇcnˇejˇs´ı na tvorbu, protoˇze uˇsetˇr´ı ˇcas pˇri implementaci. Nesporn´ a v´ yhoda jednotkov´ ych test˚ u je zˇretelnost, ˇze je k´od spr´avn´ y. Ujiˇst’uj´ı v´ yvoj´ aˇre o kvalitˇe a spolehlivosti jeho k´ odu a ukazuj´ı aktu´aln´ı stav a pokrok projektu. O nˇem se d´ a ˇr´ıci, ˇze je stoprocentnˇe otestovan´ y a tak m˚ uˇze b´ yt pouˇzit pro rizikov´e projekty, jejichˇz selh´ an´ı m˚ uˇze m´ıt niˇciv´e n´ asledky. Z´aroveˇ n jejich naps´ an´ım test˚ u pˇred vlastnostmi definujeme rozhran´ı metody, kter´e je pak moˇzn´e otestovat dˇr´ıv, neˇz vznikne cel´e tˇelo metody. TDD nepoˇzaduje defenzivn´ı programov´an´ı. FDD vˇsak doporuˇcuje kombinaci obou metod, coˇz m˚ uˇze vypadat neefektivnˇe. Avˇsak nejde o pˇredch´ azen´ı stejn´ ym chyb´ am dvˇema zp˚ usoby. Je zˇrejm´e, ˇze jednotkov´ y test k metodˇe pˇristupuje jako k ˇcern´e skˇr´ıˇ nce a kontroluje tedy pouze vstupy a v´ ystupy. Neodhal´ı tedy chyby v podobˇe pˇreteˇcen´ı pamˇeti, nepoveden´e integrace, poˇskozen´ı dat v pamˇeti, zablokov´ an´ı vl´aken nebo chyby v uˇzivatelsk´em rozhran´ı [ 23 ]. Pokud vˇsak v´ yvoj´ aˇri pr˚ ubˇeˇznˇe integruj´ı nov´ y k´ od, vznikl´e integraˇcn´ı probl´emy tak´e brzy odhal´ı. Velk´a nev´ yhoda testov´an´ı je, ˇze nen´ı pouˇziteln´e v pˇr´ıpadech, ˇze sestaven´ı projektu trv´a dlouho. Zpˇetn´a vazba mus´ı b´ yt rychl´ a. Kromˇe tˇechto dvou metod se chyb´am pˇredch´ az´ı dalˇs´ımi zp˚ usoby. Pˇri postupu podle FDD se snadno kontroluje spr´avnost chov´ an´ı aplikace zkoum´an´ım vlastnost´ı jako z´akladn´ıch stavebn´ıch kamen˚ u. Lean pˇredkl´ ad´ a c´ıle a hodnoty, kter´ ych se m´a softwarov´a spoleˇcnost drˇzet a m˚ uˇze jednoznaˇcnˇe poznat, jestli se ub´ır´ a spr´avn´ ym smˇerem. Hlavn´ı vˇec´ı je spolupr´ ace s klientem. V´ yvoj´aˇri pracuj´ıc´ı podle jin´ ych metodik si mohou jen myslet, co je pro nˇe d˚ uleˇzit´e. Lean nut´ı manaˇzery pˇripravit t´ ym na vˇsechny komplikace, kter´e mohou nastat, nebo jim pˇredch´ azet hlavnˇe zmˇena zad´ an´ı, prodraˇzen´ı projektu zbyteˇcn´ ymi ztr´ atami, nev´ yhodn´e subdod´ avky od partner˚ u atd. Scrum zase zav´ ad´ı anal´ yzu rizik na konci kaˇzd´e iterace. Dennˇe se odhaluj´ı rizika souvisej´ıc´ı se zmˇenami. Podle XP se m´a kvalita zajiˇst’ovat v´ıce zp˚ usoby. Jsou to revize a kontroly, testov´an´ı nˇekolikr´ at dennˇe a p´arov´e programov´ an´ı. Rozdˇelen´ı metodik podle oblasti, kterou specifikuj´ı Postupov´ an´ı manaˇzer˚ u a u ´vodn´ı f´aze projektu definuj´ı metodiky XP, Scrum a FDD. Pr´aci
KAPITOLA 3. AGILN´I METODIKY
46
v´ yvoj´aˇr˚ u a f´aze implementace popisuje XP, FDD a TDD. Lean vyd´ av´a pouze sadu pravidel, jejichˇz dodrˇzen´ım dos´ ahneme urychlen´ı, zlevnˇen´ı a sn´ıˇzen´ı chybovosti produktu.
3.8.7
Kombinace metodik
V pˇr´ıpadˇe kombinov´an´ı metodik je Scrum ˇcasto jedna z nich. Druh´ a b´ yv´ a nˇekter´ a z tˇech, kter´e zav´ ad´ı pravidla pro ˇcleny t´ ymu, tedy ne pro manaˇzery. Setkal jsem se s kombinacemi XP a Scrum nebo FDD a Scrum. XP vlastnˇe jde dobˇre kombinovat s jakoukoliv metodikou. Projekt, kter´ y je jako celek ˇr´ızen urˇcitou metodikou, se dekomponuje na podprobl´emy. Pouˇzije se n´asleduj´ıc´ı algoritmus: Najde se nejz´ avaˇznˇejˇs´ı probl´em a ˇreˇs´ı se pomoc´ı XP tak dlouho, dokud je nejz´avaˇznˇejˇs´ı. Pak se postup opakuje. Do FDD jde snadno vˇclenit TDD. To znamen´ a pouze pˇridat nov´e pravidlo do FDD, a sice ps´at jednotkov´e testy ve ˇctvrt´e f´ azi n´ avrh podle vlastnost´ı. FDD pˇredepisuje pouze pouˇzit´ı jednotkov´ ych test˚ u v p´ at´e f´ azi implementace podle vlastnost´ı, avˇsak nez´ aleˇz´ı na poˇrad´ı psan´ı test˚ u a k´odu.
3.8.8
Truck factor
Truck factor je pojem zaveden´ y XP a jeho hodnota vyjadˇruje poˇcet lid´ı, kteˇr´ı se orientuj´ı v jedn´e ˇc´asti k´ odu. Nejvyˇsˇs´ı maj´ı projekty ˇr´ızen´e podle XP, o veˇsker´em k´odu maj´ı pˇrehled vˇsichni. Scrum a FDD zav´ ad´ı vlastnictv´ı k´ odu, o jedn´e tˇr´ıdˇe m´a pˇrehled pouze jeden ˇclovˇek a truck factor je jedna. Avˇsak pˇri FDD jednotliv´e metody tˇr´ıdy pouˇz´ıv´ a prakticky cel´ y t´ ym a ˇcasto je truck factor vyˇsˇs´ı neˇz 1.
3.8.9
Psan´ı nadbyteˇ cn´ eho k´ odu
Jak´ akoliv pr´ ace, kter´a nen´ı vyslovenˇe nezbytn´ a, se obecnˇe vymyk´ a agiln´ımu v´ yvoji. Obzvl´aˇst’ Lean povaˇzuje za neˇza´dan´e pl´ ytv´an´ı tvoˇren´ı kaˇzd´eho k´odu, kter´ y se nedoruˇc´ı z´akazn´ıkovi [ 8 str. 4 ]. Nab´ad´a k tomu, abychom se za kaˇzdou cenu vyhnuli psan´ı k´ odu, kter´ y nakonec nepouˇzijeme. XP tvrd´ı, ˇze se takov´ ym situac´ım ned´a vyhnout, a proto nem´ a cenu ztr´acet energii snahou jim pˇredch´ azet. TDD nut´ı program´ atory ps´at velk´e mnoˇzstv´ı test˚ u, kter´e z´ akazn´ık pˇr´ımo nepotˇrebuje. Avˇsak Lean nem˚ uˇze ˇr´ıct, ˇze jde o pl´ ytv´an´ı, protoˇze v´ ysledn´ y produkt z´ısk´av´a na hodnotˇe d´ıky kvalitn´ımu otestov´ an´ı. TDD tak´e doporuˇcuje zahodit zdrojov´ y i testovac´ı k´od v pˇr´ıpadˇe, ˇze zdrojov´ y k´od nejde v kr´ atk´e dobˇe upravit tak, aby proˇsel testem. Dobˇre propracovan´ y zp˚ usob, jak nepsat zbyteˇcn´ y k´ od a z´ aroveˇ n nezapomenout na d˚ uleˇzit´e ˇc´asti m´ a FDD. Pˇredepisuje dod´ avky vlastnost´ı, kter´e maj´ı hodnotu pro z´ akazn´ıka, ˇc´ımˇz je zaruˇcena hodnota cel´eho produktu.
ˇ ´IZEN´I PROJEKTU ˚ V PRAXI 3.9. R
3.8.10
47
Dokumentace
Pokud se program´ atoˇri potˇrebuj´ı sezn´ amit s nˇejak´ ym zdrojov´ ym k´ odem, ˇcasto si nejdˇr´ıve prohl´ednou uk´ azkov´ y k´ od, kter´ y vol´ a metody, pot´e tˇela metod a jen v´ yjimeˇcnˇe ˇctou dokumentaci - pokud existuje. Dokud nen´ı projekt cel´ y pˇredan´ y, dokumentovalo by se j´ı nˇeco nest´al´eho, nˇeco neust´ ale promˇenliv´eho. Dokumentace by se stala neplatnou a tud´ıˇz pro z´akazn´ıka bezcennou. Proto se tvorba dokumentace povaˇzuje za nadbyteˇcnou pr´aci aˇz do chv´ıle, kdy ji pˇr´ımo poˇzaduje z´ akazn´ık. Agiln´ı metodiky varuj´ı pˇred psan´ım dokumentace. Pˇresnˇe takov´ ym uk´ azkov´ ym k´ odem, jako je o nˇem ˇreˇc v´ yˇse, m˚ uˇze b´ yt dobˇre napsan´ y jednotkov´ y test [tdd/1]. Pˇri v´ yvoji podle TDD tedy vznik´ a ˇziv´ a dokumentace jako vedlejˇs´ı produkt - v podobˇe testovac´ıho k´ odu. Testovac´ı pˇr´ıpady ukazuj´ı, jak pouˇz´ıvat testovan´ y k´ od. Poskytuj´ı velmi pˇresn´e informace v pˇrehledn´e formˇe. Avˇsak kaˇzd´ y si neum´ı zvyknout na pouˇz´ıv´an´ı test˚ u jako formu dokumentace [ 23 ]. XP upozorˇ nuje, ˇze pr´ avˇe zdrojov´ y k´od je to, co ”dokumentuje”projekt. Kaˇzd´ y ˇclen v t´ ymu se v projektu orientuje jen podle nˇej. Z´ aroveˇ n je potˇreba nahradit dokument specifikace poˇzadavk˚ u dialogem, d˚ uvˇerou a moˇznost´ı zmˇen.
3.8.11
Spoleˇ cn´ e vlastnosti
Pˇri peˇclivˇejˇs´ım studiu agiln´ıch metodik si ˇclovˇek vˇsimne n´asleduj´ıc´ıch poznatk˚ u. Vˇsechny se snaˇz´ı pˇrimˇet v´ yvoj´ aˇre k pˇr´ımoˇcar´emu postupu k c´ıli bez jak´ehokoliv zatˇeˇzov´ an´ı se formalitami. Poˇzaduj´ı iterativn´ı, inkrement´ aln´ı v´ yvoj, jehoˇz v´ yhody uˇz byly pops´ any. Vˇetˇsinou povaˇzuj´ı za nejlepˇs´ı, pokud jsou iterace co nejkratˇs´ı. Metodiky nepopisuj´ı pˇresn´ y pr˚ ubˇeh procesu. Nedefinuj´ı ˇz´adn´e konkr´etn´ı kroky, jak vyv´ıjet software. Co popisuj´ı nebo sp´ıˇs ukazuj´ı, je zp˚ usob veden´ı projektu. Poskytuj´ı urˇcit´ y souhrn vzor˚ u a pravidla, kter´a pom´ ahaj´ı progresivn´ımu v´ yvoji. Nˇekter´ a pravidla jsou ˇspatnˇe pochopiteln´ a nebo aplikovateln´ a v praxi, dokud si na nˇe ˇclovˇek nezvykne. Kv˚ uli nim se nehod´ı do t´ ymu kaˇzd´ y ˇclovˇek, protoˇze kaˇzd´ y nedok´ aˇze aplikovat metodiky efektivnˇe. Naproti tomu je v agiln´ım v´ yvoji prostor pro pˇrizp˚ usoben´ı metodik pro dan´ y t´ ym a pro u ´pravy postup˚ u, coˇz tradiˇcn´ı metodiky u ´plnˇe neschvaluj´ı. Avˇsak toto m˚ uˇze b´ yt br´ ano jako pozitivum i jako negativum, nebot’ se manaˇzer mus´ı zab´ yvat t´ım, jak metodiku zav´est.
3.9
ˇ ızen´ı projekt˚ R´ u v praxi
Bˇehem pr˚ uzkumu zvyklost´ı projektov´ ych manaˇzer˚ u a technik v´ yvoje software jsem doˇsel k v´ ysledk˚ um, z nichˇz nˇekter´e jsem jiˇz zaznamenal do pˇredchoz´ıch kapitol. Ostatn´ı zm´ın´ım zde. Zamˇeˇril jsem se na softwarov´e spoleˇcnosti, jejichˇz v´ yvojov´e t´ ymy m´ıvaj´ı m´enˇe neˇz dvacet pˇet
KAPITOLA 3. AGILN´I METODIKY
48
ˇclen˚ u. V tomto rozmez´ı jsem rozliˇsoval mezi menˇs´ımi a vˇetˇs´ımi firmami podle poˇcetnosti t´ ymu. Stanovil jsem mez deset ˇclen˚ u. Vˇetˇs´ı firmy nejˇcastˇeji aplikuj´ı konkr´etn´ı vˇseobecnˇe zn´am´e metodiky tradiˇcn´ı nebo agiln´ı. Nˇekdy se jim osvˇedˇcuj´ı obˇe moˇznosti v z´ avislosti na velikosti aktu´ aln´ıho projektu. U menˇs´ıch softwarov´ ych spoleˇcnost´ı nejsou agiln´ı metodiky pˇr´ıliˇs ˇcast´e. Z deseti osloven´ ych mal´ ych firem je zavedly jen tˇri. Jedna firma uˇz´ıv´ a tradiˇcn´ı techniky a ostatn´ı se spol´ehaj´ı na sv´e vlastn´ı metody, pˇr´ıpadnˇe se zcela obejdou bez definovan´ ych postup˚ u. Bl´ıˇze jsem se setkal jen se dvˇema firmami s v´ yvojov´ ym t´ ymem poˇcetnˇejˇs´ım neˇz dvacet pˇet. V´ yvoj ˇr´ıd´ı bud’ agiln´ımi, nebo vlastn´ımi metodikami.
3.9.1
Agiln´ı metodiky
Agiln´ı metodiky jsou zˇrejmˇe vhodn´e hlavnˇe pro stˇrednˇe velk´e projekty. Jejich principy se pouˇz´ıvaj´ı jen zˇr´ıdka pro projekty, kter´e zad´an´ım nepˇresahuj´ı d´elku jedn´e iterace. Hod´ı se naopak pro rozs´ahlejˇs´ı syst´emy, ve kter´ ych m´a smysl pr´aci rozdˇelovat do v´ıce iterac´ı. Avˇsak pro pˇr´ıliˇs komplexn´ı probl´emy nejsou agiln´ı metodiky vhodn´e. T´ ymy o velikosti des´ıtek ˇclen˚ u nejdou ˇr´ıdit agilnˇe s v´ yjimkou Scrum. Pro takov´e projekty se naopak hod´ı nˇekter´e tradiˇcn´ı metodiky, pˇr´ıkladem je RUP a tak´e jsem se dozvˇedˇel o m´enˇe zn´am´e PRINCE 2. Z jednotliv´ ych technik je nejpouˇz´ıvanˇejˇs´ı Scrum. Zˇrejmˇe jde o d˚ usledek toho, ˇze je pˇr´ıstupn´a a nezav´ ad´ı ˇza´dn´ a extr´emn´ı pravidla jako p´arov´e programov´ an´ı nebo jednotkov´e testov´ an´ı veˇsker´eho k´odu. Naopak denn´ı setk´ av´ an´ı je z´ asada, kterou pracovn´ıci ochotnˇe pˇrij´ımaj´ı. Napˇr´ıklad jim uˇsetˇr´ı mnoˇzstv´ı textu napsan´eho pˇri komunikaci na d´alku a umoˇzn´ı snadno ˇreˇsit probl´emy. ˇ e republiky jsou ˇcesk´e poboˇcky spoleˇcnost´ı CA Pˇr´ıklady zaveden´ı t´eto metodiky na u ´zem´ı Cesk´ Technologies a ZOOM International. Nesetkal jsem se s pˇr´ıkladem aplikace Lean.
3.9.1.1
V´ yhody, kter´ ych si firmy nejv´ıc cen´ı
Mezi v´ yhody, kter´ ych si firmy nejv´ıc cen´ı, patˇr´ı rychlost a efektivita v´ yvoje. Tak´e jeho kvalita, kter´a je zaruˇcena precizn´ı architekturou a testov´an´ım. Chybovost je pak n´ızk´ a.
3.9.1.2
Nev´ yhody, kter´ e firm´ am nejv´ıc vad´ı
Naopak nejv´ıc vad´ı, ˇze pˇredem nen´ı pˇresnˇe zn´am´ y v´ ysledek. Tedy bud’ nen´ı stanovena doba v´ yvoje a t´ım ani cena projektu, nebo je nejist´a ˇs´ıˇre funkˇcnosti. V praxi totiˇz nen´ı snaha dodrˇzet definovan´ y ˇcas a urˇcen´e n´ aklady, jako pˇredepisuje teorie agiln´ıho programov´ an´ı. Typicky tedy klient nerad akceptuje pˇr´ıstup, kter´ y vych´az´ı z nemoˇznosti pˇredem domluvit pˇresn´e podm´ınky. Mnoho z´ akazn´ık˚ u dok´ aˇze v´ yvoj softwaru povaˇzovat jedinˇe za definovan´ y proces, coˇz odporuje agiln´ımu pojet´ı.
ˇ ´IZEN´I PROJEKTU ˚ V PRAXI 3.9. R
3.9.2
49
Ostatn´ı zp˚ usoby ˇ r´ızen´ı projekt˚ u
Vˇetˇsina spoleˇcnost´ı, kter´e nepouˇz´ıvaj´ı agiln´ı metodiky, si vytvoˇrila vlastn´ı metody. V souladu s agiln´ım v´ yvojem d´ avaj´ı pˇrednost osobn´ı komunikaci mezi ˇcleny t´ ymu. V´ yvoj obvykle prob´ıh´ a iterativnˇe nebo po jin´ ych ˇc´ astech tak, aby z´akazn´ık pr˚ ubˇeˇznˇe mohl sledovat v´ yvoj.
50
KAPITOLA 3. AGILN´I METODIKY
Kapitola 4
Z´ avˇ er Pˇri zkoum´ an´ı zkuˇsenost´ı expert˚ u ve v´ yvoji software jsem v prvn´ı ˇradˇe oslovil vˇsechny, kter´e zn´am. Na dalˇs´ı jsem vyhledal t´emˇeˇr sto kontakt˚ u na internetu podle kl´ıˇcov´ ych slov softwarov´ a ” spoleˇcnost“ a softwarov´ a firma“. Poslal jsem jim e-mailem dotazn´ık k vyplnˇen´ı. Odpovˇedi ” zaˇcaly pˇrich´ azet, aˇz kdyˇz jsem se dovolal asi ˇctyˇriceti z nich. Vˇsech odpovˇed´ı na dotazn´ıky bylo jen m´ alo pˇres dvacet. Dalˇs´ı potˇrebn´e informace jsem vyhledal na diskuzn´ıch f´ orech na internetov´ ych str´ ank´ ach, kter´e jsou uvedeny v seznamu literatury. Jednotliv´e metodiky jsem v pˇredeˇsl´em textu zhodnotil z r˚ uzn´ ych u ´hl˚ u pohledu. Nyn´ı vyzdvihnu nˇekter´e z nich jako dominantn´ı z´ astupce z nˇekolika hledisek. Jako nej´ uˇcinnˇejˇs´ı agiln´ı metodika se mi jev´ı XP, avˇsak jen do t´e doby, dokud je t´ ym schopn´ y ji zvl´adat. Za kl´ıˇcov´ y omezuj´ıc´ı faktor povaˇzuju povinnost kaˇzd´eho ˇclena t´ ymu udrˇzet pˇrehled o veˇsker´em zdrojov´em k´ odu v projektu. Rozhodnˇe se hod´ı jen pro v´ yvojov´e t´ ymy, kter´e jiˇz maj´ı zkuˇsenosti s agiln´ım pˇr´ıstupem. Scrum je metodika, kter´ a pˇrin´ aˇs´ı nejm´enˇe netradiˇcn´ıch postup˚ u. Zˇrejmˇe proto patˇr´ı k nejrozˇs´ıˇrenˇejˇs´ım. Proto ji m˚ uˇzeme doporuˇcit kaˇzd´emu t´ ymu, kter´ y zaˇc´ın´a s agiln´ım ˇr´ızen´ım projekt˚ u. Jednoznaˇcnˇe nejjednoduˇsˇs´ı pracovn´ı postup definuje vodop´ adov´ y model. Pro svou jednoduchost a tak´e prvenstv´ı ve vzniku st´ale patˇr´ı k nejrozˇs´ıˇrenˇejˇs´ım. Projekty nˇekter´ ych v´ yvoj´ aˇr˚ u jsou tak mal´e, ˇze se pr´ y jejich tv˚ urc˚ um nevyplat´ı ˇr´ıdit se nˇejakou metodikou. Avˇsak jejich pr´ aci lze velmi bl´ızce charakterizovat pr´avˇe vodop´adov´ ym modelem. Jako nejjednoduˇsˇs´ı a nejpˇrehlednˇejˇs´ı agiln´ı metodika se jev´ı FDD. Postupuje po podobn´e sekvenci jako vodop´ adov´ y model, avˇsak na jej´ım konci se postupuje iterativnˇe. Jak uˇz v´ıme, oproti vodop´ adu se zde zav´ ad´ı mnoh´ a dalˇs´ı pravidla - napˇr´ıklad modelov´ an´ı podle dom´en. TDD je metodika, jej´ıˇz pravidla se nejm´enˇe dodrˇzuj´ı. Dosud jsem nenarazil na v´ yvoj´ aˇre, kter´ y by mˇel otestvan´ y kaˇzd´ y ˇr´adek zdrojov´eho k´odu. Narozd´ıl od XP TDD nepˇrin´aˇs´ı tak negativn´ı v´ ysledky, pokud se jeho pravidla zcela nedodrˇzuj´ı, takˇze neodrad´ı od pouˇzit´ı hned od zaˇc´atku. 51
´ ER ˇ KAPITOLA 4. ZAV
52
Nejvˇetˇs´ı a nejsloˇzitˇejˇs´ı projekty lze ˇr´ıdit podle metodik RUP a Scrum of scrum. Pokud projektov´ y manaˇzer t´ ymu pro velmi rozs´ ahl´ y projekt nedok´ azal v´ yvoj uˇr´ıdit pomoc´ı Scrum of scrum m˚ uˇze projekt bud’ dekomponovat nebo v´est podle RUP. Je vidˇet, ˇze agiln´ımi metodikami lze pokr´ yt ˇcinnost jen omezen´eho mnoˇzstv´ı v´ yvojov´ ych t´ ym˚ u. Pokud jsou velmi mal´e a ˇc´ıtaj´ı tˇreba jen 3 ˇcleny, je pravdˇepodobn´e, ˇze pouˇzij´ı bud’ nˇekter´ y tradiˇcn´ı nebo zcela nedefinovan´ y postup. Naopak pˇr´ıliˇs velk´e projekty v souˇcasnosti ned´ avaj´ı prostor pro flexibilitu a ˇcasto se mus´ı v rozporu s agiln´ım pˇr´ıstupem definovat striktn´ı pravidla. Agiln´ı metodiky jsou tedy pˇr´ıstupn´e hlavnˇe v pˇr´ıpadech, kde produkt nevyv´ıj´ı ani m´alo ani mnoho lid´ı. Avˇsak je ot´ azka do budoucnosti, jestli se agiln´ı metodiky otevˇrou i pro vˇetˇs´ı projekty, jako to dˇel´ a Scrum, nebo jestli ˇcasem bude nutn´e je nahradit zase jin´ ym pˇr´ıstupem.
Literatura ´ clav Kadlec (2004), Agiln´ı programov´ Va an´ı, Brno: Vydavatelstv´ı Computer Press. 1. Rational Software Corporation: Rational Unified Process, Best Practices for Software Development Teams http://www.augustana.ab.ca/~mohrj/courses/2000.winter/csc220/ papers/rup_best_practices/rup_bestpractices.pdf 2. R. Max Wideman P.Eng.: Webov´e str´anky projektov´eho manaˇzera http://www.maxwideman. com/papers/linearity/waterfall.htm 3. Manifest agiln´ıho v´ yvoje softwaru vydan´ y autory agiln´ıch metodik (http://www.agilemanifesto.org/) ˇ anky na webu vˇenovan´emu extr´emn´ımu programov´ 4. Don Wells: Cl´ an´ı http://www.extremeprogramming.org/ ˇ anky na webu vˇenovan´emu agiln´ımu programov´ 5. Bill Wake: Cl´ an´ı http://xp123.com/ 6. Lee Copeland: Extreme Programming http://www.computerworld.com/s/article/66192/Extreme_Programming?taxonomyId= 063 7. Webov´ a publikace autor˚ u Lean development http://www.poppendieck.com/ - odstavec Create Pull and Flow 8. Mary Poppendieck: Principles of Lean Thinking www.poppendieck.com/papers/LeanThinking.pdf 9. V´ aclav Kadlec: Agiln´ı programov´ an´ı 10. Introduction to Scrum, An Agile Process - Popis metodiky Scrum na webov´ ych str´ank´ ach spoleˇcnosti Mountain Goat Software http://www.mountaingoatsoftware.com/ 53
LITERATURA
54
11. Popis metodiky Scrum na webov´ ych str´ank´ ach organizace Scrum Alliance
http://www.scrumalliance.org/articles/46-advice-on-conducting-the-scrum-of-scrums-meeting 12. The Classic Story of the Pig and Chicken http://www.implementingscrum.com/2006/09/11/the-classic-story-of-the-pig-and-chicken/ 13. Ken Schwaber, Jeff Sutherland: SCRUM http://www.scrum.org/storage/scrumguides/Scrum%20Guide.pdf#view=fit ˇ anky na webu vˇenovan´e Scrum 14. Cl´ http://www.sprintplanning.com/SprintPlanningRules.aspx ˇ anky o FDD na webu spoleˇcnosti Nebulon Pty. Ltd. Jeff De Luca: Cl´ 15. http://www.nebulon.com/fdd/index.html 16. http://www.nebulon.com/articles/fdd/originalfdd.html 17. http://www.nebulon.com/articles/fdd/latestfdd.html 18. http://www.nebulon.com/articles/fdd/download/fddprocessesUSLetter.pdf Diskusn´ı f´orum pro autory i uˇzivatele FDD 20. http://www.featuredrivendevelopment.com/node/768 21. http://www.featuredrivendevelopment.com/node/617 22. http://www.featuredrivendevelopment.com/node/566 23. Magaz´ın o v´ yvoji softwaru http://www.methodsandtools.com/archive/archive.php?id=19 24. Peter Coad, Eric Lefebvre, Jeff De Luca: Java Modeling In Color With UML ˇ anky o agiln´ıch technik´ 25. Scott W. Ambler: Cl´ ach na webu hlavn´ıho metodika spoleˇcnosti IBM http://www.agiledata.org/essays/tdd.html Magaz´ın o v´ yvoji softwaru 20. http://www.methodsandtools.com/archive/archive.php?id=20 21. http://www.methodsandtools.com/archive/archive.php?id=59 ˇ anek na webu zamˇeˇren´em na v´ 22. Jacob Proffitt: Cl´ yvoj softwaru http://theruntime.com/ blogs/jacob/archive/2008/01/22/tdd-proven-effective-or-is-it.aspx
LITERATURA
55
ˇ anky manaˇzera v Microsoftu http://haacked.com/archive/2008/01/22/ 23. Phil Haack: Cl´ research-supports-the-effectiveness-of-tdd.aspx 24. Tracy Reppert: Storytest-driven development is an extreme programming practice http: //industriallogic.com/papers/storytest.pdf
56
LITERATURA
Pˇ r´ıloha A
Popis ˇ cinnosti modulu do syst´ emu DisCo Jde o seznam u ´kol˚ u, kde v lev´e ˇc´ asti jsou ˇrazeny u ´koly ke splnˇen´ı a v prav´e jsou zpracov´ avan´e u ´koly. Kaˇzd´ y nesplnˇen´ yu ´kol m´a b´ yt zobrazen. Kaˇzd´ yu ´kol m´a tyto vlastnosti: 1. n´azev 2. lokalita (pro moˇznost automaticky sv´ azat nˇekolik u ´kol˚ u za sebe) 3. priorita 4. unik´atn´ı poˇradov´e ˇc´ıslo, kter´e se generuje automaticky podle aktu´aln´ı pozice 5. popis
I
II
ˇ ´ILOHA A. POPIS CINNOSTI ˇ ´ PR MODULU DO SYSTEMU DISCO
Obr´ azek A.1: N´ahled na aplikaci
Pˇ r´ıloha B
Obsah pˇ riloˇ zen´ eho CD K t´eto pr´ aci je pˇriloˇzeno CD, na kter´em jsou uloˇzeny zdrojov´e k´ody. • Adres´aˇr DisCo: Program seznamu u ´kol˚ u v jazyce C# • Adres´aˇr Literatura: Nˇeker´e dokumenty uveden´e v seznamu literatury • Soubor Bakalrska_prace_A_Hamr.pdf: Tento dokument
III