05 lipca 2009

Pierwsze (krótkie) doświadczenie z Eclipse UML2 Tools - idzie do kosza

Już pojawiają się opinie po wczorajszej Javarsovii 2009, ale moje wrażenia chciałbym jeszcze uzupełnić o kilka danych statystycznych i zdjęcia, więc temat odłożony na kolejny wpis.

Dzisiejszy dzień dosyć deszczowy w Warszawie i po uwagach, jakie coraz częściej do mnie dochodzą w kontekście treści publikowanych w moim blogu zdecydowałem się na niewielką acz zapewne zauważalną zmianę - koniec z relacjami z lektury książek, które ciągną się tygodniami. Nie ukrywam, że mój plan zaczął mnie samemu przygniatać swoim zasięgiem i próba relacjonowania każdego z rozdziałów powodowała, że miałem "zarezerwowane" kilkanaście dni/tygodni wprzód. Czytanie książek idzie mi znacznie szybciej, a relacje poszczególnych rozdziałów zajmowały często zdecydowanie za dużo treści w pojedynczym wpisie niż samemu chciałbym przeczytać. Na własne życzenie wiązałem sobie ręce. Głosy, jakie do mnie dochodziły zdawały się sugerować zmianę podejścia na bardziej produktywny, a nie jedynie odtwórczy. Koniec więc z pomysłami relacji książek w stylu "wpis za rozdział". Powinno być znacznie odświeżające dla obu stron.

W ten sposób postanowiłem wrócić do bardziej aktywnego rozwoju Nauczyciela - aplikacji w Grails, której celem jest nauka Grails praktycznie oraz pomoc w nauce moim dzieciakom. Dzisiaj przyszła pora na wdrożenie przepływów na bazie Grails Web Flow. Temat bardzo obszernie opisany w książce "The Definitive Guide to Grails, Second Edition", którą swego czasu relacjonowałem (patrz kategoria Grails). Zacząłem już dłubać w kontrolerze, kiedy to postanowiłem podejść do tematu trochę bardziej metodycznie z użyciem diagramu stanowego UML. Potrzebne mi było narzędzie do jego stworzenia i padło na Eclipse UML2 Tools (po prostu wyszukałem w Google frazę "eclipse uml").

Początkowo zabrałem się za instalację UML2TOOLS 0.9.0, ale niedługo trwało, kiedy pobrałem po prostu wersję Eclipse Modeling Tools (includes Incubating components), gdzie wszystko jest gotowe do użycia. Wystarczyło Ctrl+N, wybrać kategorię UML 2.1 Diagrams i pojawiła się cała lista dostępnych diagramów.

Następnie State Machine Diagram i skończyłem z czymś takim.

Jeśli to ma być wszystko, co oferuje Eclipse 3.5 w temacie UML 2.1, to ja dziękuję za takie rozwiązanie. Mam do dyspozycji komercyjne rozwiązania, jak IBM Rational Software Architect czy IBM WebSphere Integration Developer, więc na pewno nie będę narzekał, jak zapomnę o "czystym" Eclipse i jego wsparciu dla UML. Uważam UML2 Tools za niezwykle nieintuicyjne rozwiązanie, gdzie chociażby funkcja "Arrange All" rozkłada elementy odwrotnie - do góry nogami, co można zauważyć na powyższym zrzucie. Całkowicie się zgadzam za określeniem stanu projektu jako Incubating. I niech tam jeszcze posiedzi, bo tylko sprowokuje jeszcze jedną duszyczkę do zmarnowania kilku godzin na jego rozpracowywaniu, poszukiwaniu dokumentacji, aby ostatecznie machnąć na to ręką.

