inŻynieria oprogramowania oprogramowania ... - … · historia uml inŻynieria oprogramowania...

52
INŻYNIERIA OPROGRAMOWANIA INŻYNIERIA OPROGRAMOWANIA INŻYNIERIA OPROGRAMOWANIA Język UML. Budowa modelu obiektowego i behawioralnego Wykorzystane materiały: • prezentacje Bartosza Waltera (UW) • UML Tutorial (part 1) by Robert C. Martin

Upload: hoangxuyen

Post on 09-Feb-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

INŻYNIERIA OPROGRAMOWANIAINŻYNIERIA OPROGRAMOWANIA INŻYNIERIAOPROGRAMOWANIA

Język UML. Budowa modelu obiektowego i behawioralnego

Wykorzystane materiały:• prezentacje Bartosza Waltera (UW)

• UML Tutorial (part 1) by Robert C. Martin

Historia projektowania obiektowegoHistoria projektowania obiektowego INŻYNIERIAOPROGRAMOWANIA

Początki projektowania obiektowego: lata 70-te XX wieku

Najważniejsze metodologie obiektowe:

� OOADA (Object-Oriented Analysis and Design with Applications)

– Grady Booch – nacisk na projektowanie

� OOSE (Object Oriented Software Engineering) – Ivar Jacobson –nacisk na inżynierię wymagań

� OMT (Object Modeling Technique) – James Rumbaugh – nacisk na analizę

Historia UMLHistoria UML INŻYNIERIAOPROGRAMOWANIA

� Język UML (Unified Modeling Langauge – ujednolicony język modelowania) – unifikacja metod Boocha, Jacobsona i Rumbaugh

(1994 r.), z poszczególnych notacji przejęto najlepsze rozwiązania

� Początkowo wspierany przez firmę Rational Software (program Rational

Rose)

� Najbardziej rozpowszechnione wersje UML: 1.1 (1997) oraz 1.4 (2002 r.),

jednak są powoli wypierane przez nowsze, bardziej spójne i dopracowane

wersje (2.x)

� 2005 r. – wersja 1.4.2 oficjalnym, międzynarodowym standardem

projektowania aplikacji (Information technology: ISO/IEC 19501:2005)

� 07/2005 r. – wersja: 2.0 (duży krok naprzód)

