home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Exkurs Komponentenorientierung

Wie schafft man Komponentenorientierung, wie zerstört man sie?

schaffenzerstören
wenige, schmale Schnittstellenalle 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.


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.