Inżynieria oprogramowania Jan Magott
Wprowadzenie Literatura do języka UML G. Booch, J. Rumbaugh, I. Jacobson, UML przewodnik użytkownika, Seria Inżynieria oprogramowania, WNT, 2001, 2002. M. Fowler, UML w kropelce, wersja 2.0, LTP, 2005. M. Śmiałek, Zrozumieć UML 2.0, Metody modelowania obiektowego, Helion, 2005. S. Wrycza, B. Marcinkowski, K. Wyrzykowski, Język UML 2.0 w modelowaniu systemów informatycznych, Helion, 2005.
Wprowadzenie Literatura do wzorców projektowych E. Gamma, R. Helm, R. Johnson, J. Vlissides, Wzorce projektowe, Elementy oprogramowania obiektowego wielokrotnego użytku, WNT, Warszawa, 2005. Shalloway, J. R. Trott, Projektowanie obiektowo zorientowane, Wzorce projektowe, wydanie II, Helion, 2005.
Wprowadzenie Programowanie w kodzie maszynowym (0,1) Programowanie w asemblerze Programowanie w języku wysokiego poziomu Programowanie w języku nieobiektowym Strukturalne projektowanie oprogramowania Programowanie w języku obiektowym Metoda Coada/Yourdona obiektowo zorientowanych analizy i projektowania oprogramowania Metoda Boocha, 1994 OMT, 1991 OMT-2 Rumbaugh OOSE, 1992 Jacobson Unified Modeling Language (UML) Booch, Rumbaugh, Jacobson UML 1.0, 1997
Wprowadzenie Inżynieria oprogramowania UML Inżynieria systemowa SysML
Wprowadzenie Znaczenie języka UML Język komunikacji z użytkownikiem Na etapie specyfikacji wymagań stosowane są diagramy i opis w języku naturalnym. Język wielu perspektyw: Wymagań użytkownika, Struktury abstrakcyjnej, Dynamiki abstrakcyjnej, Architektury implementacji (komponenty programowe), Architektury sprzętowo-programowej wdrożenia (rozmieszczenia komponentów programowych w węzłach fizycznych). Język dokumentacji projektu Język projektowania poprzez modelowanie
Wprowadzenie Źródło: A. Bobkowska, M. Gala, Konsekwencje zastosowania modelowania w projektach informatycznych badanie z udziałem praktyków, w: J. Górski, C. Orłowski, Inżynieria oprogramowania w procesach integracji systemów informatycznych, PWNT, Gdańsk, 2010, str. 49-56
Wprowadzenie Korzyści z zastosowania metod modelowania w inżynierii oprogramowania: Pomoc w radzeniu sobie ze złożonością systemu, dzięki mechanizmowi abstrakcji, umożliwiającemu prezentację tylko tych elementów, które są istotne z danego punktu widzenia Możliwość przewidywania własności i skutków działania oprogramowania na podstawie modeli, dzięki czemu modele stosowane są do analizy, weryfikacji, walidacji, oceny i porównania różnych wersji systemu Wspomaganie komunikacji w zespole i z klientem dzięki wspólnym modelom koncepcyjnym Standardowa notacja i zwiększenie precyzji dokumentacji systemu Możliwość automatycznego przekształcania modeli, np. generacji dokumentacji, generacji kodu, sprawdzaniu poprawności syntaktycznej, spójności i innych własności modeli.
Wprowadzenie Czynniki powodujące rezygnację z modelowania w praktyce: Ograniczenia czasowe nałożone na termin wykonania Opracowywanie modeli nie powoduje bezpośredniego przyrostu kodu programu
Wprowadzenie Badanie ankietowe Kontekst: stanowisko respondenta, specyfika firmy Oczekiwane korzyści i motywacje stosowania modelowania (pytania otwarte) Korzyści i problemy wynikające z zastosowania modelowania T Czy modelowanie jest stosowane przez respondenta? F Przyczyny i konsekwencje braku modelowania Korzyści i problemy wynikające ze stosowania narzędzi UML
Wprowadzenie Badanie ankietowe Adres systemu ankietowania www.webankieta.pl Ankieta miała charakter anonimowy. Prośba o wypełnienie wysłana pod 285 adresów email należących do 170 przedsiębiorstw informatycznych działających na terenie Polski. Wzięło udział 66 respondentów (współczynnik odpowiedzi 23%) w tym 38 wypełniło kwestionariusz w pełni, a 28 częściowo.
Wprowadzenie Poziom stosowania modelowania rośnie wraz ze: wzrostem złożoności systemu, wzrostem liczebności zespołu projektowego, wzrostem sformalizowania metodyki wytwarzania oprogramowania. Poziom stosowania modelowania: Metodyka RUP (Rational Unified Process) opracowana przez twórców języka UML 92% respondentów Podejście tradycyjne 65% Podejście zwinne 51%
Wprowadzenie Wg ankiety Wśród języków modelowania najczęściej stosowany jest UML lub jego podzbiór (87%) W pozostałych przypadkach (13%) zadeklarowano stosowanie innych metod (BPMN, SysML, DSM)
Wprowadzenie Przykłady szeroko stosowanych w praktyce języków modelowania przepływu prac i procesów biznesowych: BPEL Business Process Execution Language, BPMN - Business Process Modeling Notation, Diagramy czynności (aktywności) języka UML. Według porównania 14 komercyjnych produktów modelowania przepływu prac i procesów biznesowych, BPMN i diagramy czynności języka UML są jednymi z trzech najlepszych pod względem mocy wyrażania przepływu sterowania. Źródło: N. Russel, A.H.M. ter Hofstede, W.M.P. van der Aalst, N. Mulyar, Workflow control-flow patterns, A revised view.
Wprowadzenie DSM - Domain Specific Modelling DSL - Domain Specific Language
Wprowadzenie Obszary zastosowania modelowania: Modelowanie systemu (86%) Prezentacja wymagań (83%) Modelowanie procesów biznesowych (66%) Modelowanie architektury (40%) Najczęściej modelowanie stosowane jest przez analityków
Wprowadzenie Oczekiwane korzyści i motywacje stosowania modelowania (66 respondentów, 38 wypełniło kwestionariusz w pełni): 1. Jednoznaczny i spójny opis systemu (10 respondentów) 2. Komunikacja w ramach zespołu (9) 3. Modelowania statyczne systemu (8) 4. Modelowanie biznesowe systemu (5) 5. Modelowanie zachowania systemu (zamiast opisu słownego) (5) 6. Gromadzenie wiedzy (repozytorium modeli systemu) (5) 7. Zarządzanie wymaganiami / zmianą (5) 8. Redukcja złożoności problemu/systemu (5) 9. Ułatwienie przepływu wiedzy (5) 10. Standaryzacja dokumentacji/formalizacja opisu systemu (5) 11. Komunikacja z klientem (5) 12. Redukcja liczby błędów (szczególnie we wstępnych fazach) (3) 13. Poprawa pielęgnowalności (3) 14. Generacja kodu źródłowego (2) 15. Szybsze wprowadzenie nowych osób do projektu (2) 16. Wymaganie ze strony klienta (model jako produkt) (1)
Wprowadzenie Korzyści wynikające z zastosowania modelowania
Wprowadzenie Problemy wynikające z zastosowania modelowania Nie stwierdzono: Występowania problemów ze zrozumieniem wykorzystywanej notacji przez zespół wytwórczy Niejasnej formy prezentacji modelu Braku spójności modeli Nieodpowiedniego poziomu szczegółowości modeli Występowanie problemów ze zrozumieniem notacji przez klienta 45% ankietowanych odpowiedziało trudno powiedzieć
Korzyści wynikające ze stosowania narzędzi UML
Wprowadzenie Przyczyny braku modelowania 20 z 66 respondentów stwierdziło, że nie stosuje modelowania. 14 respondentów (70%) w pełni odpowiedziało na pytania tej ścieżki. Przedstawiciele tej grupy realizują krótkoterminowe, niskobudżetowe projekty, w których uczestniczy mały zespół projektowy. Najczęściej metody modelowania nie są stosowane ze względu na: ograniczenia projektowe (krótkie terminy, brak dostępności zasobów) brak zdefiniowanego procesu wytwórczego z zastosowaniem metod modelowania. W grupie 14 respondentów, 10 z nich (71%) zadeklarowało, że stosuje metodyki zwinne.
Wprowadzenie Konsekwencje braku modelowania Fakt, że 71% respondentów zaprzeczyło istnieniu problemów z komunikacją w grupie, można wytłumaczyć stosowaniem innych sposobów komunikacji w zespole. Koniec powołań na źródło: A. Bobkowska, M. Gala, Konsekwencje zastosowania modelowania w projektach informatycznych badanie z udziałem praktyków,
Wprowadzenie Przyczyny tworzenia narzędzi programistycznych wspierających rysowanie i analizę diagramów języka UML: Tylko dla prostych diagramów, rysowanie i analiza nie są uciążliwe, Złożoność analizy zgodności między diagramami, Możliwości algorytmizacji analizy diagramów.
Wprowadzenie Wymagania stawiane nowoczesnym narzędziom CASE (Computer Aided Software Engineering): Rysowanie diagramów ze sprawdzaniem ich poprawności, Pełnienie roli repozytorium, Umożliwienie nawigacji po komponentach systemu przy pracy z różnymi kategoriami modeli, Umożliwienie jednoczesnej pracy wielu użytkownikom na tym samym modelu, Generowanie kodu, Inżynieria odwrotna, Integrowanie z innymi narzędziami, np. w celu edycji i kompilacji kodu uzupełniającego szkielet kodu, testowania, Praca ze wszystkimi poziomami abstrakcji systemu, od wysokiego poziomu do poziomu kodu, Wymiana fragmentów modelu z innymi narzędziami.
Wprowadzenie Diagramy wdrożenia Diagramy składowych Diagramy przypadków użycia Diagramy czynności Diagramy klas Diagramy komponentów Diagramy pakietów Diagramy maszyn stanów Diagramy czasowe Diagramy opisu interakcji Diagramy obiektów Diagramy sekwencji Diagramy komunikacji Repozytorium: struktura, dynamika
Wprowadzenie Zadania, dla których narzędzie CASE wykorzystuje repozytorium: Sprawdzanie zgodności diagramu i zgodności między diagramami, Wskazywanie uchybień modeli, Sporządzanie dokumentów z projektu, Stosowanie elementów projektu w innym projekcie.
Diagramy przypadków użycia Specyfikacja wymagań za pomocą diagramów przypadków użycia Modelowanie obiektowe można stosować nie tylko do systemów programowych ale również do systemów sprzętowych czy organizacji. Stąd diagramy przypadków użycia mogą być stosowane do specyfikowania wymagań nałożonych na systemy powyższych kategorii. Podczas przyrostowej realizacji projektu ważnymi decyzjami są rozstrzygnięcia, które przypadki użycia powinny być dostarczone na początku i w jakiej kolejności dołączane będą następne przypadki. Na początku specyfikowania wymagań, często korzystne jest opracowanie katalogu pojęć z dziedziny zastosowania (wycinka rzeczywistości), które będą stosowane w wyrażaniu przypadków użycia.
Diagramy przypadków użycia Alternatywne określenia dla przypadku użycia: Funkcjonalność, Karta wymagań, Historia użytkownika.
Diagramy przypadków użycia Aktor oddziaływuje z modelowanym (projektowanym) systemem. Aktor może być człowiekiem lub innym systemem. Aktor reprezentuje rolę. Indywidualny użytkownik nie jest aktorem. Konkretny użytkownik może pełnić różne role: może być np. Klientem jak również Pracownikiem.
Diagramy przypadków użycia Relacja uogólniania między aktorami Klient Klient ubezpieczający podmiot fizyczny Klient ubezpieczający podmiot prawny Relacja uogólniania między klasami klientów agencji ubezpieczeniowej
Diagramy przypadków użycia Asocjacja komunikacji między aktorem a przypadkiem użycia Aktor Przypadek użycia Aktor i Przypadek użycia są klasami. Często Aktor wysyła komunikaty do Przypadku użycia i komunikaty otrzymuje. Przypadek użycia reprezentuje kompletną funkcjonalność widzianą ze strony aktora lub innego przypadku użycia. Jest to zbiór sekwencji akcji wykonywanych przez system, w których wyniku otrzymywany jest mierzalny produkt działania systemu.
Diagramy przypadków użycia Relacje między przypadkami użycia <<include>>, <<extend>>, grupowania, dziedziczenia.
Diagramy przypadków użycia Relacja <<include>> Zakres stosowania: Reprezentacja hierarchii funkcji systemu, Wyodrębnianie części wspólnej dla co najmniej dwu funkcji systemu. Przypadek1 Przypadek2 <<include> > <<include> > Przypadek3 Przypadek3 jest częścią wspólną wydzieloną z dwu funkcji
Diagramy przypadków użycia Logowanie <<include>> Usługa Użytkownik <<include>> Wylogowanie Błędny diagram przypadków użycia
Diagramy przypadków użycia <<include>> Logowanie Sesja <<include>> Usługa Użytkownik <<include>> Wylogowanie Poprawny diagram przypadków użycia
Diagramy przypadków użycia Relacja <<extend>> Zakres stosowania: Wyrażanie wyjątków, alternatywnych przebiegów, Wyrażanie funcji tworzonych na dalszych etapach budowy systemu. <<extend>> Wystawienie gwarancji Sprzedaż towaru <<extend>> Wystawienie pełnego rachunku
Diagramy przypadków użycia Grupowanie przypadków użycia Przypadki użycia związane ze sobą mogą być grupowane w pakiet, który może być dostępny jako jednostka. Zarządzanie Zarządzanie finansami Zarządzanie kadrami
Diagramy przypadków użycia (Diagramy hierarchii funkcji, diagramy hierarchii procesów biznesowych ich poprzednikami) System informacji geograficznej (SIG) Mapa komputerowa zawiera obiekty takie jak: Punkty (np. budynek), Linie (np. rzeka), Obszary (np. park). Obiekt ma nazwę i opis składający się ze słów kluczowych np.: rodzaj firmy, miejsce jej ulokowania, liczba pracowników. Użytkownik może oglądać obiekty opisane wybranymi przez niego słowami kluczowymi.
Dodawanie słowa kluczowego Zarządzanie SIG Edycja słowa kluczowego Usuwanie słowa kluczowego Przeglądanie SIG Projektowanie SIG Prezentacja fragmentów mapy Prezentacja obiektów wybranych słowami kluczowymi Prezentacja opisu obiektu Edycja tła (zdjęcia satelitarnego lub mapy) Modyfikacja obiektów Modyfikacja słów kluczowych Dodawanie obiektu Edycja obiektu u Usuwanie obiektu
Diagramy przypadków użycia (Diagramy hierarchii funkcji, diagramy hierarchii procesów biznesowych ich poprzednikami) Diagramy przypadków użycia reprezentują wymagania funkcjonalne. W diagramach przypadków użycia wyodrębnione są klasy obiektów zewnętrznych wchodzących w identyczne interakcje z systemem. Klasy obiektów zewnętrznych względem projektowanego systemu nazywane są aktorami i opatrywane nazwami ról np. Projektant, Użytkownik.
Diagramy przypadków użycia (Diagramy hierarchii funkcji, diagramy hierarchii procesów biznesowych ich poprzednikami) Diagram przypadków użycia Przeglądanie SIG Perspektywa aktora Użytkownik Prezentacja fragmentów mapy Prezentacja obiektów wybranych słowami kluczowymi Użytkownik Prezentacja opisu obiektu
Diagramy przypadków użycia Diagram przypadków użycia Projektowanie SIG Perspektywa aktora Projektant
Diagramy przypadków użycia (Diagramy hierarchii funkcji, diagramy hierarchii procesów biznesowych ich poprzednikami) Diagram przypadków użycia Projektowanie SIG Perspektywa aktora Projektant Edycja tła Projektant Modyfikacja słów kluczowych Modyfikacja obiektów Dodawanie obiektu Edycja obiektu u Usuwanie obiektu Dodawanie słowa kluczowego Edycja słowa kluczowego Usuwanie słowa kluczowego
Diagramy przypadków użycia Dziedziczenie Dodawanie osoby Dodawanie klienta Dodawanie pracownika Relacja dziedziczenia między przypadkami użycia
Diagramy przypadków użycia Języki opisu przypadków użycia: W języku naturalnym (w aktualnej fazie wykładu) Diagram aktywności (później)
Diagramy przypadków użycia Opis przypadku użycia w języku naturalnym 1. Cel 2. Warunki wstępne 3. Przebieg podstawowy 4. Przebiegi alternatywne 5. Przepływ komunikatów (często pomijany) 6. Warunki końcowe
Diagramy przypadków użycia Plan 1. Diagram przypadków użycia dla Zarządzania klientami z następującymi przypadkami użycia najwyższego poziomu: Dodaj nowego klienta Usuń klienta Przeglądaj dane klienta Edytuj dane klienta 2. Diagram przypadków Zapisu studenta na wykład
Diagramy przypadków użycia Usuń klienta <<include>> Szukaj klienta Pracownik Dodaj nowego klienta <<include>> <<include>> <<include>> <<include>> Modyfikuj dane klienta <include>> Przeglądaj dane klienta Edytuj dane klienta Diagram przypadków użycia dla zarządzania klientami
Diagramy przypadków użycia PU (przypadek użycia) Dodaj nowego klienta Cel PU Celem tego PU jest dodanie do bazy danych nowego klienta banku. Warunki wstępne PU jest inicjowany przez Pracownika.
Diagramy przypadków użycia PU Dodaj nowego klienta c.d. Przebiegi sposobu realizacji PU Podstawowy 1. Pracownik wydaje polecenie dodania nowego klienta do bazy danych, naciskając przycisk Dodaj klienta w oknie Zarządzaj klientami. 2. Wyświetlane jest okno Klient zawierające pola edycyjne opisujące poszczególne dane klienta. 3. Pracownik edytuje dane klienta, wypełniając poszczególne pola edycyjne okna. 4. Pracownik naciska przycisk Zapisz. 5. Inicjowany jest PU Modyfikuj dane klienta. 6. Następuje powrót z PU Modyfikuj dane klienta. 7. Wyświetlenie Komunikatu wynikowego. 8. Zamykane jest okno Klient i PU zostaje zakończony.
Diagramy przypadków użycia PU Dodaj nowego klienta c.d. Przepływ komunikatów 1. Nowy klient - Pracownik inicjuje PU, naciskając przycisk Dodaj klienta w oknie Zarządzaj klientami. 2. Dane klienta - Pracownik podaje dane klienta, wypełniając pola edycyjne okna Klient. 3. Zapisz - Pracownik inicjuje zapis danych do bazy danych, naciskając przycisk Zapisz. 4. Modyfikuj dane klienta - PU inicjuje PU Modyfikuj dane klienta. 5. Komunikat powrotu do PU z PU Modyfikuj dane klienta. 6. Komunikat wynikowy. 7. Zamknij - Pracownik zamyka okno Klient.
Diagramy przypadków użycia PU Dodaj nowego klienta c.d. Warunki końcowe PU uznaje się za zakończony po zamknięciu okna Klient. (lub PU uznaje się za zakończony po zapisaniu danych nowego klienta.)
Diagramy przypadków użycia PU Edytuj dane klienta Przebiegi sposobu realizacji PU Podstawowy 1. Pracownik wydaje polecenie edytowania danych klienta, naciskając przycisk Edytuj dane klienta w oknie Zarządzaj klientami. 2. Wyświetlane jest okno Klient zawierające pole PESEL. 3. Pracownik wpisuje PESEL i naciska przycisk Szukaj. 4. Inicjowany jest PU Szukaj klienta. 5. Następuje powrót z PU Szukaj klienta. 6. Wyświetlane jest okno Klient zawierające pola edycyjne opisujące poszczególne dane klienta. 7. Pracownik edytuje dane klienta, wypełniając poszczególne pola edycyjne okna. 8. Pracownik naciska przycisk Zapisz. 9. Inicjowany jest PU Modyfikuj dane klienta. 10. Następuje powrót z PU Modyfikuj dane klienta. 11. Wyświetlenie Komunikatu wynikowego. 12. Zamykane jest okno Klient i PU zostaje zakończony.
Diagramy przypadków użycia PU Modyfikuj dane klienta Cel PU Celem tego PU jest zmodyfikowanie danych klienta. Warunki wstępne PU inicjowany jest przez PU Dodaj nowego klienta lub przez PU Edytuj dane klienta. W momencie wywołania do PU przekazywane są aktualne dane o kliencie. Jeśli PU inicjującym jest PU Edytuj dane klienta, to przekazywany jest wskaźnik na dane klienta.
Diagramy przypadków użycia PU Modyfikuj dane klienta c.d. Przebiegi sposobu realizacji PU 1. PU inicjowany jest przez PU Dodaj nowego klienta lub przez PU Edytuj dane klienta. 2. Jeśli inicjującym jest PU Edytuj dane klienta, to przejście do kroku 6. 3. Inicjowany jest PU Szukaj klienta 4. Następuje powrót z PU Szukaj klienta 5. Jeśli istnieje w bazie klient o podanym numerze PESEL, to wyświetlany jest komunikat: Klient o podanym PESEL istnieje i przejście do kroku 7. 6. PU modyfikuje dane klienta. 7. PU kończy się i następuje powrót do PU, który wywołał PU Modyfikuj dane klienta.
Diagramy przypadków użycia PU Modyfikuj dane klienta c.d. Warunki końcowe PU uznaje się za zakończony po modyfikacji danych klienta (co może wystąpić dla obu inicjujących przypadków użycia) lub po stwierdzeniu, że klient o podanym numerze PESEL już w bazie istnieje (co może nastąpić tylko dla inicjacji przez PU Dodaj nowego klienta).
Okno główne Wykład Okno wykładu Dodaj wykład Usuń wykład Edytuj dane wykładu Zapisz na wykład Okno zapisu studenta na wykład Wydział ID wykładu Dane wykładu Tak Nie ID studenta Czy spełnione wym. Zapisz
Diagramy przypadków użycia Szukaj danych wykładu Szukaj danych studenta <<include>> <<include>> Szukaj danych wydziału Modyfikuj dane zapisu studenta na wykład <<include>> <<include>> Użytkownik Zapisz studenta na wykład Diagram przypadków użycia Zapis studenta na wykład
Diagramy przypadków użycia PU Zapisz studenta na wykład Przebieg podstawowy realizacji PU 1. Użytkownik otwiera Okno zapisu studenta na wykład. 2. Użytkownik wybiera Nazwę wydziału. 3. Inicjowany jest PU Szukaj danych wydziału. 4. Następuje powrót z PU Szukaj danych wydziału. 5. Użytkownik podaje ID wykładu lub wybiera przejście do 2. 6. Inicjowany jest PU Szukaj danych wykładu. 7. Następuje powrót z PU Szukaj danych wykładu. 8. Jeśli nie znaleziono wykładu, to PU wyświetla napis Nie znaleziono wykładu. 9. Jeśli PU wyświetla napis Nie znaleziono wykładu, to Użytkownik wybiera przejście do: 2 lub 5. 10.Jeśli znaleziono wykład, to PU wyświetla dane o wykładzie m.in. czy są wolne miejsca.
Diagramy przypadków użycia PU Zapisz studenta na wykład c.d. Przebieg podstawowy realizacji PU c.d. 10. Jeśli znaleziono wykład, to PU wyświetla dane o wykładzie m.in. czy są wolne miejsca. 11. Jeśli nie ma wolnych miejsc, to PU wyświetla napis Nie ma wolnych miejsc 12. Jeśli PU wyświetla napis Nie ma wolnych miejsc, to Użytkownik wybiera przejście do: 2 lub 5. 13. Użytkownik podaje ID studenta. 14. Inicjowany jest PU Szukaj danych studenta. 15. Następuje powrót z PU Szukaj danych studenta. 16. PU wyświetla czy student spełnia wymagania zapisu na wykład. 17. Jeśli student nie spełnia wymagań, to PU wyświetla napis Nie spełnia wymagań. 18. Jeśli PU wyświetla napis Nie spełnia wymagań, to Użytkownik wybiera przejście do: 2 lub 5. 19. Jeśli Użytkownik wybiera Nie w polu Zapisz, to PU przechodzi do 24. 20. Użytkownik wybiera Tak w polu Zapisz.
Diagramy przypadków użycia PU Zapisz studenta na wykład c.d. Przebieg podstawowy realizacji PU c.d. 17. Jeśli student nie spełnia wymagań, to PU wyświetla napis Nie spełnia wymagań. 18. Jeśli PU wyświetla napis Nie spełnia wymagań, to Użytkownik wybiera przejście do: 2 lub 5. 19. Jeśli Użytkownik wybiera Nie w polu Zapisz, to PU przechodzi do 24. 20. Użytkownik wybiera Tak w polu Zapisz. 21. Inicjowany jest PU Modyfikuj dane zapisu studenta na wykład. 22. Następuje powrót z PU Modyfikuj dane zapisu studenta na wykład. 23. Użytkownik zamyka Okno wykładu lub wybiera przejście do: 2 lub 5. 24. PU zostaje zakończony z zamkniętym Oknem wykładu.
Diagramy przypadków użycia PU Zapisz studenta na wykład c.d. Alternatywne przebiegi W dowolnym momencie Użytkownik może zamknąć Okno wykładu. Jeśli po wykonaniu jednego z punktów: 1,4, 7, 15, 22, Użytkownik nie wykona żadnej akcji w ciągu 30 s, to PU przechodzi do 24.
Diagramy czynności (aktywności) W początkowych wersjach języka UML Diagramy czynności były oparte, podobnie jak maszyny stanowe, na mapach stanów Harel a W wersji UML 2.0 i dalszych Diagramy czynności są oparte na sieciach Petriego
Diagramy czynności Wzajemne wykluczanie dwu cyklicznych procesów sekwencyjnych P(s) Fazy aktywności procesu: CS sekcja krytyczna, RP pozostała część procesu, P(s), V(s) operacje semaforowe. RP CS V(s)
Diagramy czynności Wzajemne wykluczanie dwu cyklicznych procesów sekwencyjnych Fazy aktywności procesu: CS sekcja krytyczna, RP pozostała część procesu, P(s), V(s) operacje semaforowe. P(s) P(s) RP CS CRP CS V(s) V(s) RP Cykliczny proces sekwencyjny reprezentowany siecią Petriego (kółko miejscem, kreska przejściem, znacznik - kropką) CRP zakończenie pozostałej części procesu
Diagramy czynności Wzajemne wykluczanie dwu cyklicznych procesów sekwencyjnych CRP P(s) CS P(s) CRP P(s) V(s) CS CRP P(s) CS V(s) V(s) V(s) RP CRP RP RP Sekwencja odpalanych przejść: P(s) V(s) CRP
Diagramy czynności Wzajemne wykluczanie dwu cyklicznych procesów sekwencyjnych CS proces jest w sekcji krytycznej, RP proces jest w pozostałej części procesu, CRP zakończenie pozostałej części procesu, P(s), V(s) operacje semaforowe, P1 IR krytyczny zasób jest dostępny. a) P2 P(s) P(s) CRP1 CS1 IR CS2 CRP2 Przejścia z etykietami P(s) są przygotowane do odpalenia RP1 V(s) V(s) RP2
Diagramy czynności Wzajemne wykluczanie dwu cyklicznych procesów sekwencyjnych b) P1 P2 P(s) P(s) CRP1 CS1 IR CS2 CRP2 RP1 V(s) V(s) RP2 Przejście V(s) procesu P1 jest przygotowane do odpalenia Sieć Petriego po odpaleniu przejścia P(s) procesu P1
Diagramy czynności Prosty protokół komunikacyjny PM produkcja komunikatu, SM wysłanie komunikatu, TM transmisja komunikatu, SA wysłanie potwierdzenia, CCM zakończenie konsumpcji komunikatu, RA odbiór potwierdzenia. CPM zakończenie produkcji komunikatu, WA oczekiwanie na potwierdzenie, RM odbiór komunikatu, CM konsumpcja komunikatu, TA transmisja potwierdzenia, SM TM RM CPM WA CCM TA PM RA SA CM
Diagramy czynności p3 2 2 2 p4 t2 p1 2 t3 p2 t4 p3 2 t1 2 2 t1 p4 t2 p1 2 t3 p2 t4 t1
Diagramy czynności p3 2 2 2 p4 t2 p1 2 t3 p2 t4 p3 2 t1 2 2 t3 p4 t2 p1 2 t3 p2 t4 t1
Diagramy czynności 1011 t4 t1 t1 2001 t2 t3 t4 0021 0120 t4 Graf osiągalności 1011 znakowanie początkowe 1110 2100 t1 t1 t2
Okno główne Wykład Okno wykładu Dodaj wykład Usuń wykład Edytuj dane wykładu Zapisz na wykład Okno zapisu studenta na wykład Wydział ID wykładu Dane wykładu Tak Nie ID studenta Czy spełnione wym. Zapisz
Diagramy czynności Szukaj danych wykładu Szukaj danych studenta <<include>> <<include>> Szukaj danych wydziału Modyfikuj dane zapisu studenta na wykład <<include>> <<include>> Użytkownik Zapisz studenta na wykład Diagram przypadków użycia Zapis studenta na wykład
Diagramy czynności PU Zapisz studenta na wykład Przebieg podstawowy realizacji PU 1. Użytkownik otwiera Okno zapisu studenta na wykład. 2. Użytkownik wybiera Nazwę wydziału. 3. Inicjowany jest PU Szukaj danych wydziału. 4. Następuje powrót z PU Szukaj danych wydziału. 5. Użytkownik podaje ID wykładu lub wybiera przejście do 2. 6. Inicjowany jest PU Szukaj danych wykładu. 7. Następuje powrót z PU Szukaj danych wykładu. 8. Jeśli nie znaleziono wykładu, to PU wyświetla napis Nie znaleziono wykładu. 9. Jeśli PU wyświetla napis Nie znaleziono wykładu, to Użytkownik wybiera przejście do: 2 lub 5. 10.Jeśli znaleziono wykład, to PU wyświetla dane o wykładzie m.in. czy są wolne miejsca.
Diagramy czynności PU Zapisz studenta na wykład c.d. Przebieg podstawowy realizacji PU c.d. 10. Jeśli znaleziono wykład, to PU wyświetla dane o wykładzie m.in. czy są wolne miejsca. 11. Jeśli nie ma wolnych miejsc, to PU wyświetla napis Nie ma wolnych miejsc 12. Jeśli PU wyświetla napis Nie ma wolnych miejsc, to Użytkownik wybiera przejście do: 2 lub 5. 13. Użytkownik podaje ID studenta. 14. Inicjowany jest PU Szukaj danych studenta. 15. Następuje powrót z PU Szukaj danych studenta. 16. PU wyświetla czy student spełnia wymagania zapisu na wykład. 17. Jeśli student nie spełnia wymagań, to PU wyświetla napis Nie spełnia wymagań. 18. Jeśli PU wyświetla napis Nie spełnia wymagań, to Użytkownik wybiera przejście do: 2 lub 5. 19. Jeśli Użytkownik wybiera Nie w polu Zapisz, to PU przechodzi do 24. 20. Użytkownik wybiera Tak w polu Zapisz.
Diagramy czynności PU Zapisz studenta na wykład c.d. Przebieg podstawowy realizacji PU c.d. 17. Jeśli student nie spełnia wymagań, to PU wyświetla napis Nie spełnia wymagań. 18. Jeśli PU wyświetla napis Nie spełnia wymagań, to Użytkownik wybiera przejście do: 2 lub 5. 19. Jeśli Użytkownik wybiera Nie w polu Zapisz, to PU przechodzi do 24. 20. Użytkownik wybiera Tak w polu Zapisz. 21. Inicjowany jest PU Modyfikuj dane zapisu studenta na wykład. 22. Następuje powrót z PU Modyfikuj dane zapisu studenta na wykład. 23. Użytkownik zamyka Okno wykładu lub wybiera przejście do: 2 lub 5. 24. PU zostaje zakończony z zamkniętym Oknem wykładu.
Diagramy czynności PU Zapisz studenta na wykład c.d. Alternatywne przebiegi W dowolnym momencie Użytkownik może zamknąć Okno wykładu. Jeśli po wykonaniu jednego z punktów: 1, 4, 7, 15, 22, Użytkownik nie wykona żadnej akcji w ciągu 30 s, to PU przechodzi do 24.
Użytkownik System Wybiera Okno zapisu studenta na wykład Wyświetla Okno zapisu studenta na wykład 1 2 Po 30s Wybiera Nazwę wydziału Wykonuje PU Szukaj danych wydziału 1 2 [powrót] Po 30s [kontynuacja] Podaje ID wykładu Wykonuje PU Szukaj danych wykładu 1 Wybiera Przycisk zamykania Okno wykładu 2 Zamyka Okno wykładu
Reliability enhanced activity diagrams (READ) (M. Kowalski, J. Magott) Podstawy języka READ: 1. Diagramy czynności języka UML 2. Konstrukcje fork i join diagramów czynności rozszerzone w kierunku przejść sieci Petriego 3. Probabilistyczne drzewa niezdatności z zależnościami czasowymi [1] [1] Babczyński, T., Łukowicz, M., Magott, J. (2010). Time coordination of distance protections using probabilistic fault trees with time dependencies. IEEE Transaction on Power Delivery, July, Vol. 25, No. 3, 1402-1409.
Reliability enhanced activity diagrams (READ) Przydział zestawu naprawczego
Reliability enhanced activity diagrams (READ) Zwolnienie zestawu naprawczego
Reliability enhanced activity diagram (READ) of computer system maintenance process System komputerowy z CPU, dwoma dyskami i dwoma zestawami naprawczymi
Reliability enhanced activity diagrams (READ) of computer system maintenance process Regularna praca Naprawa Stan procesu
Diagramy klas Następujący diagram klas pochodzi z: G. Booch, J. Rumbaugh, I. Jacobson, UML przewodnik użytkownika, Seria Inżynieria oprogramowania, WNT, 2001, 2002.
Diagramy klas Relacje między klasami na diagramach klas Rodzaje relacji: Asocjacja (ang. Association), Agregacja (ang. Aggregation) jest szczególnym przypadkiem asocjacji. Uogólnienie (ang. Generalization), Zależność (ang. Dependency), Uszczegółowienie (ang. Refinement).
Diagramy klas Asocjacje Obiekt jest instancją klasy. Powiązanie jest instancją asocjacji. Sposoby obrazowania asocjacji: krawędzią, łukiem. Zwykle asocjacja obrazowana jest krawędzią. Krawędź stosowana jest gdy: możliwe jest przejście w obie strony między klasami połączonymi nią lub gdy nie dysponuje się pełną informacją o kierunkach przejść. Klasa1 Klasa2 Łuk może być stosowany w przypadku, gdy na poziomie implementacji klasa Klasa1 ma wskaźnik do klasy Klasa2 ale nie w drugą stronę.
Diagramy klas Krotność asocjacji określa z iloma obiektami klasy drugiej może być połączony obiekt pierwszej klasy. Przykłady krotności: 1 0..1 0 lub 1 11 5..11 * 0 Drużyna piłki nożnej 1 11 Zawodnik Diagram klas o znaczeniu: Drużyna piłki nożnej składa się z jedenastu zawodników
Diagramy klas Asocjacja rekursywna * krawędź Wierzchołek Diagram klas o znaczeniu: Graf składa się z wierzchołków połączonych krawędziami * Wierzchołek1 : Wierzchołek Wierzchołek2 : Wierzchołek Wierzchołek3 : Wierzchołek Wierzchołek4 : Wierzchołek Wierzchołek5 : Wierzchołek Diagram obiektów reprezentujący konkretny graf
Diagramy klas Role w asocjacji łuk źródło Wierzchołek cel
Diagramy klas Asocjacja kwalifikowana Lista osób Identyfikator * Osoba Kwalifikator określa jak specyficzny obiekt na końcu asocjacji o krotności "wiele" jest identyfikowany.
Diagramy klas Klasa asocjacji Stanowisko Wymagane kwalifikacje Wynagrodzenie Szlifowanie Osoba Firma Klasa Stanowisko opisuje asocjację. Z każdym powiązaniem między obiektami klas: Osoba, Firma jest skojarzony obiekt klasy Stanowisko, który charakteryzuje powiązanie.
Diagramy klas Asocjacja binarna a asocjacja trzyarna Drużyna piłki nożnej 1 11 Zawodnik Asocjacja binarna Osoba 1..* Projekt * 1..3 Język Asocjacja trzyarna modelująca przygotowywanie projektów w firmie programistycznej
Diagramy klas Osoba 1..* Projekt * 1..3 Język Asocjacja trzyarna modelująca przygotowywanie projektów w firmie programistycznej Osoba znająca dany język programowania może nie realizować projektu w tym języku ale może też realizować więcej niż jeden projekt w tym języku. Osoba pracująca w projekcie może używać jednego, dwu lub trzech języków. Jeśli projekt jest realizowany, to jest wykonywany w co najmniej jednym języku ale żaden z wykonawców nie może pracować w więcej niż trzech językach w ramach jednego projektu.
Diagramy klas Asocjacja uporządkowana Osoba 1..* {ordered} * Firma W firmie pracuje co najmniej jedna osoba. Osoba może nie pracować w żadnej firmie. Osoby zaangażowane w firmie mogą być uporządkowane np. alfabetycznie. Sposób uporządkowania można podać pisząc np. : {ordered alphabetically}
Diagramy klas Agregacja Agregacja jest szczególnym przypadkiem asocjacji. Dokument zawiera jest częścią 1..* Paragraf całość część Obiekt klasy Dokument składa się z co najmniej jednego obiektu klasy Paragraf
Diagramy klas Agregacja dzielona Wydział * * Student Części mogą być częściami różnych klas, co jest wyrażone krotnością * po stronie całości. Student może studiować na więcej niż jednym wydziale.
Diagramy klas Uogólnienie Pojazd Pojazd Samochód osobowy Samochód ciężarowy Łódź Samochód osobowy Samochód ciężarowy Łódź Klasa ogólna (nadklasa) a klasy specjalizowane (podklasy) Klasy specjalizowane dziedziczą po klasie ogólnej. Powyższa lista podklas nie daje w sumie mnogościowej - nadklasy. W rozważanym wycinku rzeczywistości uzasadnione może być rozważanie tylko tych powyższych trzech klas.
Diagramy klas Pojazd Klasa Pojazd jest abstrakcyjna, natomiast klasy Samochód i Łódź są klasami konkretnymi Napęd jest dyskryminatorem, który odróżnia podklasy między sobą. drive() Napęd Samochód drive() drive() uruchamia koła Napęd drive() Łódź drive() uruchamia śrubę
Diagramy klas Ograniczenia dla definiowania uogólnienia
Diagramy klas Syntaktyka deklaracji atrybutu [widoczność] nazwa [liczebność] [: typ] [= wartość_początkowa] [{łańcuch_własności}] Uwaga: Obowiązkowa jest tylko nazwa. widoczność: + atrybut publiczny (atrybut jest dostępny z innych klas), - atrybut prywatny (atrybut nie jest dostępny z innych klas), # atrybut chroniony, dostępny w klasach dziedziczących (ang. protected), widoczność atrybutu jest interpretowana jako atrybut publiczny. Przykład Faktura + data : Data = Bieżąca data + nazwaproduktu : String + ilość : integer + cenajednostkowa : Cena + klient : String osobawystawiająca : String
Diagramy klas widoczność cd pokreślony opis atrybutu - atrybut o zakresie klasy (atrybut prywatny, którego wartość jest identyczna dla każdego obiektu klasy) Przykład Proces licznik : integer zwiększstanlicznika Atrybut licznik jest używany przez wszystkie procesy do zliczania liczby wykonań operacji zwiększstanlicznika.
Diagramy klas Uwaga Można definiować inne kategorie widoczności, jeśli jest to uzasadnione możliwościami języka, w którym system będzie implementowany. {łańcuch_własności} w szczególnym przypadku może być listą wartości typu wyliczeniowego czyli {lista_wartości}
Diagramy klas Implementacja klasy w języku Java Faktura public Class Faktura { + data : Data = Bieżąca data public Data data = newdata(); + nazwaproduktu : String public String nazwaproduktu; + ilość : integer public int ilość; + cenajednostkowa : Cena public Cena cenajednostkowa; + klient : String public String klient; osobawystawiająca : String private String osobawystawiająca; liczbafaktur : integer = 0 static private int liczbafaktur = 0; // Operacja konstruktora wywoływana przy tworzeniu obiektu public Faktura() { //Nadawanie wartości początkowych atrybutom //Inicjowanie powiązań z innymi obiektami //Odnotowanie utworzenia faktury liczbafaktur ++; } //inne operacje };
Diagramy klas Syntaktyka nagłówka operacji [widoczność] nazwa [(lista_parametrów)] [: typ_wyniku] [{łańcuch_własności}] { łańcuch_własności} może być wyliczeniem typu wyniku Syntaktyka parametru formalnego [tryb] nazwa : typ [= wartość domyślna] tryb: in out inout parametr wejściowy; nie może być modyfikowany, parametr wyjściowy; może być modyfikowany w celu przekazania informacji wywołującemu, parametr wejściowy; może być modyfikowany. Operacje o zakresie klasy mają dostęp tylko do atrybutów o zakresie klasy. Implementacja operacji (kod w języku programowania) jest metodą.
Diagram klas
Diagramy sekwencji Następujący diagram sekwencji pochodzi z: M. Śmiałek, Zrozumieć UML 2.0, Metody modelowania obiektowego, Helion, 2005.
Diagramy sekwencji Szukaj danych studenta Edytuj dane studenta <<include>> Użytkownik <<include>> Modyfikuj dane studenta Diagram przypadków użycia Edycja danych studenta
Diagramy sekwencji PU Edytuj dane studenta Przebieg podstawowy realizacji PU 1. Użytkownik otwiera Okno edycji danych studenta. 2. Użytkownik podaje ID studenta. 3. Inicjowany jest PU Szukaj danych studenta. 4. Następuje powrót z PU Szukaj danych studenta. 5. Użytkownik podaje Dane korygujące. 6. Inicjowany jest PU Modyfikuj dane studenta. 7. Następuje powrót z PU Modyfikuj dane studenta. 8. Użytkownik zamyka Okno studenta i PU zostaje zakończony.
Diagramy sekwencji PU Szukaj danych studenta Przebieg podstawowy realizacji PU w przypadku zainicjowania przez PU Edytuj dane studenta 1. PU jest inicjowany przez PU Edytuj dane studenta. 2. Na podstawie ID studenta szukane są jego dane. 3. Następuje powrót ze wskaźnikiem na studenta o podanym ID studenta i PU zostaje zakończony.
Diagramy sekwencji PU Modyfikuj dane studenta Przebieg podstawowy realizacji PU w przypadku zainicjowania przez PU Edytuj dane studenta 1. PU jest inicjowany przez PU Edytuj dane studenta. 2. Dane studenta są modyfikowane. 3. Następuje powrót i PU zostaje zakończony.
System okien Okno główne Student Wykład Wykładowca ał Wydział Okno studenta Okno wykładowcy Dodaj studenta Usuń studenta Edytuj dane stu denta Okno wykładu Okno wydziału
Okno główne System okien dla Edycji danych studenta Student Wykład Wykładowca ał Wydział Okno studenta Dodaj studenta Usuń studenta Edytuj dane studenta Okno edycji danych studenta Nazwisko Imię PESEL Miejsce urodzenia
Okno główne pokażokno 1 wywołuje 1 Okno studenta pokażokno odczytajdanestudenta dodajstudenta usuństudenta edytujdanestudenta Uczelnia odczytajdanestudenta dodajstudenta usuństudenta edytujdanestudenta Student nazwisko:nazwa IDstudenta:Number get() set() Grupa współdziałania dla realizacji Edycja danych studenta
:Okno główne :Okno studenta :Uczelnia :Student Diagram sekwencji dla Edycja danych studenta Student pokażokno Edytuj dane studenta edytujdanestudenta IDstudenta edytujdane Studenta get(nazwisko) get(imię) Dane korygujące set(nazwisko) set(imię) zamknij
Diagramy maszyn stanowych Następujący diagram maszyny stanowej pochodzi z: M. Śmiałek, Zrozumieć UML 2.0, Metody modelowania obiektowego, Helion, 2005.
Diagram maszyny stanowej