środa, 26 marca 2014

Zastosowanie UML Profile w Enterprise Architect

W artykule UML Profile opisałem czym jest taki profil oraz do czego może służyć. W tym miejscu chciałbym przybliżyć techniczne aspekty tworzenia, a później wykorzystania takiego profilu.

Tworzenie i późniejsze utrzymanie profilu UML to zadania realizowane w tzw. metamodelu, natomiast wykorzystanie takiego profilu ma miejsce już w docelowym modelu. Aby móc korzystać z profilu konieczne jest jego wdrożenie w formie pliku XML. Zostało to przedstawione w formie graficznej na poniższym rysunku.
UML profile management in Sparx EA



Czym jest ten metamodel i czym się różni od modelu? Metamodel to po prostu model modelu. W metamodelu nie przechowujemy konkretnych danych, czyli nie tworzymy uproszczonego modelu świata rzeczywistego. Metamodel służy do stworzenia uproszczonego modelu naszego docelowego modelu. Jako, że jesteśmy w temacie profili UML - możemy przyjąć, że zawartością metamodelu będzie tylko nasz profil UML. Praktycznie rzecz biorąc, metamodel może być osobnym plikiem EAP, który nie jest rozpowszechniany wszystkim członkom zespołu projektowego. Wystarczy, aby była wyznaczona jedna osoba, która będzie taki metamodel utrzymywać. Choć, z technicznego punktu widzenia nic nie stoi na przeszkodzie, aby metamodel, a konkretnie profil UML był umieszczony w tym samym repozytorium EA, co sam model.

W dalszej części artykułu opisano tworzenie profilu UML na przykładzie profilu przeznaczonego dla różnych kategorii wymagań.

Tworzenie profilu UML

1. Utwórz projekt dla metamodelu, czyli stwórz nowy i pusty projekt EA.
Stwórz strukturę taką, jak pokazano obok.




2. Utworzenie nowego pakietu o nazwie Wymagania ze stereotypem <<profile>>.
Sparx Systems rekomenduje, aby nowy pakiet utworzyć nieco "na około", tzn. z wykorzystaniem poniższych kroków:
  • Utworzenie nowego diagramu - w tym celu w oknie Project Browser kliknij prawym przyciskiem na pakiecie UML Profiles i wybierz z menu kontekstowego Add --> Add Diagram.
    Następnie z diagramów typu UML Structural wybierz typ diagramu: Package.
  • Następnie w kontekście nowo utworzonego diagramu klikając w oknie Toolbox przycisk More Tools... wybierz zestaw narzędzi o nazwie Profile.
  • Z tego zestawu narzędzi wstaw na diagram eleement Profile (pierwsza pozycja na liście). Pojawi się wówczas okno, służące do dodawania nowego pakietu (o co nam chodziło od samego początku). Jako nazwę wpisz Wymagania oraz zaznacz obydwa checkboxy: Automatically add new diagram oraz Open new diagram (ten drugi jest dostępny w EA od wersji 10).
  • Po naciśnięciu przycisku OK pojawi się kolejne okno dialogowe służące do określenia typu dodawanego diagramu (to już drugi diagram w tym przykładzie i najważniejszy). Tym razem dodajemy diagram typu Class.
  • Po naciśnięciu przycisku OK pojawi się jeszcze okno z właściwościami samego pakietu Wymagania. Warto zauważyć, że pakiet ten wyróżnia się stereotypem <<profile>>. Wskazane jest, aby w polu Notes zamieścić krótką informację o przeznaczeniu profilu, gdyż będzie ona dostępna później dla osób korzystających z profilu.
  • Po wykonaniu tych czynności otrzymujemy pakiet <<profile>> Wymagania umieszczony na diagramie pakietów o nazwie UML Profiles wraz z diagramem klas o nazwie Wymagania.

3. Umieszczenie na diagramie Wymagania metaklasy (metaclass) Requirement.

  • Wybierz z zestawu narzędzi Profile element typu Metaclass i umieść na diagramie.
  • W oknie, które zostanie wyświetlone wymienione są typy metaklas. Zostały one podzielone na kilka kategorii. W zakładce Core Elements wymienione są metaklasy dla elementów. Niestety nie znajdziemy na niej metaklasy Requirement, dopóki nie zaznaczymy checkboxa Include Extended.
    Po zaznaczeniu wyżej wymienionego checkboxa oraz zaznaczeniu Requirement na liście klikamy OK. Wówczas na diagramie pojawi się pierwszy element. Możemy go rozciągnąć w poziomie dla zwiększenia czytelności diagramu.

