- Release Date: 22 August, 2003
- Used Price: $30.79
- Availability: Usually ships within 24 hours
- Third Party Used Price: $36.95
Author: Eric Evans
Customer Rating: 4.36 of 5 (11 total reviews)
- A Framework for Proper Object Thinking
This book may change the way you think about software design. Of all the software books I purchased over the last year, this book ranks as one of the most important (another is Lean Software Development by Mary and Tom Poppendieck). The book presents an elegant pattern language to help the modeler understand and design the domain in which he is crafting software. The pattern language addresses both the human factor of modeling (i.e., effective communication with all stakeholders) and the technique of modeling (i.e., the application of object concepts).
This well-organized book succeeds on many levels:
* It helps prepare the modeler to work with his domain by suggesting he must develop the right mindset and communicate with the people who understand the domain.
* Emphasizing the need to keep the domain model as pure as possible, it explains the absolute fundamentals of a domain model, including the all-important notions of entities, value objects, services, and modules. It presents the object-lifecycle, including the mechanisms of factory and repository (and their advantages).
* It provides techniques for object discovery and refinement and model flexibility.
* It provides ideas for organizing cooperative teams.
* It is highly compatible with agile processes, such as eXtreme Programming (XP). In fact, the author himself has practiced XP.
This book should be the second book a novice modeler should purchase. A seasoned modeler should buy this book immediately.
- Read this book to graduate from programmer to designer
I think that this book along with Robert Martin's "Agile Software Development, Principles, Patterns, and Practices" and Martin Fowler's "Refactoring" are perhaps the three most fundamental prerequisites for making the leap in knowledge and maturity from object-oriented programming to true proficiency in object-oriented design. The books from Martin and Fowler cover the software solution design space and the core principles and patterns for making code that is resilient to change and easy to maintain. Eric Evans book covers the problem domain space and the abstraction skills that free programmers to "break out of the box" of the implementation domain and solution objects into the critical area the business domain and corresponding domain objects.
I once led a young software team and tried to convey the need for and essence of these skills to them, but I didnt have the right words and terms to do it for their level of experience. I wish this book had been available to me then because I think it would have made a real difference for that team.
- Essential Knowledge for Designers of Non-trivial Systems
Even if we're geeks from birth, and grow up playing with tinker toys or legos and graduate to software or electronics and then make it through engineering or software school with high marks, most of us never really encounter extremely complex problems until we are employed in industry. The result is that we are pushing thirty before we encounter problems that we can't simply jump into and starting building the solution for. We end up approaching every problem with tools and materials in hand, neglecting the important problem space analysis that must come first. Evans does a superb job of explaining how OO analysis of the problem domain leads to natural, sensible reflections in the solution space. It may be that there are too many words in this book, and it may be that the ordering is a little off, but the message is dead on, and shouldn't be ignored by anybody who's serious about solving very complex problems with software. If software is part art and part science, this book describes the art very well.