-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deeply incorrect definition of BC #41
Comments
Thanks for raising an issue Mathias. A pull request has been raised addressing the issue. Feel free to leave any comments over there or re-open this issue if you would like to continue the discussion here. |
Well done. Good clarification, @mathiasverraes, thank you so much! |
Thanks @mathiasverraes for raising the subject and @NTCoding for the proposed solution. I agree with both of them 👍 Which misunderstandings do you mean Mathias (because there are several...)? |
In my opinion, re-routing people to external resources is kind of surrendering to the goal for this repo of being a complete starting point for teams beginning their journey into DDD, which is as I have been using it for months. I might be wrong about the intent for this repo though. Unfortunately, it is hard to find a resource online which is at the same time free (I mean, not a book you need to purchase first) and clear. For example, both resources you replaced the former definition with are not either: the Eric Evans site requires you to download a free PDF that it does not include a Bounded Context definition per se. And the Martin Fowler article also points you to other resources (mainly Eric Evans' book). In my opinion, it is OK to include additional resources to investigate further, but a short, usable definition should be included here. If you asked me, it could easily be extracted from @mathiasverraes comment:
With a definition like this one above, it becomes clear that it is the boundary what defines the context, and that changes in meaning are what define boundaries. For example, a company can be a Qualified Lead for the Marketing team and a Qualified Lead for the Sales team. This same term has different business meaning in Marketing and Sales (in general, a Marketing Qualified Lead would become a Qualified Lead for Sales), so this change in meaning defines a boundary and therefore two contexts: Marketing and Sales. I hope this helps! |
I Like @mathiasverraes definition since its consise and articulates the essential while not beeing to specific. On the other hand a bounded context in a context map is said to represent the current state of things i.e. the implementation or the solution domain. (At least I have heard that recommendation more than once). I think we operate with 2 models here. The mental model of the problem domain and the implemented model anchored in an implementation. These two models are often not alligned. But its easier to communicate when they are. |
I think the recommendation to represent the current state in the context map is related more to how to start using DDD tools, not how to use the context map. If the BCs change, the context map can change too. It could even change because of the team dynamics, IMO. |
What does everyone think about renaming it to the "Subsystem Design Canvas"? If I have correctly understood the concerns being raised, it's that the canvas doesn't accurately convey what a bounded context is. If that's the case we could decouple the canvas from the concept of bounded contexts to avoid the misrepresentation? |
From my own experience, the confusion comes from the fact that some people tend to think that it's an API design tool for microservices (or any subsystems). |
I wouldn't rename the canvas, @NTCoding, because in that case, we would still need a tool to document the Bounded Context 😆 . I think the proposal of @Max-Git might be a good one. Even if I am sure that we can't replace learning with a tool, I agree that the misunderstanding is a real problem and that we never answered it. We have a BCC and an Aggregate Design Canvas, but we have never talked about the relationship between the two. @Max-Git, I have a follow-up question to understand you better. You mention microservices and suggest adding "domains and/or subdomains where the BC belongs to". I would have expected "services composing the BC" for an ms-architecture or "some structure representing the BC as part of the monolith XY". Do we mean the same or not, actually? |
Hi @mathiasverraes I'm curious on how you will explain the relation between a bounded context and a context map (Notice i dont mean the bounded context canvas here). |
The first line of the readme says "A bounded context is a sub-system in a software architecture aligned to a part of your domain."
This is literally the opposite of what it is.
A Bounded Context is a boundary around a model and its language. Within this boundary, the meaning of terms is unambiguous, well-defined and understood. The model is clear and the rules are consistent. It offers no such guarantees outside of its boundary.
This incorrect reasoning lies at the heart of the whole BC canvas and is probably responsible for a lot of misunderstanding in the DDD community.
The text was updated successfully, but these errors were encountered: