50
Inżynieria
oprogramowania
www.sdjournal.org
Software Developer’s Journal 11/2007
UML – modelowanie dynamicznych
aspektów oprogramowania
B
ędąc świadomym wymagań stawianych systemowi in-
formatycznemu, kolejnym krokiem jest zaprojektowa-
nie sposobu realizacji tychże wymagań. W tym celu bu-
duje się modele prezentujące statyczne i dynamiczne aspekty
oprogramowania. Modele te budowane są w kontekście realizacji
poszczególnych przypadków użycia. Modele dynamiki systemu
przedstawiają wszelkie możliwe ścieżki realizacji każdego wy-
magania funkcjonalnego (przypadku użycia). Analiza diagramów
modelujących dynamikę uwzględniająca wymagania niefunkcjo-
nalne, prowadzi do zbudowania statycznego modelu oprogramo-
wania. Tak więc pierwszym krokiem na etapie projektowaniu sys-
temu informatycznego jest sprecyzowanie pożądanego sposo-
bu działania systemu, co pozwoli dalej na wyodrębnienie elemen-
tów strukturalnych. W artykule przedstawione zostaną diagramy
UML wykorzystywane do opisu dynamiki oprogramowania.
Diagramy sekwencji
Diagram sekwencji (przebiegu) jest jednym z diagramów inte-
rakcji. Diagramy interakcji odnoszą się do modelowania dyna-
micznych aspektów systemu i służą do opisu współpracy po-
między grupami obiektów. Na diagramach sekwencji uwzględ-
nia się konkretne i prototypowe egzemplarze klas, interfej-
sów, komponentów i węzłów, a także komunikaty przekazy-
wane między nimi. Elementy te są rozpatrywane w kontekście
pewnego scenariusza ilustrującego zachowanie systemu. Dia-
gram sekwencji główny nacisk kładzie na uwypuklenie kolej-
ność przesyłania komunikatów w czasie. Diagramy sekwencji
stosuje się, aby spojrzeć na zachowanie się kilku obiektów w
ramach jednego przypadku użycia systemu. Są użyteczne do
przedstawiania współpracy obiektów, ale nie umożliwiają ści-
słej definicji zachowania. Reasumując, diagramy sekwencji:
• przedstawiają interakcje pomiędzy obiektami (w UML 2.0
tzw. uczestnikami interakcji), przy czym największy na-
cisk kładą na zależności czasowe;
• stosowane są, gdy kolejność wywołań oraz ograniczenia
czasowe są istotne;
• nadają się do modelowania: systemów czasu rzeczywiste-
go, przetwarzania współbieżnego i złożonych scenariuszy;
• nie prezentują związków strukturalnych miedzy współ-
działającymi obiektami;
• pozwalają na zaprezentowanie synchronicznych i asyn-
chronicznych interakcji.
Notacja UML 2.0 wprowadziła do diagramów sekwencji szereg
nowości, które bez wątpienia ułatwiają prezentację złożonych
scenariuszy wybranych przypadków użycia. Częstym proble-
mem towarzyszącym diagramom sekwencji była trudność z
przedstawieniem zachowania warunkowego i pętli. Rozwią-
zaniem okazało się wprowadzenie ramek interakcji, które słu-
żą do wyróżnienia fragmentu diagramu sekwencji. Każda taka
ramka ma operator (stereotyp interakcji), a każdej wydzielonej
części ramki może towarzyszyć warunek, co pozwala na wizu-
alizowanie różnych wariantów złożonego scenariusza. Najczę-
ściej stosowane stereotypy interakcji:
•
alt
(alternatywa) – zostaje wykonany tylko ta część ram-
ki, której warunek jest prawdziwy;
•
opt
(opcja) – fragment zostaje wykonany tylko wówczas,
gdy zawarty w nim warunek jest prawdziwy, czyli odpo-
wiednik operatora
alt
z jednym wejściem;
•
par
(współbieżność) – każda część ramki interakcji uru-
chamiana jest równolegle;
•
loop
(pętla) – ramka interakcji może być wykonana kilka
razy, a warunek określa podstawę interakcji;
•
region
(obszar krytyczny) – ramka interakcji może mieć
tylko jeden wątek uruchomiony w danej chwili;
•
neg
(negacja) – ramka przedstawia niepoprawną interakcję;
•
ref
(referencja) – ramka odwołuje się do interakcji zdefi-
niowanej na innym diagramie. Ramka jest rysowana tak,
aby przykrywać linie czasu obiektów biorących udział w
interakcji. Można zdefiniować para metry wejściowe i war-
tość zwracaną;
•
sd
(diagram sekwencji) – używany do otaczania ramką ca-
łego diagramu sekwencji, w miarę potrzeb.
Diagramy komunikacji
Diagram komunikacji, tak jak diagram sekwencji, jest jednym z
diagramów interakcji. Uwzględnia się na nich konkretne i proto-
typowe egzemplarze klas, interfejsów, komponentów i węzłów,
a także komunikaty przekazywane między nimi, w kontekście
pewnego scenariusza ilustrującego zachowanie systemu.
Diagram komunikacji kładzie nacisk na związki struktural-
ne między obiektami (w UML 2.0 tzw. uczestnikami) biorącymi
udział w interakcji oraz komunikaty przesyłane między nimi.
Jest wygodniejszy od diagramów sekwencji do przedstawienia
złożonych iteracji i rozgałęzień. W swojej idei diagramy komu-
nikacji są podobne do diagramów sekwencji. Ich głównym ce-
lem jest więc przedstawienie przepływu komunikatów pomię-
dzy obiektami. Diagramy komunikacji uwzględniają jednak dwa
aspekty: statyczną strukturę uczestniczących obiektów, włą-
czając związki, atrybuty i operacje (jest to nazywane „kontek-
stem współpracy”) oraz kolejność komunikatów wymienianych
pomiędzy obiektami dla realizacji konkretnego zadania. Dia-
gram komunikacji może być rozrysowany dla pewnych typów
obiektów, dla pewnych operacji lub pewnych przypadków uży-
Rafał Kasprzyk
Autor jest absolwentem Wydziału Cybernetyki WAT, gdzie od 2 lat
zajmuje stanowisko asystenta w Instytucie Systemów Informa-
tycznych. Pracuje w firmie ISOLUTION będąc odpowiedzialnym
za przygotowywanie, prowadzenie i audyt szkoleń obejmujących
analizę i projektowanie systemów informatycznych z użyciem no-
tacji UML.
Kontakt z autorem:
rafal.kasprzyk@wat.edu.pl
51
www.sdjournal.org
Software Developer’s Journal 11/2007
UML – modelowanie dynamicznych aspektów oprogramowania
cia. W odróżnieniu od diagramów sekwencji wymiar czasu nie jest bezpo-
średnio odwzorowany i nie ma on takiego znaczenia. Natomiast odwzoro-
wane są powiązania pomiędzy obiektami (prezentujące pewną część po-
wiązań z diagramu klas). Diagram sekwencji i komunikacji są semantycz-
nie równoważne – tzn. przekazują tę samą informację. Istnieje możliwość
przekształcenia diagramu sekwencji w diagram komunikacji i odwrotnie
bez utraty informacji.
Diagramy aktywności
Diagramy aktywności (czynności) w zasadzie są schematami blokowy-
mi, które przedstawiają przepływ sterowania z aktywności do aktyw-
ności. Obrazują one sekwencyjne bądź to równoległe/współbieżne kro-
ki procesu. Stanowią uogólnioną wersję diagramów stanów, a ich podsta-
wowym zadaniem nie jest analiza stanów obiektu, ale modelowanie prze-
twarzania (przepływu zadań). Stany diagramu aktywności odpowiadają
stanom wyróżnianym w trakcie przetwarzania, a nie stanom obiektów.
Aktywność może być interpretowana jako zadanie do wykonania przez
człowieka lub komputer, ale również jako odpowiedzialność, operacja czy
metoda klasy. Przejścia pomiędzy stanami (czynnościami) nie są zwią-
zane z nadejściem zdarzenia, ale z zakończeniem przetwarzania specy-
ficznego dla danej aktywności. Diagramy aktywności możemy wykorzy-
stać na bardzo wiele sposobów. Są szczególnie przydatne przy tworzeniu
SI i to nie tyko w podejściu obiektowym. Tak więc:
• umożliwiają zrozumienie procesów biznesowych;
• doskonale nadają się do modelowania przepływu zdań i w opisie pro-
cesów z dużą liczbą równoległych czynności;
• wykorzystywane są, jako wygodny sposób analizy przypadków użycia;
• dają możliwość opisu czynności warunkowych i współbieżnych;
• proces warunkowy jest przedstawiany za pomocą rozgałęzienia
(ang.
branch) i scalenia (ang. marge);
• proces współbieżnych jest przedstawiany za pomocą rozwidlenia
(ang.
fork) i złączenia (ang. join);
• określają sposób realizacji określonego działania opisując podstawo-
we reguły porządkujące (szeregujące) czynności;
• pozwalają na zobrazowanie współdziałania obiektów oraz określenie
obiektów odpowiedzialnych za wykonanie danej aktywności na wyso-
kim poziomie abstrakcji za pomocą tzw. torów pływackich (ang.
swim-
lines). W celu uszczegółowienia należy stosować diagramy interakcji;
• mogą być stosowane do opisu algorytmów sekwencyjnych, równole-
głych i współbieżnych.
Zmiany wprowadzone w notacji UML 2.0, a dotyczące diagramów aktyw-
ności sięgają bardzo daleko. Pierwszą widoczną zmianą jest umożliwie-
nie zastosowania torów zarówno pionowych jak i poziomych. Pozwala to
prezentować nie tylko obiekty odpowiedzialne za wykonanie danej aktyw-
ności, ale grupować aktywności w większe zbiory i przypisywać im zbior-
cze nazwy lub miejsca realizacji. Inną nowością jest wprowadzenie możli-
wości zakończenia realizacji scenariusza, w dowolnym miejscu, jeżeli zaj-
dzie określony warunek. Dopracowano również sposób przesyłania obiek-
Rysunek 2.
Przykładowy diagram komunikacji
���������������
��������������
����������������
�������������������
��������������������������
�������������������������
�����������������������
����������������
�������������������
������������������������������
���������������
��
����������������
��������
�������
������������
����������
�����������������
�������
������������
���������������
������������
�����������������
�������������
�������������������
������������������
����������������
��������
�������
����������
������������������
�����
������������������
����
���
Rysunek 1.
Przykładowy diagram sekwencji
52
Inżynieria
oprogramowania
www.sdjournal.org
Software Developer’s Journal 11/2007
tów pomiędzy czynnościami wprowadzając pojęcie żetonu (ang.
token) i
wtyku (ang.
pin) wykorzystywanych do przekazywania parametrów wej-
ściowych i wyjściowych pomiędzy czynnościami. Idea ta pochodzi z sie-
ci Petriego. Diagramy aktywności wykorzystywane są do dynamicznego
modelowania systemów. W szczególności stosowane są do modelowania
przepływu zadań i opisu algorytmów. Mocną stroną tych diagramów jest
to, że zachęcają do stosowania procesów współbieżnych tam gdzie to tyl-
ko możliwe.
Diagramy maszyny stanów
Diagramy maszyny stanów, nazywane również diagramami stanów, są
znaną techniką opisu zachowania się systemu. W technice obiektowej
diagramy te wykorzystuje się do zobrazowania możliwych stanów obiek-
tu oraz przejść, które powodują zmianę stanu obiektu. Istotną zaletą dia-
gramów maszyny stanów jest możliwość modelowania zachowania obiek-
tów danej klasy w oderwaniu od reszty systemu. Są szczególnie użytecz-
ne do modelowania historii życia obiektu. Przedstawiają reakcje obiek-
tów na otrzymane sygnały i zdarzenia. Nadaje się więc doskonale do opi-
su obiektów reaktywnych oraz projektowania systemów interakcyjnych.
Formalnie diagram maszyny stanów jest grafem skierowanym, którego
wierzchołki stanowią stany obiektu, a łuki opisują przejścia między stana-
mi. Przejście jest odpowiedzią obiektu na jakieś zdarzenie. Akcje są zwią-
zane z przejściami i traktuje się je jako procesy szybkie i nieprzerywalne
(atomowe). Ze stanami związane są czynności, które mogą trwać dłużej i
mogą zostać przerwane przez zdarzenie. Diagramy maszyny stanów po-
zwalają również na wizualizowanie tzw. stanów złożonych. Stan złożony
powstaje w efekcie zagnieżdżania stanów i w związku z tym może być do-
komponowany na stany bardziej proste. Dekompozycja jest rodzajem spe-
cjalizacji. Każdy z podstanów musi dziedziczyć przejścia nadstanu. Tylko
jeden z podstanów może być aktywny w danym momencie. Diagramy ma-
szyny stanów radzą sobie również w wypadku, gdy obiekt ma pewne zbio-
ry niezależnych zachowań czyli może znajdować się w kilku stanach rów-
nocześnie (tzw. stany współbieżne). Jeśli jednak dla jednego obiektu jest
kilka skomplikowanych diagramów stanów współbieżnych, to dobrą prak-
tyką jest próba rozbicia tego obiektu na kilka prostszych. Reasumując ele-
menty diagramów stanów to:
Rysunek 4.
Przykładowy diagram maszyny stanów
������������
�����������
���������������
��������
������
������������������
������������������
����������
�����
������
�����
�����
��������
�������
�����������
���������
���������
������������
������������
�������
����������������
�����
������������������
������������
����������
�������������
������������
�����
���������
���������
������������
�������
�������������
�������
����������������������������������
���������������������������������������
Rysunek 3.
Przykładowy diagram aktywności
Rysunek 5.
Przykładowy diagram przeglądu interakcji
��������������
���
�����������������������
��������
��������
�������
��������
������������������
�������������������
��������������
�����������������������������
�����������������
�����������
����������������
���������
���
���
���������������
����������������
53
www.sdjournal.org
Software Developer’s Journal 11/2007
UML – modelowanie dynamicznych aspektów oprogramowania
• stany – mogą mieć nazwy, a identyfikowane są na trzy sposoby:
• wartości atrybutów obiektu;
• czas, gdy obiekt oczekuje na nadejście jakiegoś zdarzenia;
•
event zdarzenie(a:T)/[warunek]/akcja;
• czas, w którym obiekt wykonuje jakieś czynności;
•
do/czynność1/czynność2/…;
• zdarzenia – bodźce, które mogą uruchomić przejścia pomiędzy stanami
• wolanie – operacja (a:T), synchroniczne wywołanie żądania, gdzie
obiekt wołający czeka na wynik;
• zmiana –
when
(wyrażenie), ciągłe czekania na spełnienie warunku;
• sygnał – sygnał (a:T), asynchroniczna komunikacja jednokierunkowa;
• czas –
after
(czas), uzależnienie od czasu określanego bezwzględ-
nie lub względnie;
• przejścia – wskazują, że obiekt przejdzie z jednego stanu do drugie-
go, o ile zajdzie określone zdarzenie i będą spełnione warunki;
•
zdarzenie(a:T)[warunek]/akcja
– przejścia zewnętrzne i we-
wnętrzne;
•
[warunek]/akcja
– przejście automatyczne;
•
entry/akcja1we/akcja2we/…
– wykonanie akcji podczas wejścia do
stanu;
•
exit/akcja1wy/akcja2wy/…
– wykonanie akcji podczas wyjścia ze
stanu.
Diagramy przeglądu interakcji
Diagramy przeglądu interakcji są krzyżówką diagramów aktywności i dia-
gramów sekwencji i/lub komunikacji. Należy je traktować tak, jak diagra-
my aktywności, w których aktywności są zastąpione przez diagramy se-
kwencji. Istnieje możliwość stosowania dwóch rodzajów elementów inte-
rakcyjnych: prostokąty posiadające nazwę diagramu sekwencji i stano-
wiące jego referencję, zaznaczaną słowem kluczowym
REF
, które znaj-
duje się w lewym górnym rogu diagramy sekwencji bądź komunikacji,
które mogą być bezpośrednio zagnieżdżane w diagramach przeglądu in-
terakcji. Ponieważ diagramy przeglądu interakcji są nowością, to trudno
stwierdzić, jak przydatne okażą się w praktyce.
Diagramy przebiegów czasowych
Diagram przebiegów czasowych jest nowym diagramem interakcji, w któ-
rym nacisk kładzie się na ograniczenia czasowe – albo dla pojedynczego
obiektu, albo, co bardziej pożyteczne, dla całej grupy obiektów. Na jego po-
jawienie się czekali przede wszystkim projektanci systemów czasu rze-
czywistego i aplikacji, których działanie jest uzależnione od współpracy z
urządzeniami wejścia/wyjścia. Diagram przebiegów czasowych obrazuje
zachowanie obiektu z naciskiem na dokładne określenie czasu, w którym
obiekt jest poddawany jakimś zmianom lub sam wykonuje jakieś działanie.
Diagramy czasowe przydają się do obrazowania ograniczeń czasowych
występujących między zmianami stanów różnych obiektów. Są szczegól-
nie przyjazne dla inżynierów zajmujących się projektowaniem urządzeń.
Możliwe są dwa alternatywne sposoby przedstawienia ograniczeń
czasowych na diagramach przebiegów czasowych (Rysunek 6). Stany
można przedstawiać w postaci pól lub linii poziomych. Oba sposoby niosą
tą samą informację. Praktyka dowodzi natomiast, że pierwszy styl spraw-
dza się lepiej, gdy musimy się zajmować dużą liczbą stanów.
Podsumowanie
Modelując dynamiczne aspekty rozwiązania budujemy modele, które pre-
zentują poszczególne ścieżki realizacji wymagań funkcjonalnych. Mode-
le budowane są w oparciu o diagramy sekwencji, komunikacji, aktywno-
ści i stanów. W przypadku modelowania systemów specjalizowanych po-
mocne mogą się okazać nowe diagramy przeglądu interakcji i przebiegów
czasowych. n
Rysunek 6.
Przykładowy diagram przebiegów czasowych
��������������
���������������
���������������
���������������
��������
��������
��������
���������
������������������
������������
�����������
�����
�
�
�
�
�
�
�
�
�
��
��
��
��������������
����������������������
�����������������
���������������������
�����������������������
����������������
�������������
�����������
������
�����������
�
�
�������
������������������
�����
����������������������
�����������������������