4. Umieszczenie na diagramie stereotypów rozszerzających metaklasę Requirement.
  • Wybierz z zestawu narzędzi Profile element typu Stereotype i umieść na diagramie. W oknie dialogowym, które się pojawi określ nazwę elementu: Wysokopoziomowe.
  • W taki sam sposób umieść jeszcze dwa stereotypy o nazwach: Funkcjonalne oraz Niefunkcjonalne.
  • W polu Notes tworzonych elementów warto umieścić krótką informację o charakterystyce i przeznaczeniu danego profilu. Ta informacja będzie później dostępna dla korzystających z profilu.
  • Połącz dodane stereotypy z metaklasą Requirement relacją Extend (w pasku narzędzi Profile nosi ona nazwę Extension).
  • Po tych działaniach diagram powinien wyglądać następująco:




Uwaga!
Relacja Extend do wersji EA 9.3 była wizualizowana w nieco inny sposób. We wcześniejszych wersjach wyglądała w taki sposób:
W tym momencie można powiedzieć, że najważniejsze działania są już za nami. Określiliśmy trzy typy elementów - jako stereotypy i wskazaliśmy, że te stereotypy będą stosowane do zarządzania wymaganiami, gdyż rozszerzają metaklasę Requirement.

5. Stworzenie prostych atrybutów dla stereotypów.
  • Dla każdego ze stereotypów utwórz osobno atrybut o nazwie Źródło. Jako, że stereotypy te mają formę klas - tworzymy je standardowo, tak jak dla zwykłych klas. Typ atrybutu nie ma znaczenia.
  • Po tej czynności diagram powinien wyglądać tak, jak pokazano poniżej.


6. Stworzenie atrybutów z listą wyboru. Zrobimy to na przykładzie stereotypu Wysokopoziomowe, dla którego określimy dodatkowo jego podtyp: Zakres (jako wymagania, które definiują zakres projektowanego rozwiązania), Ograniczenia (jako wymagania, które nakładają ograniczenia na rozwiązanie, mogą one potem być uszczegóławiane w postaci wymagań niefunkcjonalnych) oraz Wymagania użytkownika (jako wymagania, które w odróżnieniu od kadry kierowniczej zostały zdefiniowane przez przyszłych użytkowników; mogą to być wszystkie wymagania, które zostały zdefiniowane w fazie analizy, a nie znalazły się w zamówieniu lub Specyfikacji Istotnych Warunków Zamówienia).
  • Wybierz z zestawu narzędzi Profile element typu Enumeration i umieść na diagramie.
  • W oknie dialogowym określ nazwę nowo tworzonego elementu, na przykład Wysokopoziomowe typ.
  • Dodaj do tego elementu następujące atrybuty: Zakres, Ograniczenia, Wymagania użytkownika.

  • Użyjmy teraz element Wysokopoziomowe typ w stereotypie Wysokopoziomowe. Aby to zrobić, należy w elemencie o nazwie Wysokopoziomowe dodać jeszcze jeden atrybut. Proponowana nazwa tego atrybutu to po prostu Typ, ale tym razem istotny jest typ tego atrybutu.
    Naciśnij przycisk z trzema kropkami (...), który zlokalizowany jest z prawej strony pola Type, a następnie wskaż w nowym oknie dialogowym utworzony wcześniej element Wysokopoziomowe typ
  • Wróć do okna z atrybutami naciskając przycisk OK. Po tej operacji nowy atrybut Typ powinien być zdefiniowany tak, jak na poniższym rysunku. Dla ułatwienia na tym rysunku zaznaczono również przycisk służący do wyświetlenia okna dialogowego do wyboru typu atrybutu z modelu.

  • Po wykonaniu tych operacji diagram naszego przykładowego profilu powinien wyglądać tak:

Dodatkowe czynności

