- Stabilität - die Analogie
- Stabilität - die Übertragung auf Software-Elemente
- Stabilität - eine Metrik-Definition
- Stabilität - Kritik der Instability-Metrik
- Abstraktheit - das Konzept
- Abstraktheit - die Metrik
- Abstraktheit - abstrakte Klassen und Interfaces
- Abstraktheit - was bleibt übrig von den Abstraktionen?
Name, Kurzform | Stable Abstractions Prinzip |
Synonyme | Stable Abstractions Principle, SAP |
Beschreibung | „Eine Komponente sollte so abstrakt sein, wie sie stabil ist.“ [Martin2002] |
Erläuterung |
Die Stabilität einer Komponente ist in der Regel gegeben. Unser Handlungsspielraum betrifft also die Abstraktheit:
Die
Bedeutung des Prinzips lässt sich mittels des folgenden
Diagrammtyps (engl. distance
chart)
veranschaulichen, der Instabilität und Abstraktheit in ein
Verhältnis setzt.
(Dieses Diagramm ohne konkrete Datenpunkte eines Projekts wurde mit dem Werkzeug STAN erzeugt.)
Befinden sich die Eigenschaften Instablität und Abstraktheit auf der eingezeichneten Ideallinie (engl. Main Sequence), so ist nach Martin die Abstraktheit der Stabilität angemessen (und umgekehrt).
Wenn
Instabilität und Abstraktheit tatsächlich als Werte zwischen 0
und 1 gemessen werden können (siehe Instability-Metrik und Abstraktheits-Metrik), so lässt sich auch der Grad der
Abweichung von der Ideallinie messen. Martin nennt diese
abgeleitete Metrik Distanz.
Ihre Berechnung erfolgt nach der folgenden Formel:
Das
Prinzip besagt, dass das Verhältnis zwischen Stabilität und
Abstraktheit ungefähr im roten Bereich des Distanzdiagramms
liegen sollte:
Martin
erkennt selbst, dass hierbei insbesondere der mittlere
Diagrammbereich problematisch ist. Er schreibt:
Auch
dies ließe sich als Funktion darstellen. Die wünschenswerten
Bereiche sind hier wieder rot eingefärbt:
In seinem Blogartikel Alternative distance function for the Stable Abstractions Principle gibt Tim Wood diese Funktion wie folgt an:
Mir ist allerdings bislang kein Analysewerkzeug bekannt, das diese Formel umsetzt. |
Beispiel(e) |
Die
positiven Beispiele, die Martin selbst angibt, zeigen leider nur
einzelne Klassen an Stelle von Komponenten. Sie taugen daher
nicht, um das Prinzip zu plausibilisieren.
Beispiel eines maximal stabilen Packages:
|
Historie |
Die
Historie des Stable Abstractions Prinzips ist eng mit der des
Stable Dependencies Prinzips verbunden.
|
Art des Prinzips |
|
Grad der formalen Spezifikation | Analog zum Stable Dependencies Prinzip. |
Vorteile |
|
Nachteile |
|
Übergeordnete Prinzipien | |
Abgleitete Prinzipien | - |
Qualitätsmerkmale | (+) Änderbarkeit |
Quellen
[Martin1994] - OO Design Quality Metrics, Robert C. Martin (1994)
[Martin2002] - Agile Principles, Patterns, and Practices in C#, Robert C. Martin (2002)