Inżynieria Oprogramowania Laboratorium mgr inż. Michał Bukowski randam@interia.eu
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Format otwarty UML (ang. Unified Modeling Language, czyli Zunifikowany Język Modelowania) – język formalny wykorzystywany do modelowania różnego rodzaju systemów, stworzony przez Grady Boocha, Jamesa Rumbaugha oraz Ivara Jacobsona, obecnie rozwijany przez Object Management Group. Służy do modelowania dziedziny problemu (opisywania-modelowania fragmentu istniejącej rzeczywistości – na przykład modelowanie tego, czym zajmuje się jakiś dział w firmie) – w przypadku stosowania go do analizy oraz do modelowania rzeczywistości, która ma dopiero powstać – tworzy się w nim głównie modele systemów informatycznych. UML jest głównie używany wraz z jego reprezentacją graficzną – jego elementom przypisane są symbole, które wiązane są ze sobą na diagramach.
Unified Modeling Language Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Unified Modeling Language Paradygmat: język modelowania graficznego Aktualna wersja stabilna: 2.4.1 Twórca: Grady Booch, Ivar Jacobson i James Rumbaugh Licencja: public domain http://www.uml.org
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Diagramy: Dla wersji 2.2 języka UML wyróżnia się 14 diagramów głównych oraz 3 abstrakcyjne (struktur, zachowań i interakcji). Istnieją niestety pewne niejednoznaczności co do stosowanego polskiego tłumaczenia diagramów, np. ang. timing diagram jest tłumaczony jako diagram czasowy, zależności czasowych, harmonogramowania, uwarunkowań czasowych czy diagram przebiegów czasowych.
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Diagramy struktur: Klas (najczęściej spotykane, ang. class diagram) Obiektów (ang. object diagram) Komponentów (ang. component diagram) Wdrożenia (ang. deployment diagram) --- UML 2.0 --- Struktur złożonych (ang. composite structure diagram) Pakietów (ang. package diagram) --- UML 2.2 --- Profili (ang. profile diagram, nowość wprowadzona w UML 2.2)
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Diagramy zachowań: Czynności (ang. activity diagram) Przypadków użycia (ang. use case diagram) Maszyny stanów (ang. state machine diagram) (dla UML 1.x Stanów, ang. statechart diagram) Interakcji (diagram abstrakcyjny) Komunikacji (ang. communication diagram) (dla UML 1.x Współdziałania, ang. collaboration diagram) Sekwencji (ang. sequence diagram) --- UML 2.0 --- Czasowe (ang. timing diagram) Przeglądu interakcji (ang. interaction overview diagram) W przypadku modelowania biznesowego można korzystać z pewnych modyfikacji wyżej wymienionych diagramów UML, np. diagramu biznesowych przypadków użycia (charakterystyczna cięciwa dla symbolów aktora i przypadku użycia).
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Użycie: W praktyce rzadko kiedy trzeba opracowywać wszystkie diagramy i w większości przypadków korzysta się z mniej niż połowy wyżej wymienionych. Nie powinno modelować się tylko dla samego modelowania, dlatego nie zawsze wszystkie rodzaje są potrzebne. Projektując system informatyczny, rozpoczyna się przeważnie od tworzenia diagramów w następującej kolejności: Przypadków użycia Sekwencji Klas Aktywności Są to najczęściej wykorzystywane diagramy. Pozostałe bywają pomijane, zwłaszcza przy budowaniu niedużych systemów informatycznych. UML jest również stosowany do tworzenia modeli architektury korporacyjnej, jednakże obecnie coraz częściej do tego celu wykorzystywany jest inny standard (rozwijany przez The Open Group), tj. język ArchiMate.
Narzędzia (wolne/otwarte): Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Narzędzia (wolne/otwarte): Acceleo – system generacji kodu źródłowego z modeli UML oparty na Eclipse i szablonie EMF AmaterasUML - plug-in dla Eclipse umożliwiający rysowanie diagramów klas i interakcji; potrafi generować diagramy klas z kodu Javy, natomiast diagramy interakcji z wydruku stosu wywołań ArgoUML – napisany w Javie, zaawansowane generowanie kodu i podpowiedzi, ciągle rozszerzany ATLAS Transformation Language – narzędzie QVT, pozwalające transformować między innymi modele UML w inne modele UML lub Java, itp. ATL jest kompletnym rozwiązaniem OpenSource udostępnionym przez projekt Eclipse GMT (ang. Generative Modeling Tools). BoUml – (Obsługuje: C++, Java, IDL, Php, Python) obejmuje UML 2.0, tworzy dokumentację HTML, nie wymaga uprawnień administratora do instalacji, dostępny na licencji GPL do wersji 4.23 ultimate patch 7, wersja 5.0 posiada licencję komercyjną. Dia – ogólne narzędzie do rysowania diagramów oparte na GTK+/GNOME, które obsługuje modelowanie UML (licencja GNU GPL) ESS-Model – generator diagramów projektów Delphi oraz Java Eclipse – z platformą modelowania Eclipse (ang. Eclipse Modeling Framework, EMF) i metamodelem UML 2.0 (bez GUI) Fujaba – platforma developerska UML i Java; dostępna też w wersji Eclipse
Narzędzia (wolne/otwarte): Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Narzędzia (wolne/otwarte): Gaphor – środowisko modelowania UML 2.0 oparte na GTK+/GNOME napisane w języku Python GenMyModel – środowisko modelowania UML 2.0 oparte na Javascript/HTML5 MetaUML – Notacja tekstowa dla UML. Renderowanie Diagramów w oparciu o MetaPost, odpowiednie dla systemu składu LaTeX MonoUML – bazujące na najnowszym oprogramowaniu Mono, GTK+ i ExpertCoder. NetBeans – z "NetBeans IDE 5.5 Enterprise Pack" oraz z NetBeans IDE <= 6.7.1(http://wiki.netbeans.org/UML) usunięta obsługa UML z projektu Software Ideas Modeler – modeler UML napisany w C# StarUML – (Obsługuje: C/C++, Java, Visual Basic, Delphi, JScript, VBScript, C#, VB.NET) platforma UML/MDA dla systemu Windows (2000, XP), która umożliwia import projektów z takich komercyjnych aplikacji jak Rational Rose czy Borland Together. Zapewnia forward i reverse engineering kodu w Javie, C#, C++; dostępna na zmodyfikowanej licencji GNU GPL, napisana głównie w Delphi Umbrello – program dla Linuksa, środowisko KDE UMLet – łatwe w użyciu narzędzie pozwalające tworzyć diagramy UML, stworzone w Javie, (licencja GNU GPL) UMLpad – modeler UML napisany w C++/wxWidgets, na licencji GNU GPL UML Sculptor – prosty, łatwy w użyciu program do tworzenia diagramów klas
Narzędzia (zamknięte): Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Narzędzia (zamknięte): ARIS Platform – rodzina programów ARIS Platform zapewnia zintegrowane portfolio narzędzi informatycznych, które pozwalają w sposób ciągły doskonalić procesy biznesowe. Borland Together – rodzina programów integrujących się z różnymi IDE, istnieje wersja demo Enterprise Architect – profesjonalne narzędzie w przystępnej cenie o wygodnym interfejsie działające na platformach Windows i Linux. Obsługuje UML 2.1. IBM Rational Rose (dawniej: Rational Software) IBM Rational Software Architect – narzędzie wspierające UML 2.0 oparte na Eclipse JUDE - program to tworzenia diagramów UML, diagramów związków encji, diagramów przepływu, map myśli itd.; istnieje darmowa wersja Community, nieco ograniczona (m.in. tylko do diagramów UML oraz importu/eksportu kodu Javy), jednak wciąż o sporych możliwościach i dostępna również do celów komercyjnych. Microsoft Visio – program z pakietu MS Office, umożliwiający (między innymi) rysowanie diagramów UML – należy jednak zwrócić uwagę że nie umożliwia generacji kodu z diagramów, ani sprawdzania ich integralności. Rodzina programów iGrafx – narzędzia iGrafx począwszy od iGrafx FlowCharter obsługują tworzenie diagramów UML. Wersja testowa na witrynie iGrafx MagicDraw – pakiet przeznaczony również do pracy w sieci, możliwość modelowania w SysML Objecteering – do edycji i modelowania diagramów UML, darmowy w wersji podstawowej Poseidon for UML – zaawansowane narzędzie bazujące na ArgoUML, darmowa edycja Community, trial 30 dni dla zarejestrowanych użytkowników Sybase PowerDesigner – wydajne, rozbudowane i dopracowane narzędzie do tworzenia diagramów UML oraz schematów baz danych, procesów biznesowych i zarządzania wymaganiami. Wersja francuskojęzyczna nosi nazwę PowerAMC. Tormigo - polskie narzędzie wspierające zarządzanie wymaganiami w Enterprise Architect Visual Paradigm for UML – oprócz wersji płatnych istnieje darmowa wersja Community, która posiada ograniczenie funkcjonalności. Visual Paradigm SDE – SDE (środowisko programistyczne). Integruje się ze wszystkimi wiodącymi IDE (Visual Studio®, Eclipse/WebSphere®, Borland JBuilder®, NetBeans/Sun™ ONE, IntelliJ IDEA™, Oracle JDeveloper, BEA WebLogic Workshop™). Do użytku niekomercyjnego (do nauki), dostępne w wersji Community, za darmo, z ograniczeniem funkcjonalności.
Przykładowe diagramy: Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Przykładowe diagramy:
Przykładowe diagramy: Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Przykładowe diagramy:
Przykładowe diagramy: Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Przykładowe diagramy:
Diagram klas jako struktura statyczna Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Diagram klas jako struktura statyczna Diagram klas pokazuje określony fragment struktury systemu. Diagramów klas używa się do modelowania statycznych aspektów perspektywy projektowej. Wiąże się z tym silnie modelowanie słownictwa systemu, kooperacji lub schematów. Diagramy klas pozwalają na sformalizowanie specyfikacji danych i metod. Mogą także pełnić rolę graficznego środka pokazującego szczegóły implementacji klas. Klasa w modelu UML programu obiektowego jest reprezentowana przez prostokąt z umieszczoną wewnątrz nazwą klasy. Oddzielona część prostokąta pod nazwą klasy może zawierać atrybuty klasy, czyli metody (funkcje), właściwości (properties) lub pola (zmienne). Każdy atrybut pokazywany jest przynajmniej jako nazwa, opcjonalnie także z typem, wartością i innymi cechami. Metody klasy mogą znajdować się w osobnej części prostokąta. Każda metoda jest pokazywana przynajmniej jako nazwa, a dodatkowo także ze swoimi parametrami i zwracanym typem. Atrybuty (zmienne i właściwości) oraz metody mogą mieć też oznaczoną widoczność (zakres znaczenia ich nazw) jak następuje: "+" dla public – publiczny, dostęp globalny "#" dla protected – chroniony, dostęp dla pochodnych klasy (wynikających z generalizacji) "−" dla private – prywatny, dostępny tylko w obrębie klasy (przy atrybucie statycznym) lub obiektu (przy atrybucie zwykłym) "~" dla package – pakiet, dostępny w obrębie danego pakietu, projektu.
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Związki Agregacja Agregacja reprezentuje związek typu całość-część. Występuje tutaj relacja posiadania — co oznacza, że elementy częściowe mogą należeć do większej całości, jednak również mogą istnieć bez niej. Na diagramie agregację oznacza się za pomocą linii zakończonej pustym rombem. Asocjacja Asocjacja wskazuje na trwałe powiązanie pomiędzy obiektami danych klas (np. firma zatrudnia pracowników). Na diagramie asocjację oznacza się za pomocą linii, która może być zakończona strzałką (oznaczającą kierunek nawigacji między klasami). Nazwę cechy wraz z krotnością umieszcza się w punkcie docelowym asocjacji. Generalizacja Generalizacja – związek opisujący dziedziczenie po klasach. Na diagramie generalizację oznacza się za pomocą niewypełnionego trójkąta symbolizującego strzałkę (skierowaną od klasy pochodnej do klasy bazowej). Kompozycja Kompozycja, zwana również złożeniem, jest związkiem typu całość-część. W relacji kompozycji, części należą tylko do jednej całości, a ich okres życia jest wspólny — razem z całością niszczone są również części. Na diagramie, kompozycję oznacza się za pomocą linii zakończonej wypełnionym rombem.
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Diagram klas
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Diagram klas
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Zadanie 1: Firma AABB zajmująca się charterem (wynajmem) jachtów, łodzi motorowych, skuterów wodnych na rejsy/wyprawy po jeziorach Warmii i Mazur (Szlak Wielkich Jezior Mazurskich) rozwija się ostatnimi czasy bardzo dynamicznie. W związku ze zbliżającym się nowym sezonem żeglarskim, aby możliwie najefektywniej wykorzystywać coraz większą bazę łódek, firma postanowiła zainwestować w system informatyczny wspomagający jej podstawową działalność. W pierwszym rzędzie system ma obejmować zarządzanie rezerwacjami i wypożyczeniem jachtów, a także m.in. przerwy związane z konserwacjami łodzi. Podaj diagram przypadków użycia tego systemu oraz opisz 2-3 wybrane przypadki użycia.
Laboratorium nr 5 Temat: UML cz. 1 - Modelowanie struktury statycznej oraz przypadków użycia Zadanie 2: Zaprojektować system „Elektroniczny Dziennik Ocen”. W każdej z klas uczy się nie więcej niż 25 uczniów. Proszę uwzględnić gospodarza klasy. Cała klasa uczy się tych samych przedmiotów (w ściśle określonym wymiarze godzin w tygodniu) za wyjątkiem języków obcych (pół klasy uczy się angielskiego a część hiszpańskiego). Jeden nauczyciel może uczyć kilku przedmiotów a klasa ma oczywiście wychowawcę. Oprócz ocen cząstkowych uczniowie otrzymują ocenę końcową. Dodatkowo uczniowie otrzymują ocenę ze sprawowania. Należy opracować model klas (tylko nazwy klas i ich atrybuty oraz związki pomiędzy nimi. Należy pamiętać o nazwach związków oraz ich ilościami). Wynik zapisać w postaci diagramu klas.