Inżynieria oprogramowania
Modelowanie systemu w języku UML
June 28, 2014
1 Cel ćwiczenia
Celem ćwiczenia jest modelowanie wymagań, struktury i dynamiki przykładowego systemu - pralki sterowanej programem.
2 Przebieg ćwiczenia
2.1 Modelowanie funkcji systemu za pomocą przypadków użycia
W pierwszym etapie prac nad systemem, buduje się model przypadków użycia na podstawie wymagań użytkowych.
Przykład pokazuje diagram przypadków użycia pralki, zawierający aktorów, przypadki użycia i różnorodne związki wys-
tępujące między nimi.
W celu utworzenia tego diagramu należy:
" w drzewie modelu wybrać gałąz Packages > Default
" z menu podręcznego wybrać polecenie Add new > Diagrams > Use case diagram i nadać nazwę.
" utworzyć aktorów (n.p. Operator, Uzytkownik, Serwisant, System, itp)
" utworzyć przypadki użycia, wybierając symbol przypadku z palety i przeciągając na obszar diagramu, a następnie
nadając nazwę opisującą reprezentowaną funkcję
" zdefiniować związki między aktorami, tak by Operator był uogólnieniem (generalizacją) wszystkich pozostałych
aktorów - wybrać z palety symbol Generalization i połączyć nim kolejno symbole Uzytkownik, Serwisant i System
z symbolem Operator
" zdefiniować związki między aktorami a przypadkami użycia, używając symbolu Association. Wybrać z palety symbol
Association, kliknąć wybranego aktora, a następnie kliknąć przypadek użycia reprezentujący funkcję dostępną dla
tego aktora (możliwą do wywołania przez niego). W ten sposób określamy uprawnienia aktorów.
" zdefiniować związki między przypadkami użycia. Mogą to być generalizacja, zawieranie i rozszerzanie. Stosuje się
tu symbole Generalization, Include i Extend.
1
2.2 Modelowanie przypadków użycia za pomocą diagramów sekwencji
Następny etap prac nad systemem polega na rozwijaniu każdego z przypadków użycia przy pomocy diagramów sekwencji.
Diagramy te ukazują obiekty współpracujące ze sobą w celu zrealizowania działań reprezentowanych przez przypadek
użycia.
Znaczenie diagramów sekwencji: modelują one współdziałanie obiektów za pomocą komunikatów przesyłanych z
ich linii życia. Komunikaty te zwykle reprezentują wywołania odpowiednich metod w obiekcie odbiorcy, co może być
połączone z wymianą danych. Komunikaty są uszeregowane w czasie.
Pomimo że diagram sekwencji reprezentuje interakcję mającą sens operacji, to nie powoduje on wygenerowania jej
pełnego kodu. Generuje natomiast inne artefakty: klasy i ich metody, pozwalając stopniowo identyfikować te podstawowe
składniki obiektowo zorganizowanych programów.
Poniżej przedstawiono główne diagramy sekwencji przykładowego modelu pralki.
2.2.1 Diagram sekwencji reprezentujący przypadek użycia Wybor trybu
W celu utworzenia tego diagramu należy:
" w drzewie modelu wybrać gałąz Packages > Default, rozwinąć gałąz Use cases i wybrać przypadek WyborTrybu
" z menu podręcznego wybrać polecenie Add new > Diagrams > Sequence diagram, w okienku New diagram nadać
nazwę tworzonemu diagramowi i wybrać tryb Design z grupy Operation Mode.
" wybrać z palety narzędzi symbol System border i kliknąć na obszarze diagramu, tworząc reprezentację aktora.
Dwukrotnie kliknąć utworzony symbol ENV, po czym przyporządkować aktora (n.p. Operator) wybierając go z
listy rozwijanej w polu Classifier.
" w podobny sposób utworzyć obiekty klas Sterownik, Wyswietlacz i Klawiatura: wybrać z palety narzędzi symbol
Instance Line i przeciągnąć go na obszar diagramu, wpisać nazwę klasy w podświetlone pole. Rhapsody zapyta o
chęć utworzenia nowej klasy - potwierdzić
" modelować współpracę obiektów za pomocą komunikatów, używając symbolu Message idącego od linii życia obiektu
nadawcy do linii życia obiektu odbiorcy. W podświetlone pole wpisać nazwę komunikatu. Rhapsody zapyta o chęć
utworzenia nowej metody realizującej komunikat - potwierdzić
" ponieważ istotą przypadku WyborTrybu jest przejście do jednej z dostępnych gałęzi programu, zastosować symbol
fragmentu wyodrębnionego typu opt. Rhapsody udostępnia symbol o nazwie Interaction Operator, wybrać go i ut-
worzyć na diagramie, tak by obejmował linie życia wszystkich obiektów. W okienku Features wybrać typ fragmentu
na liście rozwijanej Type
" używając symbolu Operand Separator podzielić fragment wyodrębniony na potrzebną ilość sekcji (operandów),
opatrując każdą z nich odpowiednim warunkiem wpisanym w polu condition w nawiasach []
" w każdej sekcji powołać się na odpowiedni zewnętrzny diagram sekwencji, używając symbolu Interaction Occurence
umieszczając go na diagramie, tak by obejmował linie życia wszystkich obiektów. W okienku Features wybrać z
listy rozwijanej Refers to opcję New, po czym w nowym okienku wpisać nazwę zewnętrznego diagramu sekwencji,
który ma być wywołany w tym miejscu programu
2
2.2.2 Diagram sekwencji reprezentujący przypadek użycia Logowanie
W procesie tworzenia tego diagramu zastosowano podobne konstrukcje jak dla diagramu WyborTrybu. Dodatkowo użyto
symbolu fragmentu wyodrębnionego typu alt, który jest podobny do fragmentu typu opt, ale reprezentuje dokładnie dwie
opcje.
2.2.3 Diagram sekwencji reprezentujący przypadek użycia Proces
Diagram Proces reprezentuje sekwencyjnie realizowaną operację, złożoną z operacji bardziej elementarnych. Jest to
główna operacja technologiczna realizowana przez pralkę. Dlatego też oprócz obiektów klas Sterownik, Wyswietlacz i
Klawiatura, należy utworzyć obiekty klas Pompa, Grzalka i Beben.
3
2.3 Modelowanie struktury za pomocą klas i obiektów
Jednym z efektów poprzedniego etapu modelowania (diagramów sekwencji) jest zidentyfikowanie i utworzenie kompletnego
zbioru klas potrzebnych dla zaspokojenia wymagań stawianych przed systemem. Klasy te są jednak nie związane ze sobą,
a zwykle jest to potrzebne do poprawnego funkcjonowania. Konieczne jest zatem zdefiniowanie struktury systemu,
obejmującej klasy i ich związki. Dokonuje się tego za pomocą diagramów klas i obiektów.
W celu utworzenia tego diagramu należy:
" w drzewie modelu wybrać gałąz Packages > Default, z menu podręcznego wybrać polecenie Add new > Diagrams
> Class Diagram i nadać nazwę
" przeciągnąć na obszar diagramu klasy z gałęzi Classes
" zdefiniować związki między klasami. Dla zamodelowania relacji całość-część, użyć symbolu Composition z palety
narzędzi. Alternatywnie w tym samym celu można wybrać w drzewie modelu klasę i posłużyć się poleceniem Add
new > Part. Efektem tego podejścia, widocznym w naszym przykładzie, jest dodatkowa sekcja symbolu klasy
Sterownik, zawierająca części itsKlawiatura i itsWyswietlacz.
" ponieważ klasy Pompa, Grzalka i Beben mogą być traktowane jako moduły, korzystne jest zastosowanie klasy
bazowej (nadklasy), w której znajda się atrybuty i metody wspólne dla nich. W związku z tym należy utworzyć
klasę Modul, zdefiniować w niej wspólne dla wszystkich podklas atrybuty i operacje. Następnie, używając sym-
bolu Generalization, powiązać klasy Pompa, Grzalka i Beben z klasa Modul. Dzięki temu unika się powtarzania
identycznych deklaracji i kodu, a także uzyskuje się wspólny interfejs do modułów
4
2.4 Modelowanie dynamicznego aspektu systemu za pomocą diagramów maszyny stanowej
Po zdefiniowaniu struktury czas na rozwijanie modelu dynamiki. Można tu wykorzystać diagramy czynności (activity)
lub diagramy maszyny stanowej.
Diagramy czynności definiuje się w celu zobrazowania przebiegu wybranej operacji systemu, realizowanej przez jedną
lub więcej klas.
Diagramy maszyny stanowej dotyczą pojedynczych klas, chociaż można synchronizować działania zdefiniowane na
różnych diagramach poprzez wysyłanie i odbiór sygnałów.
Wspólną cecha tych diagramów jest ich konstruktywność - Rhapsody potrafi generować kod zródłowy w wybranym
języku implementacji.
W ramach niniejszego projektu zdecydowano się na użycie diagramów maszyny stanowej, ponieważ wiele klas wykazuje
działanie zależne od stanu obiektu.
W celu utworzenia tego diagramu należy:
" wybrać jedną z klas w drzewie modelu lub na diagramie klas. Z menu podręcznego wybrać polecenie Add new >
Diagrams > Statechart i nadać nazwę
" zdefiniować stany w jakich znajduje się obiekt klasy. Stan może reprezentować charakterystyczną okoliczność lub
sytuacje w jakiej znajduje się obiekt (wyróżnioną pewnymi wartościami atrybutów), Stan może też reprezentować
dowolną operację. Dla stanu można zdefiniować akcję początkową (Action on entry), końcową (Action on exit) lub
akcje ciągłe. Akcje te mają formę kodu w wybranym języku implementacji, który staje się integralnym elementem
modelu
" zdefiniować przejścia między stanami, używając symbolu Transition z zawsze zdefiniowanym zdarzeniem wyzwala-
jącym (pole Trigger), a opcjonalnie zdefiniowanymi: warunkiem (pole Guard) i efektem (pole Action)
" dodatkowo można użyć pseudostanów, n.p.: rozwidlenie i scalenie, punkt węzłowy i decyzyjny, itp.
Główny (nadrzędny) diagram maszyny stanowej zdefiniowano dla klasy Pralka
Występujący na tym diagramie stan złożony Napełnianie został zdefiniowany na odrębnym diagramie. Realizuje on
pętlę o okresie 250 msek., w której generowane jest zdarzenie evKrokPompy, reprezentujące obrót połączony z przepom-
powaniem określonej ilości cieczy. Następnie sprawdzany jest poziom wody w bębnie i badany jest warunek kontynuacji
pętli
5
Maszyna stanowa w klasie Beben została zdefiniowana głównie po to, by móc wygodnie współpracować z tym obiektem
- przesyłać komunikat o zajściu zdarzenia evKrokPompy, który sygnalizuje zmianę poziomu wody o wartość przekazywaną
jako argument zdarzenia.
Maszyna stanowa w klasie Sterownik została zdefiniowana po to, by kontrolować funkcjonowanie modułów. W obec-
nym stanie pośredniczy ona jedynie w przekazaniu komunikatu o zajściu zdarzenia evKrokPompy z maszyny stanowej
Napełnianie do maszyny stanowej klasy Beben. W dalszych etapach rozwoju systemu będzie obsługiwać pozostałe moduły
(Grzałka) i zdarzenia.
2.5 Prototypowanie graficznego interfejsu użytkownika
Rhapsody umożliwia szybkie prototypowanie graficznego interfejsu użytkownika. Stosuje się do tego diagram panelu,
na którym można umieszczać kontrolki, które następnie wiąże się z elementami modelu (atrybutami lub zdarzeniami).
Pozwala to na etapie animacji lub śledzenia modelu wizualizować dane lub wpływać na działanie modelu.
UWAGA: panele nie działają tylko w środowisku Rhapsody - w wersji docelowej systemu należy zapewnić interfejs w
sposób klasyczny, np. używając zewnętrznej biblioteki kontrolek (widgets).
6
2.6 Animacja modelu
Animacja (lub tylko śledzenie) jest stosowana do uruchamiania i testowania tworzonego systemu na modelu, a nie tak
jak tradycyjnie - na działającej implementacji. Pozwala to szybciej i łatwiej prowadzić prace uruchomieniowe.
Aby to było możliwe, należy wprowadzić stosowne ustawienia w konfiguracji projektu:
7
Wyszukiwarka
Podobne podstrony:
MATLAB cw Skryptycad2 cw 5 6cw formularzCw 2 zespol2 HIPSCw 9 Wzmacniacz mocyCw 1metrologia cw 1 protokolSprawozdanie Ćw 2Biofizyka kontrolka do cw nrsystemy operacyjne cw linux apache mysqlcw 7ćw oswajające z piłką lekcja dla dzieciCw 6 Parametryczny stabilizator napieciaELE III cw 5 teoria wybrane Bwięcej podobnych podstron