KonzeptKapitel I · Domäne · Baustein 3 von 7

Bounded Context

Ein Bounded Context legt fest, wo ein fachliches Modell und seine Sprache konsistent gelten. An seiner Grenze werden Bedeutungen ausdrücklich übersetzt oder zugeordnet.

  1. Eigenes ModellJeder Kontext definiert seine Begriffe selbst.
  2. GrenzeSie legt fest, wo ein Modell gilt.
  3. ÜbersetzungAn der Grenze wird Bedeutung zugeordnet.

Einordnung

Warum das wichtig ist

Gleiche Wörter bedeuten im Shop nicht überall dasselbe. Ein Bounded Context grenzt ein Modell samt Sprache ab. Er ist keine Subdomäne: Die gehört zum Problemraum, er zum Lösungsraum. Er ist auch kein Microservice, im Shop ein Modul im Monolithen. Wie Kontexte zusammenhängen, zeigt der Baustein Context Map.

Dieser Baustein erklärt fachliche Modellgrenzen. Für technische Grenzen innerhalb derselben Anwendung siehe Modulgrenzen.

Auf einen Blick · Zwei Kontexte, eine Übersetzung

Jeder Kontext definiert seine Begriffe selbst; an der Grenze ordnet eine Übersetzung die Bedeutungen einander zu.
Shop-Beispiel · Modellteilung

Ein Modell oder zwei?

Bestellung und Rechnung sind zwei Kontexte im Shop. Beide kennen einen Betrag und einen Status, verwenden diese Begriffe jedoch für unterschiedliche fachliche Zwecke.

So liest du das Bild

  1. Eigenes Modell Bestellung führt bestellsumme, Rechnung rechnungsbetrag; beide Felder tragen nur eine Bedeutung.
  2. Grenze Die Grenze trennt Order und Invoice, statt alle Felder in einer Klasse zu sammeln.
  3. Übersetzung Aus „Bestellung B-1042 bestätigt“ entsteht „Rechnung R-882 offen“ mit zwei Zuordnungen.

ein gemeinsames Modellclass Order

  • nummer: StringKonflikt: B-1042 oder R-882?
  • status: angelegt | bestätigt | storniert | offen | gestellt | bezahltKonflikt: Kaufauftrag und Forderung teilen ein Feld
  • betrag: MoneyKonflikt: Bestellsumme oder Rechnungsbetrag?
  • positionen: Liste von Positionen
  • lieferadresse: Adresse
  • rechnungsadresse: Adresse

Ein Status und ein Betrag müssen zwei Bedeutungen tragen; jede Änderung an einer Seite trifft die andere.

Wechsle zwischen einem gemeinsamen Modell und zwei Bounded Contexts; rot markiert die Felder, deren Bedeutung sich vermischt.

Nutzen & Grenzen

Hilft, wenn

  • Ein Begriff wird in unterschiedlichen Bereichen mit eigenen Regeln verwendet.
  • Ein gemeinsames Modell sammelt widersprüchliche Felder oder Sonderbedingungen.

Grenzen

  • Zu viele, zu kleine Kontexte: Jede Grenze braucht Übersetzung und Abstimmung. Teile erst, wenn Bedeutungen wirklich auseinanderlaufen; die Context Map zeigt den Aufwand.
  • Ein Kontext ist nicht automatisch ein eigener Dienst. Im Shop sind Bestellung und Rechnung Module im modularen Monolithen; den Schnitt prüfst du mit Modulgrenzen.

In der Praxis

  1. Grenzsignale am Ablauf erkunden. Nutze Event Storming, um mit Fachrollen Ereignisfolgen, Bedeutungswechsel und zusammengehörige Regeln zu untersuchen. Im Shop kann „Status“ bei Bestellung und Rechnung unterschiedliche Modelle anzeigen.
  2. Begriffe und Regeln pro Bereich erfassen. Sammle, wie Fachrollen Konzepte verwenden und welche Zustände gelten. Das Ergebnis macht semantische Unterschiede konkret.
  3. Geltungsbereich und Eigentümer festlegen. Benenne, welche Regeln das Modell umfasst und welches Team sie pflegt. Ordne die technische Form erst danach entlang geeigneter Modulgrenzen.
  4. Übergänge zwischen Kontexten gestalten. Definiere, welche Daten geteilt oder übersetzt werden und wer den Vertrag verantwortet. Eine Context Map hält Richtung und Zusammenarbeit sichtbar.
Ausführliche Erklärung lesen

Ein Begriff kann in verschiedenen Fachbereichen unterschiedliche Regeln und Daten tragen. Innerhalb eines Bounded Contexts gilt ein Modell mit einer konsistenten Sprache und klarer Verantwortung. An einer Kontextgrenze werden benötigte Informationen über Verträge oder Übersetzungen weitergegeben. Domain-Driven Design nutzt diese Abgrenzung strategisch; eine Context Map beschreibt die Beziehungen zwischen Kontexten.

Die fachliche Grenze benennt den Modellbereich; die technische Bereitstellung folgt einer gesonderten Betriebsentscheidung. Ein Kontext kann ein Modul, mehrere Module oder einen eigenständigen Dienst umfassen. Die technische Form folgt weiteren Überlegungen wie Teamverantwortung, Skalierung und Betrieb. Zu viele kleinteilige Kontexte erzeugen Übersetzungs- und Abstimmungsaufwand, während ein einziges globales Modell Bedeutungsunterschiede verwischt.

Eine Subdomäne beschreibt einen Teil des Fachgebiets und gehört zum Problemraum. Ein Bounded Context ist die Modellgrenze, die du dafür wählst, und gehört zum Lösungsraum. Im Shop decken sich beide oft, etwa bei der Rechnung, sie müssen es aber nicht. Die strategische Einordnung beschreibt Domain-Driven Design.

Ereignisfolgen und unterschiedliche Begriffe liefern Hinweise auf mögliche Grenzen, die das Team mit Fachleuten validiert. Für tragfähige Grenzen entscheidend sind zusammengehörige Regeln, Sprache, Verantwortung und Änderungszusammenhänge.

Selbst prüfen

Teste dich in drei Stufen

  1. AblesenIm Bild nachsehen

    Welche Felder markiert das Bild im gemeinsamen Modell rot, und warum?

    Lösung mit Begründung ansehen

    nummer, status und betrag. Sie können je nach Kontext Bestellung oder Rechnung meinen und sind deshalb mehrdeutig.

  2. AnwendenAuf eine neue Lage übertragen

    Ein Wort wie „Betrag“ bedeutet in zwei Bereichen etwas anderes. Woran erkennst du, ob ein eigener Kontext sinnvoll ist?

    Lösung mit Begründung ansehen

    Wenn auch Regeln oder Verantwortung abweichen, etwa Bestellsumme beim Kauf und Rechnungsbetrag in der Rechnung, lohnt sich eine Grenze mit Übersetzung.

  3. BewertenEine Alternative abwägen

    Das Team will jeden Kontext sofort als Microservice ausrollen. Wie bewertest du das?

    Lösung mit Begründung ansehen

    Vorteil: klare technische Trennung. Nachteil: Betrieb und Netzwerkaufwand kommen hinzu, obwohl ein Modul im Monolithen die Grenze oft ausreichend trägt. Empfehlung: erst Modulgrenze, Dienst nur bei konkretem Bedarf.

Weiter im Lernpfad

Als Nächstes in Domänenmodellierung: Entities & Value Objects.