{"id":99,"date":"2009-03-13T10:42:55","date_gmt":"2009-03-13T09:42:55","guid":{"rendered":"http:\/\/jaceksalacki.pl\/?p=99"},"modified":"2011-04-18T22:56:46","modified_gmt":"2011-04-18T21:56:46","slug":"uml-2-0-almanach","status":"publish","type":"post","link":"https:\/\/jaceksalacki.pl\/index.php\/2009\/03\/13\/uml-2-0-almanach\/","title":{"rendered":"UML 2.0 Almanach"},"content":{"rendered":"<p><!-- \t\t@page { margin: 0.79in } \t\tP { margin-bottom: 0.08in } -->Na pierwszy ogie\u0144 w kategorii recenzji idzie ksi\u0105\u017cka pod tytu\u0142em &#8222;UML 2.0 Almanach&#8221; wydana przez Helion. Ksi\u0105\u017ck\u0119 zakupi\u0142em ju\u017c dawno, ale le\u017ca\u0142a na p\u00f3\u0142ce czekaj\u0105c na swoj\u0105 kolej i moj\u0105 ch\u0119\u0107. W ko\u0144cu, troch\u0119 z braku innych opcji, troch\u0119 z poczucia obowi\u0105zku zdecydowa\u0142em si\u0119 na sprawdzenie co te\u017c mo\u017ce by\u0107 tam ciekawego napisane.<!--more--><\/p>\n<p>&#8222;UML 2.0 Almanach&#8221; jak ju\u017c tytu\u0142 m\u00f3wi dotyczy j\u0119zyka UML. Ksi\u0105\u017cka zosta\u0142a wydana w 2007 i jest t\u0142umaczeniem &#8222;UML 2.0 in Nutshell&#8221; z 2005 r. wydanej oryginalnie przez O&#8217;Reilly. Nie jest zbyt obszerna, \u0142\u0105cznie ma oko\u0142o 240 i jak tytu\u0142 sugeruje, skupia si\u0119 na opisie UMLa w wersji 2.0. Autorzy omawiaj\u0105 poszczeg\u00f3lne rodzaje diagram\u00f3w, po\u015bwi\u0119caj\u0105c ka\u017cdemu z nich osobny rozdzia\u0142. Dodatkowo opisuj\u0105 tak\u017ce MDA (Model Driven Architecture) i OCL oraz podstawowe zasady tworzenia dobrych diagram\u00f3w. Om\u00f3wienie ka\u017cdego diagram\u00f3w rozpoczyna si\u0119 od kr\u00f3tkiego wst\u0119pu, wyja\u015bniaj\u0105cego do\u015b\u0107 og\u00f3lnie charakter diagramu i jego g\u0142\u00f3wne zastosowanie<sup class='footnote'><a href='#fn-99-1' id='fnref-99-1' onclick='return fdfootnote_show(99)'>1<\/a><\/sup>. Nast\u0119pnie autorzy przechodz\u0105 do opisu sk\u0142adowych diagramu, np. klas, powi\u0105za\u0144, stan\u00f3w, aktywno\u015bci, przej\u015b\u0107, aktor\u00f3w itd. W trakcie, zdarza im si\u0119 czasem odp\u0142yn\u0105\u0107 i opisywa\u0107 bardzo szczeg\u00f3lne, rzadko spotykane (i ma\u0142o potrzebne) przypadki. Ka\u017cdy rozdzia\u0142 zamyka om\u00f3wienie og\u00f3lnych zagadnie\u0144 dotycz\u0105cych wybranego diagramu, jak chocia\u017cby nietypowe zastosowania czy formy diagram\u00f3w.<\/p>\n<p>Ksi\u0105\u017cka nie zachwyci\u0142a mnie zbytnio. W mojej opinii nie jest szczeg\u00f3lnie dobrym \u017ar\u00f3d\u0142em informacji dotycz\u0105cych UMLa. Jednak\u017ce, ma kilka niepodwa\u017calnych zalet, kt\u00f3re przemawiaj\u0105 na jej korzy\u015b\u0107. Pierwsz\u0105 jest niew\u0105tpliwie to, \u017ce jest kr\u00f3tka. 240 stron mo\u017cna (teoretycznie) przej\u015b\u0107 w 1-2 dni, zw\u0142aszcza \u017ce du\u017c\u0105 cz\u0119\u015b\u0107 zajmuj\u0105 obrazki. Jednak praktycznie na kontakt z ksi\u0105\u017ck\u0105 trzeba przeznaczy\u0107 znacznie wi\u0119cej czasu. Za \u201eAlmanachem\u201d przemawia tak\u017ce to, \u017ce opisuje wszystkie rodzaje diagram\u00f3w UMLa i ich specyficzne przypadki. I chyba tu musz\u0119 zako\u0144czy\u0107 omawianie zalet ksi\u0105\u017cki, bo \u017cadne inne nie przychodz\u0105 mi do g\u0142owy. Niestety akapit dotycz\u0105cy wad b\u0119dzie znacznie d\u0142u\u017cszy.<\/p>\n<p>Wad ma ca\u0142kiem sporo. Przede wszystkim jest, jak na m\u00f3j gust, zbyt \u201esucha\u201d &#8211; autorzy pr\u00f3buj\u0105 porusza\u0107 si\u0119 na abstrakcyjnym poziomie przypominaj\u0105cym zawarto\u015b\u0107 \u201eUML Superstructure\u201d, jednocze\u015bnie praktycznie nie przedstawiaj\u0105 konkretnych przyk\u0142ad\u00f3w, kt\u00f3re by przybli\u017cy\u0142y temat szaremu u\u017cytkownikowi UMLa. Nawet je\u017celi w przedstawianych diagramach u\u017cywaj\u0105 poj\u0119\u0107 z rzeczywistego \u015bwiata, to uproszczaj\u0105 to lub wprowadzaj\u0105 du\u017c\u0105 ilo\u015b\u0107 niejasno\u015bci. Opis, zamiast przedstawia\u0107 idee zastosowania danego diagramu, kr\u0119ci si\u0119 wok\u00f3\u0142 element\u00f3w diagramu i ich zwi\u0105zk\u00f3w z pozosta\u0142ymi sk\u0142adowymi UMLa. Dodatkowo, spos\u00f3b formu\u0142owania zda\u0144, u\u017cywane poj\u0119cia, styl przedstawiania informacji doprowadzi\u0142 do karykaturalnej \u201enaukawo\u015bci\u201d<sup class='footnote'><a href='#fn-99-2' id='fnref-99-2' onclick='return fdfootnote_show(99)'>2<\/a><\/sup> ksi\u0105\u017cki. Dra\u017cni\u0105ce jest silenie si\u0119 przez autor\u00f3w na u\u017cywanie skomplikowanych nazw czy opis\u00f3w w miejscach gdzie mog\u0142oby wystarczy\u0107 kr\u00f3tkie wyja\u015bnienie napisane potocznym j\u0119zykiem<em>.<\/em> Chocia\u017cby pr\u00f3ba wyja\u015bnienia czym jest stan w maszynie stanowej: \u201eStany modeluj\u0105 sytuacje w zachowaniu klasyfikator\u00f3w, w kt\u00f3rych wyst\u0119puj\u0105 pewne niezmienne warunki\u201d.<em> <\/em>Nie wiem jak wy, ale ja jestem pod wra\u017ceniem \u2013 trzeba si\u0119 postara\u0107 aby tak zakr\u0119ci\u0107 ten opis.<em> <\/em>Mimo pozornej naukowo\u015bci ksi\u0105\u017cki, wyst\u0119puje w niej troch\u0119 b\u0142\u0119d\u00f3w merytorycznych, jak chocia\u017cby fragment przedstawiaj\u0105cy rozwa\u017cania c\u00f3\u017c to mo\u017ce by\u0107 to modelowanie i wniosek, \u017ce dla ka\u017cdego modelowanie to co\u015b innego. Inny przyk\u0142ad nie\u015bcis\u0142o\u015bci merytorycznej, to stwierdzenie o powi\u0105zaniu maszyn stanowych z klasyfikatorami: \u201ejednak\u017ce w UML-u nie ma specjalnej notacji do pokazywania tych powi\u0105za\u0144\u201d. Ok, w porz\u0105dku nie jest okre\u015blone jak <span style=\"text-decoration: underline;\">pokaza\u0107<\/span> takie powi\u0105zanie na diagramie, ale samo powi\u0105zanie jest zdefiniowane i le\u017cy w gestii producent\u00f3w oprogramowania, kt\u00f3rzy powinni umo\u017cliwi\u0107 tak\u0105 prezentacj\u0119 (i w wi\u0119kszo\u015bci umo\u017cliwiaj\u0105). W trakcie czytania podr\u0119cznika, zw\u0142aszcza wst\u0119pnych rozdzia\u0142\u00f3w i fragment\u00f3w dt. stosowania poszczeg\u00f3lnych diagram\u00f3w, odnios\u0142em wra\u017cenie, \u017ce  autorzy nie do ko\u0144ca \u0142api\u0105 o co w tym ca\u0142ym modelowaniu UMLem chodzi. Niestety na ca\u0142o\u015b\u0107 nak\u0142adaj\u0105 si\u0119 jeszcze b\u0142\u0119dy w t\u0142umaczeniu. Ze zdaniem: \u201ePodstan, kt\u00f3ry nie jest zawarty w innym stanie nosi nazw\u0119 podstanu bezpo\u015bredniego, a zawarty w innych podstanach (kt\u00f3rych rezultatem s\u0105 rekursywne stany z\u0142o\u017cone) nazywa si\u0119 podstanem po\u015brednim\u201d jest wyra\u017anie co\u015b nie tak. Niestety podobnych przyk\u0142ad\u00f3w mo\u017cna upolowa\u0107 w ksi\u0105\u017cce jeszcze troch\u0119.<\/p>\n<p>Ewidentnie ksi\u0105\u017cka jest mocno oparta na opisie superstruktury j\u0119zyka, w zasdzie jest jej skr\u00f3tem (gigantycznym skr\u00f3tem, skr\u00f3tem jak \u015bci\u0105ga na egzamin semestralny). Poza dokonaniem skr\u00f3tu i dodaniem przyk\u0142adowych diagram\u00f3w, autorzy nie wnie\u015bli wiele od siebie. Ci\u0119\u017cko jest stwierdzi\u0107 jakie zastosowanie i dla kogo mia\u0142by ten podr\u0119cznik. Dla os\u00f3b pocz\u0105tkuj\u0105cych na pewno nie mo\u017ce by\u0107 to g\u0142\u00f3wne \u017ar\u00f3d\u0142o informacji o UMLu, bo albo w og\u00f3le nie zrozumiej\u0105 po co on albo uciekn\u0105 od niego z krzykiem, przera\u017ceni poziomem komplikacji. \u201eUML 2.0 Almanach\u201d mo\u017ce by\u0107 tylko uzupe\u0142nieniem innego podr\u0119cznika, kt\u00f3ry we\u017amie na siebie obja\u015bnienie zastosowania UMLa. Dla kogo\u015b, kto UMLa ju\u017c zna i u\u017cywa ksi\u0105\u017cka te\u017c nie b\u0119dzie do ko\u0144ca przydatna. Owszem, dzi\u0119ki temu \u017ce jest skr\u00f3con\u0105 wersj\u0105 specyfikacji, mo\u017ce znale\u017a\u0107 zastosowanie przy rozwi\u0105zywaniu szczeg\u00f3lnych przypadk\u00f3w. Jednak znowu \u2013 nie s\u0105dz\u0119 aby wystarczy\u0142 tylko ten jeden podr\u0119cznik. Musi zosta\u0107 uzupe\u0142niony czym jeszcze.<\/p>\n<p>Podsumowuj\u0105c, ksi\u0105\u017cka raczej \u015brednia, mo\u017cna kupi\u0107 na p\u00f3\u0142k\u0119, czasem oka\u017ce si\u0119 przydatna czasem nie. Je\u017celi kto\u015b ma zb\u0119dne par\u0119 dni w \u017cyciu to mo\u017ce nawet po\u015bwi\u0119ci\u0107 je na przeczytanie, jednak znam lepsze ksi\u0105\u017cki o UMLu i lepsze metody mordowania zb\u0119dnego czasu.<\/p>\n<p>Ocena 5\/10<\/p>\n<div class='footnotes' id='footnotes-99'>\n<div class='footnotedivider'><\/div>\n<ol>\n<li id='fn-99-1'> zastosowanie w sensie UMLowym a nie w sensie rzeczywistego zastosowania  do modelowania system\u00f3w IT; czyli przyk\u0142adowo, autorzy opisuj\u0105 diagram  klas jako diagram s\u0142u\u017c\u0105cy do <em>\u201emodelowania kategorii obiekt\u00f3w\u201d <\/em>a  nie jako diagram s\u0142u\u017c\u0105cy do modelu poj\u0119\u0107 dziedzinowych; niby delikatna  r\u00f3\u017cnica ale znacz\u0105ca, zreszt\u0105 zwi\u0105zana jest z twierdzeniem \u017ce UML ma  semantyk\u0119, z czym si\u0119 nie zgadzam, ale o tym b\u0119d\u0119 musia\u0142 napisa\u0107 kiedy\u015b  indziej <span class='footnotereverse'><a href='#fnref-99-1'>&#8617;<\/a><\/span><\/li>\n<li id='fn-99-2'> naukawy, taki wyr\u00f3b naukowopodobny <span class='footnotereverse'><a href='#fnref-99-2'>&#8617;<\/a><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Na pierwszy ogie\u0144 w kategorii recenzji idzie ksi\u0105\u017cka pod tytu\u0142em &#8222;UML 2.0 Almanach&#8221; wydana przez Helion. Ksi\u0105\u017ck\u0119 zakupi\u0142em ju\u017c dawno, ale le\u017ca\u0142a na p\u00f3\u0142ce czekaj\u0105c na swoj\u0105 kolej i moj\u0105 ch\u0119\u0107. W ko\u0144cu, troch\u0119 z braku innych opcji, troch\u0119 z poczucia obowi\u0105zku zdecydowa\u0142em si\u0119 na sprawdzenie co te\u017c mo\u017ce by\u0107 tam ciekawego napisane.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,6],"tags":[],"class_list":["post-99","post","type-post","status-publish","format-standard","hentry","category-ksiazka","category-uml"],"_links":{"self":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/comments?post=99"}],"version-history":[{"count":11,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":133,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/posts\/99\/revisions\/133"}],"wp:attachment":[{"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/media?parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/categories?post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jaceksalacki.pl\/index.php\/wp-json\/wp\/v2\/tags?post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}