One of the guidelines around building ubiquitous languages is that there should be one per bounded context.
In a domain that has more than one bounded context, and therefore more than one ubiquitous language, how should you deal with vocabulary that is different in each context, but related to each other with respect to the entire domain?
For example, objects in our domain contain a property that dictates the object's identity, but constraints within each bounded context restrict ubiquity in both implementations, and these could not easily be circumvented...
// Implemented in one bounded context
object Customer {
id: guid
}
// Implemented in another bounded context
object Customer implements Identity {
identity: Identifier
}
Note that id
and identity
in each bounded context refer to the same thing, but their names and data types differ.
How do I achieve ubiquity across these implementations when referring to this from the perspective of the domain as a whole, and is there a suitable method for translating between the two?