UML 2.0 Almanach

Na pierwszy ogień w kategorii recenzji idzie książka pod tytułem „UML 2.0 Almanach” wydana przez Helion. Książkę zakupiłem już dawno, ale leżała na półce czekając na swoją kolej i moją chęć. W końcu, trochę z braku innych opcji, trochę z poczucia obowiązku zdecydowałem się na sprawdzenie co też może być tam ciekawego napisane.

„UML 2.0 Almanach” jak już tytuł mówi dotyczy języka UML. Książka została wydana w 2007 i jest tłumaczeniem „UML 2.0 in Nutshell” z 2005 r. wydanej oryginalnie przez O’Reilly. Nie jest zbyt obszerna, łącznie ma około 240 i jak tytuł sugeruje, skupia się na opisie UMLa w wersji 2.0. Autorzy omawiają poszczególne rodzaje diagramów, poświęcając każdemu z nich osobny rozdział. Dodatkowo opisują także MDA (Model Driven Architecture) i OCL oraz podstawowe zasady tworzenia dobrych diagramów. Omówienie każdego diagramów rozpoczyna się od krótkiego wstępu, wyjaśniającego dość ogólnie charakter diagramu i jego główne zastosowanie1. Następnie autorzy przechodzą do opisu składowych diagramu, np. klas, powiązań, stanów, aktywności, przejść, aktorów itd. W trakcie, zdarza im się czasem odpłynąć i opisywać bardzo szczególne, rzadko spotykane (i mało potrzebne) przypadki. Każdy rozdział zamyka omówienie ogólnych zagadnień dotyczących wybranego diagramu, jak chociażby nietypowe zastosowania czy formy diagramów.

Książka nie zachwyciła mnie zbytnio. W mojej opinii nie jest szczególnie dobrym źródłem informacji dotyczących UMLa. Jednakże, ma kilka niepodważalnych zalet, które przemawiają na jej korzyść. Pierwszą jest niewątpliwie to, że jest krótka. 240 stron można (teoretycznie) przejść w 1-2 dni, zwłaszcza że dużą część zajmują obrazki. Jednak praktycznie na kontakt z książką trzeba przeznaczyć znacznie więcej czasu. Za „Almanachem” przemawia także to, że opisuje wszystkie rodzaje diagramów UMLa i ich specyficzne przypadki. I chyba tu muszę zakończyć omawianie zalet książki, bo żadne inne nie przychodzą mi do głowy. Niestety akapit dotyczący wad będzie znacznie dłuższy.

Wad ma całkiem sporo. Przede wszystkim jest, jak na mój gust, zbyt „sucha” – autorzy próbują poruszać się na abstrakcyjnym poziomie przypominającym zawartość „UML Superstructure”, jednocześnie praktycznie nie przedstawiają konkretnych przykładów, które by przybliżyły temat szaremu użytkownikowi UMLa. Nawet jeżeli w przedstawianych diagramach używają pojęć z rzeczywistego świata, to uproszczają to lub wprowadzają dużą ilość niejasności. Opis, zamiast przedstawiać idee zastosowania danego diagramu, kręci się wokół elementów diagramu i ich związków z pozostałymi składowymi UMLa. Dodatkowo, sposób formułowania zdań, używane pojęcia, styl przedstawiania informacji doprowadził do karykaturalnej „naukawości”2 książki. Drażniące jest silenie się przez autorów na używanie skomplikowanych nazw czy opisów w miejscach gdzie mogłoby wystarczyć krótkie wyjaśnienie napisane potocznym językiem. Chociażby próba wyjaśnienia czym jest stan w maszynie stanowej: „Stany modelują sytuacje w zachowaniu klasyfikatorów, w których występują pewne niezmienne warunki”. Nie wiem jak wy, ale ja jestem pod wrażeniem – trzeba się postarać aby tak zakręcić ten opis. Mimo pozornej naukowości książki, występuje w niej trochę błędów merytorycznych, jak chociażby fragment przedstawiający rozważania cóż to może być to modelowanie i wniosek, że dla każdego modelowanie to coś innego. Inny przykład nieścisłości merytorycznej, to stwierdzenie o powiązaniu maszyn stanowych z klasyfikatorami: „jednakże w UML-u nie ma specjalnej notacji do pokazywania tych powiązań”. Ok, w porządku nie jest określone jak pokazać takie powiązanie na diagramie, ale samo powiązanie jest zdefiniowane i leży w gestii producentów oprogramowania, którzy powinni umożliwić taką prezentację (i w większości umożliwiają). W trakcie czytania podręcznika, zwłaszcza wstępnych rozdziałów i fragmentów dt. stosowania poszczególnych diagramów, odniosłem wrażenie, że autorzy nie do końca łapią o co w tym całym modelowaniu UMLem chodzi. Niestety na całość nakładają się jeszcze błędy w tłumaczeniu. Ze zdaniem: „Podstan, który nie jest zawarty w innym stanie nosi nazwę podstanu bezpośredniego, a zawarty w innych podstanach (których rezultatem są rekursywne stany złożone) nazywa się podstanem pośrednim” jest wyraźnie coś nie tak. Niestety podobnych przykładów można upolować w książce jeszcze trochę.

Ewidentnie książka jest mocno oparta na opisie superstruktury języka, w zasdzie jest jej skrótem (gigantycznym skrótem, skrótem jak ściąga na egzamin semestralny). Poza dokonaniem skrótu i dodaniem przykładowych diagramów, autorzy nie wnieśli wiele od siebie. Ciężko jest stwierdzić jakie zastosowanie i dla kogo miałby ten podręcznik. Dla osób początkujących na pewno nie może być to główne źródło informacji o UMLu, bo albo w ogóle nie zrozumieją po co on albo uciekną od niego z krzykiem, przerażeni poziomem komplikacji. „UML 2.0 Almanach” może być tylko uzupełnieniem innego podręcznika, który weźmie na siebie objaśnienie zastosowania UMLa. Dla kogoś, kto UMLa już zna i używa książka też nie będzie do końca przydatna. Owszem, dzięki temu że jest skróconą wersją specyfikacji, może znaleźć zastosowanie przy rozwiązywaniu szczególnych przypadków. Jednak znowu – nie sądzę aby wystarczył tylko ten jeden podręcznik. Musi zostać uzupełniony czym jeszcze.

Podsumowując, książka raczej średnia, można kupić na półkę, czasem okaże się przydatna czasem nie. Jeżeli ktoś ma zbędne parę dni w życiu to może nawet poświęcić je na przeczytanie, jednak znam lepsze książki o UMLu i lepsze metody mordowania zbędnego czasu.

Ocena 5/10

  1. zastosowanie w sensie UMLowym a nie w sensie rzeczywistego zastosowania do modelowania systemów IT; czyli przykładowo, autorzy opisują diagram klas jako diagram służący do „modelowania kategorii obiektów” a nie jako diagram służący do modelu pojęć dziedzinowych; niby delikatna różnica ale znacząca, zresztą związana jest z twierdzeniem że UML ma semantykę, z czym się nie zgadzam, ale o tym będę musiał napisać kiedyś indziej
  2. naukawy, taki wyrób naukowopodobny

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *