Domain-Driven Design Tackling Complexity in the Heart of Software

ISBN-10: 0321125215

ISBN-13: 9780321125217

Edition: 2004

Authors: Eric Evans

List price: $74.99
eBook available
30 day, 100% satisfaction guarantee

If an item you ordered from TextbookRush does not meet your expectations due to an error on our part, simply fill out a return request and then return it by mail within 30 days of ordering it for a full refund of item cost.

Learn more about our returns policy


& bull; Specific, concrete techniques that demonstrate why domain-driven design is the heart of business software & lt;br/ & gt; & bull; Key teaching points are reinforced by entertaining stories taken from real projects & lt;br/ & gt; & bull; Contains illustrative UML diagrams and supporting Java code that help the reader apply these techniques
eBooks Starting from $59.99
Buy eBooks
what's this?
Rush Rewards U
Members Receive:
You have reached 400 XP and carrot coins. That is the daily max!
Study Briefs

Limited time offer: Get the first one free! (?)

All the information you need in one place! Each Study Brief is a summary of one specific subject; facts, figures, and explanations to help you learn faster.

Add to cart
Study Briefs
SQL Online content $4.95 $1.99
Add to cart
Study Briefs
MS Excel® 2010 Online content $4.95 $1.99
Add to cart
Study Briefs
MS Word® 2010 Online content $4.95 $1.99
Add to cart
Study Briefs
MS PowerPoint® 2010 Online content $4.95 $1.99
Customers also bought

Book details

List price: $74.99
Copyright year: 2004
Publisher: Addison Wesley Professional
Publication date: 8/20/2003
Binding: Hardcover
Pages: 560
Size: 7.25" wide x 9.50" long x 1.50" tall
Weight: 2.244
Language: English

