Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Kopplung und Kohäsion im Softwareentwurf

Nach dieser Lektion: Ich kann einen Entwurf nach Kopplung und Kohäsion beurteilen.

Lektion, 60 Min.8 BefehlePostgreSQL-und-PostgREST-Lab: eine Datenbank und eine REST-API im Browser

Kopplung und Kohäsion messen die Güte eines Entwurfs

Kopplung sagt, wie stark Teile eines Systems voneinander abhängen. Kohäsion sagt, wie gut die Teile eines einzelnen Bausteins zusammengehören.

Ein guter Entwurf hat lose Kopplung und hohe Kohäsion. Dann lässt sich ein Teil ändern, ohne dass alle anderen brechen.

Am Ende dieser Lektion

Notiz

Ich kann einen Entwurf nach Kopplung und Kohäsion beurteilen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Bausteinein Teil eines Systems mit einer AufgabeAusleihe
Kopplungwie stark ein Baustein von anderen abhängt
Kohäsionwie eng die Teile eines Bausteins zusammengehören
Abhängigkeitein Baustein nutzt einen anderen
Schnittstelledas, was ein Baustein nach außen anbietet

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Lose Kopplung hält Änderungen klein

Wenn Baustein A viele Details von Baustein B kennt, ist A eng an B gekoppelt. Ändert sich B, muss A mitgeändert werden.

Lose Kopplung heißt: A kennt nur die Schnittstelle von B. Wie B innen arbeitet, ist A egal.

Im Lab bricht eine Umbenennung den Aufruf

Die Web-API kennt die Spaltennamen der Tabelle. Wer eine Spalte umbenennt, bricht jeden Aufruf, der den alten Namen nutzt.

Sie legen die Tabelle leihgaben an, fragen die Spalte geraet ab, benennen sie um und fragen noch einmal.

psql das Passwort geben

Befehl
export PGPASSWORD=shop

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Von vorn beginnen

Befehl
psql -h db -U shop -c "drop table if exists leihgaben"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tabelle leihgaben anlegen

Befehl
psql -h db -U shop -c "create table leihgaben (id serial primary key, geraet text not null, person text not null)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der API sagen, dass sie neu schaut

Befehl
psql -h db -U shop -c "notify pgrst, 'reload schema'"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Spalte geraet abfragen

Befehl
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/leihgaben?select=geraet"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Spalte umbenennen

Befehl
psql -h db -U shop -c "alter table leihgaben rename column geraet to geraet_name"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der API wieder sagen, dass sie neu schaut

Befehl
psql -h db -U shop -c "notify pgrst, 'reload schema'"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den alten Namen noch einmal abfragen

Befehl
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/leihgaben?select=geraet"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: was die Umbenennung zeigt

SchrittCodeDeutung
Abfrage vor der Umbenennung200Die Spalte geraet gibt es
Abfrage nach der Umbenennung400Der alte Name bricht, die Kopplung ist eng

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Hohe Kohäsion heißt: ein Baustein, eine Aufgabe

Ein Baustein hat hohe Kohäsion, wenn alles in ihm zu einer Aufgabe gehört. Ein Baustein Ausleihe, der auch Rechnungen druckt und Mails sendet, hat niedrige Kohäsion.

Solche Bausteine ändern sich aus vielen Gründen. Teilen Sie sie, bis jeder einen Grund zur Änderung hat.

Ein Beispiel: drei Entwürfe im Vergleich

EntwurfKopplungKohäsion
Ein großer Baustein für allesGering, aber alles hängt darin zusammenNiedrig
Bausteine, die alle Details voneinander kennenEngHoch
Kleine Bausteine mit klaren SchnittstellenLoseHoch

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, keine Abhängigkeit sei das Ziel. Ohne Abhängigkeit tut ein System nichts. Das Ziel sind wenige, klare Abhängigkeiten, die über eine Schnittstelle laufen und nicht über Details.

Über dieses Lab und seinen Quellcode: PostgreSQL-und-PostgREST-Lab: eine Datenbank und eine REST-API im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.