{"id":295,"date":"2010-06-01T16:50:33","date_gmt":"2010-06-01T15:50:33","guid":{"rendered":"http:\/\/agile.sk\/?p=295"},"modified":"2010-06-02T09:22:35","modified_gmt":"2010-06-02T08:22:35","slug":"agilne-vzory-riadenia-i","status":"publish","type":"post","link":"https:\/\/agile.sk\/?p=295","title":{"rendered":"Agiln\u00e9 vzory riadenia I."},"content":{"rendered":"<p><!-- \t\t@page { margin: 2cm } \t\tP { margin-bottom: 0.21cm } \t\tA:link { so-language: zxx } --><\/p>\n<p style=\"margin-bottom: 0cm\" align=\"JUSTIFY\">Za mojich chlap\u010densk\u00fdch \u010dias ma v\u017edy fascinovala sklada\u010dka Lego. \u00da\u017easn\u00e9 na tom bolo, \u017ee z jednoduch\u00fdch k\u00faskov ste mohli postava\u0165 \u010doko\u013evek. Potrebovali ste len tie spr\u00e1vne k\u00fasky a vedie\u0165, \u010do chcete postavi\u0165. Mohli ste si k\u00fapi\u0165 pir\u00e1tsku lo\u010f, postavi\u0165 ju, potom ju rozobra\u0165, niektor\u00e9 k\u00fasky da\u0165 nabok a postavi\u0165 pr\u00edstav. \u010c\u00edm men\u0161ie tie k\u00fasky boli, t\u00fdm v\u00e4\u010d\u0161iu ste mali vo\u013enos\u0165 v stavan\u00ed.<\/p>\n<p style=\"background: none repeat scroll 0% 0% transparent\" align=\"JUSTIFY\">Ke\u010f som sa nesk\u00f4r po\u010das svojej pr\u00e1ce stretol s prv\u00fdmi n\u00e1vrhov\u00fdmi <span style=\"color: #000000\"><span style=\"text-decoration: none\">vzormi<\/span><\/span><span style=\"text-decoration: none\"> <\/span>v objektovo orientovanom programovan\u00ed, na\u0161iel som v nich op\u00e4\u0165 rovnak\u00fd princ\u00edp ako malo Lego. Pomocou jednoduch\u00fdch prvkov, ako je napr\u00edklad dedenie, pre\u0165a\u017eenie, prekrytie met\u00f3dy alebo polymorfizmy, je mo\u017en\u00e9 vytvori\u0165 ve\u013ek\u00e9 mno\u017estvo r\u00f4zne spolupracuj\u00facich tried, ktor\u00e9 umo\u017e\u0148uj\u00fa pomerne elegantne rie\u0161i\u0165 aj zlo\u017eitej\u0161ie probl\u00e9my.<\/p>\n<p align=\"JUSTIFY\">Pr\u00edklady tak\u00fdchto probl\u00e9mov a ich rie\u0161en\u00ed:<\/p>\n<p align=\"JUSTIFY\"><em>Probl\u00e9m<\/em>: Potrebujem vymie\u0148a\u0165 nieko\u013eko druhov algoritmov, ktor\u00e9 realizuj\u00fa jeden proces po\u010das behu aplik\u00e1cie na z\u00e1klade ur\u010dit\u00fdch stavov\u00fdch premenn\u00fdch.<\/p>\n<p align=\"JUSTIFY\"><em><span style=\"font-weight: normal\">Rie\u0161enie<\/span><\/em>: abstraktn\u00e1 trieda + rozhranie + prekrytie met\u00f3dy + odvoden\u00e1 trieda x po\u010det r\u00f4znych algoritmov = vzor \u201estrategy\u201c<\/p>\n<p align=\"JUSTIFY\"><em>Probl\u00e9m<\/em>: Potrebujem, aby akcia v syst\u00e9me bola reprezentovan\u00e1 objektom (kv\u00f4li povo\u013eovaniu, Undo \/ Redo funkci\u00e1m a pod.)<\/p>\n<p align=\"JUSTIFY\"><em>Rie\u0161enie<\/em>: rozhranie + agreg\u00e1cie + odkaz na met\u00f3du = vzor \u201ecommand\u201c<\/p>\n<p align=\"JUSTIFY\">Samozrejme pou\u017eitie vzorov nie je tak\u00e9 jednoduch\u00e9, ako som tu pop\u00edsal, ale moj\u00edm cie\u013eom bolo uk\u00e1za\u0165, \u017ee vzory s\u00fa sklada\u010dky jednoduch\u00fdch prvkov, ktor\u00e9 poskytuje objektovo orientovan\u00e9 programovanie za \u00fa\u010delom rie\u0161enia nejak\u00e9ho konkr\u00e9tneho probl\u00e9mu. Existencia vzorov nie je samozrejme obmedzen\u00e1 len na programovanie, ale d\u00e1 sa n\u00e1js\u0165 aj v procese testovania, komunik\u00e1ci\u00ed klient-server alebo mimo po\u010d\u00edta\u010dov\u00fdch vied, napr\u00edklad v architekt\u00fare alebo medzi\u013eudsk\u00fdch vz\u0165ahoch.<\/p>\n<p align=\"JUSTIFY\">A teraz k agiln\u00e9mu riadeniu. Vezmime si napr\u00edklad tak\u00fd Scrum. Je to met\u00f3da, ktor\u00e1 obsahuje nieko\u013eko agiln\u00fdch prakt\u00edk (produktov\u00fd backlog, retrospekt\u00edva at\u010f.). \u010co sa stane, ak si vyp\u00ed\u0161em agiln\u00e9 praktiky, ktor\u00e9 obsahuje, niektor\u00e9 \u0161ktrnem, in\u00e9 dop\u00ed\u0161em a potom to zlo\u017e\u00edm nasp\u00e4\u0165? No mohol by som dosta\u0165 Kanban. Scrum s Kanbanom sa toti\u017e prekr\u00fdvaj\u00fa v niektor\u00fdch praktik\u00e1ch, ktor\u00e9 pou\u017e\u00edvaj\u00fa.<\/p>\n<p style=\"text-align: center\" align=\"JUSTIFY\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-296\" src=\"http:\/\/agile.sk\/wp-content\/uploads\/2010\/06\/ScrumNaKanban.jpg\" alt=\"Scrum Na Kanban\" width=\"556\" height=\"166\" \/><\/p>\n<p><!-- \t\t@page { margin: 2cm } \t\tP { margin-bottom: 0.21cm } \t\tA:link { so-language: zxx } --><\/p>\n<p style=\"margin-bottom: 0cm\" align=\"JUSTIFY\">A pr\u00e1ve to ma viedlo k tomu, \u017ee agiln\u00e1 met\u00f3da m\u00f4\u017ee by\u0165 sklada\u010dka. Ako Lego. M\u00f4\u017eete jednu met\u00f3du rozobra\u0165, niektor s\u00fa\u010diastky vymeni\u0165 a zlo\u017ei\u0165 in\u00fa met\u00f3du. Sta\u010d\u00ed len pozna\u0165 \u010dasti, ktor\u00e9 m\u00e1te k dispoz\u00edcii a vedie\u0165, \u010do chcete postav\u00ed\u0165.<\/p>\n<p align=\"JUSTIFY\">\u010co sa t\u00fdka t\u00fdch \u010dast\u00ed, tak n\u00e1m na za\u010diatok posta\u010d\u00ed <a href=\"http:\/\/www.noop.nl\/2009\/04\/the-big-list-of-agile-practices.html\">The Big List of Agile Practices<\/a> od Jurgena Appelo-a (mimochodom, jeho blog <a href=\"http:\/\/www.noop.nl\/\">www.noop.nl<\/a> vrele odpor\u00fa\u010dam). Ur\u010dite nie je \u00fapln\u00fd, ale obsahuje aspo\u0148 z\u00e1kladne veci.<\/p>\n<p align=\"JUSTIFY\">\u010co sa t\u00fdka probl\u00e9mu, ktor\u00fd m\u00e1 met\u00f3da rie\u0161i\u0165, tak tu sa vr\u00e1time sp\u00e4\u0165 k n\u00e1vrhov\u00fdm vzorom. Ako som p\u00edsal, tie s\u00fa ur\u010den\u00e9 na rie\u0161enie niektor\u00e9ho konkr\u00e9tneho probl\u00e9mu. Ak m\u00e1m jasn\u00e9, o ak\u00fd probl\u00e9m ide, pou\u017eijem vzor, ktor\u00fd ho rie\u0161i. Rovnak\u00fd postup by sa dal pou\u017ei\u0165 aj pri v\u00fdbere met\u00f3dy riadenia projektu. Sta\u010d\u00ed si len ujasni\u0165, \u010do potrebujeme.<\/p>\n<p align=\"JUSTIFY\"><span style=\"color: #000000\"> Tak\u017ee napr\u00edklad: M\u00e1me projekt, kde z\u00e1kazn\u00edk bude ur\u010dite meni\u0165 po\u017eiadavky, \u010falej sa projektu bude \u00fa\u010dastni\u0165 t\u00edm, ktor\u00fd nie je \u00faplne dobre zabehnut\u00fd a na z\u00e1ver projekt nem\u00e1 ve\u013ek\u00fd rozpo\u010det.<\/span><\/p>\n<p align=\"JUSTIFY\">\u010co potrebujeme:<\/p>\n<ul>\n<li>\n<p align=\"JUSTIFY\">kr\u00e1tke alebo \u017eiadne sprinty, aby sme vedeli \t\treagova\u0165 na po\u017eiadavky<\/p>\n<\/li>\n<li>\n<p align=\"JUSTIFY\">denn\u00e9 meetingy, aby sme zamedzili chaose v \t\tt\u00edme<\/p>\n<\/li>\n<li>Personas, aby sme neprodukovali nie\u010do, \u010do \t\tnikto nebude pou\u017e\u00edva\u0165 (t.j. odpad)<\/li>\n<\/ul>\n<p align=\"JUSTIFY\">\n<p align=\"JUSTIFY\">Tak\u00fdmto postupom viem identifikova\u0165 agiln\u00e9 praktiky, ktor\u00e9 v met\u00f3de potrebujem, aby som sa vyrovnal s po\u017eiadavkami na projekt. Treba si toti\u017e uvedomi\u0165, \u017ee praktiky, ktor\u00e9 s\u00fa v met\u00f3de obsiahnut\u00e9 ur\u010duj\u00fa jej vlastnosti. Tieto vlastnosti s\u00fa zase vy\u017eadovan\u00e9 prostred\u00edm, v ktorom sa projekt nach\u00e1dza (t.j. pr\u00edstup z\u00e1kan\u00edka, organiz\u00e1cia a pod.).<\/p>\n<p align=\"JUSTIFY\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-297\" src=\"http:\/\/agile.sk\/wp-content\/uploads\/2010\/06\/prostredieProjektu.jpg\" alt=\"Prostredie Projektu\" width=\"604\" height=\"453\" \/><\/p>\n<p><!-- \t\t@page { margin: 2cm } \t\tP { margin-bottom: 0.21cm } --><\/p>\n<p style=\"margin-bottom: 0cm\" align=\"JUSTIFY\">A teda na z\u00e1ver. Ak m\u00e1me n\u00e1vrhov\u00e9 vzory objektovo orientovan\u00e9ho programovania, ktor\u00e9 s\u00fa na rie\u0161enie probl\u00e9mov, m\u00f4\u017eeme ma\u0165 aj n\u00e1vrhov\u00e9 vzory agiln\u00e9ho riadenia na rie\u0161enie projektov. Tak ako pri n\u00e1vrhov\u00fdch vzoroch, by \u010dasom mohol niekde vznikn\u00fa\u0165 zoznam vzorov agiln\u00e9ho riadenia, kde by boli vyp\u00edsan\u00e9 zoznamy agiln\u00fdch prakt\u00edk, ktor\u00e9 tento vzor obsahuje a vlastnosti, ktor\u00e9 dan\u00fd vzor m\u00e1.<\/p>\n<p align=\"JUSTIFY\">Praktiky v Jurgenovom zozname m\u00f4\u017eeme v z\u00e1sade rozdeli\u0165 do dvoch kateg\u00f3ri\u00ed: procesn\u00e9 a objektov\u00e9 (cerem\u00f3nie a artefakty). Na to, \u010do to znamen\u00e1 a ak\u00e9 vlastnosti tieto praktiky prenes\u00fa na cel\u00fa met\u00f3du, sa pozrieme v \u010fal\u0161ej \u010dasti.<\/p>\n\n<!-- Facebook Like Button v1.9.6 BEGIN [http:\/\/blog.bottomlessinc.com] -->\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fagile.sk%2F%3Fp%3D295&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px; height: 30px; align: left; margin: 20px 0px 2px 0px\"><\/iframe>\n<!-- Facebook Like Button END -->\n","protected":false},"excerpt":{"rendered":"<p>Za mojich chlap\u010densk\u00fdch \u010dias ma v\u017edy fascinovala sklada\u010dka Lego. \u00da\u017easn\u00e9 na tom bolo, \u017ee z jednoduch\u00fdch k\u00faskov ste mohli postava\u0165 \u010doko\u013evek. Potrebovali ste len tie spr\u00e1vne k\u00fasky a vedie\u0165, \u010do chcete postavi\u0165. Mohli ste si k\u00fapi\u0165 pir\u00e1tsku lo\u010f, postavi\u0165 ju, potom ju rozobra\u0165, niektor\u00e9 k\u00fasky da\u0165 nabok a postavi\u0165 pr\u00edstav. \u010c\u00edm men\u0161ie tie k\u00fasky boli, [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"_links":{"self":[{"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts\/295"}],"collection":[{"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=295"}],"version-history":[{"count":7,"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts\/295\/revisions"}],"predecessor-version":[{"id":301,"href":"https:\/\/agile.sk\/index.php?rest_route=\/wp\/v2\/posts\/295\/revisions\/301"}],"wp:attachment":[{"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile.sk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}