Diagram komponentów (component diagram)

Diagramy komponentów (component diagram) pokazują podział systemów programowych na mniejsze podsystemy.

Komponent to wymienialny, wykonywalny fragment systemu, z ukrytymi szczegółami implementacyjnymi (np. plik .dll, podprogram)
Komponent udostępnia zestaw interfejsów, może też wymagać pewnych interfejsów do funkcjonowania.
Komponent to wymienny, wykonywalny fragment systemu o hermetyzowanych szczegółach implementacyjnych. Komponenty z natury służą do ponownego wykorzystania poprzez połączenie ich z innymi komponentami, zwykle poprzez ich skonfigurowanie, bez potrzeby rekompilacji.

Funkcjonalność oferowana przez komponent jest dostępna przez interfejsy, które implementuje. Z drugiej strony, komponent może wymagać pewnych interfejsów, które muszą być dostarczone przez inne komponenty.

Diagram komponentów służy do pokazania związków pomiędzy komponentami i interfejsami


Komponent - reprezentuje jeden fizyczny moduł kodu. Często jest to jeden pakiet, ale nie zawsze istnieje taka jednoznaczna odpowiedniość. Komponent musi posiadać nazwę, wyróżniającą go spośród pozostałych (gdy jest poprzedzony nazwą otaczającego pakietu, wtedy jest to nazwa ścieżkowa, wpp nazwa prosta). Można je grupować w pakiety. Dostępne są również wszystkie rozszerzenia, w tym: metki - definiujące nowe właściwości komponentu, np. określające numer wersji oraz stereotypy - definiują nowe rodzaje komponentów.

W UML zdefiniowane są następujące stereotypy komponentów:

  • executable - określa komponent, który można wykonać na węźle;
  • library - określa dynamiczną lub statyczną bibliotekę obiektów;
  • table - określa komponent reprezentujący tabelę bazy danych;
  • file - określa komponent reprezentujący dokument zawierający kod źródłowy lub dane;
  • document - określa komponent reprezentujący dokument;

Interfejsy

  • dostarczany (na powyższym rysunku z lewej strony komponentu)
  • wymagany (na powyższym rysunku z prawej strony komponentu)

Notacja kółko-gniazdo (ball and socket), przy pomocy której możemy pokazać połączenie dwóch komponentów poprzez interfejs została wprowadzona w UML 2.0, także na starszych diagramach jej nie spotkamy. Podobnie w UML 2.0 zmienił się sposób oznaczania komponentów, obecnie reprezentuje je prostokąt z ideogramem w prawym górnym rogu, dawniej komponent był oznaczany elementem, który stał się w wersji 2.0 ideogramem.

Inne możliwości oznaczania interfejsów takie same, jak dla diagramu klas

Interfesy można też oznaczać tekstowo nazwy interfejsów wymienione po stereotypach: << provided interfaces >> i << required interfaces >> wenątrz prostokąta komponentu



Zależności

Komponenty są między sobą powiązane relacją zależności, ponieważ wymagają ich do realizacji własnej funkcjonalności. Zależność między A i B oznacza, że komponent A korzysta z komponentu B i zmiana w komponencie B może spowodować konieczność zmiany w A. Ilość i jakość tych zależności ma duże znaczenie dla oceny jakości modelu i projektu: duża liczba powiązań pomiędzy komponentami, a w szczególności zależności cykliczne, w znacznym stopniu utrudniają wyznaczanie obszarów zmienności i ich hermetyzację, a co za tym idzie - podnoszą koszt pielęgnacji oprogramowania. W odróżnieniu od tego, system o dobrze zdefiniowanych interfejsach komponentów pozwala na ich wymianę bez potrzeby modyfikacji pozostałej części systemu.



Widoki

  • Widok czarnej skrzynki - nie są pokazane żadne szczegóły wewnętrzne danego komponentu.
  • Widok białej skrzynki - pokazujemy szczegóły wewnętrznej budowy komponentu, czyli jego części składowe


Porty

Porty - pozwalają łączyć interfejsy wewnętrzne z odpowiedzialnymi za nie fragmentami wewnętrznymi komponentu.



Zobacz przykład

Przykład diagramu komponentów - Aukcja internetowa



Diagram komponentów