Customer Reviews


16 Reviews
5 star:
 (11)
4 star:
 (2)
3 star:
 (1)
2 star:    (0)
1 star:
 (2)
 
 
 
 
 
Average Customer Review
Share your thoughts with other customers
Create your own review
 
 

The most helpful favourable review
The most helpful critical review


3 of 3 people found the following review helpful
5.0 out of 5 stars 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...
Published on Sept. 24 2003 by Brad Appleton

versus
6 of 7 people found the following review helpful
3.0 out of 5 stars Reality Check - Yet Another Patterns Book
I bought this book due in part to the glowing reviews here on Amazon so I feel a duty to inject a bit of skepticism, now that I've read it.
5 stars for a technical book indicates to me a book of profound quality that really breaks through with penetrating insights -- The kind of book that makes me think, "Wow, this book has really brought my development practice...
Published on June 24 2004 by Vladimir Levin


‹ Previous | 1 2 | Next ›
Most Helpful First | Newest First

3 of 3 people found the following review helpful
5.0 out of 5 stars Read this book to graduate from programmer to designer, Sept. 24 2003
By 
Brad Appleton (Arlington Heights, IL USA) - See all my reviews
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
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.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


6 of 7 people found the following review helpful
3.0 out of 5 stars Reality Check - Yet Another Patterns Book, June 24 2004
By 
Vladimir Levin (Calgary, AB, Canada) - See all my reviews
(REAL NAME)   
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
I bought this book due in part to the glowing reviews here on Amazon so I feel a duty to inject a bit of skepticism, now that I've read it.
5 stars for a technical book indicates to me a book of profound quality that really breaks through with penetrating insights -- The kind of book that makes me think, "Wow, this book has really brought my development practice into a renewed, sharper focus." It doesn't necessarily have to provide radically new material, but it does have to package whatever material it contains in a way that causes the gears in my head to shift around and reorganize themselves. Design Patterns is such a book. XP Explained is such a book. I don't think this one qualifies.
Some good points: The author makes a good case for agile development/extreme programming (close relationship with the customer, unit tests, refactoring...). He seems to believe there may be a tendency to over-emphasize the importance of code and to neglect design in such practices, which may or may not be true in industry at large. But in any case, his major thesis is that it is also important to consider the overall domain model and how well-aligned it is to the goals of the business. He proposes developing a common ("ubiqitous") language between developers and business users, and to unify the various traditional views of a software system (requirements, analysis model, design model, etc..) into one. The advice is quite wholesome and will hopefully promote bringing some harmony between the agile camp and the adherents of high-ceremony approaches such as RUP and CMM.
Some bad points: The book is rather wordy, and a lot of common-sense ideas are repeated at length. I don't feel that the patterns in the book are much more than re-statements of basic principles of OO design. I am not convinced that giving every possible variation on OO programming a fancy name is particularly helpful. Most of the patterns in this book come down to "produce a clean design that removes duplication and attempts to match the business domain." If you're new to OO, I suggest you'd be much better off reading some other books, such as GoF's Design Patterns, Fowler's Refactoring, Page-Jones' Object-Oriented Design in UML, and Kent Beck's XP Explained.
I give this book 3 stars because it's not a bad thing to read a book that makes you think about the importance of the business domain when programming. It's true that this emphasis, while fairly basic, does get lost in a world where specific technologies dominate good design and common sense. I don't think this book can really hurt -- although I have found the "declarative" approach it mentions can be very dangerous in inexperienced hands and can produce utterly unmaintainable code. It's not a bad effort, but it's not an earth shattering revelation either.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4.0 out of 5 stars Essential Knowledge for Designers of Non-trivial Systems, July 9 2004
By 
P. FRANCIS "Engineer" (Tucson, AZ USA) - See all my reviews
(REAL NAME)   
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
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.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars Remarkable advice & approach, June 30 2004
By 
Mike Tarrani "Jazz Drummer" (Deltona, FL USA) - See all my reviews
(TOP 1000 REVIEWER)    (REAL NAME)   
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
If the advice and the underlying processes and procedures outlined in this book are followed any software engineering process or lifecycle approach will be dramatically improved. Note that the material in this book is as applicable to agile methods as they are to heavy approaches, including the still used waterfall SDLC.
Why five stars? Because this book peels off the layers of what is wrong with development, discarding them and replacing them with alternatives that promote communications among all stakeholders, placing design into its proper context, and provides the glue that binds subject matter experts from business and technology domains into a cohesive team using the same language and pursuing the same goals. On the surface this seems like common sense, but in practice, it is rarely done. Indeed, the lack of the ingredients given in this book on most projects is the reason why so many projects fail or are cancelled, and why there exists today a real disconnect between IT and the business. Following this book, implementing the practices, and managing to them will make a world of difference in the success rate of any organization, large or small.
I like the copious examples to illustrate the technical concepts, and especially chapters 9 (Making Implicit Concepts Explicit) and 14 (Maintaining Model Integrity) because these are two areas in design that I've observed to be potential failure points - the first because too often wrong assumptions are made and locked in, and the second because models sometimes take on a life of their own and morph into unintended things.
This book emphasizes a number of critical success factors, including knowledge, communication, control and vision. If the material is approached as merely an intellectual exercise then you'll probably be dissatisfied with the book. If, on the other hand, you are genuinely seeking a solution to a high project failure rate or disconnect among stakeholders, and are willing to do what it takes this book will provide a blueprint for success.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars Concretes the abstract worlds of patterns and principles, June 6 2004
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
This book answers the question of how you tie in cookbooks like the GoF book or Fowler's Enterprise Patterns book with the Wirfs-Brock book on designing systems. Reading this will help you to understand how to identify and apply great patterns in your design, where and when those patterns are important, and how many resources it's worth investing on rolling them out. More importantly, it helps you to understand and convey to others the importance of a clean design model.
I also really enjoyed his notes on large refactorings (yes, in practice, sometimes you *do* encounter the need for large changes!) and the author's pragmatism around having to make decisions about where you invest heavily and where you don't. His points around large project constraints and how it becomes non-linearly expensive to maintain continuous integration and design consistency to the finest detail also hit home -- I've seen more than one group try to do that, fail, and give up entirely. A bit of balance, as he advocates in the book, would have really helped maintain some consistency and a solid core without requiring moving heaven and earth to get every interface looking Architect Approved (tm).
The only place the book was lacking was in how you tie together and manage quite a bit larger projects. For instance, near the end he says, "No project will ever employ every technique in this book"; however, I've been on one that used everything he mentioned in this book in one place or another -- of course, it's tens of millions of lines of code :-)
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars A Framework for Proper Object Thinking, May 15 2004
By 
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
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.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars Re-introduces a new way to think about software design, Dec 25 2003
By 
Amazon Customer (Old Bethpage, NY United States) - See all my reviews
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
If you have even been involved in a software project (a) as a developer and did not know what the end product is going to be used for or how it will be used or (b) as an architect who spent countless hours with your stakeholders and domain experts trying to figure out how to go about architecting your application, then you should read this book. Read it again after you have read it for the first time. This book is packed with pointers, information, tips, how-tos, "down to earth" practical samples, and even conversational examples that one could have while gathering requirements. Evans in his book fills a wide gap that we all tend to come across while designing software applications.
There are many software engineering processes out there, and each one tries to tackle the complexities of designing software applications for a given domain in its own way. Evans recognizes the tools and the processes that are popular in the industry, UML, Agile, and focuses on some aspects of the software engineering process that we tend to miss. He starts the book by talking about the importance of creating and having a Ubiquitous Language. There is a similar concept in the RUP, but not emphasizes as much - or at all. Evans goes into a great detail on why, from the inception of a project, it is important to have a common language and gives many pointers on what makes up the Ubiquitous Language for each project:
"Use the model as the backbone of a language. Commit the team to exercising that language relentlessly within the team and the in the code. Use the same language in diagrams, writing, and especially speech."
Parts II-IV of the book put domain-driven design in perspective, and show the reader thru examples and patterns, architectural patterns, design patterns and process patterns, the importance of having a consistent model that maps to the domain and how to go about achieving such model. In an essence, "Model-Driven Design discards the dichotomy of analysis model and design to search out a single model that serves both purposes".
Part II of the book, introduces the building blocks of a Model-Driven Design. This section, as with the others, takes popular patterns from the Gamma, Flower, or others and applies them to the topic at hand - Model-Driven Design. In that aspect, the reader can easily follow the text and relate to topic at hand. Evans uses the ever-popular Model-View-Controller (MVC) design pattern to get things going in part II. He then goes off to explain why the layered architecture approach is an important aspect of a Domain-Driven Design and how it would makes things simpler:
"[Layered Architecture] allows a model to evolve to be rich enough and clear enough to capture essential business knowledge and put it to work."
The author then goes into great detail in explaining the elements that express a model:
1) Entities: An object that is tracked thru different states or even across different implementations.
2) Value Objects: An attribute that describes the state of something else.
3) Services: Aspects of domain that are expressed as actions or operations, rather than objects.
4) Packages: Organize the objects and services.
What do you want to do after you have designed such elements? The creation and life cycle management of objects are discussed next in this book. Three patterns, mostly from the Gamma book, are used to manage the life cycle of objects:
1) Aggregates.
2) Factories.
3) Repositories.
Aggregates represent the hierarchy of objects or services and their interactions. Factories and Repositories operate of Aggregates and encapsulate the complexity of specific life cycle transitions.
Part III of the book talks about the things developers and architects need to do to achieve a Supple Design. Refactoring over and over represents the topic in this section:
"Each refinement of code and model gives developers a clearer view"
The author talks about a breakthrough point during the design that the "designers see the light" and both the domain experts and the designers, after many iterations, have finally come to this higher level of understanding of the domain and the value of refactoring exponentially increases after that.
Part IV of this book talks about a very important topic that we all have struggled with one time or another: the ability of the model and the modeling process to scale up to very complicated domains. It is great that we can model a small domain, but one goes about modeling an enterprise, which is most likely, too complex to model as a single unit? Low-coupling and high cohesion still applies here, but the goal is to not loose anything during the integration process. The author goes in to a great detail in this part to emphasize that even in large circumstances such as modeling an enterprise, every decision must have a direct impact on system development. Three different themes are covered in this section in order to assist with modeling of large units:
1) Context: the model has to be logically consistent throughout, without contradictory or overlapping definitions. For this theme, the author introduces the concept of a Bonded Context- a way that relationship to other context are defined a overlapping is then avoided.
2) Distillation: Reducing the clutter and focusing attention appropriately.
3) Large-scale Structure. The concept of Responsibility layers are introduced
In summary, Evans did a great job in writing this book, and filling it with useful ways of designing and architecting software applications that target a domain, which in most cases we do not know much about.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars One of the best software books I've read, July 15 2004
By 
James Frohnhofer "fijimf" (New York) - See all my reviews
(REAL NAME)   
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
I read this book in its draft form on a cross-country flight and was just blown away by it, enough so that I bought a bound version to make it easier to carry around and reread.
I suppose what blew me away was that Evans crystallized and laid out quite clearly about a dozen ideas which were existing at the edge of my consciousness, but which I could not clearly verbalize.
It fits quite nicely between the patterns books and the process books, but it's not a cookbook and it's not strictly a method. It's a must read for the multitude of Java/C#/C++ developers who continue to write procedural code while claiming they're OO developers because they're using an OO language and they've read Design Patterns.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5.0 out of 5 stars Rocked My Programming World, May 20 2004
By A Customer
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
This is one of the few books that has seriously changed my perspective on Software Design. I used to fall into the trap of applying technology to the solution, an technique he quietly rebuked and showed the solution.
I'm not totally sure that beginning software professionals would understand what is being said in the book. It seems a bit subtle to me. For me, the revelations came out of experience coupled with the text. Nonetheless, it is written in such a way that it makes you think: and then the resulting revelation is your own.
In short, it caused me to rethink my current projects that I'm working on and seriously changed their scope.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4.0 out of 5 stars Worth a look, Oct. 11 2005
This review is from: Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)
I bought this book after seeing Eric speak at XPAU in Calgary (2004). He gave an interesting talk and so I took a flyer on his book. It's a big, heavy book (I ride my bike to work).
His suggestions around removing disjointed language when describing the domain, while nothing new, were a great reminder. It's one of those books I like having on my shelf, pulling down and leafing through from time to time.
A great collection of thoughts Eric, well done.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


‹ Previous | 1 2 | Next ›
Most Helpful First | Newest First

This product

Domain-Driven Design: Tackling Complexity in the Heart of Software
CDN$ 72.99 CDN$ 45.98
In Stock
Add to cart Add to wishlist
Only search this product's reviews