Britain and America are two nations divided by a common language
(George Bernard Shaw / Oscar Wilde)
It could be said that the business and developers are two nations divided by a common language. If you listen to conversations between developers and the business guys they are writing code for, they seem to speak the same language, but often have entirely different meanings.
This disjoint is what the concept of the Ubiquitous Language (or UL) is intended to eliminate in Domain Driven Design.
The concept is simple, that developers and the business should share a common language, that both understand to mean the same things, and more importantly, that is set in business terminology, not technical terminology.
Developers have historically had a hard time with talking to the business – developers are by nature technical, and have a bad habit of letting their technical “geek” terms leak into their conversations. We are all guilty of it at the best of times.
The Ubiquitous Language in DDD is a negotiated language between the Domain Experts and the technical guys – but the rule is that the Domain Experts lead and the technical people follow. As the UL evolves, and this may take weeks or many months, the language becomes more and more refined.
Eric Evans has some good examples in his book of how the UL is drawn out of the conversations between the domain experts and the development team, so I won’t duplicate them here – suffice to say you should be listening to how your users and domain experts refer to things, and try and fit in with their language.
One thing to bear in mind here is that although the UL is drawn in the language of the business, it can also include things that might seem like technical terms.
A recent conversation on a DDD list discussed things like Paging and whether these belonged in the domain. Some people then decided that these were technical terms, and on their (IMO misunderstanding) reading of the book, they stated that words like Paging are technical terms and shouldn’t be in the UL
That assumption has two basic problems:
1) Users have adopted terms like Paging as their own. They know what Paging means … it is present in 90% of the applications and web pages they use. So Domain Experts adopt this language when expressing their requirements. They probably won’t use a term like Paging in regard to the domain, but they may well use it in their user stories, use cases or requirement documents. Whether this concept carries through to the domain is an implementation issue.
2) There are many technical terms that exist in the UL already, Eric listed them in the book. These are common pattern names, that the technical team introduce to try and help the Domain Experts formalise their concepts. So terms like Specification and Event may well appear in the UL.
The Ubiquitous Language is the foundation of Domain Driven Design, it is the basis on which your technical team can become part of the business, and work in their interests, rather than being see as “the geeks who sit in the corner and deliver buggy software” – don’t be two departments divided by a common language
Domain Driven Design: A Step by Step Guide
InfoQ Free eBook : Domain Driven Design Quickly
Domain-Driven Design: Tackling Complexity in the Heart of Software (Eric Evans)
02-09-2009 12:01 PM