background image

 

 

UML (Unified Modeling 

Language)

Czym jest UML?

• Językiem pozwalającym tworzyć modele systemów

• Pozwala obrazować, specyfikować, tworzyć i dokumentować         
    elementy systemu

• Ułatwia wymianę informacji pomiędzy przyszłymi użytkownikami 
systemu, menadżerami, analitykami, projektantami, 
programistami i testerami

• Ułatwia wykorzystanie zalet programowania obiektowego

• UML jest jedynie językiem modelowania używanym w procesie 
analizy 
i projektowania systemów komputerowych

background image

 

 

Konstrukcja UML

Notacja

Metamodel

•elementy graficzne
•składnia języka 
modelowania
•istotna przy szkicowaniu 
modeli

•definicje pojęć języka 
i powiązania między nimi
•istotny przy graficznym 

programowaniu

Z punktu widzenia analityka istotniejsze jest czytelne i 
jednoznaczne opisanie modelu tak, aby inne osoby mogły 
zrozumieć jego znaczenie. Zatem ważniejsza dla niego jest 
notacja, zaś metamodel powinien być zrozumiały intuicyjnie. Z 
kolei przy generowaniu kodu i przejściu do implementacji 
ważniejsze jest ścisłe rozumienie znaczenia poszczególnych 
elementów, tak, aby możliwa była automatyczna konwersja 
modelu do innego formalizmu.

background image

 

 

Rodzaje diagramów

Diagramy 

strukturalne

Diagramy dynamiki

•   Diagram klas
•   Diagram obiektów
•   Diagram pakietów
•   Diagram 

komponentów
•   Diagram wdrożenia
•   Diagram struktur 
    złożonych                 

•Diagram przypadków 

użycia
•Diagram stanów
•Diagram przebiegu
•Diagram czynności
•Diagram kooperacji
•Diagram przeglądu 

interakcji
•Diagram uwarunkowań 

czasowych

background image

 

 

Widoki modelu 4+1 

Kruchtena

Jednym ze sposobów rozbijania diagramów UML na 
perspektywy lub widoki jest system widoków 4+1 Kruchtena

background image

 

 

WIDOK LOGICZNY

Używany do modelowania części systemu oraz sposobów, w jaki 
one ze sobą współdziałają. Ten widok zazwyczaj tworzą diagramy:

  klas

  obiektów

  stanu

  interakcji

WIDOK PROCESU

Opisuje procesy w systemie. Przydatny przy wizualizacji 
przypadków jakie muszą zajść w systemie. Zawiera zazwyczaj 
diagramy czynności.

WIDOK KONSTRUKCJI

Opisuje sposób w jaki części systemu są zorganizowane w moduły 
oraz komponenty. Zawiera zazwyczaj diagramy:

  pakietów

  komponentów

background image

 

 

WIDOK FIZYCZNY

Wyjaśnia w jaki sposób projekt systemu opisany w trzech 
poprzednich widokach jest powoływany do życia w postaci 
zestawu rzeczywistych obiektów. Rzeczywiste wdrożenie 
systemu. Zawiera zazwyczaj diagramy wdrożenia.

WIDOK PRZYPADKÓW UŻYCIA

Widok opisuje funkcjonalność modelowanego systemu z 
perspektywy zewnętrznej. Prezentuje przeznaczenie systemu.
Wszystkie inne widoki bazują na widoku przypadków użycia.
Zawiera zazwyczaj diagramy przypadków użycia, opisy i 
diagramy przeglądowe.

background image

 

 

Diagram przypadków użycia – 

Use case diagram

Przypadek użycia

•  

Jest przypadkiem, w którym dany system jest używany w 

celu   spełniania jednego lub większej liczby wymagań 
użytkowników.

•  Wychwytuje fragment funkcji udostępnianych przez 
system.

•  Określają wymagania funkcjonalne systemu.

Aktorzy

Aktorzy mogą być:

•  ludźmi wchodzącymi w interakcję

•  systemami zewnętrznymi

•  częściami systemu, które mają wpływ na funkcjonowanie 
systemu, ale same przez ten system nie mogą być zmieniane 
(jak np. zegar systemowy).

background image

 

 

Wychwytywanie przypadków użycia

