Search

Table of Contents
Domain-Driven Design: Tackling Complexity in the Heart of Software
BOOK:
Domain-Driven Design: Tackling Complexity in the Heart of Software
Browse by Category
 
 
Hide Left Column
Domain-Driven Design: Tackling Complexity in the Heart of Software
Domain-Driven Design: Tackling Complexity in the Heart of Software
by Eric Evans

Publisher: Addison-Wesley Professional
Pub Date: August 20, 2003
Print ISBN-10: 0-321-12521-5
Print ISBN-13: 978-0-321-12521-7
Pages: 560
Slots: 1.0
Start Reading
Buy Print Version
Overview

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing.

"His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique.

"The book is a fun read. Eric has lots of interesting stories, and he has a way with words. I see this book as essential reading for software developers—it is a future classic."

     —Ralph Johnson, author of Design Patterns

"If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do.

"Eric Evans convincingly argues for the importance of domain modeling as the central focus of development and provides a solid framework and set of techniques for accomplishing it. This is timeless wisdom, and will hold up long after the methodologies du jour have gone out of fashion."

     —Dave Collins, author of Designing Object-Oriented User Interfaces

"Eric weaves real-world experience modeling—and building—business applications into a practical, useful book. Written from the perspective of a trusted practitioner, Eric's descriptions of ubiquitous language, the benefits of sharing models with users, object life-cycle management, logical and physical application structuring, and the process and results of deep refactoring are major contributions to our field."

     —Luke Hohmann, author of Beyond Software Architecture

"This book belongs on the shelf of every thoughtful software developer."

--Kent Beck

"What Eric has managed to capture is a part of the design process that experienced object designers have always used, but that we have been singularly unsuccessful as a group in conveying to the rest of the industry. We've given away bits and pieces of this knowledge...but we've never organized and systematized the principles of building domain logic. This book is important."

--Kyle Brown, author of Enterprise Java™ Programming with IBM® WebSphere®

The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process.

Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development.

Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis--refactoring not just the code but the model underlying the code--in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:

  • Getting all team members to speak the same language

  • Connecting model and implementation more deeply

  • Sharpening key distinctions in a model

  • Managing the lifecycle of a domain object

  • Writing domain code that is safe to combine in elaborate ways

  • Making complex code obvious and predictable

  • Formulating a domain vision statement

  • Distilling the core of a complex domain

  • Digging out implicit concepts needed in the model

  • Applying analysis patterns

  • Relating design patterns to the model

  • Maintaining model integrity in a large system

  • Dealing with coexisting models on the same project

  • Organizing systems with large-scale structures

  • Recognizing and responding to modeling breakthroughs

With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.



 
Other Readers Also Read
Top Sellers in This Category
Browse Similar Topics
Top Level Categories:Sub-Categories:
   
Reader Reviews From Amazon (Ranked by 'Helpfulness')
Average Customer Rating:based on 51 reviews.
An excellent reference, another must read for developers, 2009-06-14
Reviewer rating:
Through this book Evan's shares his extensive development and consulting experience as he outlines his approach to Domain Driven Design (DDD) - DDD being the development approach that Evan's has had the most success with. Evan's writing style is easy to read as he maintains a comfortable conversational tone while pragmatically guiding us through the many patterns and concepts that encompass Domain Driven Design. However; be warned the concepts that lie within are occasionally dense, abstract, but ultimately enlightening as Evan's forces us to look at development from a new perspective.

It's fair to mention that this book has been charged as being just another patterns book, and while I sympathize with those reviewers - some concepts do come across as being overly abstract without clear implementations (code) to reference. I found this book to be an insightful window into the mind of an experienced developer, and not just another patterns book. If you do find yourself grasping for more concrete implementations then you'll want to read Jimmy Nilsson's Applying Domain-Driven Design and Patterns: With Examples in C# and .NET book too - Nilsson's book provides many code examples while directly referencing Evan's text.

As a developer or an emerging architect you won't want to overlook this book. From my experience the concepts and patterns surrounding Domain Driven Design frequently crop up in Service Orientation, MVC/MVP Web Applications, Object Orientation, Test Driven Development, Model Driven Development, and other modern best practices. I highly recommend this book, it's a great reference to have alongside Steve McConnell's Code Complete, Robert Glass's Facts and Fallacies of Software Engineering, and the Martin Fowler blessed books too.
The Software Design Book in the Age of Refactoring and XP, 2009-05-06
Reviewer rating:
Eric Evans teaches how to model a range of business domains and the corresponding software in lockstep. This is an important and heavy subject. One has to step through unfamiliar domains. And one steps through them before they are properly explained, due to a not yet existent good model. Consequently one has to cope with bad descriptions of domains. Even more, you may not be very interested in most of the example domains. This is inherent to the subject matter and unavoidable.

The book reads similar to Martin Fowler's excellent pattern books. Both authors know how to explain an important and difficult subject. But be prepared for quite some hard work wading through the 500 plus pages. Your reward will be well worth it.
Excellent, 2009-04-13
Reviewer rating:
It is on top of every thing else. It is a recipe of how to build domain applications underlining the design patterns and its relations that work best.
Domain-Driven Design: Tackling Complexity in the Heart of Software, 2009-04-09
Reviewer rating:
"The defining characteristic [of domain-driven design] is a priority on understanding the target domain and incorporating that understanding into the software. Everything else flows from that premise."

Eric Evans argues that developers must not just understand the business ("domain") concepts in an application, but must also be able to communicate with domain experts to elucidate and refine concepts that are not obvious from the beginning. The "domain model" that emerges from this process must always be reflected in the code as much as possible (and separated from infrastructure or even non-core domain code).

The author deserves credit for asserting (back in 2003, when this might have been less widely recognized) that proper design and iterative development are not mutually exclusive, and that the design of an application is in fact unlikely to be good without iterative development.

The book contains a good mix of abstract discussion mixed with examples (including diagrams and dialogs between developers and business experts). On the other hand, there is not much discussion (or good solutions) on how to implement the practices the author is advocating (e.g. having model objects do database queries rather than delegating this to a service layer).

The author relies a lot on UML diagrams (especially class diagrams) to illustrate domain models, though the few examples where he uses custom, non-UML diagrams to illustrate behavior are far more interesting.

In the end I don't think I got more out of the book than if it had been summarized in a blog post. In particular, the "refactorings" and "patterns" didn't seem to add much to what I had read elsewhere, and some parts of the book seem a bit repetitive, even if otherwise well written.
Changes the way you view software, 2009-03-19
Reviewer rating:
"Can not recommend it highly enough. Not for the feint of heart of for people who "just want a paycheck". This book is for thoughtful engineers who care about their craft, and are willing to step up to the plate and make significant changes to the way they think about software.

I especially like the emphasis on progressive enhancements (refactoring to deeper insight). In todays world "all or nothing" just doesn't work. Evens outlines (complete with examples) ways to make software get progressively more expressive and supple, and hence easier and easier to work with and enhance. "
 
Some information above was provided using data from Amazon.com. View at Amazon >
Domain-Driven Design: Tackling Complexity in the Heart of Software
Domain-Driven Design: Tackling Complexity in the Heart of Software
by Eric Evans

Publisher: Addison-Wesley Professional
Pub Date: August 20, 2003
Print ISBN-10: 0-321-12521-5
Print ISBN-13: 978-0-321-12521-7
Pages: 560
Slots: 1.0
Start Reading
Buy Print Version
© 2009 Safari Books Online. All rights reserved.