[#vaughn-ddddis] suggests Event Storming as good way to build a DDD - Ubiquitous Language. It is something that happens into a workshop format and can take several sessions (the author suggests 3/4 sessions of approx. 4 hours).
For the workshop you should have:
- Sticky notes of several color (so you can use it for visual taxonomy)
- A black sharpie with fine point
- A wide surface (preferably a wall)
It goes like this:
- Brainstorm DDD - Domain Events
- Organize them in chronological order
- Add the commands that cause the events right before each event (i.e:
SendMessagewould be the command forMessageSent) - Add the DDD - Aggregates or DDD - Entities that are related to the command between the command and the event. Sort of like "the command acts on this thing, which triggers that event"
- Zoom out and draw lines to group what you generated in step 4 into DDD - Bounded Contexts and DDD - Subdomains
- Describe the views (as in an interface) that your user will need to act upon these domains discovered by you
This note is clearly a refresher, I strongly recommend myself (and others) to go back to the book whenever they want to conduct the workshop, there is a lot of insight that is not capture here (nor it should, since it's operational).
[#vaughn-ddddis]: Vernon, Vaughn. Domain-Driven Design Distilled. Boston: Addison-Wesley, 2016.