•  Analiza opisu systemu z punktu widzenia przyszłego 
użytkownika.

- wymagania konieczne 
- wymagania opcjonalne 

•  Których funkcji aktor oczekuje od systemu?

•  Czy aktor musi czytać, modyfikować, tworzyć lub likwidować 
pewne informacje w systemie?

•  Czy aktor powinien być powiadomiony o zdarzeniach w 
systemie lub sam informować system? 

•  Jakich danych we/wy wymaga system? 

Rozpoznawanie aktorów

•  Kto będzie używał podstawowych funkcji?

•  Kto ma administrować systemem, konserwować i utrzymywać 
w działaniu?

•  Jakimi urządzeniami zarządza system?

•  Z którymi systemami system ma współpracować (np. 
wymieniać dane)?

background image

 

 

NOTACJA

Przypadek użycia: 
Powinien mieć unikalną nazwę, 
opisującą przypadek użycia z punktu 
widzenia jego zasadniczych celów. 

Aktor: 
Powinien mieć unikalną nazwę.

Interakcja: 
Pokazuje interakcję pomiędzy 
przypadkiem użycia a aktorem.

background image

 

 

Blok ponownego użycia: 
Pokazuje fragment systemu, 
który jest używany przez kilka 
przypadków użycia; może być 

oznaczony jako samodzielny 
przypadek użycia.

Relacja typu << include >> 

lub 
<< extend >>: 
Pokazuje związek zachodzący 

między dwoma przypadkami 
użycia lub przypadkiem użycia 
a blokiem ponownego użycia.

Nazwa systemu wraz 

z otoczeniem systemu: 
Pokazuje granicę pomiędzy 
systemem a jego otoczeniem.

background image

 

 

ZALEŻNOŚCI MIĘDZY PRZYPADKAMI UŻYCIA

Przypadki użycia mogą być konstruowane w dowolnej 
kolejności, chyba że występują między nimi relacje typu:
 << include >> czy << extend >>.

Przebieg podstawowy (sekwencyjny): p1 zawsze włącza 
(używa) p2.

Przebieg opcjonalny: p1 jest czasami rozszerzane o p2.

<< include >> wskazuje na wspólny fragment wielu 
przypadków użycia; wykorzystywane w przebiegach 
podstawowych (operacje zawsze wykonywane)
<< extend >> strzałka prowadzi od przypadku użycia, który 
czasami rozszerza inny przypadek użycia - wykorzystywane w 
przebiegach opcjonalnych (operacje nie zawsze wykonywane)

background image

 

 

DZIEDZICZENIE PRZYPADKÓW UŻYCIA

Dziedziczenie pozwala na współdzielenie większości 
zachowania ogólnego przypadku użycia.
Dziedziczenie przypadków użycia - jeden przypadek użycia 
dziedziczy zachowanie innego i zarazem dodaje lub modyfikuje 
część tego zachowania. 

background image

 

 

background image

 

 

Diagram klas - Class 

diagram

Diagram klas - cechy:
• Zawiera informacje o statycznych związkach między 

elementami (klasami)

• Klasy są ściśle powiązane z technikami programowania 

zorientowanego obiektowo

Symbol klasy
Symbolem klasy jest prostokąt, zwykle podzielony liniami na trzy 

sekcje:

• nazwy
• atrybutów
• operacji
W razie potrzeby może zostać uzupełniony dodatkowymi sekcjami 
(np. wyjątków).

background image

 

 

NOTACJA

Podstawowe sposoby przedstawiania klas, różne poziomy 
szczegółowości:

Poziomy dostępu:

   + publiczna
    - prywatna
   # chroniona
   ~ zakres pakietu

Składniki statyczne

Składniki można zadeklarować jako statyczne, działające 
na rzecz klasy, nie obiektu.
Koncepcja identyczna jak w językach zorientowanych 
obiektowo.
Reprezentacją graficzną jest podkreślenie.

background image

 

 

Krotność

Krotność pozwala określić minimalną i maksymalną liczbę 
obiektów, jakie można powiązać z daną cechą:
dolna granica..górna granica - przedział od - do
1 - dokładnie jeden obiekt
0..1 - opcjonalnie jeden obiekt
1..* - przynajmniej jeden obiekt
1, 3, 5 - konkretne liczby obiektów
* - dowolna liczba obiektów

