Inżynieria oprogramowania UML

Slides:



Advertisements
Podobne prezentacje
Programowanie obiektowe w Javie
Advertisements

Projektowanie dynamiki - diagramy interakcji
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
© IEn Gdańsk 2011 Technika fazorów synchronicznych Łukasz Kajda Instytut Energetyki Oddział Gdańsk Zakład OGA Gdańsk r.
Modele biznesowe. Podręcznik Model biznesowy to w pewnym sensie szkic strategii, która ma zostać wdrożona w ramach struktur, procesów i systemów organizacji.
Plan Czym się zajmiemy: 1.Bilans przepływów międzygałęziowych 2.Model Leontiefa.
Zarządzanie Zmianą Sesja 3 Radzenie sobie z ludzkimi aspektami zmiany: opór.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
Finansowanie wybranych działań w parkach narodowych przy udziale środków funduszu leśnego - zakres finansowy Warszawa, 06 kwietnia 2016r.
Scenariusz lekcji chemii: „Od czego zależy szybkość rozpuszczania substancji w wodzie?” opracowanie: Zbigniew Rzemieniuk.
20/09/ Model warstwowy OSI. Model warstwowy OSI (Open Systems Interconnection ) – standard wprowadzony przez organizację ISO (International Organization.
Algorytmy Informatyka Zakres rozszerzony
Organizacja, przepisy i procedury Na przykładzie Śląskiego OW NFZ Dr n. med. Z Klosa.
Założenia psychologii kognitywnej (poznawczej) jako innowacyjna forma pracy z uczniem realizowana w Zespole Szkół w Gębicach.
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
Sieci przepływowe: algorytmy i ich zastosowania.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Wprowadzenie do baz danych. Terminologia Specyfika baz danych (1) 1.Trwałość danych –Długi czas życia – kilka, kilkadziesiąt, kilkaset lat –Niezależność.
Co to Internet? Internet (skrótowiec od ang. inter-network, dosłownie "między- sieć") – ogólnoświatowa sieć komputerowa, określana również jako sieć sieci.
Inżynieria oprogramowania UML WWW: Jacek Matulewski Instytut Fizyki, UMK WWW:
Projektowanie prezentacji multimedialnych Piotr Rakowski Gliwice 2006.
O PARADOKSIE BRAESSA Zbigniew Świtalski Paweł Skałecki Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski Zakopane 2016.
Język Java Paweł Rajba
Dziedziczenie, polimorfizm, Interfejsy
Hoopl Higher-order optimization library
Test analizy wariancji dla wielu średnich – klasyfikacja pojedyncza
Programowanie Obiektowe – Wykład 1
T.15 Wybór narzędzi dla reengineeringu (szczegóły).
Schematy blokowe.
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
(według:
Inżynieria oprogramowania Wzorzec architekt. MVC
Czynności prawne Mgr Aleksandra Spisz Instytut Prawa Cywilnego Wydział Prawa, Administracji i Ekonomii Uniwersytetu Wrocławskiego.
Narzędzia planowania zasobów w logistyce
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Rekursje Tak jak w innych językach funkcje mogą odwoływać się same do siebie Możemy regulować głębokość przed stwierdzeniem błędu (MaxRecursion, $RecursionLimit,
Akademia C# lab. 9 Zdarzenia i delegaty.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe
Rzecznik Praw Dziecka.
Lekcja 1 – Hello World! Visual Studio, coś łatwego na początek 
Programowanie obiektowe
KOREKTOR RÓWNOLEGŁY DLA UKŁADÓW Z NIEMINIMALNOFAZOWYMI OBIEKTAMI Ryszard Gessing Instytut Automatyki, Politechnika Śląska Plan referatu Wprowadzenie.
Kurs języka C++ – wykład 13 ( )
Inżynieria Oprogramowania Laboratorium
Git - system kontroli wersji
Bezpieczeństwo dostępu do danych w systemie Windows
Języki programowania.
Programowanie obiektowe
Laboratorium 1 – obsługa wejść i wyjść
Tensor naprężeń Cauchyego
Instrukcje wyboru.
Wykład 4 – część pierwsza
Podstawy informatyki Zygfryd Głowacz.
Modelowanie i analiza systemów informatycznych
Strukturalne wzorce projektowe
Dodatek – Technologie internetowe
Iteracyjno-rozwojowy cykl oprogramowania 2
Zdarzenia (eventy) Zdarzenia służą do powiadomienia użytkownika, gdy w używanej klasie dojdzie do pewnych wydarzeń zdefiniowanych przez twórcę klasy.
Implementacja rekurencji w języku Haskell
Jak szukać błędów w Eclipsie?
Tytuł prezentacji szkoleniowej
Mechanika płynów Dynamika płynu lepkiego Równania Naviera-Stokesa
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Modelowanie obiektowe - system zarządzania projektami
Autor: Magdalena Linowiecka
Projektowanie systemów informatycznych Wykład 3 – Obiekt a klasa
Zapis prezentacji:

Inżynieria oprogramowania UML Jacek Matulewski Instytut Fizyki, UMK WWW: http://www.fizyka.umk.pl/~jacek E-mail: jacek@fizyka.umk.pl Inżynieria oprogramowania UML WWW: http://www.fizyka.umk.pl/~jacek/dydaktyka/inzynieria/index.html semestr letni 2016

UML UML (ang. Unified Modeling Language) = zunifikowany język modelowania Język (system diagramów) stosowany do opisu różnego typu systemów, w tym komputerowych Obejmuje wiele aspektów analiz i projektowania Twórcy: Grady Booch (napisał wstęp do książki GoF), James Rumbaugh i Ivar Jacobson (przypadki użycia) Rozwój: OMG (Object Manag. Group)

UML Bardzo dużo książek i materiałów w sieci Polskie tłumaczenia z książki „UML 2.0. Wprowadzenie” Russ Miles, Kim Hamilton http://www.omg.org/spec/

Diagram klas UML w Visual Studio Klasa i jej składowe using System; namespace PrzestrzeńNazw { public class Klasa public Klasa() { ... } public Klasa(Typ arg) { ... } private Typ prywatnePole; private Typ prywatnaMetoda(Typ argument) { ... } private Typ prywatnaWłasność { get; set; } protected Typ chronionePole; protected Typ chronioneMetoda(Typ argument) ... protected Typ chronioneWłasność { get; set; } public Typ PublicznePole; public Typ PublicznaMetoda(Typ argument) ... public Typ PublicznaWłasność { get; set; } public static Klasa operator +(Klasa arg1, ...) public static Typ PoleStatyczne; public static Typ MetodaStatyczna(Typ argument) public static Typ PublicznaWłasnośćStatyczna ... public delegate Typ TypMetody(Typ arg); public TypMetody ReferencjaMetody; public event TypMetody Zdarzenie; }

Diagram klas UML w Visual Studio Klasa i jej składowe Tożsamość klasy (przestrzeń nazw i nazwa klasy) Stan (wszystkie dane przechowywane w instancji) Zachowania (operacje = metody i własności)

Diagram klas UML w Visual Studio Klasa i jej składowe Klasa, struktura lub interfejs Przestrzeń nazw i nazwa klasy Zakres: – prywatne # chronione + publiczne Pole lub własność: +|#|- Nazwa : Typ Metoda lub konstruktor: +|#|- Nazwa(argument : Typ) Składowa statyczna: +|#|- Nazwa(argument : Typ)

Diagram klas UML w Visual Studio Relacje między klasami - dziedziczenie Klasa abstrakcyjna (kursywa) Interfejs (kolor) Klasa dziedziczy z KlasaAbstrakc. Klasa implementuje Interfejs KlasaPotomna dziedziczy z Klasa

Diagram klas UML Relacje między klasami //klasa bazowa public abstract class KlasaAbstrakcyjna { … } //klasa potomna, dziedziczy z KlasaAbstrakcyjna public class Klasa : KlasaAbstrakcyjna { … } //klasa potomna, dziedziczy z Klasa public class KlasaPotomna : Klasa { } Relacja „jest”. Inne nazwy: generalizacja, rozszerz. https://en.wikipedia.org/wiki/Class_diagram

Diagram klas UML Relacje między klasami //interfejs public interface Interfejs { Typ PublicznaMetoda(Typ argument); Typ PublicznaWłasność { get; set; } } //klasa implementuje interfejs public class Klasa : KlasaAbstrakcyjna, Interfejs ... public Typ PublicznaMetoda(Typ argument) { ... } public Typ PublicznaWłasność { get; set; } https://en.wikipedia.org/wiki/Class_diagram

Diagram klas UML Relacje między klasami //klasa podrzędna public class Klasa { ... } //właściciel (ale nie wyłączny), relacja ma public class KlasaAgregacja { private Klasa pole; public Klasa Własność get { return pole; } } public KlasaAgregacja(Klasa arg) pole = arg; Cykle życia obiektów przechowywanych w polach są niezależne od klasy posiadającej (mogą być np. przekazane przez referencje w konstruktorze) https://en.wikipedia.org/wiki/Class_diagram

Diagram klas UML Relacje między klasami public class Klasa { ... } //wyłączny właściciel, relacja ma public class KlasaKompozycja { private Klasa pole = new Klasa(); } public class KlasaKompozycjaKolekcja Klasa[] tablica = new Klasa[10]; List<Klasa> lista = new List<Klasa>(); Inaczej „asocjacja całkowita” (vs. „częściowa”). Obiekt podrzędny jest tworzony tylko na potrzeby klasy właściciela. Jest używany tylko przez jej metody i usuwany wraz z nią. Wspólny cykl życia. https://en.wikipedia.org/wiki/Class_diagram

Diagram klas UML Relacje między klasami public class Klasa { ... } public class KlasaZależność { public void Metoda(Klasa arg) arg.PublicznaMetoda(new Typ()); } Najsłabsza zależność (relacja „używa”). Klasa używa obiektu-instancji innej klasy (chwilowo przejmuje sterowanie tym obiektem). Zmiana interfejsu klasy Klasa wymusza zmiany w kodzie klasy KlasaZależna. https://en.wikipedia.org/wiki/Class_diagram

Diagram klas UML Relacje między klasami public class Klasa { ... } Niezależne obiekty odwołują się do siebie. Związek strukturalny między dwoma klasami (klasa przechowuje informacje o innej klasie lub są powiązane wspólnym obiektem komunikującym tzw. klasą asocjacji). Jeżeli obie klasy odwołują do siebie nawzajem, linia jest pozbawiona grotu. W przeciwnym wypadku strzałka wskazuje kierunek nawigacji. Agregacja i kompozycja mogą być rozumiane jako szczególne przypadku ogólniejszej asocjacji. https://en.wikipedia.org/wiki/Class_diagram

Graf DGML w Visual Studio Wygodny do analizy architektury systemu – „code map” (relacje między klasami, zależności wewnątrz klas) Można definiować zagnieżdżane moduły – warstwy Automatycznie zaznaczane są relacje między typami (nie tylko dziedziczenie)

Graf DGML w Visual Studio

Inne diagramy UML UML: http://www.omg.org/spec/UML/2.5/PDF/ UML przewiduje wiele typów diagramów, ale zwykle potrzebne jest tylko kilka z nich Najczęściej używane diagramy: Diagramy przypadków użycia (ustalanie wymagań) Diagramy sekwencji (proj. działania systemu) Diagramy klas (proj. struktury systemu, architekt.) Diagramy czynności/aktywności/maszyny stanów (przepływ sterowania, danych)

Diagramy UML Diagramy przypadków użycia tworzone podczas kontaktu z klientem (znacznie lepsze niż opis niesformalizowany) świetna baza dla testów jednostkowych! przypadek użycia = określa co system powinien zrobić (ale nie określa jak powinien to robić) i jaki powinien być mierzalny wynik działania opis z punktu widzenia użytkownika końcowego dobrze wyraża potrzeby klienta

Diagramy UML Diagramy przypadków użycia

Diagramy UML Diagramy przypadków użycia

Diagramy UML Diagramy przypadków użycia

Diagramy UML Diagramy przypadków użycia Linia komunikacyjna

Diagramy UML Diagramy przypadków użycia Granica systemu Linia komunikacyjna

Diagramy UML Przykład spoza systemów informatycznych: Wyróżnienie czynności składowej generalizacja (dziedziczenie) Opcjonalne rozszerzenie czynności Dwa podsystemy (diagram przeglądowy) Zadanie: 1. Dodaj aktora: sausier (kucharz sosów) 2. Rozszerz diagram o podsystem spiżarni (aktor: kierownik kuchni)

Diagramy UML Diagramy klas – już omówione Diagramy sekwencji: jeden z diagramów interakcji (+ d. komunikacji) modeluje współdziałanie modułów systemu widoczny jest czas (kierunek w dół) i linie życia wymiana komunikatów/sygnałów między obiektami (lub ogólniej częściami systemu) zdarzenia = elementy interakcji: utworzenie ob., wysłanie komunikatu, odbiór komunikatu, itd. komunikaty synchroniczne i asynchroniczne

Diagramy UML Diagramy sekwencji Uczestnik i jego linia życia Diagramy sekwencji Wywołanie asynchroniczne Belka aktywacji kelner.WybierzDanie(pozycjaMenu); woda = kelner.WybierzWino(pozycjaMenuWin?); async kucharz.Przekaż( pozycjaMenu,pozycjaMenuWin?); fZwrotna kelner.WybierzWino(danie); async klient.PodajDanie(danie); rachunek = klient.PoprośORachunek(danie); kelner.Zapłać(rachunek.Suma); Wywołanie asynchroniczne Uwaga! Metody wywoływane z różnych klas

Diagramy UML Diagramy sekwencji Czas życia kucharza kelner.WybierzDanie(pozycjaMenu); woda = kelner.WybierzWino(pozycjaMenuWin?); async new Kucharz().Przekaż( pozycjaMenu,pozycjaMenuWin?); Czas życia kucharza fZwrotna kelner.WybierzWino(danie); async klient.PodajDanie(danie); rachunek = klient.PoprośORachunek(danie); kelner.Zapłać(rachunek.Suma);

Diagramy UML Diagramy sekwencji Fragment sekwencji część opisana osobnym diagramem

Diagramy UML Diagramy czynności/aktywności podobny do klasycznego diagramu przepływu pokazuje co system po kolei powinien zrobić, aby osiągnąć cel (pytanie: „jak”, algorytm) czynność = cały modelowany proces akcja = jeden krok (np. jedna instrukcja kodu) przepływ sterowania i obiektów/danych tradycyjnie orientacja pionowa (z góry na dół), rzadziej – poziomo (od lewej do prawej) pomijam możliwość przesyłania sygnałów

Diagramy UML https://www.youtube.com/watch?v=k0xgjUhEG3U

Diagramy UML Diagramy czynności/aktywności Węzeł początkowy Akcja(); //Notatka Węzeł początkowy

Diagramy UML Diagramy czynności/aktywności Akcja(parametr); //Notatka

Diagramy UML Diagramy czynności/aktywności Akcja(parametr); //Notatka if(warunek) Akcja; else { Akcja1(); Akcja2(); } //może być również instrukcja switch

Diagramy UML Diagramy czynności/aktywności Węzeł decyzyjny Węzeł połączeniowy Akcja(parametr); //Notatka if(warunek) Akcja; else { Akcja1(); Akcja2(); } //może być również instrukcja switch

Diagramy UML Diagramy czynności/aktywności Akcja(parametr); //Notatka if(warunek) Akcja; else { Akcja1(); Akcja2(); } Zachowanie(); //złożona podprocedura pokazana na innym diagramie

Diagramy UML Diagramy czynności/aktywności Akcja(parametr); //Notatka if(warunek) Akcja; else { Akcja1(); Akcja2(); } Typ obiekt = Zachowanie();

Diagramy UML Diagramy czynności/aktywności Akcja(parametr); //Notatka if(warunek) Akcja; else { Akcja1(); Akcja2(); } Typ obiekt = Zachowanie(); Parallel.Invoke(AkcjaP1, AkcjaP2);

Diagramy UML Diagramy czynności/aktywności Węzeł końcowy Akcja(parametr); //Notatka if(warunek) Akcja; else { Akcja1(); Akcja2(); } Typ obiekt = Zachowanie(); Parallel.Invoke(AkcjaP1, AkcjaP2); return wynik;

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego Nie ma czynności dla else public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego zachowanie public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

Diagramy UML Diagram czynności sortowania bąbelkowego public static T[] Sortuj(T[] a) { int n = a.Length; do for (int i = 0; i < n - 1; i++) if (a[i].CompareTo(a[i + 1]) > 0) //a[i] > a[i+1] swap(ref a[i], ref a[i + 1]); n = n - 1; } while (n > 1); return a; }

UML Zadania domowe Przygotuj wszystkie poznane diagramy UML dla: wizyta u lekarza finansowanego z NFZ (aktorzy: pacjent, lekarz, kasa chorych) system do wysyłania wiadomości e-mail realizacja przelewu bankowego sesja egzaminacyjna (egzamin = fragment) szukanie elementu w tablicy o największej i najmniejszej wartości, obliczanie średniej i odchylenia standardowego (wariancji)