Tools
There are tools and technologies that can alleviate the processes of capturing and managing a ubiquitous language.
For example, a wiki can be used as a glossary to capture and document the ubiquitous language. Such a glossary alleviates the onboarding process of new team members, as it serves as a go-to place for information about the business domain’s terminology.
It’s important to make glossary maintenance a shared effort. When a ubiquitous lan‐ guage is changed, all team members should be encouraged to go ahead and update the glossary. That’s contrary to a centralized approach, in which only team leaders or architects are in charge of maintaining the glossary.
Despite the obvious advantages of maintaining a glossary of project-related terminol‐ ogy, it has an inherent limitation. Glossaries work best for “nouns”: names of entities, processes, roles, and so on. Although nouns are important, capturing the behavior is crucial. The behavior is not a mere list of verbs associated with nouns, but the actual business logic, with its rules, assumptions, and invariants. Such concepts are much harder to document in a glossary. Hence, glossaries are best used in tandem with other tools that are better suited to capture the behavior; for example, use cases or Gherkin tests.
Automated tests written in the Gherkin language are not only great tools for captur‐ ing the ubiquitous language but also act as an additional tool for bridging the gap between domain experts and software engineers. Domain experts can read the tests and verify the system’s expected behavior.5 For example, see the following test written in the Gherkin language:
Scenario: Notify the agent about a new support case
Given Vincent Jules submits a new support case saying:
"""
I need help configuring AWS Infinidash
"""
When the ticket is assigned to Mr. Wolf
Then the agent receives a notification about the new ticket
Managing a Gherkin-based test suite can be challenging at times, especially at the early stages of a project. However, it is definitely worth it for complex business domains.
Finally, there are even static code analysis tools that can verify the usage of a ubiqui‐ tous language’s terms. A notable example for such a tool is NDepend.
While these tools are useful, they are secondary to the actual use of a ubiquitous lan‐ guage in day-to-day interactions. Use the tools to support the management of the ubiquitous language, but don’t expect the documentation to replace the actual usage. As the Agile Manifesto says, “Individuals and interactions over processes and tools.”