Krotność cechy wskazuje, ile obiektów można, a ile trzeba w 
niej zawrzeć. Krotność można określać jako ograniczenie dolne i 
górne. 
W praktyce programowania istotna jest krotność 0, 1 i dowolna, 
natomiast wartości dyskretne są mniej ważne, jako szczególne 
przypadki wymienionych trzech. 

background image

 

 

Ogólna deklaracja atrybutu wpisanego

[widoczność] nazwa [:typ] [=wartość początkowa] [właściwość] 

właściwość: 

•  changeable - bez ograniczeń

•  addOnly - gdy liczebność jest większa niż jeden, można dodawać 
nowe
   wartości, ale raz dodane nie moga byc zmieniane

•  readOnly, frozen - nie ma możliwości zmiany (jak const w C++)

Przykład:  + wysokosc : double = 10 frozen 

background image

 

 

Ogólna deklaracja operacji

 [widoczność] nazwa [(lista_parametrów)] [: typ_wyniku] 
[właściwość] 

gdzie lista parametrów:
[tryb] nazwa : typ [=wartość_domyślna] 

tryb:
in - wejściowy, nie może być modyfikowany
out - wyjściowy, może być modyfikowany
inout - wejściowy, wyjściowy, może być modyfikowany

właściwość:
leaf - funkcja niepolimorficzna (nie może być nadpisana)
isQuery - funkcja nie zmieniająca obiektu
sequental, guarded, concurent (mają zastosowanie przy 
operacjach współbieżnych)

Nazwa funkcji pisana kursywą - funkcja wirtualna

background image

 

 

Związki między klasami

background image

 

 

Zależność - dependency

Zależność pomiędzy dwiema klasami informuje, że jedna z nich, 
aby używać obiektów innej, musi mieć o niej informacje. 
Zależność występuje, gdy zmiana specyfikacji jednej klasy, 
może powodować konieczność wprowadzania zmiany w innej 
klasie. Najczęściej używa się zależności do pokazania, że jedna 
klasa używa innej jako parametru jakiejś operacji. Obie klasy są 
zależne od siebie nawzajem w celu zapewnienia poprawnej 
pracy.

<< call >> - operacje w klasie A wywołują operacje w klasie B
<< create >> - klasa A tworzy instancje klasy B
<< instantiate >> - obiekt A jest instancją klasy B
<< use >> - do zaimplementowania klasy A wymagana jest 
klasa B

background image

 

 

Asocjacja

Asocjacja reprezentuje czasowe powiązanie pomiędzy 
obiektami dwóch klas. Obiekty związane asocjacją są od siebie 
niezależne. Asocjacja jest też używana jako alternatywny (obok 
atrybutu) i równorzędny sposób zapisu cech klasy.

Asocjacje są silniejszymi relacjami niż zależności. Wskazują, że 
jeden obiekt jest związany z innym przez pewien okres czasu. 
Jednak czas życia obu obiektów nie jest od siebie zależny: 
usunięcie jednego nie powoduje usunięcia drugiego.

background image

 

 

W przypadku asocjacji żaden obiekt nie jest właścicielem 
drugiego: nie tworzy go, nie zarządza nim, a moment 
usunięcia drugiego obiektu nie jest z nim związany. Z drugiej 
strony, obiekt powiązany asocjacją z drugim posiada 
referencję do niego, może się do niego odwołać itd. 

Asocjacja jest równoważna atrybutowi: UML nie rozróżnia 
obiektu, który jest polem klasy od obiektu i jest z nią 
związany asocjacją. Warto jednak przyjąć konwencję, w której 
obiekty reprezentujące wartości (np. daty) oraz typy proste 
(liczby, napisy, znaki) są modelowane jako atrybuty, 
natomiast obiekty dostępne poprzez referencje  są 
przedstawiane poprzez asocjacje.

background image

 

 

Klasa asocjacyjna

Klasy asocjacyjne są związane z relacją asocjacji i opisują jej 
właściwości. Mają dostęp do innych obiektów uczestniczących w 
relacji.
 

