Probably the best way to represent this areas is just draw some rectangles connected with arrows - more on this later.įor a software developer, i.e., from the static code perspective, a bounded context represents a way I designed my models around corresponding sub-domains. It’s just an implementation detail of this model.įrom the perspective of a domain expert, bounded context is an area where certain business-processes are implemented, the certain ubiquitous language is applied, and a certain terms make a clear sense, while the others don’t. Corresponding code might reflect a part of a model that was distributed among several machines due to technical reasons. The fact that we have a separate machine with some separate codebase doesn’t make it a Bounded context. It’s likely that we factor out an aggregate that sends http requests to external systems, with an intention to put it into a separate machine which can be scaled independently. Say, for some technical reasons, we want to distribute our code among several physical machines. So from this perspective Bounded context has nothing to do with physical boundaries. The contract can be represented as this service’s API or a set of events it publishes and consumes. I can come up with three perspectives to look at the concept of a Bounded context.įrom the run-time perspective, bounded context represents logical boundaries, defined by contract of a service where the model is implemented. Bounded context is a pretty vague concept for a lot of developers. It can be a talk, a presentation, a code project with physical boundaries defined by the artifact. It is an area where a certain sub-domain makes sense, while the others don’t. Bounded context defines tangible boundaries of applicability of some sub-domain. Bounded contextsīounded context is a logical boundary When both sub-domains and the core domain are defined, it’s time to implement the code. So a rule set in some sub-domain that is necessary to achieve a certain business-result is called a model. ![]() And it’s exactly what needs to be implemented in code. ![]() It doesn’t look like an Economics course - it’s exactly what the business guys are interested in in current sub-domain. So a shop wants to recognize such cases as soon as possible. It means that the client was charged, but its order is not going to be delivered. Say, a payment system successfully processed a payment which was considered non-successful by a shop. All that the shop is interested in during reconciliation is to make sure that it and a payment system processed their payments the same way: that all payments considered successful by shop are considered successful by payment system. For example, if an online shop wants to implement financial reconciliation with payment system, there is no need in modeling all existing rules of Accounting or Financial Control. There is a certain set of rules in each sub-domain that we are interested in. There is no need in modeling extracted sub-domains in their entirety. The same applies to sub-domains: probably you gonna need a bookkeeping, human resources, technical support - but it is secondary. So even if you do not know such a word like “Core domain”, it is still present. The very fact that you run a business infers that there is at least one predominant business-value. Sub-domainsĭDD implies domain decomposing into sub-domains, to ease their modelling and comprehension. That’s why domain is called a Problem space. Marketers come up with new features and perform market analysis, Key account managers communicate with clients, software developers automate business-processes. Its existence doesn’t depend on our awareness. It existed before us and will exist after us, in one form or another. What is it, how to define them and is there any connection with business-capabilities? Domainĭomain is the reality we inhabit: its entities, their behavior, laws they obey. ![]() DDD owns the concepts of Core Domain, Generic Domain and Bounded Context.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |