Mikołaj Kamiński 280596
Relacja Zawierania
Relacja zawierania to rodzaj relacji kierunkowej, która zachodzi pomiędzy przypadkami użycia
(use case'ami) w diagramie przypadków użycia. Jak widzimy na diagramie, sama relacja
dziedziczy po NamedElement, dlatego taka relacja może mieć własną nazwę. W analizie składni
abstrakcyjnej (abstract syntax) UML relacja Include dziedziczy również po DirectedRelationship,
co oznacza, że posiada wyraźnie określony kierunek – od przypadku nadrzędnego
(includingCase) do przypadku dołączanego (addition). W jej strukturze składniowej można
wyróżnić dwie perspektywy: po stronie includingCase (czyli przypadku nadrzędnego) relacja ta
przyjmuje postać kompozycji, co oznacza, że Include jest integralną częścią zachowania tego
przypadku. Z kolei po stronie addition (czyli przypadku dołączanego) występuje zwykła
asocjacja, wskazująca, że ten przypadek użycia może być współdzielony przez wiele relacji
include i nie należy wyłącznie do jednego przypadku nadrzędnego. Takie podejście umożliwia
zarówno ponowne użycie zachowań, jak i hierarchiczną strukturę przypadków użycia.
Included a Including
Zachowanie jednego UseCase, określanego jako included UseCase (dodawany UseCase),
zostaje wstawione do zachowania drugiego UseCase, zwanego including UseCase (włączający
UseCase). Oznacza to, że cały zestaw zachowań z UseCase dodawanego jest wykonywany jako
część podstawowego scenariusza. Cały opis zachowania included UseCase musi zostać
wykonany, zanim wykonywanie zachowań Included UseCase’a zostanie wznowione.
Hierarchiczność
Jeden UseCase może zawierać w sobie wiele, innych UseCaseów ale sama relacja zawierania
jest binarna (w skład jednej relacji zawsze wchodzą dwa UseCase’y included i including).
Relacja include wspiera hierarchiczną kompozycję przypadków użycia, umożliwiając
wielopoziomowe włączanie wspólnych zachowań (UseCase, który jest włączony w jednej relacji
include sam może włączać inne UseCase’y); z uwagi na kierunkowość tej relacji oraz zależność
zachowania przypadku nadrzędnego od podrzędnego, niedozwolone jest tworzenie cykli —
przypadek użycia nie może pośrednio ani bezpośrednio zawierać samego siebie.
Kiedy używamy relacji include?
Głównym celem użycia relacji «include» jest wyodrębnienie wspólnych fragmentów zachowania,
które są używane przez więcej niż jeden UseCase. Dzięki temu możliwa jest modularność i
unikanie duplikacji opisu zachowań. To co zostaje w podstawowym UseCase po wyodrębnieniu
zazwyczaj nie jest kompletne same w sobie i polega na included UseCase.
Przykład i notacja : Cześć z UseCaseów przedstawionych na tym diagramie przypadków użycia,
będzie wykonywać te same procesy np. dla withdraw, transfer i deposit będzie to identyfikacja
karty. Zamiast zawierania opisu tego procesu w każdym z UseCaseów, możemy wyodrębnić ten
proces jako osobny UseCase a następnie połączyć je ralacją include w następujący sposób:
Relacje include na diagramach przypadków użycia przedstawiamy za pomocą przerywanej linii
ze strzałką, dodając adnotacje <<include>>.