7. Zmiana sposobu wyświetlania stereotypu na diagramie. Jeśli decydujemy się na wyróżnienie różnych typów wymagań poprzez nadanie im stereotypu, to warto rozważyć również zmianę sposobu wyświetlania poszczególnych typów wymagań. Dzięki temu elementy te będą się bardziej odróżniać od siebie na diagramie.
Można to osiągnąć zmieniając domyślny sposób wyświetlania. Zaznacz wybrany stereotyp, a następnie wybierz z menu kontekstowego Appearance --> Default Appearance....
  • W oknie dialogowym Default Appearance możesz zmienić kolor tła lub obramowania lub zmienić domyślną czcionkę.
  • Można również przypisać do takiego stereotypu jakąś grafikę - wybierając Select Alternate Image.... Patrz również: Jak dodać obrazek do modelu?
  • Alternatywnie, zamiast obrazka można pokusić się o zmianę wyświetlania elementu przy użyciu Shape Script. W takim wypadku konieczne jest utworzenie specjalnego atrybutu elementu o nazwie _image oraz przejście do edytora Shape Script poprzez przycisk do zmiany wartości inicjalnej (Initial Value).
  • Możliwe jest określenie również domyślnych rozmiarów elementu poprzez stworzenie dodatkowych atrybutów o specjalnych nazwach: _sizeX - dla określenia szerokości w punktach oraz _sizeY - dla określenia wysokości w punktach.
8. Tworzenie tagged value jako relacji do pomiędzy stereotypami.
  • Wśród elementów z palety narzędzi Profile można odnaleźć relację o nazwie Tagged Value.

  • Stworzenie tego typu relacji pomiędzy stereotypami sprawi, że element będący źródłem tej relacji będzie wzbogacony o dodatkowy Tagged Value o nazwie relacji. Wartością takiego taga będzie mógł być dowolny element opatrzony stereotypem, na który wskazuje relacja.
  • Taka forma tworzenia relacji powinna być traktowana jako alternatywna do tworzenia zwykłych relacji pomiędzy elementami. Może ona okazać się przydatna na przykład w celach raportowych, gdy istnieje trudność w odfiltrowaniu elementów określonego typu po drugiej stronie zwykłej relacji.

Eksport profilu do pliku XML

Gdy uznamy, że profil jest już gotowy do testowania powinniśmy go zapisać w formie pliku XML. Aby to zrobić należy w oknie Project Browser zaznaczyć pakiet <<profile>> Wymagania, a następnie z menu kontekstowego wybrać opcję Save Package as UML Profile.
W oknie dialogowym, które zostanie wyświetlone należy wskazać miejsce na dysku (Filename), gdzie plik ma zostać zapisany. Możemy ponadto manipulować zaznaczonymi opcjami. Warto dodać, że pole Notes prezentuje ciąg znaków wpisany uprzednio jako opis pakietu.
Po zapisaniu pliku na dysku można zamknąć metamodel. 
Zapewne warto będzie wrócić do niego po przeprowadzeniu pierwszego testu działania profilu, aby nanieść poprawki.

Import profilu z pliku XML

Teraz przyszedł moment, kiedy trzeba utworzyć repozytorium dla modelu, w którym będziemy wykorzystywać profil. Można również otworzyć już istniejące repozytorium. 
W celu importu profilu posłużymy się oknem Resources. W EA w wersji 10 otwieramy je z menu: Project --> Resources. W EA w wersji 9.x i wcześniejszych otwieramy je z menu View --> More Project Tools --> Project Resources.
W oknie tym odnajdujemy pozycję UML Profiles i po kliknięciu prawym przyciskiem myszy wybieramy Import Profile.

W kolejnym oknie dialogowym wskazujemy wcześniej wygenerowany plik XML i naciskamy przycisk Import. Po zakończeniu importu powinna być widoczna nowa pozycja o nazwie profilu, czyli w naszym przykładzie: Wymagania. A pod spodem powinny być wyświetlone nazwy stereotypów, czyli: Funkcjonalne, Niefunkcjonalne i Wysokopoziomowe.

Jeśli zaznaczymy nazwę profilu, czyli Wymagania i po naciśnięciu prawego przycisku wybierzemy View Profile Information, wówczas zostanie wyświetlone okno informacyjne z treścią, jak na powyższym rysunku. Podobnie, w przypadku, gdy po wybraniu któregoś ze stereotypów wybierzemy opcję View Stereotype Information, o ile pole Notes tego stereotypu nie było puste.

