If you are a Domain Driven Design enthusiast, you may already know how difficult is agreeing on which are the boundaries of your bounded contexts or which are your support and core domains. And depending on your role, you may have other questions, like how do you know if the way you’re organising and structuring the teams it is really optimised?
I attended Nick Tune’s talk the other day about Strategic DDD tools for non-DDD people, a really interesting talk even for DDD experts. Nick suggested some very nice Open Source tools and libraries to make all these discussions easier (or at least, to guide you in the process).
This article will try to summarize you all these tools, but I really encourage you to see his talk here.
jMolecules : Annotations and types to describe architectural artifacts on your code. It’s great to have all of your domain documented in one place, but you already know how fast code changes and how difficult is to keep documentation up-to-date. It would be great to have all of your Entities, ValueObjects, AggregateRoots, Events, etc. self-documented, right? jMolecules will help you on that aim. Something similar is Structurizr.
Bounded Context Canvas. The Bounded Context Canvas is a collaborative tool for designing and documenting the design of a single bounded context. This was introduced by Nick Tune as a tool, and they have also Miro an Draw.io versions of it, so no excuses to not use it. They are also working on a web-based form version to make all the process even easier: Contexture.
Message Flow Modelling : A Domain Message Flow Diagram is a simple visualisation showing the flow of messages (commands, events, queries) between actors, bounded contexts, and systems, for a single scenario. Events are helpful to decouple communication between boundaries. This tool will help you to carefully define interactions between bounded contexts when using events, commands and queries, and to easily visualise dependencies between them.
Core Domain Charts - Placing your domains on this chart will help you visualising if you are optimising resources focusing on the ROI. These are really useful when organising and structuring teams. Are you using lots of resources on a supporting domain? Shouldn’t you have more resources on your Core Domain? Questions like these will pop up when using these charts. Check also this article here.