Klasa asocjacyjna umożliwia opisanie za pomocą atrybutów i 
operacji nie obiektu, ale właśnie samej asocjacji pomiędzy 
klasami. Informacje przechowywane w klasie asocjacyjnej nie są 
związane z żadną z klas uczestniczących w asocjacji, dlatego 
wygodnie jest stworzyć dodatkową klasę i powiązać ją z relacją. 
Klasy asocjacyjne są reprezentowane graficznie jako klasy 
połączone linią przerywaną z relacją asocjacji, której dotyczą.

background image

 

 

Agregacja częściowa

Agregacja reprezentuje relację typu całość-część, w której 
część może należeć do kilku całości, a całość nie zarządza 
czasem istnienia części.

Agregacja jest silniejszą formą asocjacji. W przypadku tej 
relacji równowaga między powiązanymi klasami jest 
zaburzona: istnieje właściciel i obiekt podrzędny, które są ze 
sobą powiązane czasem swojego życia. Właściciel jednak nie 
jest wyłącznym właścicielem obiektu podrzędnego, zwykle też 
nie tworzy i nie usuwa go. Relacja agregacji jest zaznaczana 
linią łączącą klasy/obiekty, zakończoną białym rombem po 
stronie właściciela.

background image

 

 

Agregacja całkowita (kompozycja)

Agregacja całkowita jest relacją typu całość-część, w której 
całość jest wyłącznym właścicielem części, tworzy je i zarządza 
nimi.
 

Agregacja całkowita jest najsilniejszą relacją łączącą klasy. 
Reprezentuje relacje całość-część, w których części są tworzone 
i zarządzane przez obiekt reprezentujący całość. Ani całość, ani 
części nie mogą istnieć bez siebie, dlatego czasy ich istnienia są 
bardzo ściśle ze sobą związane 
i pokrywają się: w momencie usunięcie obiektu całości obiekty 
części są również usuwane. Typowa fraza związana z taką relacją 
to "...jest częścią...". Agregacja całkowita jest przedstawiana na 
diagramie podobnie jak agregacja częściowa, przy czym romb 
jest wypełniony.

background image

 

 

Uogólnienie - Dziedziczenie

Uogólnienie tworzy hierarchię klas, od ogólnych do bardziej 
szczegółowych. Pozwala wyłączyć części wspólne klas.
  

W modelu pojęciowym Katalog jest uogólnieniem Katalogu 
rzeczowego, jeżeli każda instancja Katalogu rzeczowego jest 
także instancją Katalogu. Uogólnienie w przypadku klas często 
jest traktowane jako synonim dziedziczenia. 

background image

 

 

Interfejsy i klasy abstrakcyjne

Klasa abstrakcyjna

Klasa abstrakcyjna deklaruje wspólną funkcjonalność grupy klas. 
Nie może posiadać obiektów i musi definiować podklasy.

Interfejs

Interfejs - klasyfikator zawierający deklaracje właściwości i metod 
ale nie implementuje ich.

 

background image

 

 

•  Celem tworzenia klas abstrakcyjnych i interfejsów jest 
identyfikacja wspólnych zachowań różnych klas, które są 
realizowane w różny od siebie sposób. Użycie tych mechanizmów 
pozwala na wykorzystanie relacji uogólniania do ukrywania 
(hermetyzacji) szczegółów implementacji poszczególnych klas.

•  Klasa abstrakcyjna reprezentuje wirtualny byt grupujący wspólną 
 funkcjonalność kilku klas. Posiada ona sygnatury operacji (czyli 
deklaracje, że klasy tego typu będą akceptować takie komunikaty), 
ale nie definiuje ich implementacji.

•  Podobną rolę pełni interfejs. Różnica polega na tym, że klasa 
abstrakcyjna może posiadać implementacje niektórych operacji, 
natomiast interfejs jest czysto abstrakcyjny (choć, oczywiście 
interfejs i klasa w pełni abstrakcyjna są pojęciowo niemal 
identyczne).

background image

 

 

•  Ponieważ klasy abstrakcyjne nie mogą bezpośrednio tworzyć 
swoich instancji (podobnie jak interfejsy, które z definicji nie 
reprezentują klas, 
a jedynie ich typy) dlatego konieczne jest tworzenie ich podklas, 
które zaimplementują odziedziczone abstrakcyjne metody. W 
przypadku interfejsu sytuacja jest identyczna.

