Join Amazon Prime and ship Two-Day for free and Overnight for $3.99. Already a member? Sign in.

 

or
Sign in to turn on 1-Click ordering.
 
 
More Buying Choices
58 used & new from $42.99

Have one to sell? Sell yours here
 
   
Domain-Driven Design: Tackling Complexity in the Heart of Software
 
 
Tell the Publisher!
I’d like to read this book on Kindle

Don’t have a Kindle? Get yours here.
 
  

Domain-Driven Design: Tackling Complexity in the Heart of Software (Hardcover)

by Eric Evans (Author)
4.3 out of 5 stars See all reviews (52 customer reviews)

List Price: $69.99
Price: $51.99 & this item ships for FREE with Super Saver Shipping. Details
You Save: $18.00 (26%)
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.

Want it delivered Wednesday, July 15? Choose One-Day Shipping at checkout. Details
34 new from $44.00 24 used from $42.99

Frequently Bought Together

Domain-Driven Design: Tackling Complexity in the Heart of Software + Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series) + Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)
Price For All Three: $151.97

Show availability and shipping details


Customers Who Bought This Item Also Bought

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET

by Jimmy Nilsson
4.0 out of 5 stars (18)  $51.99
Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)

Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)

by Martin Fowler
4.5 out of 5 stars (138)  $47.99
Test Driven Development: By Example (Addison-Wesley Signature Series)

Test Driven Development: By Example (Addison-Wesley Signature Series)

by Kent Beck
3.9 out of 5 stars (32)  $40.49
Code Complete: A Practical Handbook of Software Construction

Code Complete: A Practical Handbook of Software Construction

by Steve McConnell
4.8 out of 5 stars (107)  $31.49
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Addison-Wesley Signature Series)

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Addison-Wesley Signature Series)

by Gregor Hohpe
4.7 out of 5 stars (37)  $51.99
Explore similar items


Editorial Reviews

From the Back Cover

"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.





About the Author

Eric Evans is an independent consultant specializing in object-oriented design and Extreme Programming. During his extensive career, he has worked on many projects developing large business systems. Eric has authored several articles on design patterns and has trained teams in Extreme Programming. His current focus is on leveraging a rich domain model to produce quality software.

0321125215AB04282003

See all Editorial Reviews


Product Details


Look Inside This Book


What Do Customers Ultimately Buy After Viewing This Item?


Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
Check the boxes next to the tags you consider relevant or enter your own tags in the field below.

Your tags: Add your first tag
 
Help others find this product — tag it for Amazon search
No one has tagged this product for Amazon search yet. Why not be the first to suggest a search for which it should appear?

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

 

Customer Reviews

52 Reviews
5 star:
 (31)
4 star:
 (9)
3 star:
 (9)
2 star:
 (1)
1 star:
 (2)
 
 
 
 
 
Average Customer Review
4.3 out of 5 stars (52 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

 
78 of 84 people found the following review helpful:
5.0 out of 5 stars Re-introduces a new way to think about software design, December 25, 2003
By ART SEDIGHI (Old Bethpage, NY United States) - See all my reviews
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.

Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
37 of 40 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)   
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.

Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
42 of 48 people found the following review helpful:
5.0 out of 5 stars Read this book to graduate from programmer to designer, September 24, 2003
By Brad Appleton (Arlington Heights, IL USA) - See all my reviews
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.

Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)


Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews

5.0 out of 5 stars Thoughtful and relevant
Must read for software architects. Book is well organized and written. Concepts are useful in everyday analysis, design, and implementation. Read more
Published 13 days ago by James G. Swanson

5.0 out of 5 stars An excellent reference, another must read for developers
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... Read more
Published 29 days ago by Adam Kahtava

5.0 out of 5 stars The Software Design Book in the Age of Refactoring and XP
Eric Evans teaches how to model a range of business domains and the corresponding software in lockstep. This is an important and heavy subject. Read more
Published 2 months ago by ws__

5.0 out of 5 stars Excellent
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.
Published 3 months ago by Andoni Ripoll Jarauta

3.0 out of 5 stars Domain-Driven Design: Tackling Complexity in the Heart of Software
"The defining characteristic [of domain-driven design] is a priority on understanding the target domain and incorporating that understanding into the software. Read more
Published 3 months ago by Eric Jain

4.0 out of 5 stars Changes the way you view software
"Can not recommend it highly enough. Not for the feint of heart of for people who "just want a paycheck". Read more
Published 3 months ago by Elliott Ohara

4.0 out of 5 stars Soil-Breaking Book
First, this is a good book. I'm new to the domain-driven space and formal OO design so this way a big bite for me. Read more
Published 6 months ago by Andy Merrick

3.0 out of 5 stars Useful principles, but very difficult to get through
This book has a lot of useful design principles, but they can be hard to garner and retain because the writing is very dry. Read more
Published 7 months ago by C. Arnold

5.0 out of 5 stars Mind blowing
This book radically changed the way I design software. Domain modeling gets to the heart of object-oriented programming. Read more
Published 9 months ago by Chris

5.0 out of 5 stars Excellent book
If your process for writing an application is to start with the database, or to start designing UI, you should read this book. Read more
Published 13 months ago by Christopher Brandsma

Only search this product's reviews



Customer Discussions

 Beta (What's this?)
New! See all customer communities, and bookmark your communities to keep track of them.
This product's forum (0 discussions)
  Discussion Replies Latest Post
  No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
  [Cancel]


Active discussions in related forums
  Discussion Replies Latest Post
C# or Java? 32 8 days ago
   


Product Information from the Amapedia Community

Beta (What's this?)



Look for Similar Items by Category


Get Creative with Dremel Power Tools

Dremel power tools
Take on your next project with a versatile Dremel power tool. Shop now and save on Dremel power tools and take advantage of FREE Super Saver Shipping to save even more.

Shop Dremel tools

 

Best Books of 2008

Best of 2008
Find our top 100 editors' picks as well as customers' favorites in dozens of categories in our Best Books of 2008 Store.
 

Buy Three Books, Get a Fourth Free

4-for-3 Books
Order any four eligible books under $10 and get the lowest-price book free in our 4-for-3 Books Store. See more details.
 

GearWrench Hand Tools

Shop for GearWrench Hand Tools
GearWrench is a leader in innovative hand tools and manufactures its tools to the highest standards.

Shop all GearWrench products

 

 

Feedback

If you need help or have a question for Customer Service, contact us.
 Would you like to update product info or give feedback on images?
Is there any other feedback you would like to provide?

Your comments can help make our site better for everyone.


Where's My Stuff?

Shipping & Returns

Need Help?

Your Recent History

  (What's this?)
You have no recently viewed items or searches.

After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.

Look to the right column to find helpful suggestions for your shopping session.

Continue shopping: Top Sellers
Paranoia
Paranoia by Joseph Finder
My Soul to Lose
My Soul to Lose by Rachel Vincent
Glenn Beck's Common Sense
Glenn Beck's Common Sense

Conditions of Use | Privacy Notice © 1996-2009, Amazon.com, Inc. or its affiliates