Die Ubiquitous Language (deutsch etwa „allgegenwärtige Sprache“) ist im Domain-Driven Design die gemeinsame Sprache von Fachexperten und Entwicklern. Eric Evans prägte den Begriff in seinem 2003 erschienenen Buch „Domain-Driven Design“. Die zentrale Idee: Fachbegriffe werden überall einheitlich verwendet — in Gesprächen, Anforderungen, Dokumentation, Tests und im Quellcode selbst.
Warum eine gemeinsame Sprache?
Ohne gemeinsame Begriffe entstehen Missverständnisse: Der Fachexperte sagt „Auftrag stornieren“, der Entwickler implementiert „Bestellung löschen“ — und beide glauben, dasselbe zu meinen. Die Ubiquitous Language verhindert diese Übersetzungsfehler, indem sie ein Modell und eine Sprache koppelt. Jeder Begriff hat genau eine Bedeutung, und genau diese Bedeutung steckt auch im Code: Klassen, Methoden und Variablen heißen wie die Fachbegriffe.
Regeln für die Praxis
- Begriffe im Gespräch mit Fachexperten sammeln und konsequent verwenden.
- Fachbegriffe im Code spiegeln:
Order,OrderLine,cancelOrder()statt technischer Namen. - Mehrdeutige Begriffe auflösen — notfalls durch Abgrenzung in Bounded Contexts, in denen dieselben Wörter je Kontext unterschiedliche Bedeutung haben dürfen.
- Die Sprache lebt: Sie wird gemeinsam mit den Fachexperten gepflegt und verändert sich, wenn sich das Verständnis der Domäne vertieft.
Eine gute Ubiquitous Language entsteht im Event Storming oder in Domain-Modell-Workshops, bei denen Fachexperten und Entwickler die Geschäftsprozesse gemeinsam durchgehen. Die Ergebnisse fließen direkt in das Domänenmodell und in die objektorientierte Umsetzung ein.
Verwandte Grundlagen: Domain-Driven Design, Bounded Context, Event-Driven Architecture, Microservices.