Trzy różne sposoby doprecyzowania modelu#

Stereotyp, wartość oznaczona (tagged value) i ograniczenie rozszerzają lub doprecyzowują model UML, ale nie oznaczają tego samego. Stereotyp klasyfikuje element jako określony rodzaj w danym profilu, wartość oznaczona podaje wartość właściwości tego stereotypu, a ograniczenie formułuje warunek, który model lub jego instancje mają spełniać.

Klasa Konto ma stereotyp «entity», właściwość profilu persistence o wartości database oraz ograniczenie, że saldo nie może być ujemne.
Stereotyp, właściwość i ograniczenie mają odrębne role w modelu.

W przykładzie «entity» jest stereotypem, który klasyfikuje Konto jako encję zgodnie z przyjętym profilem. persistence = "database" ilustruje wartość oznaczoną. Warunek saldo >= 0 jest ograniczeniem domenowym. Rysunek jest schematyczny: poprawny model powinien definiować używane stereotypy i właściwości w profilu albo jednoznacznie wyjaśniać przyjętą notację.

Stereotypy i profile#

Stereotyp rozszerza znaczenie elementu modelu w ramach mechanizmu profili UML. Zapisuje się go w cudzysłowie kątowym przy elemencie, na przykład «entity», «service» lub «boundary», jeśli taki stereotyp jest zdefiniowany dla danego profilu. Profil może definiować stereotypy, ich właściwości oraz ograniczenia dotyczące stosowania.

Sama etykieta w cudzysłowie kątowym nie tworzy automatycznie standardowego znaczenia. Używany stereotyp może pochodzić z profilu UML, profilu narzędzia, standardu dziedzinowego albo projektu. Jeśli odbiorca nie zna źródła, podaj definicję lub odwołaj się do profilu w modelu. Nie wymyślaj stereotypów, które brzmią technicznie, ale nie niosą uzgodnionej semantyki.

Stereotyp nie jest podklasą UML ani komentarzem bez konsekwencji. Może klasyfikować metaklasę modelu i udostępniać właściwości, ale nie zmienia dowolnie podstawowych reguł UML. Profile rozszerzają model w określony sposób; gdy potrzebna jest zupełnie nowa semantyka, zwykły stereotyp może nie wystarczyć.

Wartości oznaczone#

Tagged value to wartość przypisana właściwości zdefiniowanej przez stereotyp lub profil. Jej nazwa i typ wynikają z definicji, a zapis na diagramie może pojawić się w nawiasach klamrowych, na przykład {persistence = "database"}. Konkretne narzędzia różnią się sposobem prezentowania wartości, zwłaszcza jeśli ich wiele.

Wartość oznaczona nie jest dowolną adnotacją, którą można dodać do każdego elementu bez reguł. Dla spójnego modelu zdefiniuj, jakie elementy mogą mieć właściwość, jaki jest jej typ, czy jest obowiązkowa i co oznacza. Jeśli podajesz retention = 30, jednostka i kontekst powinny być jasne.

Ograniczenia#

Ograniczenie (constraint) określa warunek, który musi być spełniony dla elementu, jego instancji albo relacji. Może być zapisane tekstem w nawiasach klamrowych, w notatce przypiętej do elementu lub jako wyrażenie w języku takim jak OCL, jeśli model wymaga formalnej precyzji. Przykład {saldo >= 0} ogranicza dopuszczalne wartości salda.

Naturalnojęzykowe ograniczenie jest czytelne, ale może pozostawiać niejednoznaczność. Formalne wyrażenie daje większą precyzję, o ile odbiorcy znają jego składnię i kontekst. Zapisz, do jakiego elementu stosuje się warunek, kiedy jest sprawdzany i co oznacza jego naruszenie, gdy te szczegóły mają znaczenie.

Ograniczenie nie jest automatycznie walidowane ani egzekwowane przez sam diagram. Narzędzie może je wyświetlić, a środowisko model-driven może je interpretować, lecz bez takiego mechanizmu pozostaje deklaracją modelu, którą należy wdrożyć i przetestować.

Jak wybrać właściwy mechanizm#

Użyj stereotypu, gdy chcesz sklasyfikować modelowany element i nadać mu znaczenie z profilu. Wartość oznaczona służy do zapisania konkretnej cechy tej klasyfikacji. Ograniczenie stosuj, gdy potrzebujesz wyrazić warunek dotyczący dopuszczalnego modelu lub stanu.

Przykład: «service» może klasyfikować komponent jako usługę, właściwość protocol = "HTTPS" opisywać protokół, a ograniczenie wymagać, by endpoint korzystał z TLS. Jeśli informacja nie wpływa na interpretację ani narzędzia, prosty komentarz może być lepszy od nowej właściwości profilu.

Czytelność i przenośność#

Wartości, ograniczenia i stereotypy szybko przeciążają diagram. Pokazuj te, które są ważne dla danej decyzji lub odbiorcy; pozostałe można przechować w szczegółach modelu. Wspólna konwencja sprawia, że dwa diagramy nie przypisują różnego znaczenia tej samej etykiecie.

Narzędzia mogą obsługiwać profile i wartości w różnym zakresie, a eksport do obrazka lub dokumentu może je pominąć. Jeśli informacje są istotne, sprawdź, czy eksport zachowuje je czytelnie oraz czy odbiorca ma definicję użytego profilu. Nie polegaj na prywatnej konwencji narzędzia jako jedynym źródle semantyki.

Typowe błędy#

  • Stereotyp potraktowany jak dowolny tag. Jego znaczenie powinno wynikać z profilu lub jawnej konwencji.
  • Wartość bez definicji właściwości. Nazwa, typ i dozwolone użycie powinny być ustalone.
  • Ograniczenie uznane za automatycznie egzekwowane. Diagram sam nie zapewnia walidacji ani zachowania kodu.
  • Warunek przypisany niejasnemu elementowi. Wskaż zakres i kontekst ograniczenia.
  • Ograniczenia tekstowe traktowane jak formalne. Zwykły język może wymagać doprecyzowania.
  • Profil pomylony z podklasą. Stereotyp rozszerza metamodel, a nie tworzy zwykłe dziedziczenie domenowe.
  • Nadmiar metadanych na diagramie. Pokaż informacje potrzebne czytelnikowi, resztę udokumentuj w modelu.

Podsumowanie#

Stereotyp klasyfikuje element zgodnie z profilem, wartość oznaczona uzupełnia jego właściwość, a ograniczenie stwierdza warunek, który ma obowiązywać. Każdy z tych mechanizmów wymaga czytelnej definicji. Sam zapis nie gwarantuje, że narzędzie lub implementacja wymusi warunek.