Information Hiding
Die Grenze folgt den wahrscheinlichen Änderungsgründen und schützt interne Repräsentation.
- EntscheidungKann sich intern ändern.
- VertragMacht Fähigkeiten verfügbar.
- AufruferNutzt nur den Vertrag.
Einordnung
Warum das wichtig ist
Änderbare Entwurfsentscheidungen hinter einem schmalen Modulvertrag verbergen.
Entwurfsprinzip für fachliche und technische Modulgrenzen.
Vertrag und interne Entscheidung
Der Beispielshop bleibt ein modularer Monolith mit sieben Modulen und gemeinsamer Auslieferung.
So liest du das Bild
- Entscheidung Kapsel
- Vertrag Schnittstelle
- Aufrufer Abhängigkeit
| Aspekt | Sichtbarkeit | Änderungsort |
|---|---|---|
| Schnittstelle | Fachliche Operation | Vertrag bleibt stabil |
| Implementierung | Interne Struktur | Modul kann sie ändern |
Nutzen & Grenzen
Hilft, wenn
- Die Entscheidung betrifft eine interne Repräsentation, die sich voraussichtlich ändern kann.
- Mehrere Aufrufer benötigen dieselbe fachliche Fähigkeit, nicht denselben Speicherzugriff.
Grenzen
- Eine Schnittstelle verbirgt eine Entscheidung nur, wenn sie keine internen Details durchreicht.
- Zu viele kleine Grenzen erzeugen zusätzlichen Koordinationsaufwand und erschweren Änderungen.
In der Praxis
- Liste die Entscheidungen des Moduls auf und markiere diejenigen, die sich aus fachlichen oder technischen Gründen ändern könnten.
- Entwirf den kleinsten Vertrag, über den andere Module eine Fähigkeit nutzen können; vergleiche ihn mit den tatsächlich nötigen Aufruferfragen.
- Ändere eine interne Repräsentation probeweise und verfolge, welche Aufrufer Anpassungen benötigen. Ziehe die Grenze dort nach, wo unnötige Abhängigkeiten sichtbar werden.
Ausführliche Erklärung lesen
Information Hiding stammt aus Parnas’ Modulkriterien: Zerlege ein System entlang schwieriger oder veränderlicher Entwurfsentscheidungen. Eine Schnittstelle beschreibt die Leistung, die Aufrufer benötigen; interne Datenstrukturen und Abläufe bleiben innerhalb des Moduls. So kann eine Implementierung wechseln, solange ihr Vertrag und beobachtbares Verhalten erhalten bleiben.
Eine Änderung an der Tabelle bleibt innerhalb des Bestellmoduls. Modulgrenzen ordnet die Zuständigkeit ein; Dependency Inversion erklärt die Richtung stabiler Verträge.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Welche Seite der Grenze enthält die veränderliche Tabellenstruktur?
Lösung mit Begründung ansehen
Die interne Implementierung des Bestellmoduls.
AnwendenAuf eine neue Lage übertragen
Wie kann Zahlung eine Bestellung bestätigen lassen?
Lösung mit Begründung ansehen
Über eine fachliche Operation des Bestellmoduls statt über dessen Tabellen.
BewertenEine Alternative abwägen
Woran erkennst du, dass ein Vertrag interne Entscheidungen leakt?
Lösung mit Begründung ansehen
Aufrufer müssen Speicherfelder oder interne Abläufe kennen, um die Fähigkeit zu nutzen.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.
Quellen
- Parnas · On the Criteria to Be Used in Decomposing Systems into Modules (öffnet in neuem Tab)Primärquelle zu Modulkriterien und verborgenen Entwurfsentscheidungen.
- Parnas · Designing Software for Ease of Extension and Contraction (öffnet in neuem Tab)Primärquelle zur Änderung modularer Entwürfe.
- Leavens & Müller · Information Hiding and Visibility in Interface Specifications (öffnet in neuem Tab)Primärquelle zu verborgenen Implementierungen und sichtbaren Vertragsspezifikationen.