A poza tym, nie wiem, jak należałoby zamodelować przepływ typu sprawdzian w umlowym diagramie stanów. Jak rozumiem ten typ diagramu, jego celem jest przedstawienie zmiany stanu pewnego bytu, np. uczestnik sprawdzianu lub sam sprawdzian. Pierwszy nie pasuje mi - chyba, że miałbym modelować zmianę jego stanu psychicznego podczas sprawdzianu. Stąd pozostaje mi sprawdzian. Tylko to, co do tej pory mam, zdaje się bardziej przypominać diagram iteracyjny niż stanowy. Mam wrażenie, że utknąłem i potrzebuję podpowiedzi. Czy nie jest tak, że stan "w trakcie" nie jest aż nadto ogólny, który mógłbym spróbować rozbić na mniejsze (pod)stany, w których z kolei miałbym zamodelowane stany odpowiedzi na pojedyncze pytania? Trochę podpieram się moją wizją docelowej aplikacji, więc stąd te zapędy na stan: "pytanie odpowiedziane" i pętlę z warunkiem "czy zakończyć sprawdzian?". Chyba utknąłem :( Pooomooocy!

9 komentarzy:

  1. Możesz dokładniej przedstawić swoją wizję, co chcesz zamodelować? Chwilowo mam wrażenie, że bardziej by pasował tutaj activity diagram.

    W ramach Eclipse jest drugi projekt do UML - Papyrus, połączenie starań 3 innych projektów, będzie lepszy... kiedyś. Do ściągnięcia z repozytorium. Swoją drogą BPMN tools w Eclipse są bardziej user friendly i też mogą się nadać.

    Odnośnie narzędzi do UML to kilka przedstawionych jest tutaj http://www.openarchitectureware.org/forum/viewtopic.php?forum=2&showtopic=12182&highlight=uml%20tool


    Skoro masz dostęp to jednak polecam Rational Software Modeler, prostszy od RSA (i tak jest na co narzekać). Jeszcze interesujący jest Visual Paradigm ze względu na interfejs, zwłaszcza fajny jak się używa UML w roli szkicu. I tak nie będziesz zachwycony ;)

    Pozdrawiam,
    Krzysztof Kowalczyk

    OdpowiedzUsuń
  2. Ja też polecam Visual Paradigm - za darmo w wersji Community. Ponadto ... możliwośc ściągniecia wersji bez instalacji.. i nawet jest po linuksa! :)

    OdpowiedzUsuń
  3. Ja ze swojej strony bardzo polecam http://www.papyrusuml.org/. Oparty na eclipse, oferujący spore możliwości.

    Pozdrawiam,
    Łukasz

    OdpowiedzUsuń
  4. Papyrus jest już rozwijany w ramach Eclipse http://www.eclipse.org/modeling/mdt/?project=papyrus

    Nie ma jeszcze gotowej paczki (można kod ściągnąć). Jest to połączenie wysiłków zespołów z dawnego Papyrus, Topcased i Mosskit, więc zapowiada się dobrze w dłuższej perspektywie.

    Papyrus może jednak irytować, bo jest bardzo wymagający odnośnie zgodności ze standardem i przykładowo by zrobić activity diagram to trzeba najpierw zrobić klasę, a w niej metodę (z tego co pamiętam).

    Pozdrawiam,
    Krzysztof Kowalczyk

    OdpowiedzUsuń
  5. Za Krzyśkiem: web flow to nie diagram stanu tylko aktywności IMHO (MSZ ;-). Weź przykładowy flow z dokumentacji (http://grails.org/doc/1.1/guide/6.%20The%20Web%20Layer.html#6.5.1 Start and End States) i zobacz czy opisuje on stan koszyka, czy też aktywności powiązane z koszykiem.

    OdpowiedzUsuń
  6. No a ja muszę niestety zapytać: "Ale po co ci ten cały UML?".

    UML jako język "programowania" absolutnie nie nadaje się do użycia. To standard tylko i wyłącznie do dokumentacji uproszczonej wizji aplikacji. Próba wykorzystania diagramu stanu (a tym bardziej aktywności) jako fragmentu aplikacji lub bazy dla generacji czegokolwiek skończy się zawsze problemami (wygoda pracy, utrzymanie etc.). Kilka lat temu to przerabiałem i powiedziałem sobie wtedy nigdy więcej. To notacja do wszystkiego i tym samym do niczego.

    GrailsWebFlow wygląda na bardzo fajny tekstowy DSL. Jako taki ma wiele zalet ponad modelowanie graficzne (wersjonowanie, merge plików itp.). UML jest w tym przypadku dużym krokiem wstecz.

    Jeżeli jednak brakuje wizualizacji lepszym rozwiązaniem byłoby dołączenie jej jako kolejnej zakładki do istniejącego edytora. W ten sposób programista pisze w tekstowym DSL’u w razie potrzeby podglądając wynikowy graf przejść. Całość z odpowiednimi bibliotekami takimi jak ZEST nie powinna być trudna a może się taki prosty plugin komuś przydać :)

    OdpowiedzUsuń
  7. A ja polecam NetBeans z pluginem UML. Oraz książeczkę Fowlera pt. "UML Distilled".

    OdpowiedzUsuń
  8. Poza tym uważam, że Twój diagram jest OK. :-) Pytanie tylko, czy zawiera wszystko to, co chciałeś przekazać. Czy dla osoby analizującej diagram istotna jest informacja, że uczestnik sprawdzianu będzie udzielał odpowiedzi kolejno na każde z pytań? UML nie jest uniwersalnym narzędziem do projektowania, a tylko kolejnym sposobem na zobrazowanie pewnych idei. Które równie dobrze można przedstawić za pomocą opisu w postaci tekstowej, kawałka kodu, wiersza haiku lub piosenki. ;-)

    OdpowiedzUsuń