liveBook · Manning

Essential complexity

As explained in Collaborative Software Design: How to facilitate domain modeling decisions

Essential complexity is the irreducible complexity inherent in the problem domain that software design can manage but not eliminate.

Essential complexity is the irreducible complexity inherent in the domain. Software design cannot eliminate it; it can only manage where that complexity lives and how people navigate it. section 9.3.1

Use bounded-context design to make its trade-offs visible:

  • Smaller bounded contexts contain less essential domain complexity and are generally easier to manage. section 9.3.1
  • Splitting contexts does not remove complexity; it increases the complexity of communication between them. section 9.3.1
  • Compare alternative designs with multiple collaborative modeling tools, including domain message flow modeling. section 9.3.1

A boundary-splitting concern

When Rose worried that further splitting would make communication too complex, the group modeled both alternatives before implementation. The goal was not to find a complexity-free design, but to understand whether smaller contexts justified their added coordination. section 9.3.1

How Collaborative Software Design: How to facilitate domain modeling decisions covers it

How deep it goes
Explains the design trade-off and recommends modeling communication, but stops short of prescribing a complexity metric.
Examples
Uses alternative bounded-context designs and a group's concern about communication between split contexts.
What it assumes
Assumes bounded-context design and collaborative modeling as the working setting.
What you can do after
Apply it via domain message flow modeling to compare boundary designs before implementation.
How it connects
Connects essential complexity with bounded contexts, domain message flow modeling, collaborative modeling, and Example Mapping.

Also explained in

Compare how 2 books explain essential complexity →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Collaborative Software Design: How to facilitate domain modeling decisions. The section links point to the parts of the book it draws on.