For years, architects and developers have raved about loose coupling. We’ve all suffered from working with big balls of mud where changes are risky and expensive, and we know that loose coupling is the key to making changes safely and quickly. Whether you are building monoliths or microservices, the key to loose coupling is identifying which things change together and grouping them together in code. To confidently identify things that change together, it’s necessary to look at the business domain, and identify which business concepts change together when implementing new product features. These domain boundaries become the blueprint of a loosely-coupled software architecture. This practical talk will show how you can map out a business domain, organize it into subdomains, and design a software architecture aligned to the domain boundaries. The talk will cover a range of tools and techniques from the Domain-Driven Design space, including Event Storming, Domain Message Flow Modelling, the Bounded Context Canvas, and Core Domain Charts.