A system boundary separates behavior implemented inside an application from interactions with external systems. Internal communications are implementation details; externally visible effects are observable behavior. section 5.5
Classify communications by where they occur and whether their effects can be observed:
- Intra-system communication occurs between classes inside the application and should not normally be verified with mocks. section 5.5
- Inter-system communication crosses the application boundary and belongs to observable behavior when its side effects are visible externally. section 5.5
- Interactions with external systems accessible only through the application remain implementation details when their effects cannot be observed externally. section 5.4
Figure 5.14. Communications with an out-of-process dependency that can’t be observed externally are implementation details. They don’t have to stay in place after refactoring and therefore shouldn’t be verified with mocks.
Use the figure to distinguish externally observable communications from out-of-process interactions that remain implementation details. section 5.4




