Prezentacja narzędzi do UML-a

Elżbieta Bajkowska & Adam Warski


Krótki rys historyczny

UML - Unified Modelling Language (www.uml.org)

UML pomaga w specyfikacji, dokumentacji i wizualizacji projektowanych systemów informatycznych. Jego główną część stanowi 12 diagramów:

Jednak poza samymi diagramami z używania UML-a płyną także inne korzyści:

Aktualna "oficjalna" specyfikacja UML - 1.5; wkrótce jednak zostanie zastąpione przez poprawioną wersję 2.0.


Pliki do ściągnięcia

Materiały do ćwiczeń i programy (format .tar.gz)
Materiały do ćwiczeń i programy (format .zip)


Dia Diagrams

Strona domowa programu Dia Diagrams

Dołączanie diagramu do pliku tex-owego

W dii: W dokumencie tex-owym:

Diagramy przypadków użycia

Aktor
Przypadek użycia
Powiązania między przypadkami użycia
Specjalizacja

Ćw.: znajduje się w pliku UseCaseDiagram1.dia. Rozwiązanie można znaleźć tu.


Diagramy czynności

Stan początkowy/ końcowy
Czynność
Rozgałęzienie
Wykonanie współbieżne
Powiązanie między czynnościami

Ćw.: znajduje się w pliku ActivityDiagram1.dia. Rozwiązanie można znaleźć tu.


Diagramy klas i dia2code

Klasa
Agregacja
Asocjacja
Zależność
Dziedziczenie

Strona domowa programu dia2code: http://dia2code.sourceforge.net/

Program "Dia2code" jest wygodnym narzędziem do automatycznego generowania kodu w Javie, lub innych językach, takich jak C++, na podstawie diagramów klas stworzonych w Dia Diagrams. Zależności między graficznym zobrazowaniem klas, a ich tłumaczeniem na kod są w większości przypadków intuicyjne, najlepiej jednak przyjrzeć się im z bliska i dla kilku eksperymentalnych diagramów wygenerować kod (na naszych zajęciach będzie to kod w języku Java).

./dia2code -h (uzyskanie krótkiej informacji o programie)

Dla poniższych przykładów najwygodniej wywołać ./dia2code -t java -cl < lista aktualnie omawianych klas >

Tworzenie klasy i jej atrybutów

Dla takiego określenia klasy Point został wygenerowany następujący kod:

public class Point {
/** Attributes */
private Float x;
private Float y;
}

Ćw.: spróbuj zmienić nazwy, typ, widoczność, domyślną wartość atrybutów i sprawdź co wygeneruje Dia2code.

Uwaga! Dia pozwala nadać dwum atrybutom identyczne nazwy, a Dia2code wygeneruje nieprawidłowy kod.

2. Klasa złozona z obiektu innej klasy i jej metody

Przedstawiony na rysunku związek oznacza, że klasa Circle składa się (między innymi) z itsCentre (trzeba wpisać odpowiednią rolę w okienku edycji strzałki), które jest obiektem klasy Point. Klasa Circle zawiera również kilka metod.

Obejrzyj wygenerowany kod.

Ćw.: dodaj do Circle metodę publiczną Circumference(): Float.

3. Dziedziczenie

Klasy Circle i Rectangle dziedziczą po abstrakcyjnej klasie Shape (sprawdź jej parametry w Dia). Dodaj klasę Square dziedziczącą po Rectangle.

4. Zależność

Jednym z atrybutów obiektów klasy Window jest obiekt rozbudowanej klasy DrawingContext (zauważ, że kod generowany przy zwykłym związku jest identyczny jak przy agregacji, a co będzie atrybutem czego, jest mniej jasne). Klasa ta składa się również z zera, lub wielu obiektów klasy Shape (krotność nie wpływa na kod, Dia2code nie wie w jaki sposób będziemy przechowywać obiekty Shape).

