| home | suche | kontakt/johner | institut | hinweise studierende | tech-docs | blog | mindmailer |
![]() |
Exkurs Komponentenorientierung
Wie schafft man Komponentenorientierung, wie zerstört man sie?
schaffen | zerstören |
|---|---|
wenige, schmale Schnittstellen | alle Methoden und Klassen public setzen |
"weak coupling" | zyklische Abhängigkeiten der Komponenten (können mit JDepend, und Structure101 erkannt werden) |
Interfaces | Vererbung über Komponentengrenzen hinweg |
Viele öffentliche Methoden | |
Öffentliche Methoden mit vielen Übergabeparametern | |
Fehler über Komponentengrenzen hinweg werfen. |
Coupling and Cohesion
Coupling = Die Kopplung, Ankopplung.
Cohesion = Der Zusammenhalt.
Eine gute Architektur:
- Minimiert die Kopplung (coupling) zwischen Komponenten.
- Ziel: Komponenten müssen wenig voneinander wissen, um miteinander kommunizieren zu können.
- Geringe Kopplung erleicht zukünftige Änderungen.
- Maximiert den Zusammenhalt (cohesion) innerhalb jeder Komponente
- Ziel: Die Inhalte jeder Komponenten stehen in starker Abhängigkeit zueinander.
- Ein hoher Zusammenhalt innerhalb einer Komponente, macht es einfacher eine Komponente zu verstehen.
- Sie weist keine zyklischen Abhängigkeiten auf.
Ein Beispiel für gute Architektur ist die Schichtenarchitektur.
Innerhalb jeder Schicht gibt es einen hohen Zusammenhalt (cohesion) zwischen den Objekten und zwischen jeder Schicht herrscht eine geringe Kopplung (coupling). Die Schichten sind austauschbar und müssen nicht viel voneinander wissen, um miteinander kommunizieren zu können.
Beispielgrafik für gute Architektur:
Quelle (Creative Commons License):
http://www.cs.toronto.edu/~sme/CSC302/notes/04-package-diagrams.pdf
Abstraktheit und Instabilität
Der Begriff Abstraktheit in Zusammenhang mit Software-Architektur definiert das Verhältnis abstrakter Klassen zu Gesamtzahl der Klassen eines Packages.
Die Instabilität gibt in diesem Zusammenhang an, von wie vielen anderen Packages ein einzelnes Package abhängt
Instabil bedeutet also hier soviel wie: leicht änderbar (Änderungen im Package sind einfach durchzuführen, da es wenige oder keine anderen Teile verwenden)
Stabil bedeutet widerum: schwer änderbar (Änderungen im Package sind schwerer durchzuführen, da es viele andere Teile verwenden)
Abstraktheit und Instabilität werden auf Diagrammen in Beziehung gesetzt, und sind eine Software-Metrik.
Softwaretools wie JDepend können solche Diagramme erstellen. Je näher sich ein Punkt an der Winkelhalbierenden befindet, desto besser ist die Architektur.
