Celem tego wpisu jest przedstawienie technik projektowych związanych z prezentacją komponentów w systemach informatycznych. Skupię się na diagramie komponentów, jego definicji, zastosowaniu oraz kluczowych elementach notacji.
Diagram komponentów – definicja i zastosowanie
Diagram komponentów (ang. component diagram) to narzędzie służące do ilustrowania organizacji i zależności pomiędzy komponentami systemu. Charakteryzuje się następującymi cechami:
- Przedstawia system na wyższym poziomie abstrakcji niż diagram klas.
- Każdy komponent może być implementacją jednej lub większej liczby klas.
- Służy do określania szczegółów niezbędnych do budowy systemu.
- Pomaga w zrozumieniu struktury systemu i relacji między jego częściami.
Diagram komponentów – notacja i semantyka
Komponent
![diagramy uml komponent](https://wolski.pro/wp-content/uploads/2024/07/diagramy_uml_komponent.png)
Komponent (ang. component) to modularny – logiczny bądź fizyczny – fragment systemu. Charakteryzuje się następującymi cechami:
- Zapewnia bardziej zwięzły opis zachowania systemu niż jego szczegółowa implementacja.
- Może być stosowany w dwóch aspektach: a) Definiowanie zewnętrznego oblicza systemu. b) Implementacja funkcjonalności systemu.
- Służy jako agregat dla podsystemów na wszystkich poziomach systemu.
- Użyty ze stereotypem <<subsystem>>, oznacza agregat dla komponentów dużej skali.
Komponent zazwyczaj reprezentuje aplikację, moduł aplikacji, albo każdy inny element grup logiczny bądź fizyczny – fragment systemu
Interfejs
![diagramy uml interfejs](https://wolski.pro/wp-content/uploads/2024/07/diagramy_uml_interfejs.png)
Interfejs (ang. interface) to zestaw operacji definiujących usługi oferowane przez komponent (lub klasę). Kluczowe cechy interfejsu:
- Służy do prezentowania komunikacji pomiędzy komponentami.
- Określa kontrakt, który komponent musi spełnić.
- Umożliwia luźne powiązanie między komponentami, promując modularność i elastyczność systemu.
Powiazania i relacje na diagramach kompomentów
![diagramy uml diagram komponentów powiązania](https://wolski.pro/wp-content/uploads/2024/07/diagramy_uml_diagram_komponentow_powiazania.png)
Powyższy rysunek przedstawia trzy różne warianty (A, B i C) ilustrujące sposoby reprezentacji powiązań między komponentami w diagramie komponentów UML. Oto szczegółowy opis każdego wariantu:
Wariant A:
- Pokazuje dwa komponenty: Komponent A i Komponent B.
- Między nimi znajduje się element oznaczony jako <<interface>> Interfejs.
- Obie komponenty są połączone z interfejsem za pomocą przerywanych linii ze strzałkami.
- Strzałki są skierowane w stronę interfejsu, co oznacza, że oba komponenty korzystają z tego interfejsu.
- Ten wariant jasno pokazuje, że interfejs jest oddzielnym bytem, z którego korzystają oba komponenty.
Wariant B:
- Przedstawia bezpośrednie połączenie między Komponentem A i Komponentem B.
- Połączenie to jest reprezentowane przez ciągłą linię z okrągłym symbolem (przypominającym „lizak”) po stronie Komponentu B. Jest to relacja Assembly.
- Ten symbol oznacza, że Komponent B udostępnia interfejs, z którego korzysta Komponent A.
- Jest to bardziej zwięzła reprezentacja relacji interfejsu, bez jawnego pokazywania elementu interfejsu.
Wariant C:
- Podobnie jak w wariancie B, pokazuje bezpośrednie połączenie między Komponentem A i Komponentem B.
- Tym razem używa symbolu „gniazda” (półokrąg) po stronie Komponentu A i symbolu „lizak” po stronie Komponentu B.
- Symbol „gniazda” oznacza wymagany interfejs (Komponent A wymaga interfejsu).
- Symbol „lollipop” oznacza dostarczany interfejs (Komponent B dostarcza interfejs).
- Połączenie jest reprezentowane przez przerywaną linię – zależność (ang. dependecy).
- Ta notacja jasno pokazuje, który komponent wymaga interfejsu, a który go dostarcza.
Powiązania:
- We wszystkich wariantach Komponent A jest powiązany z Komponentem B poprzez interfejs.
- Wariant A pokazuje to powiązanie explicite poprzez osobny element interfejsu.
- Warianty B i C przedstawiają to powiązanie w bardziej zwięzły sposób, bez osobnego elementu interfejsu.
- We wszystkich przypadkach idea jest taka sama: Komponent A korzysta z interfejsu dostarczanego przez Komponent B.
Te trzy warianty ilustrują różne sposoby reprezentacji tej samej koncepcji w diagramach komponentów UML, pozwalając na wybór najbardziej odpowiedniej notacji w zależności od potrzeb diagramu i preferencji projektanta. Przez wiele lat stosowałem wariant C. Dziś orenduję za uproszeniem notacji Wariant B to mój ulubiony wariant, gdzie w nazwie relacji Assembly wpisuję nazwę interfejsu a w streotypie jego typ. Nalęzy takż pamiętać, ze jest stosowana jest odmiana diagramu kompomentów, gdzie jest użyta relacja flow. Jgo celem jest pokazanie przepłeywu danych.
![diagramy uml diagram komponentów przepływ danych](https://wolski.pro/wp-content/uploads/2024/07/diagramy_uml_diagram_komponentow_przeplyw_danych.png)
Diagram komponentów – przykład
Poniższy rysunek przedstawia diagram komponentów dla systemu wynajmu (Rental) i jego interakcji z zewnętrznymi usługami. Oto szczegółowy opis:
- System Rental – wspiera wynajem pojazdów
- Bramka płatności – umożliwa płatnosci kartą kredytową za wynajem
- Serwer SMTP:
- Trzeci komponent na diagramie, oznaczony jako „Serwer SMTP”.
- Również posiada symbol komponentu.
![diagramy uml diagram komponentów przyklad](https://wolski.pro/wp-content/uploads/2024/07/diagramy_uml_diagram_komponentow_przyklad.png)
Połączenia i interfejsy na rysunku to:
a) Między System Rental a Bramką płatności:
- Połączenie oznaczone jako „IBP” („Interfejs Bramki Płatności”).
- Używa notacji „lizak” (kółko na końcu linii) po stronie Bramki płatności, co oznacza, że Bramka płatności dostarcza ten interfejs.
- Połączenie opisane jako «REST API», co wskazuje na typ komunikacji między tymi komponentami.
b) Między System Rental a Serwerem SMTP:
-
- Połączenie oznaczone jako „IMAIL”.
- Używa notacji „lizak” po stronie Serwera SMTP, co oznacza, że Serwer SMTP dostarcza ten interfejs.
- Połączenie opisane jako «SMTP», co wskazuje na protokół używany do komunikacji.
Diagram ten ilustruje architekturę komponentową systemu wynajmu, pokazując jak główny system integruje się z zewnętrznymi usługami płatności i wysyłki e-maili. Wykorzystanie interfejsów (IBP i IMAIL) oraz określenie protokołów komunikacji (REST API i SMTP) jasno definiuje sposób interakcji między komponentami. Taka reprezentacja jest typowa dla diagramów komponentów w UML, pokazując strukturę systemu na wyższym poziomie abstrakcji i koncentrując się na głównych elementach oraz ich wzajemnych zależnościach.
Podsumowanie
Diagram komponentów jest cennym narzędziem w procesie projektowania i rozwoju systemów informatycznych. Pozwala na wizualizację struktury systemu na poziomie komponentów, co jest szczególnie użyteczne w przypadku dużych i złożonych projektów.
Pozostałe diagramy UML: