inŻynieria oprogramowania oprogramowania ... - … · historia uml inŻynieria oprogramowania...
Post on 09-Feb-2019
226 Views
Preview:
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 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
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
top related