Komponentendiagramme

Komponentendiagramme zeigen eine grobe Struktur des Systems, aber auch die Aufteilung und das Zusammenspiel einzelner Bestandteile.

Aufgabe

In welche Komponenten würden Sie einen Verein aufteilen? Erstellen Sie ein Komponentediagramm für einen Verein Ihrer Wahl.

Beispiel: Darstellungsymbole für Komponenten

../../_images/komponenten.svg
Source Plantuml:

// java -jar plantuml.jar -t svg quelle.txt

@startuml
[Erste Komponente]
[Andere Komponente] as Comp2
component Comp3
component [Letzte\nKomponente] as Comp4
@enduml

Beispiel: Komponenten verbinden

  • Komponenten werden über Schnittstellen verbunden.

  • Hier stellt der Webserver eine Schnittstelle zur Verfügung.

  • Die Datenbank-Komponente nutzt die bereitgestellte Schnittstelle des Webservers.

../../_images/komponenten2.svg
Source Plantuml:

// java -jar plantuml.jar -t svg quelle.txt

@startuml
skinparam interface {
backgroundColor LightGray
borderColor orange
}
skinparam component {
FontSize 13
FontName Courier
BorderColor black
BackgroundColor gold
ArrowFontName Impact
ArrowColor #FF6655
ArrowFontColor #777777
}
() "Data Access" as DA
DA - [Datenbank-Komponente]
[Datenbank-Komponente] ..> () HTTP : use
HTTP - [Web Server\n »Nginx«]
@enduml

Beispiel: Schnittstellen an einem Port

  • Große Komponenten stellen ihre Funktionalität über einen öffentlichen Zugang bereit, der Port genannt wird.

  • Ein Port ist ein Rechteck über der Grenze eines Diagramm-Symbols.

../../_images/komponenten3.svg
Source Plantuml:

// java -jar plantuml.jar -t svg quelle.txt

@startuml
skinparam componentstyle uml2
left to right direction

component X {
    port " " as x\ :sub:`out`\
}

'u for layouting it more nicely, 0) for lollipop
x\ :sub:`out`\ -u0)- [Y]
x\ :sub:`out`\ -u0)- [Z]

@enduml

Beispiel: REST APIs mit SSL/TLS-Client-Zertifikaten

../../_images/zato-komponente.svg
Source Plantuml:

// java -jar plantuml.jar -t svg quelle.txt


@startuml

skinparam node {
backgroundColor Yellow
}

[Client-Applikation] as Client
[Externe Applikation] as Extern

node "Zato-Cluster" {
  [Load-Balander] as Balancer
  [diverse Server] as Server
  Balancer --> Server
}

Client -left-> Balancer : SSL/TSL\n Client Zertifikat
Server --> Extern

@enduml

Beispiel: Bibliothek

../../_images/bibliothek.svg
Source Plantuml:

// java -jar plantuml.jar -t svg quelle.txt

@startuml
title Bibliothek

skinparam component {
FontSize 16
FontName Courier
BorderColor blue
BackgroundColor aliceblue
ArrowFontName Impact
ArrowColor #FF6655
ArrowFontColor #777777
}

[Erfassen] as B1
[Ändern] as B2
[Suche] as B3
component  Buch
component [JDBC] as Comp
component [DB Manager] as DB

B1 ..>> Buch
B2 ..>> Buch
B3 ..>> Buch
Buch ..>> DB
DB ..> Comp

[Erfassen]
[Erfragen]
[Ausleihe]

Erfassen ..>> Ausleihe
Erfragen ..>> Ausleihe
Ausleihe ..>> DB
@enduml

Denkpause:

../../_images/schwerin-der-traum2.jpg
Schwerin: Nächtliche Erscheinung

Schweriner Museen: »Nächtliche Erscheinung« ein Gemälde (1650) von Jacob Jordaens (1593-1678)