Modeling a problem domain with entities
In DDD, before any code is written, there must be lots of discussions between developers and domain experts—the people who have a deep understanding of the business. Those discussions provide valuable information acquired through a process called knowledge crunching, which is based on brainstorming between those developers and domain experts. That knowledge is then incorporated into the Ubiquitous Language. This language works as the lingua franca among everyone involved in the project and is present in documentation, day-to-day conversations, and—of course—in the code.
When we're dealing with entities, we must always pay attention to how much we can learn about the business by just reading the code, because the real deal happens when we employ the knowledge-crunching technique in order to continually evolve the Ubiquitous Language and make the code speak that language. That's the basis for rich entities that...