$K(Systemarchitektur) $KK(Einführung) $KKK(Womit beschäftigt sich ein Systemarchitekt?) Kommunikation mit externen Systemen * Welche externen Systeme sind angeschlossen? * Mit welcher Technologie sind diese Systeme verbunden? * Wie gross sind die Datenströme zwischen diesen Komponenten? * In welcher Richtung erfolgt die Kommunikation? * Wann erfolgt die Kommunikation zwischen den Systemen und wer stosst die Kommunikation an? * Wie werden die Daten zwischen den Systemen synchronisiert? * Was passiert bei Ausfall eines Systems bzw. Kommunikationskanal? Kommunikation der Komponenten innerhalb des Systems Dieselben Fragen, die die Kommunikation mit den externen Systemen betreffen, müssen auch für die Komponenten innerhalb des Systems beantwortet werden. Eine Komponente ist nicht auf mehreren Servern verteilt. Eine Komponente besteht aus mehreren Paketen und diese beinhalten Klassen. $KKK(Was zeichnet eine gute Systemarchitektur aus?) Am besten gefällt mir eine Regel die ich von Frank Buschmann während der OOP Messe in München gehört habe. Den genauen Wortlaut habe ich nicht mehr in Erinnerung aber sinngemaess war es folgendes $R(Regel) Jeder Programmierer sollte innerhalb weniger Minuten die Systemarchitektur aufzeichnen können. $R\ Ein guter Systemarchitekt achtet auf Abhängigkeiten zwischen den Systemen bzw. Komponenten. Dabei helfen die Begriffe Kopplung und Kohäsion. $R(Definition>begriff=Kohäsion Kopplung) Kohäsion Innerer Zusammenhalt zwischen den Merkmalen einer Entwurfs- oder Konstruktionseinheit. Das Prinzip der maximalen Kohäsion fordert eine möglichst hohe Bindungsstärke innerhalb einer Entwurfs- oder Konstruktionseinheit. Kopplung: Zusammenhang zwischen unterschiedlichen Entwurfs- oder Konstruktionseinheiten. Minimale Kopplung zielt auf die Reduktion der Bindung zwischen den Einheiten, insbesondere die Vermeidung zyklischer Benutzung. $R\ Zwischen den Komponenten (Paketen) sollte eine geringe Kopplung sein, d.h. Komponenten (bzw. Pakete) sind weitgehend unabhängig voneinander. Dies bedeudet einer Änderung an einer Komponente (bzw. Pakete) wirkt sich wahrscheinlich nicht auf eine andere Komponente (Paket) aus. Zwei Elemente die eine hohe Kohäsion aufweisen, sollen in derselben Komponente (Paket) sein.