Import profilu ma miejsce w odniesieniu do repozytorium. W przypadku, gdy kilku użytkowników korzysta z tego samego repozytorium, wówczas profil będzie dostępny dla wszystkich natychmiast po imporcie. Nie ma potrzeby, aby każda osoba samodzielnie importowała profil. Warto jednak mieć na uwadze, że gdy praca grupowa ma miejsce w oparciu o system kontroli wersji, na przykład SVN oraz o lokalne repozytoria, wówczas import (i późniejsza aktualizacja wersji profilu) jest konieczna przez wszystkich użytkowników.

Korzystanie z profilu

Gdy profil został już poprawnie zaimportowany można zacząć z niego korzystać. Utworzenie nowego elementu z wykorzystaniem profilu sprawia, że taki element jest od razu opatrzony właściwym stereotypem. W przypadku elementów typu Requirement stereotyp jest widoczny w polu Type.
Dodatkowo element taki ma już w momencie tworzenia stworzone tagged values. W przypadku wymagania o stereotypie Wysokopoziomowe są to dwa tagi: Źródło - pozwalające na wpisanie dowolnego ciągu znaków oraz Typ - pozwalający na wybór z listy wartości. 

Tworzenie elementów z wykorzystaniem okna Resources

Elementy opatrzone stereotypami zdefiniowanymi w profilu można umieszczać na diagramach poprzez przeciągnięcie wybranego stereotypu na diagram wprost z okna Resources. Jest to metoda najprostsza, jednak nieuważnemu użytkownikowi może przysparzać problemów, gdyż w pierwszym odruchu wybieramy wstawiane elementy z palety narzędzi, czyli Toolbox.

Tworzenie elementów z wykorzystaniem Toolbox

Okazuje się, że paleta narzędzi jest dostępna do wykorzystania dla profilu UML nawet bez jej definiowania. 
Możemy ją znaleźć prawie na samym dole listy po naciśnięciu przycisku More Tools... zaznaczonego na powyższym rysunku. 
Niestety każdorazowe otwarcie dowolnego diagramu powoduje wyświetlenie Toolboxa skojarzonego z danym typem diagramu i zamknięcie naszego Toolboxa.  To na dłuższą metę sprawia, że takie rozwiązanie nie jest satysfakcjonujące.
Możemy zatem posłużyć się opcją Set Toolbox Visibility, którą można odnaleźć na samym dole listy po naciśnięciu przycisku More Tools... W wyświetlonym wówczas oknie odnajdujemy i zaznaczamy naszą paletę narzędzi.
Po naciśnięciu przycisku OK nasz Toolbox będzie dostępny we wszystkich diagramach, podobnie jak Toolbox o nazwie Common.

Uwagi dodatkowe

  • Stosowanie profili UML dodatnio wpływa na jakość tworzonego modelu, gdyż ogranicza możliwość popełnienia błędów w nazwach stereotypów, nazwach tagów oraz wartościach tagów, gdy są wybierane z zamkniętej listy wartości.
  • Profile Helper - to nowość wprowadzona w wersji 10, która  ułatwia edycję profili UML. Nie została tu opisana, gdyż wielu czytelników korzysta jeszcze ze starszych wersji EA.
  • Nazwy stereotypów - należy dokładnie rozważyć ich długość, gdyż wpływają na czytelność drzewa projektu w oknie Project Browser. Można rozważyć stosowanie skrótów, o ile będą odpowiednio rozumiane.
  • Zmiany Tagged Values - gdy w definicji profilu dodamy nowe Tagged Value do stereotypu, wówczas w prosty sposób możemy przypisać je do już istniejących elementów poprzez wykorzystanie funkcjonalności Synch Tagged Values and Constraints... w oknie Resources w kontekście wybranego stereotypu.
    Bardziej kłopotliwe jest jednak usunięcie lub zmiana nazwy istniejącego taga. W takim przypadku konieczne jest posłużenie się odpowiednim skryptem.
  • Dalsze kroki - być może zasadne jest pokusić się o opakowanie profilu UML w MDG Technology, gdyż wówczas możliwe jest dołączenie również nowego typu diagramu oraz skojarzonego z nim Toolboxa, który otwiera się automatycznie wraz z diagramem.


Brak komentarzy:

Prześlij komentarz