Really good books about how to design the core domain model of an application are very rare. Eric Evans has written one.
Domain modeling is handled from the very small (entities, value objects, associations) to the very large (components, layers). Evans argues that creating a ubiquitous language shared by domain experts and developers is essential for the success of domain modelling. While the book refers to agile methods it is applicable for agile and non-agile methods.
The book is written in a pattern style and can therefore be read from start to end or be used as a handbook to answer specific questions at hand.
I strongly recommend “Domain Driven Design” to every OO designer and programmer.
There is a website related to the book which provides additional information and discussions of the topic.