{"id":1296,"date":"2011-03-15T15:10:52","date_gmt":"2011-03-15T14:10:52","guid":{"rendered":"http:\/\/blog.websupport.sk\/?p=1296"},"modified":"2025-03-11T21:18:13","modified_gmt":"2025-03-11T20:18:13","slug":"ws-agilne-extremne-programovanie-xp","status":"publish","type":"post","link":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/","title":{"rendered":"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP)"},"content":{"rendered":"<p>V p\u0159edchoz\u00ed \u010d\u00e1sti jsme si n\u011bco \u0159ekli o agiln\u00edch metodik\u00e1ch jako celku: co maj\u00ed spole\u010dn\u00e9ho a na jak\u00fdch principech stoj\u00ed. V t\u00e9to \u010d\u00e1sti se bl\u00ed\u017ee pod\u00edv\u00e1me na principy Extr\u00e9mn\u00edho programov\u00e1n\u00ed.<\/p>\n<p><!--more-->Tuto metodiku zavedl <a title=\"Kent Beck\" href=\"http:\/\/en.wikipedia.org\/wiki\/Kent_Beck\" target=\"_blank\">Kent Beck<\/a>, poprv\u00e9 byla pou\u017eita v roce 1996. Jej\u00edm z\u00e1kladem je jednoduch\u00fd, realistick\u00fd zp\u016fsob my\u0161len\u00ed, pou\u017e\u00edv\u00e1n\u00ed pom\u011brn\u011b standardn\u00edch princip\u016f a postup\u016f, jako psan\u00ed k\u00f3du, testov\u00e1n\u00ed, atd.. Co je na tom extr\u00e9mn\u00ed? My\u0161lenky dota\u017een\u00e9 do extr\u00e9m\u016f. D\u00edky tomu je mo\u017en\u00e9 dos\u00e1hnout vy\u0161\u0161\u00ed kvality a pru\u017en\u011bji reagovat na zm\u011bny klientov\u00fdch po\u017eadavk\u016f b\u011bhem v\u00fdvoje. Mana\u017ee\u0159i, z\u00e1kazn\u00edci i develope\u0159i tvo\u0159\u00ed jeden t\u00fdm. Ten se samoorganizuje tak, aby bylo vy\u0159e\u0161en\u00ed probl\u00e9m\u016f co nejefektivn\u011bj\u0161\u00ed. Pod\u00edvejme se na z\u00e1kladn\u00ed pravidla.<\/p>\n<h4>Pl\u00e1nov\u00e1n\u00ed<\/h4>\n<p>Z\u00e1kladn\u00ed po\u017eadavky jsou seps\u00e1ny do celk\u016f <strong>(User stories)<\/strong>, kter\u00e9 je mo\u017en\u00e9 odhadnout a za\u0159adit do <strong>iterac\u00ed<\/strong>. Je to v podstat\u011b ekvivalent rozs\u00e1hl\u00fdch dokument\u016f s rozebran\u00fdmi po\u017eadavky. Ka\u017ed\u00e1 story je definov\u00e1na tak, aby bylo jasn\u00e9, co v sob\u011b zahrnuje. Nedostate\u010dn\u00e9 pochopen\u00ed by mohlo zp\u016fsobit chybu v odhadu. Je d\u016fle\u017eit\u00e9, aby se ka\u017ed\u00e1 story zam\u011b\u0159ovala na to, co klient pot\u0159ebuje, bez zbyte\u010dn\u00fdch detail\u016f pou\u017eit\u00fdch technologi\u00ed. S user stories p\u0159\u00edmo souvis\u00ed vznik <strong>akcepta\u010dn\u00edch test\u016f.<\/strong> Slou\u017e\u00ed k ov\u011b\u0159en\u00ed zda byla d\u00e1na po\u017eadavek implementov\u00e1na podle p\u0159edstav. Jedn\u00edm ze zn\u00e1m\u011bj\u0161\u00edch testovac\u00edch framework\u016f je <a title=\"Selenium\" href=\"http:\/\/seleniumhq.org\/\" target=\"_blank\">Selenium<\/a>.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.globalnerdy.com\/2007\/11\/28\/dilbert-on-extreme-and-agile-programming\/\"><img loading=\"lazy\" decoding=\"async\" class=\" aligncenter\" title=\"User stories\" src=\"http:\/\/globalnerdy.com\/wordpress\/wp-content\/uploads\/2007\/11\/dilbert-xp02.gif\" alt=\"Comic strip: Dilbert \u2013 User stories\" width=\"415\" height=\"146\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">I v\u00fdvoj je rozd\u011blen do iterac\u00ed, av\u0161ak nen\u00ed p\u0159esn\u011b definov\u00e1na jejich velikost. P\u0159izp\u016fsobuje se po\u017eadavk\u016fm klienta a \u010dasto jsou extr\u00e9mn\u011b kr\u00e1tk\u00e9. D\u016fle\u017eit\u00e9 je \u010dast\u00e9 vyd\u00e1v\u00e1n\u00ed releas\u016f s novou funkcionalitou.<\/p>\n<h4>Mana\u017eov\u00e1n\u00ed<\/h4>\n<p>Mezi nejd\u016fle\u017eit\u011bj\u0161\u00ed pravidla mana\u017eov\u00e1n\u00ed pat\u0159\u00ed napl\u00e1nov\u00e1n\u00ed iterace tak, aby byl t\u00fdm schopn\u00fd prov\u00e1d\u011bt v\u0161echny napl\u00e1novan\u00e9 story. P\u0159\u00edli\u0161 mnoho p\u0159es\u010das\u016f dlouhodob\u011b sni\u017euje jeho v\u00fdkon. Krom\u011b toho je t\u0159eba nep\u0159etr\u017eit\u011b sledovat postup prac\u00ed, eliminovat rizika a p\u0159\u00edpadn\u011b nutnosti konzultovat s klientem p\u0159elo\u017een\u00ed m\u00e9n\u011b prioritn\u00edch stories do dal\u0161\u00ed iterace.<\/p>\n<p>Jin\u00fdm d\u016fle\u017eit\u00fdm principem je <strong>zastupitelnost<\/strong>. \u010clenov\u00e9 t\u00fdmu by se m\u011bli p\u0159i implementaci po\u017eadavk\u016f do jednotliv\u00fdch \u010d\u00e1st\u00ed projektu st\u0159\u00eddat. Nem\u016f\u017ee nastat situace, \u017ee pouze jedin\u00fd \u010dlen t\u00fdmu bude m\u00edt p\u0159ehled o tom, jak funguje n\u011bjak\u00e1 \u010d\u00e1st syst\u00e9mu. P\u0159i pl\u00e1nov\u00e1n\u00ed je takov\u00fd p\u0159\u00edstup velkou v\u00fdhodou.<\/p>\n<p>Extr\u00e9mn\u00edmu programov\u00e1n\u00ed t\u0159eba p\u0159izp\u016fsobit i pracovn\u00ed prost\u0159ed\u00ed. Za\u0159\u00edzen\u00ed by m\u011blo zohled\u0148ovat neust\u00e1lou komunikaci. Ide\u00e1ln\u00ed je openspace s tabulemi na r\u016fzn\u00e9 n\u00e1\u010drty a seznamem \u00fakol\u016f, kter\u00e9 je t\u0159eba ud\u011blat.<\/p>\n<p>\u010cast\u00fdm probl\u00e9mem ve firm\u00e1ch b\u00fdvaj\u00ed dlouh\u00e9 meetingy, kter\u00e9 je t\u0159eba pl\u00e1novat dop\u0159edu. Extr\u00e9mn\u011b programov\u00e1n\u00ed vyu\u017e\u00edv\u00e1, tak jako dal\u0161\u00ed agiln\u00ed metodiky, <strong>stand up meetings<\/strong>. B\u00fdvaj\u00ed obvykle r\u00e1no. T\u00fdm na nich stru\u010dn\u011b poinformuje a vykomunikuje probl\u00e9my a jejich \u0159e\u0161en\u00ed. Rychl\u00e9 meetingy pom\u00e1haj\u00ed udr\u017eet t\u00fdm soust\u0159ed\u011bn\u00fd. Je d\u016fle\u017eit\u00e9, aby se p\u0159i stand up meetingu st\u00e1lo. Podporuje to efektivn\u00ed a rychl\u00e9 vyjad\u0159ov\u00e1n\u00ed.<\/p>\n<p>&nbsp;<\/p>\n<p>Ka\u017ed\u00fd \u010dlen t\u00fdmu mus\u00ed p\u0159esn\u011b v\u011bd\u011bt, co m\u016f\u017ee o\u010dek\u00e1vat od ostatn\u00edch. Pom\u00e1haj\u00ed tomu z\u00e1kladn\u00ed hodnoty a pravidla Extr\u00e9mn\u00edho programov\u00e1n\u00ed. Pokud n\u011bkter\u00e9 z t\u011bchto pravidel nefunguj\u00ed, t\u0159eba je upravovat a zlep\u0161ovat na pravideln\u00fdch <strong>retrospektivn\u00edch meetinc\u00edch.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h4>Architektura<\/h4>\n<p>Z\u00e1kladem je <strong>jednoduchost<\/strong>. Implementace jednodu\u0161\u0161\u00edho designu je v\u017edy krat\u0161\u00ed ne\u017e implementace komplexn\u011bj\u0161\u00edho.<\/p>\n<p>Extr\u00e9mn\u011b programov\u00e1n\u00ed vyu\u017e\u00edv\u00e1 takzvanou <strong>syst\u00e9movou metaforu<\/strong>. Je to metafora pro jednoduchou architekturu s n\u011bkolika kvalitami. Jedna z nejd\u016fle\u017eit\u011bj\u0161\u00edch je jej\u00ed snadn\u00e1 vysv\u011btlitelnost, bez sepisov\u00e1n\u00ed rozs\u00e1hl\u00fdch dokument\u016f. Dal\u0161\u00ed kvalita je konzistentnost ozna\u010dov\u00e1n\u00ed t\u0159\u00edd a metod. Dobr\u00e9 n\u00e1zvoslov\u00ed v\u00fdznamn\u011b pom\u00e1h\u00e1 lep\u0161\u00edmu porozum\u011bn\u00ed celkov\u00e9 architektury.<\/p>\n<p>Je d\u016fle\u017eit\u00e9 implementovat jen funkcionalitu, kter\u00e1 je nezbytn\u00e1 a klient ji po\u017eaduje. Nesm\u00edme zapom\u00ednat ani na neust\u00e1le <strong>refaktorov\u00e1n\u00ed<\/strong> k\u00f3du. V mnoha p\u0159\u00edpadech je efektivn\u011b pou\u017e\u00edt i <a title=\"Spike solutions\" href=\"http:\/\/jamesshore.com\/Agile-Book\/spike_solutions.html\" target=\"_blank\">Spike \u0159e\u0161en\u00ed<\/a>. Jsou to jednoduch\u00e9 experimenty, kter\u00e9 slou\u017e\u00ed k rychlej\u0161\u00edmu vy\u0159e\u0161en\u00ed probl\u00e9m\u016f. V podstat\u011b jde o kousky k\u00f3d\u016f nebo program\u016f, kter\u00e9 lze ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f po odhalen\u00ed chyby zahodit. \u010casto se pou\u017e\u00edvaj\u00ed na brainstormov\u00e1n\u00ed OOP aplikac\u00ed i <a title=\"CRC Cards\" href=\"http:\/\/www.extremeprogramming.org\/rules\/crccards.html\" target=\"_blank\">CRC karty<\/a><em><\/em>.<\/p>\n<h4>Programov\u00e1n\u00ed<\/h4>\n<p>Jeliko\u017e program\u00e1to\u0159i nemaj\u00ed k dispozici kompletn\u00ed specifikaci aplikace, je nezbytn\u00e9, aby byl z\u00e1kazn\u00edk neust\u00e1le dostupn\u00fd na projedn\u00e1n\u00ed p\u0159\u00edpadn\u00fdch nesrovnalost\u00ed. Spolupracuje s t\u00fdmem na vytv\u00e1\u0159en\u00ed stories a odhad\u016f a ur\u010duje jejich prioritu.<\/p>\n<p>&nbsp;<\/p>\n<p>Ka\u017ed\u00fd jeden kousek k\u00f3du, kter\u00fd jde do produkce se programuje v p\u00e1rech. <strong>Pair programming<\/strong> je metoda, p\u0159i n\u00ed\u017e sed\u00ed dva program\u00e1to\u0159i za jedn\u00edm PC. Zku\u0161enost \u0159\u00edk\u00e1, \u017ee pokud p\u00e1r p\u0159ekon\u00e1 jist\u00e9 soci\u00e1ln\u00ed z\u00e1brany a program\u00e1to\u0159i si uv\u011bdom\u00ed svou rovnocennost, dok\u00e1\u017e\u00ed za stejn\u00fd \u010das implementovat stejn\u00e9 mno\u017estv\u00ed funkcionality, jako kdyby pracovali ka\u017ed\u00fd s\u00e1m. P\u0159idan\u00e1 hodnota spo\u010d\u00edv\u00e1 v kvalitn\u011bj\u0161\u00edm k\u00f3du a mnohem men\u0161\u00ed chybovosti.<\/p>\n<p>&nbsp;<\/p>\n<p>Extr\u00e9mn\u00ed programov\u00e1n\u00ed vyu\u017e\u00edv\u00e1 i principy <strong>Test driven developmentu<\/strong>. P\u0159ed vytvo\u0159en\u00edm jak\u00e9koliv funkcionality mus\u00ed b\u00fdt nejprve naps\u00e1n jednotkov\u00fd test (unit test). V p\u0159\u00edpad\u011b pou\u017eit\u00ed PHP je mo\u017en\u00e9 pou\u017e\u00edt <a href=\"https:\/\/github.com\/sebastianbergmann\/phpunit\/\" target=\"_blank\">PHPUnit<\/a> framework. Podobn\u00e9 testovac\u00ed frameworky jsou dostupn\u00e9 i pro <a href=\"http:\/\/en.wikipedia.org\/wiki\/JUnit\" target=\"_blank\">jin\u00e9 jazyky<\/a>. Psan\u00ed test\u016f p\u0159ed funkcionalitou nut\u00ed program\u00e1tory implementovanou funkcionalitu podrobn\u011b analyzovat. D\u00edvaj\u00ed se na novou funkcionalitu jako na \u010dernou sk\u0159\u00ed\u0148ku, o n\u00ed\u017e v\u011bd\u00ed, jak\u00fd bude m\u00edt vstup a jak\u00fd v\u00fdstup. Mus\u00ed napsat test, kter\u00fd pro v\u0161echny mo\u017en\u00e9 vstupy otestuje spr\u00e1vn\u00fd v\u00fdstup. Jeliko\u017e testujeme funkcionalitu, kter\u00e1 je\u0161t\u011b neexistuje, testy mus\u00ed failovat. Postupn\u00fdm proveden\u00edm funkcionality by m\u011bly testy proch\u00e1zet. Nesm\u00ed se vydat nov\u00fd release, ani\u017e n\u011bkter\u00fd z test\u016f nepro\u0161el.<\/p>\n<p>Releasovan\u00ed hotov\u00e9 funkcionality uskute\u010d\u0148uje v\u017edy jen jeden p\u00e1r. Ide\u00e1ln\u00ed je m\u00edt na releasovan\u00ed vyhrazen\u00fd jeden po\u010d\u00edta\u010d, aby i ostatn\u00ed vid\u011bli, kdy je obsazen a releasuje se.<\/p>\n<p>Zdrojov\u00fd k\u00f3d je vlastnictv\u00edm cel\u00e9ho t\u00fdmu. Znamen\u00e1 to, \u017ee ka\u017ed\u00fd m\u016f\u017ee d\u011blat zm\u011bny v cel\u00e9m projektu, jak opravovat chyby, tak p\u0159id\u00e1vat novou funkcionalitu.<\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"text-align: justify;\">Testov\u00e1n\u00ed<\/h4>\n<p style=\"text-align: justify;\">Testovat je t\u0159eba v\u0161echno, neust\u00e1le a po\u0159\u00e1d. Psan\u00ed unit test\u016f rychleji pom\u00e1h\u00e1 odhalovat chyby i pozd\u011bji b\u011bhem v\u00fdvoje. Stejn\u011b se p\u00ed\u0161\u00ed unit testy i na chyby. Krom\u011b unit test\u016f se ov\u0161em spou\u0161t\u011bj\u00ed i akcepta\u010dn\u00ed testy na ka\u017edou story a zapisuj\u00ed se jejich v\u00fdsledky. Story nen\u00ed dokon\u010dena pokud neprojde v\u0161emi akcepta\u010dn\u00edmi testy.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"Extreme programming project\" src=\"http:\/\/www.extremeprogramming.org\/map\/images\/project.gif\" alt=\"\" width=\"504\" height=\"217\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Z\u00e1kladn\u00ed hodnoty\u00a0extr\u00e9mn\u00edho\u00a0programov\u00e1n\u00ed:<\/p>\n<ul>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0<strong>Jednoduchost<\/strong>\u00a0&#8211; z\u00e1klad\u00a0je vytvo\u0159it\u00a0co nejjednodu\u0161\u0161\u00ed\u00a0verzi,\u00a0kter\u00e1 bude spl\u0148ovat po\u017eadavky\u00a0a z\u00e1rove\u0148\u00a0bude fungovat.<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0<strong>Komunikace<\/strong> &#8211;\u00a0v\u0161ichni jsou\u00a0sou\u010d\u00e1st\u00ed t\u00fdmu\u00a0a\u00a0spolupracuj\u00ed\u00a0spolu\u00a0od\u00a0po\u017eadavk\u016f a\u017e po\u00a0samotn\u00e9psan\u00ed\u00a0k\u00f3du.<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0<strong>Zp\u011btn\u00e1 vazba<\/strong>\u00a0&#8211;\u00a0ka\u017edou\u00a0iteraci\u00a0t\u0159eba br\u00e1t\u00a0seri\u00f3zn\u011b,\u00a0demonstrovat\u00a0hotov\u00fd\u00a0k\u00f3d\u00a0brzy a\u00a0\u010dasto,pozorn\u011b naslouchat\u00a0p\u0159ipom\u00ednk\u00e1m<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0<strong>Odvaha<\/strong>\u00a0&#8211;\u00a0v\u017edy je t\u0159eba\u00a0mluvit\u00a0pravdu\u00a0o pr\u016fb\u011bhu a\u00a0odhadech,\u00a0net\u0159eba\u00a0se ni\u010deho b\u00e1t,\u00a0proto\u017ee nikdo\u00a0nepracuje\u00a0s\u00e1m,\u00a0ale v\u0161ichni\u00a0jako t\u00fdm<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0<strong>Respekt<\/strong>\u00a0&#8211;\u00a0\u010dlenov\u00e9\u00a0t\u00fdmu se mus\u00ed respektovat\u00a0a pom\u00e1hat\u00a0si,\u00a0proto\u017ee jsou\u00a0v\u0161ichni\u00a0rovnocenn\u00ed<\/li>\n<\/ul>\n<p>Bl\u00ed\u017ee pops\u00e1ny\u00a0procesy,\u00a0pravidla a\u00a0hodnoty\u00a0Extr\u00e9mn\u00edho\u00a0programov\u00e1n\u00ed\u00a0m\u016f\u017eete nal\u00e9zt na <a title=\"Extreme programming\" href=\"http:\/\/www.extremeprogramming.org\" target=\"_blank\">http:\/\/www.extremeprogramming.org<\/a><\/p>\n<p>Mat\u00fa\u0161 Kosa (<a href=\"http:\/\/twitter.com\/fetket\" target=\"_blank\">@fetket<\/a>)<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>V p\u0159edchoz\u00ed \u010d\u00e1sti jsme si n\u011bco \u0159ekli o agiln\u00edch metodik\u00e1ch jako celku: co maj\u00ed spole\u010dn\u00e9ho a na jak\u00fdch principech stoj\u00ed. V t\u00e9to \u010d\u00e1sti se bl\u00ed\u017ee pod\u00edv\u00e1me na principy Extr\u00e9mn\u00edho programov\u00e1n\u00ed.<\/p>\n","protected":false},"author":29,"featured_media":1319,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[165,159,163,164],"class_list":["post-1296","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-acceptance-testing","tag-extreme-programming","tag-selenium","tag-unit-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP) - Websupport.cz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP) - Websupport.cz Blog\" \/>\n<meta property=\"og:description\" content=\"V p\u0159edchoz\u00ed \u010d\u00e1sti jsme si n\u011bco \u0159ekli o agiln\u00edch metodik\u00e1ch jako celku: co maj\u00ed spole\u010dn\u00e9ho a na jak\u00fdch principech stoj\u00ed. V t\u00e9to \u010d\u00e1sti se bl\u00ed\u017ee pod\u00edv\u00e1me na principy Extr\u00e9mn\u00edho programov\u00e1n\u00ed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/\" \/>\n<meta property=\"og:site_name\" content=\"Websupport.cz Blog\" \/>\n<meta property=\"article:published_time\" content=\"2011-03-15T14:10:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-11T20:18:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2011\/03\/extremecoding.png\" \/>\n\t<meta property=\"og:image:width\" content=\"517\" \/>\n\t<meta property=\"og:image:height\" content=\"112\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matus Kosa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napsal(a)\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matus Kosa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/\"},\"author\":{\"name\":\"Matus Kosa\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#\\\/schema\\\/person\\\/495a0c9e2f4491e5bcb308bd82cf560d\"},\"headline\":\"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP)\",\"datePublished\":\"2011-03-15T14:10:52+00:00\",\"dateModified\":\"2025-03-11T20:18:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/\"},\"wordCount\":1386,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/app\\\/uploads\\\/2011\\\/03\\\/extremecoding.png\",\"keywords\":[\"acceptance testing\",\"extreme programming\",\"selenium\",\"unit testing\"],\"articleSection\":[\"Technologie\"],\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/\",\"name\":\"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP) - Websupport.cz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/app\\\/uploads\\\/2011\\\/03\\\/extremecoding.png\",\"datePublished\":\"2011-03-15T14:10:52+00:00\",\"dateModified\":\"2025-03-11T20:18:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/app\\\/uploads\\\/2011\\\/03\\\/extremecoding.png\",\"contentUrl\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/app\\\/uploads\\\/2011\\\/03\\\/extremecoding.png\",\"width\":517,\"height\":112},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/2011\\\/03\\\/ws-agilne-extremne-programovanie-xp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/\",\"name\":\"Websupport.cz Blog\",\"description\":\"Webujte s lehkost\u00ed\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#organization\",\"name\":\"Websupport.cz Blog\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/app\\\/uploads\\\/2021\\\/06\\\/websupport-logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/app\\\/uploads\\\/2021\\\/06\\\/websupport-logo.svg\",\"width\":153,\"height\":48,\"caption\":\"Websupport.cz Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/#\\\/schema\\\/person\\\/495a0c9e2f4491e5bcb308bd82cf560d\",\"name\":\"Matus Kosa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dd01d3fe78fbd613f4a484241195d479b4fea1c3612507eda3b2bcb03ee32f7e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dd01d3fe78fbd613f4a484241195d479b4fea1c3612507eda3b2bcb03ee32f7e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dd01d3fe78fbd613f4a484241195d479b4fea1c3612507eda3b2bcb03ee32f7e?s=96&d=mm&r=g\",\"caption\":\"Matus Kosa\"},\"url\":\"https:\\\/\\\/www.websupport.cz\\\/blog\\\/author\\\/fetket\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP) - Websupport.cz Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/","og_locale":"cs_CZ","og_type":"article","og_title":"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP) - Websupport.cz Blog","og_description":"V p\u0159edchoz\u00ed \u010d\u00e1sti jsme si n\u011bco \u0159ekli o agiln\u00edch metodik\u00e1ch jako celku: co maj\u00ed spole\u010dn\u00e9ho a na jak\u00fdch principech stoj\u00ed. V t\u00e9to \u010d\u00e1sti se bl\u00ed\u017ee pod\u00edv\u00e1me na principy Extr\u00e9mn\u00edho programov\u00e1n\u00ed.","og_url":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/","og_site_name":"Websupport.cz Blog","article_published_time":"2011-03-15T14:10:52+00:00","article_modified_time":"2025-03-11T20:18:13+00:00","og_image":[{"width":517,"height":112,"url":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2011\/03\/extremecoding.png","type":"image\/png"}],"author":"Matus Kosa","twitter_card":"summary_large_image","twitter_misc":{"Napsal(a)":"Matus Kosa","Odhadovan\u00e1 doba \u010dten\u00ed":"7 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#article","isPartOf":{"@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/"},"author":{"name":"Matus Kosa","@id":"https:\/\/www.websupport.cz\/blog\/#\/schema\/person\/495a0c9e2f4491e5bcb308bd82cf560d"},"headline":"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP)","datePublished":"2011-03-15T14:10:52+00:00","dateModified":"2025-03-11T20:18:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/"},"wordCount":1386,"commentCount":0,"publisher":{"@id":"https:\/\/www.websupport.cz\/blog\/#organization"},"image":{"@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2011\/03\/extremecoding.png","keywords":["acceptance testing","extreme programming","selenium","unit testing"],"articleSection":["Technologie"],"inLanguage":"cs","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/","url":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/","name":"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP) - Websupport.cz Blog","isPartOf":{"@id":"https:\/\/www.websupport.cz\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#primaryimage"},"image":{"@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2011\/03\/extremecoding.png","datePublished":"2011-03-15T14:10:52+00:00","dateModified":"2025-03-11T20:18:13+00:00","breadcrumb":{"@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/"]}]},{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#primaryimage","url":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2011\/03\/extremecoding.png","contentUrl":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2011\/03\/extremecoding.png","width":517,"height":112},{"@type":"BreadcrumbList","@id":"https:\/\/www.websupport.cz\/blog\/2011\/03\/ws-agilne-extremne-programovanie-xp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.websupport.cz\/blog\/"},{"@type":"ListItem","position":2,"name":"WS Agilne: Extr\u00e9mn\u00ed Programov\u00e1n\u00ed (XP)"}]},{"@type":"WebSite","@id":"https:\/\/www.websupport.cz\/blog\/#website","url":"https:\/\/www.websupport.cz\/blog\/","name":"Websupport.cz Blog","description":"Webujte s lehkost\u00ed","publisher":{"@id":"https:\/\/www.websupport.cz\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.websupport.cz\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"},{"@type":"Organization","@id":"https:\/\/www.websupport.cz\/blog\/#organization","name":"Websupport.cz Blog","url":"https:\/\/www.websupport.cz\/blog\/","logo":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/www.websupport.cz\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2021\/06\/websupport-logo.svg","contentUrl":"https:\/\/www.websupport.cz\/blog\/app\/uploads\/2021\/06\/websupport-logo.svg","width":153,"height":48,"caption":"Websupport.cz Blog"},"image":{"@id":"https:\/\/www.websupport.cz\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.websupport.cz\/blog\/#\/schema\/person\/495a0c9e2f4491e5bcb308bd82cf560d","name":"Matus Kosa","image":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/secure.gravatar.com\/avatar\/dd01d3fe78fbd613f4a484241195d479b4fea1c3612507eda3b2bcb03ee32f7e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dd01d3fe78fbd613f4a484241195d479b4fea1c3612507eda3b2bcb03ee32f7e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd01d3fe78fbd613f4a484241195d479b4fea1c3612507eda3b2bcb03ee32f7e?s=96&d=mm&r=g","caption":"Matus Kosa"},"url":"https:\/\/www.websupport.cz\/blog\/author\/fetket\/"}]}},"_links":{"self":[{"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/posts\/1296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/comments?post=1296"}],"version-history":[{"count":6,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/posts\/1296\/revisions"}],"predecessor-version":[{"id":5367,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/posts\/1296\/revisions\/5367"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/media\/1319"}],"wp:attachment":[{"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/media?parent=1296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/categories?post=1296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.websupport.cz\/blog\/wp-json\/wp\/v2\/tags?post=1296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}