� 08/2011 r. – wersja: 2.4.1 (http://www.omg.org/spec/UML/2.4.1/)

uznana standardem w kwietniu 2012 r. (ISO/IEC 19505-1, 19505-2)

� Obecnie język UML nie posiada praktycznie konkurencji w dziedzinie

obiektowego projektowania aplikacji

OMG OMG –– ObjectObject ManagementManagement GroupGroup INŻYNIERIAOPROGRAMOWANIA

� Niekomercyjna organizacja powstała w 1989 r.

� Jej celem jest promowanie teorii oraz praktyki technologii

obiektowych

� Założycielami OMG było 13 liczących się przedsiębiorstw z branży

software'owej

� Obecnie do organizacji należy 321 firm – producenci

oprogramowania oraz sprzętu komputerowego (stan na dzień 11/04/2013)

� Organizacja zajmuje się opracowywaniem standardów pomagających w tworzeniu aplikacji obiektowych

� W 1997 r. OMG włączyła się do prac nad UML

� 2005 r. – OMG doprowadziła do uznania UML 1.4 jako oficjalnego

standardu

Czym jest UML?Czym jest UML? INŻYNIERIAOPROGRAMOWANIA

� Jest językiem do specyfikacji, wizualizacji, konstrukcji,

dokumentowania projektów związanych z systemami

informacyjnymi intensywnie wykorzystującymi

oprogramowanie, a także do modelowania biznesowego

wszelkich innych systemów

� Oferuje standaryzowany sposób zapisu projektu,

obejmującego zarówno jego konceptualne aspekty, takie

jak procesy biznesowe czy funkcje systemu, jak też i

elementy fizyczne (np. schematy bazy danych, warstwę

sprzętową systemu)

� Standaryzuje notację graficzną – określa sposób zapisu

modeli

Czym nie jest UML?Czym nie jest UML? INŻYNIERIAOPROGRAMOWANIA

� UML nie jest metodyką

� UML nie określa metody modelowania, zaleca jedynie

stosowanie podejścia przyrostowego

� UML nie jest narzędziem

� UML to specyfikacja dla narzędzi

� UML nie jest językiem programowania

� generowanie kodu z modelu stosowane jest obecnie na

niewielką, choć stale zwiększającą się skalę (przyczyna:

dopiero teraz powstają narzędzia CASE lepiej

wspomagające ten proces)

Perspektywy UMLPerspektywy UML INŻYNIERIAOPROGRAMOWANIA

� Perspektywa przypadków użycia – opisuje funkcjonalność, jaką

powinien dostarczać system, widzianą przez jego użytkowników.

� Perspektywa logiczna – zawiera sposób realizacji funkcjonalności, strukturę systemu widziana przez projektanta.

� Perspektywa implementacyjna – opisuje poszczególne moduły i ich interfejsy wraz z zależnościami; perspektywa ta jest przeznaczona

dla programisty.

� Perspektywa procesowa – zawiera podział systemu na procesy

(czynności) i procesory (jednostki wykonawcze); opisuje właściwości niefunkcjonalne systemu i służy zarówno

programistom jak i integratorom.

� Perspektywa wdrożenia – definiuje fizyczny podział elementów systemu i ich rozmieszczenie w infrastrukturze; perspektywa taka

służy integratorom i instalatorom systemu.

Diagramy UML 2.xDiagramy UML 2.x INŻYNIERIAOPROGRAMOWANIA

diagram klas (class)

diagram obiektów (object)

diagram struktur złożonych (composite structure)

diagram pakietów (package)

diagram komponentów (component)

diagram wdrożenia (deployment)

diagram przypadków użycia (use cases)

diagram maszyny stanowej (state machine)

diagram czynności (activity)

diagram sekwencji (sequence)

diagram komunikacji (communication)

diagram przeglądu interakcji (interaction overview)

diagram uwarunkowań czasowych (timing)

diagramy strukturalne

diagramy zachowania(behawioralne)

diagramy interakcji

Projektowanie i programowanie obiektoweProjektowanie i programowanie obiektowe INŻYNIERIAOPROGRAMOWANIA

� Projektowanie obiektowe to strategia, w ramach której projektanci systemu myślą w kategoriach „bytów”, a nie operacji albo funkcji.

� Działający system składa się z oddziałujących na siebie obiektów, które

przechowują swój lokalny stan i oferują operacje testujące lub zmieniające

ten stan.

� Obiekty ukrywają informację o reprezentacji stanu i w ten sposób

ograniczają do niego dostęp.

� Proces projektowania obiektowego obejmuje zaprojektowanie klas

obiektów i związków (relacji) między tymi klasami.

� W działającym programie, potrzebne obiekty są tworzone na podstawie

definicji klas.

� Programowanie obiektowe polega na realizacji projektu oprogramowania za pomocą obiektowego języka programowania. Języki obiektowe

umożliwiają bezpośrednią implementację obiektów i dostarczają

udogodnienia do definiowania klas obiektów.

Definicje Definicje –– obiekt, klasa, atrybuty, operacje…obiekt, klasa, atrybuty, operacje… INŻYNIERIAOPROGRAMOWANIA

� Obiekt (ang. object) jest bytem, który posiada swój stan i zbiór zdefiniowanych operacji działających na tym stanie.

� Stan jest reprezentowany jako zbiór atrybutów (ang. attributes) obiektu.

� Operacje (ang. operations) skojarzone z obiektem służą do oferowania usług innym obiektom (klientom), które mogą żądać tych usług, gdy potrzebują wyników ich działania. W obiektowych językach programowania operacje nazywa się metodami.

� Grupa obiektów może mieć wspólną definicję danych lub usług wykorzystywanych do definicji interfejsu, stanowiąc wcielenie (instancje) wspólnej definicji zwanej klasą obiektów. Pojęcie klasy umożliwia więc wyróżnienie podobnej grupy obiektów według pewnego kryterium (pewnych cech, którymi są atrybuty i operacje).

� Jeżeli mamy zdefiniowaną klasę, to mówimy, że obiekt należący do niej jest instancją tej klasy (ang. instance).

� Obiekty są tworzone zgodnie z definicja klasy obiektów. Definicja klasy obiektów służy jako szablon do tworzenia obiektów. Zawiera deklaracje wszystkich atrybutów i operacji, które należy skojarzyć z obiektem tej klasy.

Reprezentacja graficzna klasy w UMLReprezentacja graficzna klasy w UML INŻYNIERIAOPROGRAMOWANIA

Nazwa klasy

(- + #) nazwa atrybutu : typ danych = wartość domyślna(...)

(- + #) nazwa operacji (lista argumentów) : typ wyników(...)

Widoczność atrybutu / operacji:-: prywatny(ang. private)+: publiczny(ang. public)#: chroniony(ang. protected)podkreślenie: statyczny(ang. static)

Nazwa klasy pisana kursywą – klasa abstrakcyjna(ang. abstract class)

Przykład Przykład –– klasa Pracownikklasa Pracownik INŻYNIERIAOPROGRAMOWANIA

tatus: {current, left, retired}taxCode: integer. . .

join ()leave ()retire ()changeDetails (

Pracownik + nazwisko : string+ adres : string+ dataUrodzenia : Date+ licznikPracowników : integer+ PESEL : string+ dział : Dział+ przełożony : Pracownik+ wynagrodzenie : integer = 0+ stan : {zatrudniony, zwolniony, emerytowany}+ NIP : integer- numerPracownika : integer+ zatrudnij()+ zwolnij()+ przejdźNaEmeryturę()+ dajPodwyzke(kwota)# sprawdzPoprawnoscNumeruPESEL()

Jan Kowalski : Pracownik

Pracownik

Symbol obiektu (instancji) klasy

Pracownik:

Klasa Pracownik w mniejszym stopniu uszczegółowienia:

Przykład Przykład –– klasa klasa CircleCircle i jej reprezentacja w C++i jej reprezentacja w C++ INŻYNIERIAOPROGRAMOWANIA

class Circle{public:void SetCenter(const Point&);void SetRadius(double);double Area() const;double Circumference() const;

private:double itsRadius;Point itsCenter;

};

Komunikacja pomiędzy obiektamiKomunikacja pomiędzy obiektami INŻYNIERIAOPROGRAMOWANIA

� Obiekty porozumiewają się przez żądania usług od innych obiektów

(wywołania operacji), i jeśli trzeba, wymianę informacji niezbędnych do

realizacji usługi.

� Kopie informacji potrzebnych do wykonania usługi i wyniki jej

wykonania są przekazywane jako parametry.

� Obiekt odbiorca analizuje składniowo komunikat, rozpoznaje usługę i

przekazane dane a następnie realizuje żądaną usługę.

Typowe przykłady komunikacji w obiektowych językach programowania:

� // Wywołaj operację dla obiektu buforCykliczny, która pobiera kolejną

// wartość z bufora i zapisuje ją do zmiennej.

w = buforCykliczny.pobierz();

� // Wywołaj metodę termostatu, ustawiającą temperaturę

termostat.ustawTemperaturę(20);

stan o5stan o6stan o2

stan o4stan o3stan o1

Związki między obiektamiZwiązki między obiektami INŻYNIERIAOPROGRAMOWANIA

W modelu zwykle istnieją różne zależności (W modelu zwykle istnieją różne zależności (wiązaniawiązania, , ang. ang. linkslinks) )

pomiędzy obiektami należącymi do różnych klas obiektów. pomiędzy obiektami należącymi do różnych klas obiektów.

o3 : K3 o4 : K4o1 : K1

o6 : K6o5 : K5

o2 : K2

Zależności te reprezentuje się przez związek (inaczej relację,

ang. association) między klasami.

Związki między klasami. PowiązanieZwiązki między klasami. Powiązanie INŻYNIERIAOPROGRAMOWANIA

� Najprostszym, ogólnym związkiem jest powiązanie (ang. binaryassociation; general association).

� Używa się go do wskazania, że atrybut obiektu jest powiązany z innym

obiektem, albo że implementacja metody korzysta z powiązanego obiektu.

� Powiązanie modelowane jest linią łączącą klasy obiektów, która może mieć dodatkowe adnotacje (opis związku).

� Istnieją również powiązania n-arne, łączące ze sobą więcej niż 2 klasy.

jest-członkiem ►

jest-zarządzany-przez

zarządzaKierownik

DziałPracownik

Związki między klasami. UogólnienieZwiązki między klasami. Uogólnienie INŻYNIERIAOPROGRAMOWANIA

� Klasy obiektów można ułożyć w hierarchię uogólnienia (ang. generalization), w której widać związek między ogólnymi i bardziej

szczegółowymi klasami obiektów.

� Szczegółowa klasa obiektów jest w pełni zgodna z ogólną klasą obiektów,

ale zawiera więcej informacji.

� W UML uogólnienie obrazuje się za pomocą linii zakończonej strzałką

wskazującą klasę macierzystą.

� W obiektowych językach programowania uogólnienie zwykle implementuje

się za pomocą mechanizmu dziedziczenia (ang. inheritance). Klasa potomna

dziedziczy atrybuty i operacje po klasie macierzystej.

� Zalety: Oszczędność czasu, przejrzystość i wygoda: klasy niższe w hierarchii mają te same atrybuty i operacje co ich klasy macierzyste, mogą jednak

dodawać nowe atrybuty i operacje lub modyfikować niektóre z tych

odziedziczonych.

� Bezpieczeństwo: zasada uogólniania działa jedynie w jednym kierunku.

Hierarchia Hierarchia uogólnienieńuogólnienień INŻYNIERIAOPROGRAMOWANIA

Pracownik

Kierownik

zarządzaneBudżetydataPrzyjęcia

Programista

przedsięwzięciejęzykiProgr

KierownikPrzedsięwzięcia

przedsięwzięcie

Kierownik Działu

dział

KierownikStrategiczny

obowiązki

Związki między klasami. Agregacja i kompozycjaZwiązki między klasami. Agregacja i kompozycja INŻYNIERIAOPROGRAMOWANIA

AgregacjaAgregacja ((ang. ang. aggregationaggregation): tworzenie nowej klasy, ): tworzenie nowej klasy,

przy użyciu klas już istniejących. Nowa klasa przy użyciu klas już istniejących. Nowa klasa

może być zbudowana z dowolnej liczby może być zbudowana z dowolnej liczby

obiektów (obiekty te mogą być dowolnych obiektów (obiekty te mogą być dowolnych

typów) i w dowolnej kombinacji, by uzyskać typów) i w dowolnej kombinacji, by uzyskać

żądany efekt. Jest to relacja typu „zawiera” żądany efekt. Jest to relacja typu „zawiera” npnp: :

„samochód zawiera koła i silnik” „samochód zawiera koła i silnik” –– gdzie gdzie

„samochód”, „koło” i „silnik” są klasami. „samochód”, „koło” i „silnik” są klasami.

Symbol Symbol –– linia zakończona rombem.linia zakończona rombem.

KompozycjaKompozycja ((ang. ang. compositioncomposition): składanie się ): składanie się

obiektu z obiektów składowych, które nie mogą obiektu z obiektów składowych, które nie mogą

istnieć bez obiektu głównego. Kompozycja jest istnieć bez obiektu głównego. Kompozycja jest

relacją typu „posiada”. Dana część może należeć relacją typu „posiada”. Dana część może należeć

tylko do jednej całości. Część nie może istnieć tylko do jednej całości. Część nie może istnieć

bez całości, a usunięcie całości powoduje bez całości, a usunięcie całości powoduje

automatyczne usunięcie wszystkich części automatyczne usunięcie wszystkich części

związanych z nią związkiem kompozycji. związanych z nią związkiem kompozycji.

Symbol Symbol –– linia zakończona zaczernionym linia zakończona zaczernionym

rombem.rombem.

Związki między klasami. ZależnośćZwiązki między klasami. Zależność INŻYNIERIAOPROGRAMOWANIA

ZależnośćZależność ((ang. ang. dependencydependency) między klasami zachodzi, jeżeli zmiany ) między klasami zachodzi, jeżeli zmiany

dokonane w stanie jednego z obiektów danej klasy mogą mieć wpływdokonane w stanie jednego z obiektów danej klasy mogą mieć wpływ

na obiekt należący do innej klasy.na obiekt należący do innej klasy.

Związki między klasami. ImplementacjaZwiązki między klasami. Implementacja INŻYNIERIAOPROGRAMOWANIA

Klasa może implementować (realizować) zachowanie

wyspecyfikowane w innej klasie (ang. implementation).

public interface KlasaA{

public void operacja();

}

public class KlasaB implements KlasaA{

public void operacja(){// implementacja operacji

}}

<<<<Interface>> >> – symbol tzw. stereotypu, wyjaśniony będzie za chwilę…

Krotność związkuKrotność związku INŻYNIERIAOPROGRAMOWANIA

�� KrotnośćKrotność związkuzwiązku ((ang. ang. multiplicitymultiplicity) określa, ile obiektów danej klasy ) określa, ile obiektów danej klasy

jest równocześnie związana z obiektami innej klasyjest równocześnie związana z obiektami innej klasy

0..1 Zero lub jeden

1 Tylko jeden

n Tylko n (gdzie n > 1)

0..* Zero lub więcej (skrót: *)

1..* Jeden lub więcej

0..n Od zera do n (gdzie n > 1)

1..n Od jednego do n (gdzie n > 1)

Atrybuty związkuAtrybuty związku INŻYNIERIAOPROGRAMOWANIA

Związek, tak jak i obiekt, też może posiadać atrybuty (jest to tzw.

związek kwalifikowany).

prawa dostępu

PlikUżytkownik

StereotypyStereotypy INŻYNIERIAOPROGRAMOWANIA

�� Idea Idea stereotypówstereotypów ((ang. ang. stereotypesstereotypes) polega na ustaleniu pewnej meta) polega na ustaleniu pewnej meta--

klasyfikacji obiektów (i innych bytów) i wprowadzeniu oznaczeń klasyfikacji obiektów (i innych bytów) i wprowadzeniu oznaczeń

graficznych klas zgodnych z tą metagraficznych klas zgodnych z tą meta--klasyfikacją.klasyfikacją.

�� Przykład: obiekty interfejsu, obiekty sterujące i obiekty rzeczyPrzykład: obiekty interfejsu, obiekty sterujące i obiekty rzeczywiste.wiste.

�� Oznaczenie: ciągi znaków wewnątrz nawiasów « »; Oznaczenie: ciągi znaków wewnątrz nawiasów « »; npnp. «. «interfaceinterface»»

Budowa modelu obiektowego (1)Budowa modelu obiektowego (1) INŻYNIERIAOPROGRAMOWANIA

� Identyfikacja klas obiektów

Podejście praktyczne polega na wyselekcjonowaniu rzeczowników z

Specyfikacji Wymagań Systemowych i potraktowaniu ich jako identyfikatorów klas obiektów.

Innym źródłem identyfikacji obiektów mogą być:

� specyfikacja przypadków użycia

� dodatkowe klasy obiektów wynikające z ogólnej wiedzy na temat problemu

� Identyfikacja związków między klasami

� Wstępna identyfikacja przez rozpatrzenie ze specyfikacji wymagańfraz zawierających czasowniki

Budowa modelu obiektowego (2)Budowa modelu obiektowego (2) INŻYNIERIAOPROGRAMOWANIA

� Identyfikacja atrybutów i operacji

� Wstępna identyfikacja atrybutów polega na rozważeniu

przymiotników, wyrażeń dzierżawczych odnoszących się do już zidentyfikowanych klas i związków

� Wstępna identyfikacja operacji m.in. na podstawie modelu przypadków użycia

� Optymalizacja modelu

� Identyfikacja związków uogólnienia

� Grupowanie klas w moduły (pakiety)

� Weryfikacja, walidacja i uszczegóławianie modelu

DIAGRAM KLAS

Diagram klasDiagram klas INŻYNIERIAOPROGRAMOWANIA

Diagram klasDiagram klas –– statyczny diagram strukturalny, przedstawiający statyczny diagram strukturalny, przedstawiający

strukturę systemu w modelach obiektowych, przez ilustrację strukstrukturę systemu w modelach obiektowych, przez ilustrację struktury tury

klas i zależności między nimi.klas i zależności między nimi.

Diagram klas Diagram klas –– kolejny przykładkolejny przykład INŻYNIERIAOPROGRAMOWANIA

Diagram obiektówDiagram obiektów INŻYNIERIAOPROGRAMOWANIA

� Diagram obiektów prezentuje możliwą konfigurację obiektów w

określonym momencie. Jest pewnego rodzaju instancją diagramu klas,

w której zamiast klas przedstawiono ich obiekty.

� Diagram posługuje się identycznymi symbolami co diagram klas,

zamiast symboli klas występują symbole obiektów.

Diagramy obiektów przydają się w

przypadku szczególnie

skomplikowanych zależności, których nie można przedstawić na

diagramie klas. Wówczas

przykładowe konfiguracje

obiektów pomagają w

zrozumieniu modelu.

Diagram struktur złożonychDiagram struktur złożonych INŻYNIERIAOPROGRAMOWANIA

� Diagram struktur złożonych przedstawia hierarchicznie wewnętrzną strukturę

złożonego obiektu z uwzględnieniem punktów interakcji z innymi częściami

systemu.

� Obiekt składa się z części, które reprezentują poszczególne składowe obiektu

realizujące poszczególne funkcje obiektu.

� Komunikacja pomiędzy obiektem, a jego środowiskiem przebiega poprzez port

(oznaczany jako mały prostokąt umieszczony na krawędzi obiektu). Porty są

połączone z częściami obiektu, które są odpowiedzialne za realizacje tych

funkcji.

� Diagramy struktur złożonych mogą zawierać interfejsy wewnętrzne i interfejsy udostępnione, widoczne na zewnątrz obiektu

Diagram komponentówDiagram komponentów INŻYNIERIAOPROGRAMOWANIA

� Komponent to wymienny, wykonywalny fragment systemu o hermetyzowanych szczegółach implementacyjnych. Komponenty z natury służą do ponownego wykorzystania poprzez połączenie ich z innymi komponentami, zwykle poprzez ich skonfigurowanie, bez potrzeby rekompilacji.

� Funkcjonalność oferowana przez komponent jest dostępna przez interfejsy, które ten implementuje. Z drugiej strony, komponent może wymagać pewnych interfejsów, które muszą być dostarczone

przez inne komponenty.

Diagram komponentów

przedstawia komponenty, ich interfejsy oraz zależności pomiędzy nimi.

komponent

interfejs oferowany

interfejs wymagany

Diagram pakietówDiagram pakietów INŻYNIERIAOPROGRAMOWANIA

� Diagram pakietów służy do modelowania fizycznego i logicznego

podziału systemu.

� Pakiety są elementem strukturalizującym elementy UML i służą do grupowania ich według dowolnego kryterium.

� W pakiecie można umieścić praktycznie dowolne elementy: klasy, komponenty, przypadki użycia, pojemniki danych a także inne

pakiety.

Diagram wdrożeniaDiagram wdrożenia INŻYNIERIAOPROGRAMOWANIA

� Diagram wdrożenia odzwierciedla fizyczną strukturę całego systemu,

z uwzględnieniem oprogramowania i sprzętu.

� Jednostki oprogramowania są reprezentowane przez artefakty (skompilowane wersje komponentu, dane i biblioteki).

� Stronę sprzętową reprezentują węzły, czyli poszczególne urządzenia obliczeniowe, komunikacyjne i przechowujące, powiązane ścieżkami

komunikacyjnymi (np. połączeniem TCP/IP).

� Diagram ten istotną

rolę odgrywa przy wdrażaniu dużych,

rozproszonych systemów.

Diagram przypadków użyciaDiagram przypadków użycia INŻYNIERIAOPROGRAMOWANIA

� Modelowanie użytkowników systemu (aktorów) i ich potrzeb w

stosunku do tworzonego systemu.

� Omówiony na poprzednich wykładach

Diagram maszyny stanowejDiagram maszyny stanowej INŻYNIERIAOPROGRAMOWANIA

�� Diagram maszyny stanowejDiagram maszyny stanowej reprezentuje zachowanie systemu lub jego reprezentuje zachowanie systemu lub jego

elementu (zwykle obiektów danej klasy), a w szczególności zmianyelementu (zwykle obiektów danej klasy), a w szczególności zmiany

tego zachowania. tego zachowania.

�� Podstawowymi elementami diagramu są stany obiektu połączone Podstawowymi elementami diagramu są stany obiektu połączone

strzałkami przejść. Obiekt, reagując na nadchodzące zdarzenia, jstrzałkami przejść. Obiekt, reagując na nadchodzące zdarzenia, jeżeli eżeli

spełnione są określone warunki, zmienia swój stan i położenie naspełnione są określone warunki, zmienia swój stan i położenie na

diagramie stanu.diagramie stanu.

�� Do wersji UML 1.4 nosił nazwę diagramu stanów (Do wersji UML 1.4 nosił nazwę diagramu stanów (statestate diagram) diagram)

StanStan INŻYNIERIAOPROGRAMOWANIA

�� StanStan jest etapem cyklu życia obiektu. Obiekt przebywający w danym stjest etapem cyklu życia obiektu. Obiekt przebywający w danym stanie spełnia anie spełnia

określony warunek.określony warunek.

�� Stany są reprezentowane przez prostokąty z zaokrąglonymi narożniStany są reprezentowane przez prostokąty z zaokrąglonymi narożnikami. Każdy stan kami. Każdy stan

ma swoją nazwę.ma swoją nazwę.

�� Ze stanem mogą być związane pewne akcje, wykonywane w określonymZe stanem mogą być związane pewne akcje, wykonywane w określonym momencie:momencie:

�� entryentry: jest akcją wykonywaną w momencie gdy obiekt przyjmuje dany sta: jest akcją wykonywaną w momencie gdy obiekt przyjmuje dany stan; akcja ta jest n; akcja ta jest

wykonywana jeden raz i niepodzielniewykonywana jeden raz i niepodzielnie

�� dodo: jest akcją wykonywaną nieprzerwanie w czasie, gdy obiekt przeb: jest akcją wykonywaną nieprzerwanie w czasie, gdy obiekt przebywa w tym stanieywa w tym stanie

�� exitexit: oznacza (analogicznie do : oznacza (analogicznie do entryentry) moment opuszczenia stanu; podobnie, akcja taka jest ) moment opuszczenia stanu; podobnie, akcja taka jest

wykonywana tylko raz.wykonywana tylko raz.

�� eventevent: reprezentuje akcję wykonywaną w momencie nadejścia zdarzenia o: reprezentuje akcję wykonywaną w momencie nadejścia zdarzenia określonego typu.kreślonego typu.

�� Wykonanie każdej z tych akcji może również generować zdarzenie.Wykonanie każdej z tych akcji może również generować zdarzenie.

Przejścia pomiędzy stanamiPrzejścia pomiędzy stanami INŻYNIERIAOPROGRAMOWANIA

Stany są powiązane ze sobą przejściami. Przejścia definiują waruStany są powiązane ze sobą przejściami. Przejścia definiują warunki, jakie muszą nki, jakie muszą

zaistnieć, aby obiekt zmienił swój stan ze źródłowego na docelowzaistnieć, aby obiekt zmienił swój stan ze źródłowego na docelowy. Formalnie opis y. Formalnie opis

przejścia składa się z czterech elementów:przejścia składa się z czterech elementów:

�� wyzwalaczawyzwalacza ((ang. ang. triggertrigger) ) –– zdarzenia, które może spowodować przejście i zmianę stanuzdarzenia, które może spowodować przejście i zmianę stanu

�� dozorudozoru ((ang. ang. guardguard conditioncondition) ) –– warunku, jaki musi być spełniony, aby przejście zostało warunku, jaki musi być spełniony, aby przejście zostało

wykonane; warunek ten jest ewaluowany w momencie pojawienia się wykonane; warunek ten jest ewaluowany w momencie pojawienia się wyzwalaczawyzwalacza

�� akcjiakcji (ang. (ang. actionaction) ) –– operacji wykonywanej w momencie przejścia ze stanu do stanu; naoperacji wykonywanej w momencie przejścia ze stanu do stanu; nawet wet

jeżeli akcja przejścia jest złożona z wielu akcji elementarnych,jeżeli akcja przejścia jest złożona z wielu akcji elementarnych, jest ona wykonywana jest ona wykonywana

niepodzielnieniepodzielnie

�� zdarzeniazdarzenia ((ang. ang. eventevent) )

–– wysyłanego w momencie wysyłanego w momencie

wykonania przejścia.wykonania przejścia.

PseudostanyPseudostany INŻYNIERIAOPROGRAMOWANIA

Stany pomocnicze (Stany pomocnicze (pseudostanypseudostany):):

�� początkowypoczątkowy, który reprezentuje obiekt w momencie jego utworzenia. , który reprezentuje obiekt w momencie jego utworzenia.

�� końcowykońcowy, który reprezentuje usunięcie obiektu z systemu. , który reprezentuje usunięcie obiektu z systemu.

�� decyzjadecyzja, przedstawiająca wybór pomiędzy dwiema wartościami logicznymi p, przedstawiająca wybór pomiędzy dwiema wartościami logicznymi pewnego ewnego

wyrażenia. wyrażenia.

�� złączenie/rozwidleniezłączenie/rozwidlenie –– powoduje synchronizację stanów (wszystkie dochodzące do powoduje synchronizację stanów (wszystkie dochodzące do

niego przejścia muszą być wykonane)niego przejścia muszą być wykonane)

�� historiahistoria (literka H w okręgu wewnątrz stanu) (literka H w okręgu wewnątrz stanu) –– zapewnia możliwość zapamiętania zapewnia możliwość zapamiętania

poprzedniego stanu obiektu i przywrócenie go.poprzedniego stanu obiektu i przywrócenie go.

Stany złożoneStany złożone INŻYNIERIAOPROGRAMOWANIA

�� Stany złożone posiadają wewnętrzną maszynę stanów. Stany złożone posiadają wewnętrzną maszynę stanów.

�� Wejście do stanu jest jej stanem początkowym, a wyjście Wejście do stanu jest jej stanem początkowym, a wyjście ––końcowym.końcowym.

Pełny diagram maszyny stanowejPełny diagram maszyny stanowej INŻYNIERIAOPROGRAMOWANIA

�� Diagram dla obiektów klasy KsiążkaDiagram dla obiektów klasy Książka

�� Dla przejrzystości nie uwzględnia akcji wewnątrz stanówDla przejrzystości nie uwzględnia akcji wewnątrz stanów

Diagram czynnościDiagram czynności INŻYNIERIAOPROGRAMOWANIA

�� Diagram czynnościDiagram czynności prezentuje przepływ sterowania w systemie prezentuje przepływ sterowania w systemie

związany z wykonaniem pewnej funkcji. związany z wykonaniem pewnej funkcji.

�� Przepływ łączy czynności wykonywane przez poszczególne obiekty iPrzepływ łączy czynności wykonywane przez poszczególne obiekty i

stany obiektów, w których znajdują się po wykonaniu czynności. stany obiektów, w których znajdują się po wykonaniu czynności.

�� W odróżnieniu od diagramu maszyny stanowej, diagram czynności W odróżnieniu od diagramu maszyny stanowej, diagram czynności

może obejmować wiele obiektów na raz, zwykle umieszczanych w może obejmować wiele obiektów na raz, zwykle umieszczanych w

odpowiednich torach.odpowiednich torach.

Diagram sekwencjiDiagram sekwencji INŻYNIERIAOPROGRAMOWANIA

�� Diagram sekwencjiDiagram sekwencji prezentuje kolejność wywołań operacji, przepływ prezentuje kolejność wywołań operacji, przepływ

sterowania pomiędzy obiektami oraz szablon realizowanego algorytsterowania pomiędzy obiektami oraz szablon realizowanego algorytmu.mu.

�� Składa się z pionowych linii życia (Składa się z pionowych linii życia (ang. ang. lifelineslifelines) poszczególnych ) poszczególnych

obiektów uczestniczących w interakcji oraz wymienianych między nobiektów uczestniczących w interakcji oraz wymienianych między nimi imi

komunikatów (wywołań operacji). Czas jest reprezentowany w postakomunikatów (wywołań operacji). Czas jest reprezentowany w postaci ci

pionowej osi diagramu.pionowej osi diagramu.

�� Białe prostokąty umieszczone Białe prostokąty umieszczone

na linii życia obiektu oznaczają, na linii życia obiektu oznaczają,

że obiekt jest zajęty że obiekt jest zajęty wykonywaniem wykonywaniem

pewnej czynności. pewnej czynności.

Fizycznie usunięcie obiektu można Fizycznie usunięcie obiektu można

wprost oznaczyć jako znak X wprost oznaczyć jako znak X

na linii życiana linii życia

Diagram sekwencji Diagram sekwencji –– kolejny przykładkolejny przykład INŻYNIERIAOPROGRAMOWANIA

BlokBlok INŻYNIERIAOPROGRAMOWANIA

Często zachodzi konieczność wskazania specjalnej własności pewneCzęsto zachodzi konieczność wskazania specjalnej własności pewnej części interakcji, j części interakcji,

npnp. pętli. Taką grupę operacji obejmuje się prostokątem, w którego. pętli. Taką grupę operacji obejmuje się prostokątem, w którego lewym górnym lewym górnym

narożniku, w pięciokącie umieszcza się słowo kluczowe lub opis onarożniku, w pięciokącie umieszcza się słowo kluczowe lub opis określający kreślający

znaczenie danego bloku (tzw. operator interakcji), znaczenie danego bloku (tzw. operator interakcji), npnp.:.:

�� altalt (od (od alternativealternative) ) –– określający warunek wykonania bloku operacji, odpowiadający określający warunek wykonania bloku operacji, odpowiadający

instrukcji instrukcji ifif--elseelse; warunek umieszcza się wówczas wewnątrz bloku w nawiasach ; warunek umieszcza się wówczas wewnątrz bloku w nawiasach

kwadratowychkwadratowych

�� optopt (od (od optionaloptional) ) –– reprezentujący instrukcję reprezentujący instrukcję ifif (bez (bez elseelse))

�� parpar (od (od parallelparallel) ) –– nakazujący wykonać operacje równoleglenakazujący wykonać operacje równolegle

�� criticalcritical –– oznaczający obszar oznaczający obszar

krytycznykrytyczny

�� looploop –– definiujący pętlę typu for definiujący pętlę typu for

(o określonej z góry liczbie (o określonej z góry liczbie

iteracji) lub iteracji) lub whilewhile (wykonywanej (wykonywanej

dopóki pewien warunek jest dopóki pewien warunek jest

prawdziwy)prawdziwy)

Diagram komunikacjiDiagram komunikacji INŻYNIERIAOPROGRAMOWANIA

�� Diagram komunikacjiDiagram komunikacji skupia się na obiektach wchodzących w skład skupia się na obiektach wchodzących w skład

interakcji i wymienianymi przez nie komunikatach, natomiast w interakcji i wymienianymi przez nie komunikatach, natomiast w

mniejszym stopniu niż diagram sekwencji wskazuje na aspekt czasomniejszym stopniu niż diagram sekwencji wskazuje na aspekt czasowy. wy.

�� Komunikacje są przedstawiane za pomocą linii łączących obiekty, Komunikacje są przedstawiane za pomocą linii łączących obiekty,

natomiast przesyłane między obiektami komunikaty i dane są natomiast przesyłane między obiektami komunikaty i dane są

umieszczane obok tych linii. umieszczane obok tych linii.

�� Każdy komunikat jest opatrzony etykietą liczbową, wskazującą na Każdy komunikat jest opatrzony etykietą liczbową, wskazującą na

kolejność wysłania. kolejność wysłania.

Etykieta ma Etykieta ma

postać liczb postać liczb

oddzielonychoddzielonych

kropkami.kropkami.

Diagram przeglądu interakcjiDiagram przeglądu interakcji INŻYNIERIAOPROGRAMOWANIA

�� Diagram przeglądu interakcjiDiagram przeglądu interakcji służy do przedstawiania ogólnego służy do przedstawiania ogólnego

przepływu sterowania w interakcjach pomiędzy obiektami, korzystaprzepływu sterowania w interakcjach pomiędzy obiektami, korzystając jąc

z uproszczonej notacji diagramu czynności. z uproszczonej notacji diagramu czynności.

�� Na jednym diagramie pokazany jest przepływ sterowania pomiędzy Na jednym diagramie pokazany jest przepływ sterowania pomiędzy

interakcjami pokazanymi w postaci innych diagramów, interakcjami pokazanymi w postaci innych diagramów, npnp. sekwencji. . sekwencji.

�� Diagram ten może korzystać z większości elementów obecnych na Diagram ten może korzystać z większości elementów obecnych na

diagramach czynności: punktu decyzyjnego, pętli, rozwidlenia i diagramach czynności: punktu decyzyjnego, pętli, rozwidlenia i

synchronizacji, synchronizacji,

itp.itp.

Diagram uwarunkowań czasowychDiagram uwarunkowań czasowych INŻYNIERIAOPROGRAMOWANIA

�� Diagram uwarunkowań czasowychDiagram uwarunkowań czasowych przeznaczony jest do przeznaczony jest do

prezentowania zależności związanych z czasem wykonywania operacjprezentowania zależności związanych z czasem wykonywania operacji i

przez obiekt lub grupę obiektów. przez obiekt lub grupę obiektów.

�� Linia czasu jest reprezentowana przez poziomą oś diagramu, natomLinia czasu jest reprezentowana przez poziomą oś diagramu, natomiast iast

oś pionowa przedstawia kolejne obiekty uczestniczące w interakcjoś pionowa przedstawia kolejne obiekty uczestniczące w interakcji oraz i oraz

ich zmieniające się stany wewnętrzne. ich zmieniające się stany wewnętrzne.

�� Odległości pomiędzy momentami zmian stanów wyznaczają Odległości pomiędzy momentami zmian stanów wyznaczają

uwarunkowania czasowe.uwarunkowania czasowe.

�� Diagram ten odgrywa duże Diagram ten odgrywa duże

znaczenie w modelowaniu znaczenie w modelowaniu

systemów czasu systemów czasu

rzeczywistego.rzeczywistego.

Budowa modelu behawioralnego (1)Budowa modelu behawioralnego (1) INŻYNIERIAOPROGRAMOWANIA

�� Identyfikacja scenariuszyIdentyfikacja scenariuszy

�� Należy utworzyć zbiór scenariuszy, które opisują typowe Należy utworzyć zbiór scenariuszy, które opisują typowe

interakcje systemu ze światem zewnętrznym.interakcje systemu ze światem zewnętrznym.

�� Punktem wyjścia jest tu specyfikacja przypadków użycia systemu, Punktem wyjścia jest tu specyfikacja przypadków użycia systemu,

o ile została ona sprecyzowana w Specyfikacji Wymagań o ile została ona sprecyzowana w Specyfikacji Wymagań

Systemowych. Jeśli nie została, należy je jawnie zidentyfikować Systemowych. Jeśli nie została, należy je jawnie zidentyfikować i i

rozpatrzyć różne przypadki użycia systemu. rozpatrzyć różne przypadki użycia systemu.

�� Identyfikacja zdarzeńIdentyfikacja zdarzeń

�� Dla danego scenariusza powstaje odpowiadający mu ślad zdarzeń Dla danego scenariusza powstaje odpowiadający mu ślad zdarzeń

przedstawiający drogi przepływu zdarzeń pomiędzy obiektami przedstawiający drogi przepływu zdarzeń pomiędzy obiektami

systemu. systemu.

�� Budowa diagramów interakcjiBudowa diagramów interakcji

�� Dla każdego scenariusza budowane są diagramy sekwencji oraz Dla każdego scenariusza budowane są diagramy sekwencji oraz (rzadziej) diagramy komunikacji, przeglądu interakcji oraz (rzadziej) diagramy komunikacji, przeglądu interakcji oraz przebiegów czasowych.przebiegów czasowych.

Budowa modelu behawioralnego (2)Budowa modelu behawioralnego (2) INŻYNIERIAOPROGRAMOWANIA

�� Budowa diagramów maszyny stanowejBudowa diagramów maszyny stanowej

�� Dla każdej klasy modelu obiektowegoDla każdej klasy modelu obiektowego tworzony jest diagram tworzony jest diagram opisujący jej zachowanie. Jeśli zachowanie obiektu klasy jest opisujący jej zachowanie. Jeśli zachowanie obiektu klasy jest trywialne można pominąć jawną specyfikację diagramu.trywialne można pominąć jawną specyfikację diagramu.

�� Identyfikacja wejść i wyjśćIdentyfikacja wejść i wyjść

�� Budowa diagramu czynnościBudowa diagramu czynności

�� Definiowanie podstawowych (nie podlegających dalszej Definiowanie podstawowych (nie podlegających dalszej

dekompozycji) transformacji danych opisywanych jako zależności dekompozycji) transformacji danych opisywanych jako zależności

funkcyjne między danymi wejściowymi i wyjściowymi.funkcyjne między danymi wejściowymi i wyjściowymi.

�� Tworzenie diagramu czynności, który uwidacznia obliczenia Tworzenie diagramu czynności, który uwidacznia obliczenia

mające na celu wywiedzenie danych wyjściowych na podstawie mające na celu wywiedzenie danych wyjściowych na podstawie

odpowiednich wejść.odpowiednich wejść.

�� Identyfikacja ograniczeńIdentyfikacja ograniczeń

�� Identyfikacja zależności, których nie da się wyrazić w terminachIdentyfikacja zależności, których nie da się wyrazić w terminachrelacji relacji wejściewejście––wyjściewyjście i naniesienie ich na diagramy.i naniesienie ich na diagramy.

Rozszerzanie UMLRozszerzanie UML INŻYNIERIAOPROGRAMOWANIA

Mechanizm rozszerzania języka UML obejmuje trzy elementy:Mechanizm rozszerzania języka UML obejmuje trzy elementy:

�� stereotypystereotypy (ang. (ang. stereotypesstereotypes), zmieniające lub doprecyzowujące ), zmieniające lub doprecyzowujące

semantykę elementów modelu. Zapisywane są w danym elemencie w semantykę elementów modelu. Zapisywane są w danym elemencie w

postaci postaci <<<<nazwa stereotypunazwa stereotypu>>>>

�� metkimetki (ang. (ang. taggedtagged valuesvalues), dołączające do elementu dodatkowe ), dołączające do elementu dodatkowe

właściwości w postaci par właściwości w postaci par {{kluczklucz = = wartośćwartość}}. Metki są dołączane do . Metki są dołączane do

elementów w postaci notatekelementów w postaci notatek

�� profileprofile (ang.(ang. profilesprofiles), zawierające predefiniowane zestawy ), zawierające predefiniowane zestawy

stereotypów i metek dla danej dziedziny zastosowaństereotypów i metek dla danej dziedziny zastosowań

Język OCLJęzyk OCL INŻYNIERIAOPROGRAMOWANIA

Język OCLJęzyk OCL (ang. (ang. ObjectObject ConstraintConstraint LanguageLanguage) ) –– język formalnego język formalnego

wyrażania ograniczeń w UMLwyrażania ograniczeń w UML

�� wyraża dowolną regułę logiczną: warunki wstępne, końcowe, wyraża dowolną regułę logiczną: warunki wstępne, końcowe,

niezmienniki, wyniki metod etc. w postaci warunku zapisanego w niezmienniki, wyniki metod etc. w postaci warunku zapisanego w

nawiasach klamrowychnawiasach klamrowych

�� nie może modyfikować modelu, jedynie go sprawdzaćnie może modyfikować modelu, jedynie go sprawdzać

�� można go związać z dowolnym elementem modelu (klasą, operacją, można go związać z dowolnym elementem modelu (klasą, operacją,

atrybutem, asocjacją itp.)atrybutem, asocjacją itp.)

contextcontext Klient Klient invinv::

self.nazwiskoself.nazwisko <> '' <> '' andand self.wiekself.wiek >= 18>= 18

self.uprawnionyself.uprawniony()()

contextcontext Konto::punktyKonto::punkty : : IntegerInteger

initinit: : ifif klient.wiekklient.wiek > 60 > 60 thenthen 100 100 elseelse 0 0 endifendif

Uwagi końcoweUwagi końcowe INŻYNIERIAOPROGRAMOWANIA

Metodologia obiektowa także nie jest idealnaMetodologia obiektowa także nie jest idealna

�� Wiele celów łatwiej jest czasem osiągnąć stosując tradycyjne metWiele celów łatwiej jest czasem osiągnąć stosując tradycyjne metody ody

projektowania i programowania.projektowania i programowania.

�� Jednak ze względu na konieczność zapewnienia bezpiecznejJednak ze względu na konieczność zapewnienia bezpiecznej pracy pracy

przy tworzeniu dużych systemów informatycznych przez duże przy tworzeniu dużych systemów informatycznych przez duże

zespoły projektantów zespoły projektantów –– właśnie ta metodologia będzie zapewne właśnie ta metodologia będzie zapewne

dominująca w przyszłości.dominująca w przyszłości.

�� Krytycyzm UML:Krytycyzm UML:

�� przeładowanieprzeładowanie

�� nie zawsze precyzyjnynie zawsze precyzyjny

�� trudności w nauce (wynik powyższych dwóch wad)trudności w nauce (wynik powyższych dwóch wad)

�� język „do wszystkiego”język „do wszystkiego”

�� narzędzia CASE często implementują UML „po swojemu”narzędzia CASE często implementują UML „po swojemu”

�� brak narzędzi walidującychbrak narzędzi walidujących