•  Przyjętym sposobem oznaczania klas i metod abstrakcyjnych 
jest zapisywanie ich pochyłą czcionką lub opatrywanie słowem 
kluczowym {abstract}.

background image

 

 

background image

 

 

Szablony klas

Szablon klasy określa, z jakimi innymi klasami (nie 
obiektami) może współpracować podana klasa. Klasy te są 
przekazywane jako jej parametry. Klasa będąca 
uszczegółowieniem takiej klasy jest klasą związaną.

background image

 

 

background image

 

 

Diagram obiektów - Object 

diagram

•  przedstawia egzemplarze elementów z diagramu klas

•  obrazuje zbiór obiektów i ich związków w danej chwili

•  często nazywany jest diagramem instancji (przedstawia 
instancje   klas a nie same klasy)

•  zawiera na ogół: obiekty, wiązania, notatki, ograniczenia, 
pakiety, podsystemy, klasy

Na diagramie obiektów przedstawia się obiekty, czyli 
konkretne instancje klas i związki między nimi. Diagram ten 
wyobraża statyczny rzut pewnych egzemplarzy elementów 
występujących na diagramie klas. Podobnie jak diagram klas, 
odnosi się do statycznych aspektów perspektywy projektowej 
lub procesowej. Korzystając z niego bierze się jednak pod 
uwagę przypadki rzeczywiste lub prototypowe.

background image

 

 

background image

 

 

Diagram aktywności 

(czynności) - activity diagram

W języku UML służy do modelowania czynności i zakresu 
odpowiedzialności elementów bądź użytkowników systemu. Jest 
niejako podobny do diagramu stanu, jednak w odróżnieniu od 
niego nie opisuje działań związanych z jednym obiektem a 
wieloma, pomiędzy którymi może występować komunikacja 
przy wykonywaniu czynności.

Cechy:

•  

pokazuje aktywności bez pokazywania bytów, realizujących 

daną aktywność i dlatego z reguły używane są jako punkt 
startowy dla procesu modelowania zachowań

•  diagramy aktywności z zasady nie pokazują wszystkich 
szczegółów przetwarzania

•  dla skompletowania projektu każda aktywność powinna być 
rozpisana na szereg operacji (akcji), z których każdą trzeba 
będzie na późniejszym etapie przydzielić do odpowiedniej klasy

background image

 

 

Czynność może być interpretowana różnie, w zależności od 
perspektywy: jako zadanie do wykonania i to zarówno przez 
człowieka, jak i przez komputer (z perspektywy pojęciowej) 
czy też np. jako pojedyncza metoda (z perspektywy 
projektowej).

Podobnie, przejścia między stanami raczej nie są tu związane 
z nadejściem zdarzenia, ale z zakończeniem przetwarzania 
wyspecyfikowanego dla danego stanu.

Akcje są już niepodzielne, trwanie ich nie podlega 
przerwaniu.

background image

 

 

NOTACJA

Aktywność/Czynność - rodzaj zachowania, składającego się 
z przynajmniej jednej akcji.

Akcja reprezentuje wykonanie pojedynczej operacji, której nie 
można rozbić na mniejsze jednostki na diagramie. Na przykład 
akcjami mogą być funkcje matematyczne.

Akcje i aktywności reprezentowane są identycznie, jako:

background image

 

 

background image

 

 

Decyzje

Wyjście decyzji stanowią dwa lub więcej przepływów, z 
których tylko jeden może być zrealizowany.

1. Warunek logiczny - różne warunki 
muszą się wykluczać, aby zapewnić 
jednoznaczny przepływ sterowania

2. Rozgałęzienie (decyzja)

background image

 

 

Ścieżki współbieżne

Rozwidlenie - fork

Akcje współbieżne

Scalenie sterowania - join

background image

 

 

Złączenia

Każdy przypływ sterowania docierający do wejścia inicjuje proces 
wyjściowy

Proces wyjściowy jest inicjalizowany dopiero po dotarciu znaczników 
od wszystkich przypływów - synchronizacja

background image

 

 

background image

 

 

Diagram sekwencji (przebiegu) 

