UML – Unified Modeling Language (1) Bartosz Baliś, Na podstawie, m.in.: Introduction to UML: Structural and Use Case Modeling, Cris Kobryn Projektowanie Obiektowe, Ian Sommerville Agile modeling:
UML – Unified Modeling Language Graficzny język do analizy i projektowania obiektowego Standaryzuje kilka metod graficznej reprezentacji UML jest językiem – posiada składnię (notacja graficzna) i semantykę (znaczenie symboli graficznych) Diagramy 4 strukturalne (klas, obiektów, komponentów, wdrożeń) 5 do modelowania zachowania (przypadków użycia, sekwencji, aktywności, współpracy / kolaboracji, stanów) 3 do zarządzania modelem (pakiety, podsystemy, modele) Historia UML 1.1 – 1997 UML 1.3 – listopad 1999 UML 1.4 UML 1.5 Obecnie – UML 2.0 – znaczne zmiany Wstęp
Elementy modelu (klasy, interfejsy, komponenty, przypadki użycia, etc.) Relacje pomiędzy nimi (powiązania, generalizacja, zależności, etc.) Diagramy (diagramy klas, diagramy przypadków użycia, diagramy interakcji, etc.) Zasadnicze składniki UML
Przykład diagramu klas
Przykład diagramu obiektów (instancji klas)
Modele struktury
Modelowanie struktury Model systemu, który podkreśla strukturę obiektów, powiązania między klasami, ich atrybuty i operacje Rodzaje diagramów: Statyczne diagramy struktury Klas, obiektów Diagramy implementacji Komponentów, wdrożeń
Model struktury – zasadnicze elementy
Model struktury – podstawowe relacje
Statyczne diagramy struktury Diagram klas Diagram obiektów – instancji klas
Klasy: przykład tatus: {current, left, retired} taxCode: integer... join () leave () retire () changeDetails ( Pracownik nazwisko : string adres : string dataUrodzenia : Date numerPracownika : integer PESEL : string dział : Dział przełożony : Pracownik wynagrodzenie : integer stan : {zatrudniony, zwolniony, emerytowany} NIP : integer... dołącz() opuść() przejdźNaEmeryturę() zmieńSzczegóły()
Diagram klas – przykład
Hierarchia uogólnień – przykład Pracownik Kierownik zarządzaneBudżety dataPrzyjęcia Programista przedsięwzięcie językiProg Kierownik Przedsięwzięcia przedsięwzięcie Kierownik Działu dział Kierownik Strategiczny obowiązki
Powiązania – przykład Kierownik DziałPracownik jest-członkiem jest-zarządzany-przez zarządza
Powiązania – jedno i dwukierunkowe
Agregacja i kompozycja Agregacja i kompozycja – obiekt składa się z innych obiektów Agregacja – zespół składa się z pracowników Kompozycja – samolot składa się z części Reguła: kompozycja jest "silniejszą" formą agregacji – jeśli całość jest niszczona, to jej części także, w przypadku agregacji tak nie jest.
Generalizacja-specjalizacja – przykład: taksonomia obiektów
Interfejsy: notacja skrótowa Fig. 3-29, UML Notation Guide
Interfejsy: notacja rozszerzona Fig. 3-29, UML Notation Guide
Diagram obiektów
Diagramy implementacji Pokazują takie aspekty implementacji jak struktura kodu źródłowego, oraz struktura podczas wykonywania się systemu Rodzaje Diagram komponentów Diagram wdrożeń (deployment)
Komponenty i wdrożenia: przykład
Fig. 3-99, UML Notation Guide Komponenty – przykłady
Fig. 3-95, UML Notation Guide Diagram komponentów – przykład
Diagram wdrożeń – przykład Fig. 3-97, UML Notation Guide
Projektowanie oparte o interfejsy
Projektowanie oparte o interfejsy (interface-based design) Skupia się na specyfikacji interfejsów systemu Oddziela się specyfikację operacji jakiejś usługi (interfejsy) od ich realizacji (implementacja) Przykład: CORBA IDL (Interface design language) jako projektowanie aplikacji rozproszonych oparte o interfejsy IDL definiuje interfejsy obiektów bez nakładania ograniczeń na ich implementację Definiuje strukturę aplikacji rozproszonej Nie pozwala na specyfikowanie zachowania obiektów lub relacji pomiędzy klasami poza generalizacją
Przykład: punkt sprzedaży (point of sale) module POS { typedef long POSId; typedef string Barcode; interface InputMedia { typedef string OperatorCmd; void barcode_input(in Barcode item); void keypad_input(in OperatorCmd cmd); }; interface OutputMedia { boolean output_text(in string string_to_print ); };... Generic IDL Point of Sale (POS) example. [Siegel 00]
Przykład punkt sprzedaży (c.d.)... interface POSTerminal { void login(); void print_POS_sales_summary(); void print_store_sales_summary(); void send_barcode(in Barcode item); void item_quantity(in long quantity); void end_of_sale(); }; #endif /* _POS_IDL_ */
From [Kobryn 00].
Przypadki użycia
Fig. 3-53, UML Notation Guide Diagram przypadków użycia
Relacje pomiędzy przypadkami użycia Generalizacja (uogólnienie) Jeden przypadek użycia jest uogólnieniem innego Dołączanie (include) Zachowanie dołączanego przypadku użycia jest dołączane do podstawowego przypadku użycia Rozszerzenie (extend) Zachowanie rozszerzającego przypadku użycia jest dołączane do podstawowego przypadku użycia w ściśle określonym miejscu (określanym przez tzw. extension point) >
Extend vs. include > Używa się wtedy, gdy dołączany przypadek użycia musi być wykonany > Używa się, gdy rozszerzający przypadek użycia może lecz nie musi być wykonany Przez zdefiniowanie tzw. extension points określa się w którym dokładnie miejscu może być wykonany rozszerzający przypadek użycia
Diagram przypadków użycia – przykład
Fig. 3-55, UML Notation Guide Relacje pomiędzy aktorami
Opis przypadku użycia n Actors: traveler, client account db, airline reservation system n Preconditions: Traveler has logged on to the system and selected ‘change flight itinerary’ option n Basic course (podstawowy przebieg) System retrieves traveler’s account and flight itinerary from client account database System asks traveler to select itinerary segment she wants to change; traveler selects itinerary segment. System asks traveler for new departure and destination information; traveler provides information. If flights are available then … System displays transaction summary. n Alternative courses (gdy wystąpi jakaś sytuacja wyjątkowa) If no flights are available then …
Opis przypadku użycia – tabela
Dalsza lektura Ian Sommerville, Inżynieria oprogramowania, r Artifacts, UML 2