10

A core part of Domain Driven Design is the consistent use of a ubiquitous language across the system - in conversations, code, database schema, UI, tests, etc.

I'm involved in a project in which there is a well-established domain language already, defined by an international standards organisation.

However, the work we're doing is for a public web site, and the 'correct' terms for the domain aren't necessarily how the public typically use and understand them.

The compromise we're using at the moment is to use the 'official' terms everywhere, except for in our acceptance criteria which refer to UI components, where we use the informal names.

Does this seem like a reasonable approach?

2 Answers2

7

Yes, that seems reasonable. If the intended audience does not understand the terms of your language or misinterprets them, then the usability for the enduser takes precedence.

A program or content that a typical user does not understand is of little value. More so, if you only want to present them a simplified tip of an iceberg because they are not and never will be domain experts.

Normally, when you talk about the domain during development then everyone understands the language because it is accurate and all people are within the domain. But if business value is created by communication of content to outsiders of the domain, then do this as simple as possible. Use wordings and languages which are the least likely to be misunderstood and use them in the UI.

Keep the accurate language in your code and for communicating with people who are concerned with the domain. These are the people who have the specs and who are the key users of the applications, the ones with whom you discuss the business logical details. In the rare case that you really discuss most of the business logical details with users who don't have much of a clue about the domain and you needn't dive deep into it, then incorporate their language in your domain language, given that they have a common, unambiguous language at all (which probably isn't the case).

But do make sure that the frontend devs know about your informal terms and their corresponding domain terms.

Falcon
  • 19,388
1

I think the easiest way to answer this would be to draw line exactly where you would draw it if you were presenting the UI in a completely different language.

If your end users needed to see things in Sanskrit, how would you bridge the difference between the UI and the code (and other internal communication).

John Fisher
  • 1,795