-

sequence diagrams

Obrazuje kolejność w czasie wysyłania komunikatów pomiędzy 
różnymi obiektami w systemie

Diagramy sekwencji intuicyjnie prezentują kolejność wywołań 
operacji, przepływ sterowania pomiędzy obiektami oraz 
szablon realizowanego algorytmu. Pomijają natomiast 
całkowicie aspekt dostępu i operacji na danych, związany z 
komunikacją.

background image

 

 

•  Uczestnikami diagramów sekwencji są obiekty, opisane 
nazwą obiektu i jego klasą, które wymieniają między sobą 
komunikaty. 

•  Diagram sekwencji jest zapisany w prostokącie oznaczonym 
operatorem sd i składa się z pionowych linii życia (ang. 
lifelines) poszczególnych obiektów uczestniczących w 
interakcji oraz wymienianych między nimi komunikatów 
(wywołań operacji). Białe prostokąty umieszczone na linii życia 
obiektu oznaczają, że obiekt jest zajęty wykonywaniem 
pewnej czynności (natomiast nie mają bezpośredniego 
związku z istnieniem obiektu). 

background image

 

 

•  Czas jest reprezentowany w postaci pionowej osi 
diagramu. Linia życia obiektu to czas, w którym konkretna 
instancja obiektu jest w stanie przyjmować komunikaty i 
wysyłać je. Innymi słowy, obejmuje ona czas istnienia 
obiektu w systemie. 

•  Obiekt jest tworzony poprzez wysłanie do niego 
komunikatu -konstruktora, natomiast niekoniecznie jest 
fizycznie usuwany na końcu linii życia, raczej przestaje być 
istotny. Fizycznie usunięcie obiektu można wprost oznaczyć 
jako znak X na linii życia.

background image

 

 

Rodzaje komunikatów

wywołanie procedury

powrót z wywołania

wywołanie asynchroniczne

komunikat tworzenia 
uczestnika

komunikat usuwania 
uczestnika

background image

 

 

background image

 

 

Diagram komunikacji - 

kooperacji

Diagram komunikacji jest jednym z diagramów interakcji. 
Diagram komunikacji przedstawia sposób wymiany 
komunikatów pomiędzy obiektami uczestniczącymi w 
interakcji. 

background image

 

 

Diagramy czasowe - 

harmonogramowanie interakcji

Diagram harmonogramowania jest rodzajem diagramu 
interakcji, reprezentującym na osi czasu zmiany 
dopuszczalnych stanów, jakie może przyjmować instancja 
klasyfikatora uczestnicząca w interakcji.

Diagramy harmonogramowania dokumentują aspekt czasu 
interakcji. Na osi poziomej zaznacza się skalę czasu w 
postaci ustalonych odcinków. Natomiast na osi pionowej 
przedstawia się poszczególne instancje klasyfikatorów 
biorące udział w interakcji, a przy każdej 
z nich jej stany. Z zasady diagramy harmonogramowania 
tworzy się po opracowaniu diagramów sekwencji lub 
komunikacji.

background image

 

 

background image

 

 

background image

 

 

Diagram komponentów -

(component diagram)

•  Diagramy komponentów pokazują podział systemów 
programowych na mniejsze podsystemy.

•  Komponent to wymienialny, wykonywalny fragment 
systemu, z ukrytymi szczegółami implementacyjnymi (np. plik 
.dll, podprogram).

•  Komponent udostępnia zestaw interfejsów, może też 
wymagać pewnych interfejsów do funkcjonowania.

•  Komponenty z natury służą do ponownego wykorzystania 
poprzez połączenie ich z innymi komponentami, zwykle 
poprzez ich skonfigurowanie, bez potrzeby rekompilacji.

•  Diagram komponentów służy do pokazania związków 
pomiędzy komponentami i interfejsami.

background image

 

 

Diagram struktur złożonych

Diagram struktur złożonych pokazuje związki istniejące pomiędzy 
częściami systemu, które współpracując dostarczają pewnej 
funkcjonalności.
 
Diagramy struktur złożonych mogą zawierać:
struktury - zespoły powiązanych elementów
konektory - łącza komunikacyjne (ich typ nie jest określony)


Document Outline