cz. II.

Transkrypt

cz. II.
Przejścia
Natychmiastowe przekazanie sterowania z akcji lub
czynności kończącej dany stan do następnego stanu
akcji lub stanu czynności
W UML takie akcje określa się jako automatyczne
lub zakończeniowe
(przejście natychmiast po ukończeniu prac związanych ze stanem
źródłowym)
(spacja)
Przejście w diagramie występować powinno. A to dlatego, żeby powiedzieć, dokąd skierować się po wykonaniu danej
akcji lub czynności. Twórcy języka wpadli na genialny pomysł i postanowili wyrażać przejście w diagramie czynności
jako zwykłą strzałkę. Nie wiem, jak długo musieli nad tym myśleć, ale efekt okazał się porażający. (aby spowodować
wrażenie narastającego napięcia zwykłą strzałkę zobaczycie na następnym slajdzie).
(spacja)
Nie bez kozery słowo „natychmiastowe” pojawia się w tekście w kolorze czerwonym. Ważnym założeniem w
diagramach czynności jest bezpośrednie przejście do następnego prostokącika (lub tabletki, jak kto woli).
Za chwilę, jak wygląda bardzo skomplikowany diagram czynności.
1
Przejścia - przykład
Typowe postępowanie leniwego studenta:
Stan początkowy
Przygotuj prezentację (Ctrl+C, Ctrl+V)
Przejście automatyczne
Stan akcji
Przekaż swoje materiały koledze
Stan końcowy
(spacja)
I oto diagram czynności w całej okazałości. Jak na dłoni widać kolejno stan początkowy, stany akcji, stan końcowy.
Leniwy student pierwej przygotowuje prezentację z wykorzystaniem znanej wszystkim techniki.
Następnie dochodzi do wniosku, że skoro już się tak bardzo napracował, może lepiej nie przyjść na zajęcia, a materiały
przekazać koledze. Należy podkreślić, że jest to zachowanie wielce niestosowne.
Pytanie do publiczności: czy prezentowane stany są stanami akcji czy czynności?
Chwila na zastanowienie…
Odpowiedź: można przychylić się do stwierdzenia, że pierwszy ze stanów to stan czynności, drugi – stan akcji. Jednak
dokonanie takiego podziału zależy od poziomu abstrakcji, z jakim będziemy chcieli reprezentować model. Przy bardzo
szczegółowym modelu nawet akcja: „Przekaż swoje materiały koledze” może być potraktowana jako czynność (spakuj
materiały, znajdź kolegę, oddaj materiały itp.)
2
Rozgałęzienia
Notacyjne udogodnienie
Opisują ścieżki alternatywne
Jedno przejście wejściowe i co najmniej dwa przejścia
wyjściowe. Wyrażenie logiczne na każdym przejściu wyjściowym.
Wybór ścieżki na podstawie wartości wyrażenia logicznego.
Warunki dozoru:
• Jednoznaczne
• Kompletne
Życie jest okrutne… Nie zawsze możemy kroczyć prostą ścieżką. Czasem trzeba podejmować bardzo trudne decyzje
(np. iść na zajęcia czy nie iść). Język UML przewiduje nawet takie możliwości.
(spacja)
Tak po prawdzie to rozgałęzienia nie są w języku konieczne. Diagramy czynności to szczególny przypadek diagramów
stanów. Niektórzy mówią nawet, że diagramy czynności to nadmiarowy element języka, bo to samo można w
odpowiedni sposób wyrazić za pomocą diagramów stanów. W tych ostatnich na każdy stan można nałożyć specjalne
logiczne ograniczenie. To właśnie dlatego mówi się, że rozgałęzienia są tylko notacyjnym udogodnieniem. Jednak
często się z niego korzysta.
(spacja)
Zatem rozgałęzienia opisują różne warianty postępowania. Jak za chwilę zobaczycie, do rozgałęzienia dochodzi
najczęściej jedno przejście wejściowe, a wychodzą przynajmniej dwa przejścia wyjściowe. Logiczne to jest nawet, bo
coś musi się rozgałęziać.
O wyborze ścieżki decyduje wartość wyrażenia logicznego. Kolejność obliczania wartości wyrażeń nie jest ważna.
Pytanie do publiczności: Dlaczego?
Chwila na zastanowienie…
(spacja)
Dlatego, że na te wartości są nałożone dwa bardzo ważne ograniczenia: jednoznaczności i kompletności. Pierwszy
wrunek oznacza iż nie istnieją dwie gałęzie które mogą być wybrane w tym samym czasie Ale to za mało
3
Rozgałęzienia - przykład
Udaj
Udaj się
się do
do Tawerny
tawerny
[cena[else]
piwa > 5 zł]
Przejdź
Przejdźdo
doManhatannu
innego baru
[cena
piwa
> 5 zł i
[Jest
ładna
kelnerka]
jest ładna kelnerka]
Kup
Kup piwo
piwo
Pytanie do publiczności: czy podane warunki są dobre ? (z uzasadnieniem odpowiedzi)
Niestety, wypisane warunki nie są właściwe. Nie dlatego, że kelnerka nie jest ładna, ale dlatego, że nie spełniają
warunku jednoznaczności i kompletności. Widać wyraźnie, że te dwa warunki nakładają się na siebie. Gdybyśmy nie
oceniali urody kelnerki, moglibyśmy od razu przejść do innego baru, a to już świadczy o tym, że kolejność sprawdzania
warunków jest ważna. Nie możemy oczywiście do tego dopuścić. Po drugie – co zrobić, gdy cena piwa <= 5 zł?
(spacja)
Dlatego naprawiamy ten błąd.
(spacja)
(spacja)
Ten przykład jest już poprawny. Niestety, tutaj być może nie napijemy się piwa, ale z pewnością zobaczymy ładną
kelnerkę.
4
Rozwidlenia
Modelowanie współbieżnych przepływów sterowania.
Rozwidlenie - jedno przejście wejściowe i co najmniej dwa przejścia
wyjściowe.
Scalenie - odwrotnie: co najmniej dwa wejściowe, jedno wyjściowe.
Liczba przepływów opuszczających rozwidlenie powinna być równa liczbie
przepływów wchodzących do odpowiadającego mu scalenia.
W punkcie scalenia dochodzi do synchronizacji współbieżnych przepływów
sterowania.
Czynności zachodzące w równoległych przepływach mogą się komunikować.
Komunikujące się procesy - współprogramy.
(spacja)
Do zaprezentowania, że dwie akcje przebiegają w tym samym czasie służy rozwidlenie. Aby powrócić z rozwidlenia,
gdzieś po drodze powinno wystąpić scalenie.
(spacja)
Jak nam podpowiada intuicja, rozwidlenie to coś, do czego dochodzi jedna strzałka, a wychodzi dwie lub więcej.
Dla odmiany scalenie to coś, do czego dochodzą przynajmniej dwie strzałki, a wychodzi tylko jedna. Aby unikać
nadmiernego używania na studiach słówka coś (tak jak ktoś, gdzieś, kiedyś itp.) uchylimy rąbka tajemnicy i powiemy,
że rozgałęzienie i scalenie są reprezentowane za pomocą pogrubionej kreski. Szczegóły na kolejnym slajdzie.
Z powyższego daje się wywieść kolejną ważna własność: na danym diagramie liczba strzałek wychodzących z
rozgałęzień jest równa liczbie strzałek dochodzących do scaleń.
(spacja)
W punkcie scalenia procesy na siebie czekają. Dopiero po tym sterowanie przechodzi dalej.
(spacja)
Ponieważ czynności zachodzące na poszczególnych ścieżkach nie muszą być od siebie niezależne, w UML
zezwolono na ich komunikację.
W rzeczywistych systemach nie zawsze daje się uzyskać pełną równoległość, czasem bywają to procesy
sekwencyjne, ale z przełączaniem między sobą (tak uzyskiwany jest efekt równoległości).
5
Rozwidlenia i scalenia przykład
Rozpocznij naukę
rozwidlenie
Czytaj wykład
Oglądaj mecz
Jedz orzeszki
scalenie
Zakończ naukę
(spacja)
Dla przypomnienia: w punkcie scalenia wszystkie procesy oczekują na zakończenie najwolniejszego. Ciekawe, który to
będzie w tym przypadku (pewnie zależy od ilości orzeszków).
6
Tory i przepływ obiektów
Tory - podział stanów czynności na grupy
Każdy tor ma unikatową nazwę.
Elementy na diagramie – połączony zależnością z
czynnością lub przejściem (w wyniku kótrych elementy
są modyfikowane)
Przepływ obiektów – wystąpienia zależności i
obiektów
(spacja)
Na pojedynczym diagramie może występować wiele akcji i obiektów. Aby to wszystko uporządkować, wprowadzono tory obiektów.
(spacja)
Jeden tor jest najczęściej przypisany do jednostki przedsiębiorstwa (takie jest ich najczęstsze zastosowanie).
Ponieważ tory służą uporządkowaniu diagramu, dlatego ich nazwy nie powinny się powtarzać.
(spacja)
Dotychczas nie mówiliśmy nic o obiektach, które brały udział w czynnościach. Nie pokazywaliśmy np. co się dzieje z puszką orzeszków, które
spożywamy (w zasadzie powinno ich ubywać).
Na diagramach czynności można przedstawiać udział obiektów i ich stan w procesie. Udział orzeszków w procesie konsumpcji jest zasadniczy,
a ich stan można krótko określić jako: spożywane. Po procesie konsumpcji stan orzeszków ulega zmianie. Wówczas orzeszków nie ma (tzn.
gdzieś na pewno są), ale ogólnie ich stan to: zjedzone.
(spacja)
Takie wystąpienia zależności i obiektów na diagramie nazywamy przepływami obiektów, ponieważ reprezentują uczestnictwo obiektu w
przepływie sterowania. Następny slajd przestawia dość rozbudowany diagram czynności wraz z podziałem na ścieżki.
7
Przepływ obiektów c.d.
Klient
Dział sprzedaży
Hurtownia
Zamów towar
Tory
Zrealizuj zamówienie
Zgromadź towar
Kontynuuj pracę
Odbierz zamowienie
Z:Zamówienie
[realizowane]
Wystaw rachunek
Wyślij zamówione towary
Z:Zamówienie
[zrealizowane]
Przepływ obiektu
Zapłać rachunek
R: Rachunek
[niezapł acony]
Zakończ zamówienie
R:Rachunek
[zapłacony]
Klient, Dział sprzedaży i hurtownia to poszczególne tory. Poruszając się tymi torami w pionie możemy zobaczyć jakie
czynności lub akcje są realizowane przez użytkownika (bądź dział).
Co więcej, możemy sprawdzić, co dzieje się z poszczególnymi obiektami podczas wykonywania tych czynności.
Spójrzmy np. na obiekt z klasy zamówienie. Przy czynności realizuj zamówienie jego stan to realizowane, po wysłaniu
towarów jego stan zmienia się na zrealizowane. To chyba nie powinno zaskakiwać. Ten przykład może nie jest bardzo
studencki, ale być może przyda się przy modelowaniu Subiekta.
8
Zastosowania
Dynamiczne aspekty systemu: modelowanie przepływu czynności
Modelowanie operacji
Bardzo wygodne do modelowania procesów wielowątkowych
Dostarczają mechanizmu synchronizacji
Jak obiekty oddziałują na siebie
Ile obiektów bierze udział w procesie
Na koniec najważniejsze. Kiedy już wszystko wiadomo o diagramach czynności to aż człowieka nosi, żeby zacząć tego używać.
Ale brakuje informacji podstawowych: kiedy warto je stosować.
(spacja)
Są dwie podstawowe sytuacje, w których wskazane jest stosowane diagramu czynności. Pierwszy z nich, jak sama nazwa diagramu wskazuje,
to modelowanie przepływu czynności. Wówczas pokazujemy, co dzieje się w systemie, jakie czynności są wykonywane i w jakiej kolejności.
Bardzo często wykorzystywane jest to przy tworzeniu i dokumentowaniu procesów zachodzących w przedsiębiorstwie.
(spacja)
Druga płaszczyzna zastosowań to modelowanie operacji. W tym przypadku diagramy pełnią role schematów blokowych (nawet wizualnie są
one podobne, do tego dochodzą te same mechanizmy -> rozgałęzienia). Z modelowaniem pętli też nie ma problemu, właśnie przy
wykorzystaniu rozgałęzień.
(spacja)
(spacja)
Oprócz tego warto stosować te diagramy do modelowania procesów wielowątkowych (w tym samym czasie piję oranżadę i rozmawiam z
przyjaciółmi). Istotną cechą jest też dostarczenie mechanizmu synchronizacji, więc można za pomocą DC modelować np. transfer danych.
(spacja)
Nie stosujemy DC, kiedy chcemy dowiedzieć się o tym, jak obiekty wpływają na siebie oraz gdy chcemy pokazać liczność obiektów biorących
udział w procesie.
(spacja)
9