{"id":332,"date":"2018-11-22T22:14:09","date_gmt":"2018-11-22T21:14:09","guid":{"rendered":"http:\/\/spireng.sk\/?p=332"},"modified":"2018-11-22T22:15:04","modified_gmt":"2018-11-22T21:15:04","slug":"anatomia-softverovej-architektury","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/anatomia-softverovej-architektury\/","title":{"rendered":"Anat\u00f3mia softv\u00e9rovej architekt\u00fary"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-333 alignleft\" src=\"http:\/\/spireng.sk\/wp-content\/uploads\/2018\/11\/fdsfdsa4f156-230x300.jpg\" alt=\"\" width=\"230\" height=\"300\" srcset=\"https:\/\/spireng.sk\/wp-content\/uploads\/2018\/11\/fdsfdsa4f156-230x300.jpg 230w, https:\/\/spireng.sk\/wp-content\/uploads\/2018\/11\/fdsfdsa4f156.jpg 307w\" sizes=\"auto, (max-width: 230px) 100vw, 230px\" \/>Existuj\u00fa knihy, o\u00a0ktor\u00fdch si mysl\u00edm, \u017ee by ich mal pre\u010d\u00edta\u0165 ka\u017ed\u00fd program\u00e1tor. V\u00e4\u010d\u0161inou obsahuj\u00fa vydestilovan\u00fa podstatu dobr\u00fdch program\u00e1torsk\u00fdch zvykov, ktor\u00e9 s\u00fa aplikovate\u013en\u00e9 na \u013eubovo\u013en\u00fd projekt. Jedna z\u00a0t\u00fdchto kn\u00edh, na ktor\u00fa som narazil dobr\u00fdch 10 rokov dozadu, bola Clean Code od Roberta C. Martina. Aj po t\u00fdch desiatich rokoch ju vn\u00edmam ako zdroj inform\u00e1ci\u00ed o\u00a0tom, ako by sa mali program\u00e1tori na projekte spr\u00e1va\u0165. O\u00a0to viac som sa pote\u0161il, ke\u010f sa mi od toho ist\u00e9ho autora dostala do r\u00fak jej nasledovn\u00ed\u010dka s\u00a0n\u00e1zvom Clean Architecture.<!--more--><\/p>\n<p>Mus\u00edm hne\u010f na za\u010diatku poveda\u0165, \u017ee ke\u010f som si t\u00fato knihu kupoval, mal som (vzh\u013eadom na autora) pomerne vysok\u00e9 o\u010dak\u00e1vania. Predpokladal som, \u017ee to bude ako Clean Code, ale o\u00a0architekt\u00fare. \u017de pomerne zlo\u017eit\u00fa a\u00a0abstraktn\u00fa t\u00e9mu bude vedie\u0165 poda\u0165 vo forme r\u00e1d,\u00a0 ktor\u00e9 si zajtra r\u00e1no viete zobra\u0165 zo sebou do pr\u00e1ce a\u00a0za\u010da\u0165 aplikova\u0165. A\u00a0autor ma nesklamal.<\/p>\n<p>Najviac zo v\u0161etk\u00e9ho mi kniha pripad\u00e1 ako s\u00e9ria esej\u00ed a\u00a0zamyslen\u00ed nad r\u00f4znymi t\u00e9mami, ktor\u00e9 s\u00a0architekt\u00farou s\u00favisia. D\u00fafam, \u017ee som v\u00e1s (technicky zalo\u017een\u00fdch \u010ditate\u013eov) teraz nevy\u013eakal, ale aj ke\u010f tu pou\u017e\u00edvam pojmy ako esej, tak v\u00a0skuto\u010dnosti je to p\u00edsan\u00e9 pre program\u00e1torov a\u00a0architektov. Tak\u017ee \u010do sa v\u00a0knihe vlastne d\u00e1 n\u00e1js\u0165?<\/p>\n<p>Robert za\u010d\u00edna t\u00fdm, \u017ee sa sna\u017e\u00ed definova\u0165, \u010do je to architekt\u00fara softv\u00e9ru (a \u010do nie je). Ak\u00e9 s\u00fa mo\u017enosti pri jej tvorbe, \u010d\u00edm sa dost\u00e1va k\u00a0paradigm\u00e1m programovania (tvrd\u00ed, \u017ee v\u00a0skuto\u010dnosti existuj\u00fa len tri a\u00a0\u017ee u\u017e desa\u0165ro\u010dia \u017eiadna nov\u00e1 nepri\u0161la a\u00a0pravdepodobne u\u017e ani nepr\u00edde \u2013 zauj\u00edmav\u00e1 my\u0161lienka).<\/p>\n<p>Po \u013eah\u0161om \u00favodne prich\u00e1dza \u010das\u0165, ktor\u00e1 by v\u00e1m mohla pom\u00f4c\u0165 navrhn\u00fa\u0165 dobr\u00fa architekt\u00faru. Je to \u0161es\u0165 princ\u00edpov, ktor\u00e9 s\u00fa aplikovate\u013en\u00e9 na architekt\u00faru. Niektor\u00e9 z\u00a0nich, ako napr\u00edklad Liskov Substitu\u010dn\u00fd princ\u00edp alebo Open-Close princ\u00edp s\u00fa zn\u00e1me ako princ\u00edpy tvorby k\u00f3du. Tu ich autor pou\u017e\u00edva, aby pomocou nich navrhol moduly \u2013 krabi\u010dky \u2013 architekt\u00fary, a\u00a0pri tom zachoval \u010do najviac dobr\u00fdch vlastnost\u00ed.<\/p>\n<p>Po tomto zozname princ\u00edpov prich\u00e1dza zoznam r\u00f4znych t\u00e9m. \u010co s\u00fa to hranice v\u00a0architekt\u00fare? Ako k\u00a0nim pristupova\u0165 a\u00a0ako ich budova\u0165? Komponenty. Koh\u00e9zia komponentov (t.j. \u010di s\u00fa vn\u00fatorne s\u00fadr\u017en\u00e9) a\u00a0v\u00e4zby medzi komponentami. Autor sa nevyhne d\u00f4le\u017eitej t\u00e9me a\u00a0to, \u017ee v\u00e4zby medzi komponentami existuj\u00fa (v\u00e4\u010d\u0161inou) na troch r\u00f4znych \u00farovniach:<\/p>\n<ul>\n<li><em>kompil\u00e1cia<\/em> \u2013 z\u00e1vislosti musia by\u0165 dostupn\u00e9 v\u00a0\u010dase kompil\u00e1cie pre kompil\u00e1tor<\/li>\n<li><em>nasadenie<\/em> \u2013 z\u00e1vislosti musia by\u0165 dostupn\u00e9 v\u00a0\u010dase, ke\u010f sa aplik\u00e1cia sp\u00fa\u0161\u0165a<\/li>\n<li><em>beh aplik\u00e1cie<\/em> \u2013 z\u00e1vislosti musia by\u0165 dostupn\u00e9 v\u00a0\u010dase, ke\u010f aplik\u00e1cia vykon\u00e1va nejak\u00fa oper\u00e1ciu<\/li>\n<\/ul>\n<p>\u010c\u00edm neskor\u0161iu v\u00e4zbu pre komponenty vyberieme, t\u00fdm je slab\u0161ia (odhliadnuc od toho, \u017ee silu v\u00e4zby e\u0161te ur\u010duje, ko\u013eko detailov vie jeden komponent o\u00a0druhom). Ale z\u00e1rove\u0148 v\u00fdvoj tak\u00fdchto komponentov m\u00f4\u017ee by\u0165 komplikovanej\u0161\u00ed, hlavne \u010do sa t\u00fdka odha\u013eovania nekompatibil\u00edt. Najjednoduch\u0161ie je, ak kompatibilitu komponentu skontroluje kompil\u00e1tor. Za prv\u00e9 je to zachyten\u00e9 v\u00a0\u010do najskor\u0161om okamihu, a\u00a0za druh\u00e9 v\u00e4\u010d\u0161inou vie najlep\u0161ie poveda\u0165, v\u00a0\u010dom konkr\u00e9tne je zle.<\/p>\n<p>Z\u00e1verom knihy sa autor venuje detailom. Na prv\u00fd poh\u013ead to mo\u017eno znie nepodstatne, ale Robert naz\u00fdva \u201edetailom\u201c datab\u00e1zu, grafick\u00e9 rozhranie alebo framework, ktor\u00fd ako hlavn\u00fd va\u0161a aplik\u00e1cia pou\u017e\u00edva. Predstavte si, \u017ee navrhujete \u0161tandardn\u00fd informa\u010dn\u00fd syst\u00e9m a\u00a0to, do akej datab\u00e1zy to budete uklada\u0165, sa rozhodnete tesne pred implement\u00e1ciou, resp. po\u010das nej. Predstavte si, \u017ee framework, ktor\u00fd pou\u017e\u00edvate, je detail, ktor\u00fd budete rie\u0161i\u0165 tak neskoro, ako je to len mo\u017en\u00e9. Presne takto sa pozera\u0165 na tieto s\u00fa\u010dasti aplik\u00e1cie rad\u00ed autor.<\/p>\n<p>Rad\u00ed navrhn\u00fa\u0165 aplik\u00e1ciu tak, aby to, ak\u00fd datab\u00e1zov\u00fd syst\u00e9m presne budete pou\u017e\u00edva\u0165, bol detail, ktor\u00fd sa d\u00e1 \u013eahko zmeni\u0165. Aby z\u00e1sahy do k\u00f3du, ktor\u00e9 si vy\u017eaduje jej pou\u017eitie, boli minim\u00e1lne a\u00a0izolovan\u00e9. Inak povedan\u00e9, aby to \u010do najmenej ovplyv\u0148ovalo samotn\u00fa aplik\u00e1ciu. To ist\u00e9 plat\u00ed pre grafick\u00e9 rozhranie a\u00a0aj framework, ktor\u00fd by va\u0161u aplik\u00e1ciu mal dr\u017ea\u0165 po kope. Hlavn\u00e1 my\u0161lienka je v\u00a0tom, \u017ee ke\u010f si tieto technick\u00e9 komponenty pr\u00edli\u0161 pust\u00edte do aplik\u00e1cie, za\u010dn\u00fa ur\u010dova\u0165 ako bude vyzera\u0165. A\u00a0ke\u010f\u017ee oni neboli navrhnut\u00e9 \u0161peci\u00e1lne pre va\u0161u aplik\u00e1ciu, tak sa m\u00f4\u017ee sta\u0165, \u017ee vzniknut\u00e1 \u0161trukt\u00fara nebude \u00faplne najvhodnej\u0161ia&#8230;<\/p>\n<p>Kniha Clean Architecture by mala prejs\u0165 rukami ka\u017ed\u00e9ho v\u00fdvoj\u00e1ra. \u017diaden v\u00fdvoj\u00e1r sa toti\u017e vo svojej pr\u00e1ci nevyhne tomu, aby bol architektom. Aby rozm\u00fd\u0161\u013eal a\u00a0rozhodoval, kde umiestni \u010das\u0165 k\u00f3du a\u00a0ako vytvor\u00ed v\u00e4zby medzi jednotliv\u00fdmi \u010das\u0165ami. Nemus\u00edte so v\u0161etk\u00fdm, \u010do v\u00a0tejto knihe n\u00e1jdete, s\u00fahlasi\u0165 (ja osobne by som mal p\u00e1r v\u00fdhrad), ale je to vynikaj\u00faca potrava pre prem\u00fd\u0161\u013eanie a\u00a0ako nov\u00fd uhol poh\u013eadu na t\u00fato t\u00e9mu.<\/p>","protected":false},"excerpt":{"rendered":"<p>Existuj\u00fa knihy, o\u00a0ktor\u00fdch si mysl\u00edm, \u017ee by ich mal pre\u010d\u00edta\u0165 ka\u017ed\u00fd program\u00e1tor. V\u00e4\u010d\u0161inou obsahuj\u00fa vydestilovan\u00fa podstatu dobr\u00fdch program\u00e1torsk\u00fdch zvykov, ktor\u00e9 s\u00fa aplikovate\u013en\u00e9 na \u013eubovo\u013en\u00fd projekt. Jedna z\u00a0t\u00fdchto kn\u00edh, na ktor\u00fa som narazil dobr\u00fdch 10 rokov dozadu, bola Clean Code od Roberta C. Martina. Aj po t\u00fdch desiatich rokoch ju vn\u00edmam ako zdroj inform\u00e1ci\u00ed o\u00a0tom, ako [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-332","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=332"}],"version-history":[{"count":1,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/332\/revisions"}],"predecessor-version":[{"id":334,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/332\/revisions\/334"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}