Designing domain models is probably the first thing that every software developer learns in school.
The concept for good domain model is quite simple: diagram representing the business objects (entities) in a system and the relations among them.
The purpose of the domain model is to create a common language, terminology and understanding for the system and the business around it.
Even though it might be a simple and well-known definition it somehow seems to be also quite tricky and hard to follow through.