Domain-Driven Design
also: DDD
Designing software around the business domain and its language, keeping the model and the code aligned.
Domain-driven design (DDD) is an approach to building complex software by centering the design on the business domain: model the real concepts and rules directly in the code, use a ubiquitous language shared by developers and domain experts, and organize the system into bounded contexts. The goal is code that mirrors how the business actually works.
Worked example: instead of anemic CRUD tables, an insurance system models real domain concepts (Policy, Claim, Coverage) with the behavior and invariants the business follows, named exactly as the underwriters name them — so a conversation with an expert maps straight onto the code. Gotcha: DDD’s heavier patterns (aggregates, value objects, domain events) pay off in genuinely complex domains but are overkill for simple CRUD apps — the high-value ideas (ubiquitous language, bounded contexts) apply broadly, while the tactical machinery should be used only where the domain complexity justifies it.