Wprowadzenie

Pojęcie kontekstu projektu i diagram przypadków użycia jako narzędzie, nadal rodzi wiele pytań. Spowodowane jest to tym, że diagram przypadków użycia to najczęściej wykorzystywany diagram, najczęściej też “nielegalnie przeciążany” informacjami o architekturze wewnętrznej (związki ‘include’ i ‘extend’). Jest to także najbardziej abstrakcyjny diagram w notacji UML. Postanowiłem odpowiedź “publicznie” na pytanie, które w różnych formach, często pada w projektach, na szkoleniach i w mailach do mnie kierowanych. Przykład jednego z nich:

Mam pytanie, które dręczy mnie od jakiegoś czasu i teraz zmobilizowałam się by je zadać.

W artykule Jarosław Żeliński (9 października 2012) pisze Pan: “Inny System, jeżeli inicjuje akcję czyli żąda usługi także jest aktorem, ale System realizujący na nasze zlecenie jakieś usługi nie jest aktorem, jest tylko wywoływany, sam z siebie nie inicjuje żadnej akcji. On realizuje jakąś potrzebną nam funkcję.”

Natomiast w innych miejscach,np. w dokumentacji Generatora ofert dla Kancelarii Senatu (Jarosław Żeliński, 22 października 2019) , czy w Swojej książce ( ( s.31) obrazuje Pan zewnętrzny system oferujący usługę symbolem Aktora. Być może to zależy od kontekstu, ja jednak nie dostrzegam jakiegoś niuansu, czy może Pan wyjaśnić ten dylemat? I drugie pytanie.

W książce ( s.54, pierwszy akapit pod Rys.8.5) natknęłam się na zdanie : “Powyższy model to struktury danych dla “pojęć opisujących spotkania”. Można go sporządzić także w notacji obiektowej (UML), czyli diagramem klas, jednak tu dla uproszczenia pominięto tę wersję i pokazano model danych (model obiektowy ma inne zasady tworzenia i będzie opisany w dalszej części książki)”. O jaki model w notacji obiektowej (UML) chodzi? model dziedziny? (w dalsze części książki jest on opisany)

Byłabym wdzięczna za odpowiedź

na to pytanie (w zasadzie pytania) odpowiem z pomocą przykładu wraz z objaśnieniami.

Specyfikacja UML

Na początek kilka kluczowych pojęć z UML. Rozdział 18 Use Case w pierwszym akapicie informuje nas, że:

UseCases are a means to capture the requirements of systems, i.e., what systems are supposed to do. The key concepts specified in this clause are Actors, UseCases, and subjects. Each UseCase?s subject represents a system under consideration to which the UseCase applies. Users and any other systems that may interact with a subject are represented as Actors.

To znaczy, że: 1. Przypadki Użycia to sposób na uchwycenie [a nie pełne opisanie! przyp. autora] wymagań wobec systemu, tj. tego Co system ma zrobić. 2. Kluczowymi pojęciami są tu: Aktor, Przypadek Użycia i Przedmiot [system jako przedmiot opisu, przyp. autora]. 3. Przedmiot reprezentuje analizowany system, którego wykorzystanie [jego cel] reprezentuje Przypadek Użycia. 4. Użytkownicy i wszelkie inne systemy, które mogą wchodzić w interakcje z Przedmiotem [opisu], są reprezentowani [na diagramach przypadków użycia] jako Aktorzy. Bardzo ważnym słowem są tu interakcje. Akapit 18.1.3.1. tej specyfikacji:

A UseCase may apply to any number of subjects. When a UseCase applies to a subject, it specifies a set of behaviors performed by that subject, which yields an observable result that is of value for Actors or other stakeholders of the subject.

Czyli: Przypadek Użycia może dotyczyć (być powiązany z) dowolnej liczby Przedmiotów opisu (kontekstów). Jeżeli Przypadek Użycia jest skojarzony z określonym Przedmiotem, oznacza to, że określa jego zestaw zachowań, co z kolei daje (opisuje) obserwowalny wynik (efekt, produkt), który ma wartość dla określonych aktorów lub innych interesariuszy. Warto tu zwrócić uwagę na dwie rzeczy: Przypadek Użycia to abstrakcja reprezentują usługę rozumianą jako określony efekt, tak więc Fakturowane może być cechą wielu aplikacji w tym samym projekcie (np. i w CRM i W FK). Po drugie interesariuszem aplikacji może być, poza bezpośrednim użytkownikiem, każda osoba lub byt zależny nawet pośrednio, od danego Przedmiotu.

Wyjaśnienie na przykładzie

Poniżej opis prostego zintegrowanego systemu składającego się z trzech komponentów oraz przykłady trzech różnych kontekstów hipotetycznego projektu.

Model złożonego systemu

Na diagramie poniżej (UML, diagram komponentów) zobrazowano architekturę złożoną z trzech systemów: Użytkownik używa Systemu A, System A korzysta z usług (jest zależy od) Systemu B, System B korzysta z usług Systemu C. System C jest tu systemem niezależnym.

Model architektury integracji (źr. autor)

Powyższy złożony system może być przedmiotem kilku różnych projektów o różnych zakresach.

Trzy konteksty

Poniżej przykładowe zakresy projektów wyrażone z pomocą diagramów przypadków użycia.

Zakres projektu obejmuje tylko System A, system B świadczy mu usługi.
Zakres projektu obejmuje tylko System B, który świadczy usługi dla Systemu A i jest zależny od Systemu C.
Zakres projektu obejmuje tylko System C, który świadczy usługi systemowi B

(stereotypy ‘human’ i ‘application’ to często przyjmowana konwencja, nie są one częścią specyfikacji UML).

Powyższe trzy diagramy obrazują zakresy trzech odrębnych projektów. Są to trzy różne konteksty analizy i projektowania dla tego samego złożonego systemu jako całości. Aktor co do zasady (notacja UML) jest bytem zewnętrznym w stosunku do systemu będącego przedmiotem opisu (kontekstem projektu dokumentowania wymagań). Przypadki użycia to wyłącznie abstrakcje usług (w obiektowym paradygmacie z zasady na modelu przypadków użycia nie używamy związków ‘extend’ i ‘include’, uzasadniałem to w artykule Jarosław Żeliński (6 stycznia 2019)). Na diagramie przypadków użycia, związek między aktorem (który może być człowiekiem ‘human’, lub innym systemem ‘application’) a usługą, którą dla niego świadczy system będący przedmiotem opisu, jest asocjacja (linia ciągła). Jeżeli chcemy pokazać, że nasz System musi korzystać z usług innego zewnętrznego systemu (jest od niego zależny), to łączymy opisywany System i ten zewnętrzny (aktora) związkiem użycia (zależność: nasz system jest uzależniony od zewnętrznego) wskazującym na źródło uzależnienia.

UWAGA! Integracja z systemem zewnętrznym, który świadczy usługi, nie jest Przypadkiem Użycia systemu modelowanego!

Podsumowanie

Powyższe przykłady obrazują ważne pojęcie jakim jest kontekst projektu. Nie raz diagramy takie są nazywane (i słusznie) modelem zakresu projektu. Moga one być kontynuowane w trakcie realizacji projektu (nadzór autorski).

Można więc zobrazować także to, że nasz system (jego abstrakcja) będzie miał (lub już ma) znaną nam implementację. Wtedy korzystamy ze związku realizacji jak na przykładzie poniżej.

Model otoczenia Systemu CRM zawierający informację o implementacji

Na diagramie pokazano, że Systemem CRM który wdrożymy, będzie aplikacja wFirma.pl co pokazano związkiem realizacji (aplikacja wFirma.pl – komponent UML – realizuje wymagania na System CRM).

Powyższy diagram czytamy: Użytkownik (człowiek) korzysta z Systemu CRM w celu wystawiania Faktur i rejestrowania Zamówień (detale usług dokumentujemy osobno jako warunki początkowe i końcowe, scenariusze przypadków użycia i struktury dokumentów Faktura i Zamówienia, np. z pomocą diagramu struktur złożonych UML, co opisałem w Jarosław Żeliński (2 grudnia 2019)). Nasz system CRM korzysta z API oferowanego przez Główny Urząd Statystyczny (GUS) do pobierania danych firm na podstawie ich numeru NIP (to nie jest przypadek użycia naszego Systemu CRM, szczegóły tej integracji zawiera scenariusz przypadku użycia Zamówienia lub Faktury oraz opis aktora GUS). Wygląda to tak:

Dlaczego na diagramie aplikacja wFirma.pl to komponent a nie aktor UML? Aktor to abstrakcyjny byt poza systemem, mający z nim interakcję, więc pokazanie na diagramie przypadków użycia implementacji systemu (symbol) nie może być aktorem, bo związek abstrakcji i jej realizacji nie jest interakcją (realizacja i użycie to są zależności ale różne). [autokorekta 2020-03-18, 20:40].

Konstrukcje użyte w projekcie Generator Ofert opisałem i skomentowałem w Jarosław Żeliński (22 października 2019).

O tym, że Czas nie jest aktorem systemu pisałem tu: Jarosław Żeliński (27 listopada 2011).

Źródła

Object Management Group. (2017, December). Unified Modeling Language (UML) [OMG.org]. UML. https://www.omg.org/spec/UML/
Żeliński, J. (2017). Analiza biznesowa: praktyczne modelowanie organizacji (Grupa Wydawnicza Helion, Ed.). Wydawnictwo Helion. https://helion.pl/ksiazki/analiza-biznesowa-praktyczne-modelowanie-organizacji-jaroslaw-zelinski,sfomov.htm

Jarosław Żeliński

Jarosław Żeliński: autor, badacz i praktyk analizy systemowej organizacji: Od roku 1991 roku, nieprzerwanie, realizuje projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzi samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako nieetatowy wykładowca akademicki, prowadzi wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie.) Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów. Prawa autorskie: Zgodnie z art. 25 ust. 1 pkt. 1) lit. b) ustawy o prawie autorskim i prawach pokrewnych zastrzegam, że dalsze rozpowszechnianie artykułów publikowanych w niniejszym serwisie jest zabronione bez indywidualnej zgody autora (patrz Polityki Strony).

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.