Ubiquitous Language
Ubiquitous Language ist die gemeinsam gepflegte Sprache von Fachleuten und Entwicklung. Ihre Begriffe erscheinen konsistent in Gesprächen, Modellen, Tests und Code.
- Ein WortEin Begriff, ein Wort, überall gleich.
- Alle OrteGespräch, Ticket, Test und Code.
- Feste ZuordnungDeutscher Begriff entspricht einem englischen Bezeichner.
Einordnung
Warum das wichtig ist
Wenn Gespräch, Ticket, Test und Code dasselbe Wort nutzen, fallen Missverständnisse früh auf. Das Team legt einmal fest, wie deutsche Fachbegriffe zu englischen Bezeichnern passen, etwa Bestellung zu Order. Den Geltungsbereich einer Sprache behandelt der Baustein Bounded Context.
Dieser Baustein erklärt gemeinsame Fachbegriffe. Für den Geltungsbereich einer Sprache siehe Bounded Context.
Auf einen Blick · Eine Sprache an allen Orten
Ein Begriff, vier Orte
Das Shop-Team klärt die Wörter Bestellung, Reservierung, Autorisierung und Rechnung. Jeder Begriff erhält eine prüfbare Bedeutung im passenden Kontext.
So liest du das Bild
- Ein Wort Im gemeinsamen Zustand steht je Begriff dasselbe Wort an allen vier Orten.
- Alle Orte Die vier Karten; rot markiert, wo ein Ort abweicht, etwa Rechnung statt Bestellbestätigung.
- Feste Zuordnung Auf den Karten Test und Code: Bestellbestätigung wird OrderConfirmation, Reservierung Reservation.
BestellbestätigungNachricht, dass die Bestellung eingegangen ist; nicht die Rechnung.
- Gespräch: weicht ab
Die Rechnung für B-1042 ist raus.
- Ticket: passt zum BegriffAls Kundin erhalte ich nach dem Kauf eine Bestellbestätigung.
- Test: weicht ab
sends_invoice_after_order() - Code: weicht ab
invoiceService.sendInvoice(order)
3 von 4 Orten meinen Bestellbestätigung, sagen aber etwas anderes.
Glossar des Shops
| Begriff | Präzise Bedeutung | Gilt in | Nicht gemeint |
|---|---|---|---|
| Bestellung | Kaufauftrag mit stabiler Kennung | Bestellung | Warenkorb |
| Reservierung | zeitlich gebundener Bestand für Positionen | Lager | physischer Versand |
| Autorisierung | Anbieter bestätigt den Zahlungsrahmen | Zahlung | bereits eingegangener Geldbetrag |
| Rechnung | Beleg einer Forderung mit Rechnungsnummer | Rechnung | Bestellbestätigung |
Nutzen & Grenzen
Hilft, wenn
- Fachgespräche und Code benutzen unterschiedliche Begriffe für denselben Vorgang.
- Gleiche Wörter führen zu widersprüchlichen Erwartungen zwischen Fachbereichen.
Grenzen
- Ein globales Glossar kann kontextuelle Bedeutungen vermischen. Verankere die Sprache pro Bounded Context und beschreibe Übergänge gezielt.
- Umbenennen kostet. Im Code ist es ein Refactoring, bei veröffentlichten APIs und Datenbankspalten deutlich mehr. Innen konsequent umbenennen, an veröffentlichten Verträgen übersetzen; wo die Sprache gilt, klärt der Bounded Context.
In der Praxis
- Mehrdeutige Begriffe am Ablauf sammeln. Nutze Event Storming, um etwa „bestätigt“ im Kundenservice und im Zahlungsbereich zu vergleichen. Halte unterschiedliche Folgeregeln als konkrete Klärungsfragen fest.
- Bedeutung und Geltungsbereich festlegen. Beschreibe, welche Regel ein Begriff bezeichnet und wo er gilt. Verweise auf den zugehörigen Bounded Context, wenn andere Bereiche das Wort anders nutzen.
- Deutsche Fachsprache, englischer Code. Lege die Zuordnung einmal fest, etwa Bestellung zu Order, und halte sie im Glossar fest. Mische die Sprachen nicht: kein BestellungService neben OrderRepository.
- Begriffe in der Umsetzung verankern. Nutze die geklärten Namen in Operationen, Ereignissen und Tests. Die gemeinsame Modellarbeit aus Domain-Driven Design hält Sprache und Fachregel synchron.
Ausführliche Erklärung lesen
Fachleute und Entwickler schärfen Begriffe an konkreten Bedeutungen und Zuständen. Dieselben Wörter erscheinen in Gesprächen, fachlichen Kriterien, Tests und im Code, sodass Unklarheiten früh auffallen. Domain-Driven Design verankert diese Zusammenarbeit; Bounded Context begrenzt, wo ein Begriff dieselbe Bedeutung hat.
Eine gemeinsame Sprache ist kontextbezogen und entwickelt sich mit dem Verständnis weiter. Ein Glossar hält Definitionen fest; tägliche Anwendung und gemeinsame Klärung verankern sie im Sprachgebrauch. Wenn zwei Fachbereiche dasselbe Wort unterschiedlich verwenden, sollte die Unterscheidung sichtbar werden, statt künstlich vereinheitlicht zu werden.
Nutze Event Storming, um Begriffe an einem gemeinsamen Ablauf zu erkunden. Halte für „bestätigt“ fest, was Kundenservice und Zahlungsbereich jeweils meinen, und kläre die Bedeutungen mit den Fachrollen, bevor du Namen in Code und Tests verankerst.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Welche Orte weichen beim Begriff Bestellbestätigung im uneinheitlichen Zustand ab?
Lösung mit Begründung ansehen
Gespräch, Test und Code sprechen von der Rechnung. Nur das Ticket nutzt Bestellbestätigung.
AnwendenAuf eine neue Lage übertragen
Im Code heißt die Klasse ReservationService, im Ticket steht „Lagerplatz sichern“. Was machst du?
Lösung mit Begründung ansehen
Das Ticket auf den Glossarbegriff Reservierung umstellen. Gespräch und Ticket sagen dann Reservierung, Test und Code bleiben bei Reservation.
BewertenEine Alternative abwägen
Das Team will den Code komplett deutsch benennen und vorhandene API-Felder umbenennen. Wie bewertest du das?
Lösung mit Begründung ansehen
Vorteil: weniger Übersetzung im Kopf. Nachteil: Mischung mit englischen Bibliotheksnamen, und umbenannte API-Felder brechen Clients. Empfehlung: Zuordnung festlegen, intern einheitlich benennen, veröffentlichte Felder erst per Übersetzung ändern.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.
Quellen
- Martin Fowler · Ubiquitous Language (öffnet in neuem Tab)Verknüpft gemeinsame Fachsprache, Modell und Implementierung.
- Eric Evans · DDD Reference (öffnet in neuem Tab)Referenz des DDD-Autors zu strategischen und taktischen Mustern.
- arc42 · Glossar (öffnet in neuem Tab)Fachbegriffe für ein gemeinsames Verständnis definieren.
- EventStorming · Alberto Brandolini (öffnet in neuem Tab)Offizielle Einführung in die gemeinsame Erkundung fachlicher Abläufe und komplexer Domänen.