Domain-Driven Design, by Eric Evans. Addison Wesley, 2004.
Evans has developed a pattern language that focuses on how thinking about our domain needs to be of primary importance in developing software. This understanding should show up consistently in how customers and programmers talk about the domain, as well as in the code. His language includes discussion of key architectural concerns such as an effective persistence mechanism and layering.
People have struggled with “what’s a metaphor” in XP. His pattern language provides the concrete notions of “ubiquitous language” and domain modeling to make that area more concrete. He has a wonderful example of how a shift to talking about “share pie” and “share arithmetic” solved a lot of persistent rounding problems in financial software. (I would call this a metaphor; I’m not sure he would.)
Like Design Patterns, this is a book that deserves to be studied and expanded on. This will still be a significant book years from now
(Reviewed December, 2003.)