Argument metody Draw w klasie Shape jest elementem klasy DrawingContext, więc klasa ta powinna coś wiedzieć o klasie DrawingContext. Obrazujemy to przerywaną strzałką (zwróć uwage na kierunek), a Dia2code zrealizuje to przez
import DrawingContext;
w kodzie klasy Shape.

Jak widać korzystanie z programu Dia2code jest rodzajem kompromisu między tym, co chcemy powiedzieć, a tym, co chcielibyśmy wygenerować. Wydaje się jednak, że wygodniej, na przykład używać agregacji zamiast prostych zwiazków, gdyż diagram staje się bardziej czytelny, gdy wiemy jaki kod zostanie dla niego wygenerowany.


Diagramy ERD i program tedia2sql

W dii diagramy ERD można wykonać używając komponentów UML, a następnie za pomocą programu tedia2sql wygenerować z diagramu skrypt zakładający bazę m.in. dla mysqla, oracla i postresql-a.

Interpretacja komponentów UML-owych w kontekście ERD:

Encja Encje reprezentujemy za pomocą komponentu "Class". Atrybutami encji to atrybuty klasy. Atrybuty tworzące klucz główny to atrybuty klasy z widocznością ustawioną na "protected". Typy pól muszą odpowiadać typom w bazie danych, np. VARCHAR, NUMBER. Jako wartość można podać NOT NULL (wtedy pole nie będzie mogło przechowywać wartości NULL), albo NULL. Można ukryć część klasy odpowiadającą za metody, w opcjach enji odznaczając pole "Operations Visible".
Jeden do wielu Relację jeden-do-wielu reprezentujemy za pomocą komponentu agregacji. Jeżeli romb po jednej stronie relacji zamienimy (w wyobraźni oczywiście) na "miotłę", to wszystko stanie się jasne. W właściwościach relacji w pola "Role" należy wpisać które pole z obu encji sobie odpowiadają, czyli które mają się "zgadzać". Pola te muszą mieć te same typy. Opcjonalnie można też nazwać relację - będzie to nazwa wygnereowanego klucza obcego. W pole "Multiplicity" można wpisać krotność: np. 1, 0..*, 1..*.
Jeden do jednego Relację jeden-do-jednego reprezentuje się za pomocą komponentu asocjacji. Jedyną zmianą w stosunku do poprzedniego punktu jest to, że dodatkowo trzeba określić kierunek relacji: która encja jest ojcem, a która dzieckiem - pole "Direction" w własnościach relacji.

Główne opcje programu tedia2sql:

Ćw.: w pliku erd.dia jest już gotowy diagram encji. Dodaj do niego encję "Koło" i stwórz odpowiednią relację z samochodem, po czym wygeneruj skrypt do tworzenia bazy danych dla postgresql-a.

Więcej informacji o używaniu programu tedia2sql i wykorzystaniu innych komponentów UML można znaleźć tutaj.


Diagramy interakcji

Linia życia klasy Linie życia obiektów tworzymy za pomocą komponentów "Lifeline", co nie wydaje się być bardzo zaskakujące. W jej opcjach możemy dodatkowo dodać znak zniszczenia obiektu.
Wiadomość Komunikaty reprezentowane są przez komponent "Message". W opcjach można określić jakiego typu jest wysyłany komunikat: może byc to wywołanie metody ("Call"), w tym przypadku należy wpisać jej nazwę. Może to być też powrót rekurencyjny ("Recursive"), albo zwykły ("Return"). Dostępne są też inne opcje.

Przykład diagramu interakcji znajduje się w pliku InteractionDiagram.dia.


Inne informacje o Dia Diagrams


Niebezpieczeństwa

Mogłoby się wydawać że UML jest pozbawiony wad, ale oczywiście tak nie jest. Jak każde narzędzie, trzeba je wykorzystywać umiejętnie. Główne zagrożenia:


Poseidon

Strona domowa programu Poseidon

Bezpłatną wersję "community" można ściągnąć ze strony producenta. Można też uruchomić ją bezpośrednio z przeglądarki.


Rational Rose

Strona programu Rational Rose