Putting the Domain Model to Work
Crunching Knowledge
Ingredients of Effective Modeling
Knowledge Crunching
Continuous Learning
Knowledge-Rich Design
Deep Models
Communication and the Use of Language
Ubiquitous Language
Modeling Out Loud
One Team, One Language
Documents and Diagrams
Written Design Documents
Executable Bedrock
Explanatory Models
Binding Model and Implementation
Model-Driven Design
Modeling Paradigms and Tool Support
Letting the Bones Show: Why Models Matter to Users
Hands-On Modelers
The Building Blocks of a Model-Driven Design
Isolating the Domain
Layered Architecture
Relating the Layers
Architectural Frameworks
The Domain Layer Is Where the Model Lives
The Smart UI "Anti-Pattern"
Other Kinds of Isolation
A Model Expressed in Software
Entities (a.k.a. Reference Objects)
Modeling Entities
Designing the Identity Operation
Value Objects
Designing Value Objects
Designing Associations That Involve Value Objects
Services and the Isolated Domain Layer
Access to Services
Modules (a.k.a. Packages)
Agile Modules
The Pitfalls of Infrastructure-Driven Packaging
Modeling Paradigms
Why the Object Paradigm Predominates
Nonobjects in an Object World
Sticking with Model-Driven Design When Mixing Paradigms
The Life Cycle of a Domain Object
Choosing Factories and Their Sites
When a Constructor Is All You Need
Designing the Interface
Where Does Invariant Logic Go?
Entity Factories Versus Value Object Factories
Reconstituting Stored Objects
Querying a Repository
Client Code Ignores Repository Implementation; Developers Do Not
Implementing a Repository
Working Within Your Frameworks
The Relationship with Factories
Designing Objects for Relational Databases
Using the Language: An Extended Example
Introducing the Cargo Shipping System
Isolating the Domain: Introducing the Applications
Distinguishing Entities and Value Objects
Role and Other Attributes
Designing Associations in the Shipping Domain
Aggregate Boundaries
Selecting Repositories
Walking Through Scenarios
Sample Application Feature: Changing the Destination of a Cargo
Sample Application Feature: Repeat Business
Object Creation
Factories and Constructors for Cargo
Adding a Handling Event
Pause for Refactoring: An Alternative Design of the Cargo Aggregate
Modules in the Shipping Model
Introducing a New Feature: Allocation Checking
Connecting the Two Systems
Enhancing the Model: Segmenting the Business
Performance Tuning
A Final Look
Refactoring Toward Deeper Insight
Story of a Breakthrough
A Decent Model, and Yet ...
The Breakthrough
A Deeper Model
A Sobering Decision
The Payoff
Focus on Basics
Epilogue: A Cascade of New Insights
Making Implicit Concepts Explicit
Digging Out Concepts
Listen to Language
Scrutinize Awkwardness
Contemplate Contradictions
Read the Book
Try, Try Again
How to Model Less Obvious Kinds of Concepts
Explicit Constraints
Processes as Domain Objects
Applying and Implementing Specification
Supple Design
Intention-Revealing Interfaces
Side-Effect-Free Functions
Conceptual Contours
Standalone Classes
Closure of Operations
Declarative Design
Domain-Specific Languages
A Declarative Style of Design
Extending Specifications in a Declarative Style
Angles of Attack
Carve Off Subdomains
Draw on Established Formalisms, When You Can
Applying Analysis Patterns
Relating Design Patterns to the Model
Strategy (A.K.A. Policy)
Why Not Flyweight?
Refactoring Toward Deeper Insight
Exploration Teams
Prior Art
A Design for Developers
Crisis as Opportunity
Strategic Design
Maintaining Model Integrity
Bounded Context
Recognizing Splinters Within a Bounded Context
Continuous Integration
Context Map
Testing at the Context Boundaries
Organizing and Documenting Context Maps
Relationships Between Bounded Contexts
Shared Kernel
Customer/Supplier Development Teams
Anticorruption Layer
Designing the Interface of the Anticorruption Layer
Implementing the Anticorruption Layer
A Cautionary Tale
Separate Ways
Open Host Service
Published Language
Unifying an Elephant
Choosing Your Model Context Strategy
Team Decision or Higher
Putting Ourselves in Context
Transforming Boundaries
Accepting That Which We Cannot Change: Delineating the External Systems
Relationships with the External Systems
The System Under Design
Catering to Special Needs with Distinct Models
The Trade-off
When Your Project Is Already Under Way
Merging Contexts: Separate Ways to Shared Kernel
Merging Contexts: Shared Kernel to Continuous Integration
Phasing Out a Legacy System
Open Host Service to Published Language
Core Domain
Choosing the Core
Who Does the Work?
An Escalation of Distillations
Generic Subdomains
Generic Doesn't Mean Reusable
Project Risk Management
Domain Vision Statement
Highlighted Core
The Distillation Document
The Flagged Core
The Distillation Document as Process Tool
Cohesive Mechanisms
Generic Subdomain Versus Cohesive Mechanism
When a Mechanism Is Part of the Core Domain
Distilling to a Declarative Style
Segregated Core
The Costs of Creating a Segregated Core
Evolving Team Decision
Abstract Core
Deep Models Distill
Choosing Refactoring Targets
Large-Scale Structure
Evolving Order
System Metaphor
The "Naive Metaphor" and Why We Don't Need It
Responsibility Layers
Choosing Appropriate Layers
Knowledge Level
Pluggable Component Framework
How Restrictive Should a Structure Be?
Refactoring Toward a Fitting Structure
Communication and Self-Discipline
Restructuring Yields Supple Design
Distillation Lightens the Load
Bringing the Strategy Together
Combining Large-Scale Structures and Bounded Contexts
Combining Large-Scale Structures and Distillation
Assessment First
Who Sets the Strategy?
Emergent Structure from Application Development
A Customer-Focused Architecture Team
Six Essentials for Strategic Design Decision Making
The Same Goes for the Technical Frameworks
Beware the Master Plan
The Use of Patterns in This Book
Photo Credits
Free shipping on orders over $35*

*A minimum purchase of $35 is required. Shipping is provided via FedEx SmartPost® and FedEx Express Saver®. Average delivery time is 1 – 5 business days, but is not guaranteed in that timeframe. Also allow 1 - 2 days for processing. Free shipping is eligible only in the continental United States and excludes Hawaii, Alaska and Puerto Rico. FedEx service marks used by permission."Marketplace" orders are not eligible for free or discounted shipping.

Learn more about the TextbookRush Marketplace.