Bounded Context

Overview [1]#

Bounded Context is the boundary or perimeter of a context

Various entities (usually persons) draw boundaries between contexts. You also find multiple contexts within the same domain context, such as the separation between data In Process and Database Management System models within in a single application. This boundary is set by the different way we represent models.

Bounded Context is a central pattern in Domain-Driven Design.

Bounded Context is a context encapsulated by a set of responsibilities and definitions.

Building blocks of DDD[2]#

In the book Domain-Driven Design, a number of high-level concepts and practices are articulated, such as ubiquitous language meaning that the domain model should form a common language given by domain experts for describing system requirements, that works equally well for the business users or sponsors and for the software developers. The book is very focused on describing the domain layer as one of the common layers in an object-oriented system with a multilayered architecture. In Domain-Driven Design, there are artifacts to express, create, and retrieve domain models:

Examples of Bounded Context #

A customer comes to a website and places an order. The order is entered within the order system and flows to Order Processing where the payment information is processed and then from there to the Shipping department.

Many organizations would view the ordering process as a single process and create a single monolithic application that would process the entire Order.

Internet Scale requires a different approach.

The customer's password is not needed by the shipping department. The information required for the Order Processing is not necessarily the same information required to ship the Order. Certainly the Shipping department does not require access to the Payment Card information which may even be processed by a Third-party.

Bounded Context and Monolithic Architectures#

Bounded Context has been used in Monolithic Architectures for several years where different Software Components Functions use Inter-Process Communication for passing Messages

More Information#

There might be more information for this subject on one of the following: