Systementwurf

Systementwurf allgemein

Auswirkungen von Entscheidungen verstehen, z.B. Virtualisierung und Cloud-Infrasturkturen, Entwurfsmuster...

→ mit Module | Kohäsion (cohesion) | Kopplung (coupling

Entwurfsziele festlegen: Einschränkung möglicher Alternativen im Entwurf ermöglichen Entwurfsentscheidungen (Quality Tree)
durch Nichtfunktionale Anforderungen | Termine mit dem Auftraggeber | Studium der Anwendungsdomäne

Subsysteme definieren

Softwarearchitektur – Festlegung der Organisation eines Softwaresystems fest durch Komponenten und Verbindungen

→ Spezifikation der wesentlichen Strukturen eines Anwendungssystems, dh. der Komponenten und Schnittstellen (Bausteinsicht)

Fachliche Architektur – Architektur des Softwaresystems aus fachlicher Sicht, d.h. aus Sicht der Fachabteilung
Technische Architektur – Realisierung der logischen Komponenten auf der Grundlage der technischen Infrastruktur

image-1664362849795.png

image-1664362960754.png

 

 

 

 

 

 


Architekturmuster – Lösungsansatz, der für Element der Architektur durchgängig und ausnahmslos angewandt wird 

Beispiele: Datenzentrierte Architektur | Schichtenarchitektur | Ereignisbasierte Architektur | Service-orientierte Architektur

Datenzentriete Architektur: Komponenten kommunizieren über eine Datenbankimage-1664363729890.png
→Etablierung eines einheitlichen Datenmodells ist organisatorisch und technisch höchst anspruchsvoll

Schichtenarchitektur: Komponenten mit Zusammenhang werden einer Schicht zugewiesen.image-1664364054648.png
Komponenten einer Schicht dürfen nur die Komponenten dieser und der Schicht nutzen
Aufrufe passieren Schichten von oben nach unten.
Ergebnisse werden von unten nach oben durchgereicht.


Verteilung – Festlegung, auf welchen Rechnern die Komponenten einer verteilten Anwendung installiert werden

Datenhaltung | Geschäftslogik | Ergebnisdarstellung | verschiedene Architektueren

Ein-Ebenen-Architektur: Komponenten der Anwendung werden auf einem Rechner installiert. (Zentralrechner) (ERP-Systeme)
Zwei-Ebenen-Architektur: Komponenten der Anwendung werden auf zwei Rechnern installiert (Client und Server) (Datenbank)
Drei-Ebenen-Architektur: Komponenten auf drei Rechnern (Datenbankserver, Applikationsserver, Client) (ERP-Systeme)
Mehrebenen-Architektur: mehrere Rechnern (Datenbankserver, Applikationsserver, Websever, Client-Rechner) (Onlineshops)

Zwei-Ebenen-Architekturimage-1664364402204.png

 

Wann ist ein Systementwurf gut?

Korrektheit

Ein Systementwurf ist korrekt, wenn das Analysemodell dem Systementwurf zugeordnet werden kann.

Kann jedes Subsystem auf eine funktionale oder nicht-funktionale Anforderung zurückverfolgt werden?
Kann jedes Entwurfsziel auf eine nicht-funktionale Anforderung zurückverfolgt werden?
Gibt es für jeden Akteur eine Zugangskontrolle?


Vollständigkeit

Ein Systementwurf ist vollständig, wenn jede Anforderung für den Systementwurf berücksichtigt wird.

Wurde das Anwendungsfalldiagramm verwendet, um fehlende Funktionen im Systementwurf zu entdecken?
Wurden alle Anwendungsfälle jeweils einem Kontrollobjekt zugewiesen?
Wurden alle Aspekte des Systementwurfs (Plattform, Datenspeicherung, Zugangskontrolle, Komponenten) behandelt?
Sind alle Subsysteme definiert?


Konsistenz

Ein Systementwurf ist konsistent, wenn er keine Widersprüche in sich trägt.

Sind gegenüberstehende Entwurfsziele priorisiert?
Verletzt ein Entwurfsentscheidung eine nicht-funktionale Anforderung?


Implementierbarkeit

Ein Systementwurf ist realistisch, wenn das System implementiert werden kann

Sind Leistungs- und Zuverlässigkeitsanforderungen im Rahmen der zerlegung in Subsysteme überprüft?
Können Probleme bei nebenläufigen Zugriff auf Objekte oder Subsysteme ausgeschlossen werden ( Deadlocks)?


Lesbarkeit

Ein Systementwurf ist lesbar, wenn nicht am Systementwurf beteiligte Entwickler den Entwurf verstehen können:

Sind die Namen der Subsysteme (fachlich) nachvollziehbar?


Entwurfsentscheidungen als Sensitivity Points, Trade-offs oder Risiken einordnen. 

Paketdiagramme

Dienen der Gliederung eines Gesamtmodells in kleinere, überschaubare und miteinander interagierende Einheiten.

PaketBenennung einer Gruppe von Elementen, die semantisch verknüpft sind und sich zusammen ändern können.

Elemente eines package können innerhalb oder außerhalb des package (mittels Zeichen) dargestellt werden.
Elemente eines package können öffentlich oder privat sein.

Pakete sind Zusammenfassungen von Elementen beliebigen Typs
→ Einzelne Modellelemente (Klasse, Akteur, etc.)
→ Teilmodelle (Klassendiagramm, Aktivitätsdiagramm, etc.)

Elementimporte erlauben das direkte Referenzieren eines Elements über seinen Namen.

Paketimporte erlauben das direkte Referenzieren mehrerer Elemente über ihren Namen.

Öffentlich (engl. public): <<import>> (optional, da Standardwert)image-1664369152011.png
Das importierte Element wird dem Namespace hinzugefügt und ist auch außerhalb des Namespace sichtbar.

Privat (engl. private): <<access>>
Das importierte Element wird ausschließlich dem Namespace hinzugefügt


image-1664369494973.png Paketzusammenführung- Erweiterung eines Pakets durch den Inhalt eines anderen Pakets

Modell - Paket, das die Abstraktion eines gesamten Systems darstellt.


Das Paket soll so strukturiert sein, dass es ...
  • den Leser durch das Modell führt,
  • in sich abgeschlossenen Themenbereich enthält,
  • logisch zusammengehörende Klassen enthält,
  • eine wohldefinierte Schnittstelle zur Umwelt enthält.
Dabei soll die Paket-Schnittstelle ...
  • Vererbungsstrukturen in horizontaler Richtung schneiden 
  • keine Aggregation durchtrennen und
  • wenige Assoziationen enthalten

image-1664370220461.png

1. Die zu Anwendungsfall Elemente sollten zum Subsystem gehören.
2. Elemente, die zwischen Subsystemen Daten darstellen, sollten in
einem separaten Subsystem untergebracht werden.
3. wenig Assoziationen zwischen Subsystemen → Lose Kopplung
4. Elemente eines Subsystems sollten in funktionalen Zusammenhang
stehen → Hohe Kohäsion

Kopplung - Anzahl der Abhängigkeiten zwischen Subsystemen

Kohäsion - Anzahl der Abhängigkeiten innerhalb eines Subsystems

 

UML Komponentendiagramme

Modellierung von Komponenten, deren bereitgestellte und benötigte Schnittstellen, Ports und Beziehungen zwischen ihnen

image-1664370539260.pngLogische Komponenten (z.B. Geschäftskomponenten) image-1664370591465.png
Physische Komponenten (Programme, Maven-Packages)

Realisieren interne Bestandteile (z.B. Klassen) eine Komponente, können diese innerhalb Komponente in einem separaten Abschnitt ( <realization> compartment) notiert werden


Schnittstellenimage-1664371334047.pngimage-1664371345792.png
Bereitgestellte Schnittstelle wird durch die Komponente ealisiert.
Benötigte Schnittstelle definiert durch Verwendungsabhängigkeit ( <use> dependency) .


Ports

Über Port kann Element mit Umgebung, mit anderen Objekten oder mit seinen internen Bestandteilen kommunizieren.

→ Standardsichtbarkeit: öffentlich (public)image-1664371510168.png
→ Angabe von Multiplizitäten optional, z.B. [1..6]
→ Simple port: Port mit nur einer Schnittstelle


Assembly Connectorimage-1664371630945.png

Verbindung zwischen min. zwei Komponenten, die Dienstbereitstellung und -nutzung zwischen Komponenten darstellt.


Delegationskonnectorimage-1664371817624.png

Verbindung eines externen Ports bzw. Schnittstelle einer Komponente mit ihren internen Bestandteilen


Komponenten sind Paketen ähnlich: Sie definieren Grenzen und gruppieren und gliedern Modellelemente

Pakete: Logische Sicht auf Codestruktur zur Entwicklungszeit | Komponenten: Physische Sicht zur Laufzeit

 

UML Verteilungsdiagramme

Verteilungsdiagramme bieten Sichten auf ein Anwendungssystem zur Laufzeit
image-1664381501437.png
Zeigen, welche Kommunikationsbeziehungen zwischen Komponenten, Prozessen, Objekten 

Knoten - Ziel der Verteilung für Laufzeitobjekte und sonstige Artefakte (evtl. hierarisch)

→ datenverarbeitenden Anlagen (Prozessoren, Computer) einer Systemarchitektur modellieren 

Knoten: Geräte

image-1664381845931.png

Eine physische Rechenressource, auf der Artefakte zur Ausführung bereitgestellt werden können

Standard-Stereotypen: device, application server, client, mobile

Spezielle Knoten: Ausführungsumgebungimage-1664382461362.png

Software für Typen von Komponenten, die darauf als ausführbare Artefakte bereitgestellt werden

Standard-Stereotyp: executionEnviroment, OS, workflow, web browser


Kommunikationsverbindungenimage-1664382844120.png

Zwischen Knoten eines Systems können Kommunikationsbeziehungen bestehen

Zwischen Geräten: physische Verbindungen, z.B. <ethernet>
Zwischen Ausführungsumgebungen: Kommunikationsprotokolle, z.B. <protocol> TCP/IP


Artefakte und Laufzeitobjekteimage-1664383029700.png

Auf Knoten können Laufzeitobjekte und sonstige Artefakte bereitgestellt und ausgeführt werden.

Standard-Stereotyp: <artefact, file, ...>
→ Konkrete physische Darstellung eines oder mehrerer Modellelemente durch ein Artefakt
→ Artefakte können von anderen Artefakten abhängig sein


Deploymentimage-1664383642973.png

Bereitstellung (engl. deployment) - Zuordnung Artefakts zu einem Verteilungsziel

→ Darstellung als Abhängigkeit (dependency) mit Stereotyp <deploy>
→ Kann auch als in einem Knoten enthalten dargestellt werden Kann auch auf Instanzebene dargestellt werden


Relevante Fragestellungen:
→ Welche Kommunikationsbeziehungen bestehen zwischen diesen Komponenten, Prozessen und Objekten?
→ Arten der Modellierung: Können auf Typebene (Spezifikationsebene) und auf Instanzebene verwendet werden!