Foreword.
Preface.
Acknowledgments.
I. PUTTING THE DOMAIN MODEL TO WORK.
1. Crunching Knowledge.
2. Communication and the Use of Language.
UBIQUITOUS LANGUAGE.
Documents and Diagrams.
3. Binding Model and Implementation.
MODEL-DRIVEN DESIGN.
Letting the Bones Show; Why Models Matter to Users.
HANDS-ON MODELERS.
II. BUILDING BLOCKS OF A MODEL-DRIVEN DESIGN.
4. Isolating the Domain.
LAYERED ARCHITECTURE.
The Domain Layer Is Where the Model Lives.
SMART UI ANTI-PATTERN.
5. A Model Expressed in Software.
Associations.
ENTITIES (AKA REFERENCE OBJECTS).
VALUE OBJECTS.
SERVICES.
MODULES (AKA PACKAGES).
Modeling Paradigms.
6. The Lifecycle of a Domain Object.
AGGREGATES.
FACTORIES.
REPOSITORIES.
Designing Objects for Relational Databases.
7. Using the Language in an Example: A Cargo Shipping System.
III. REFACTORING TOWARD DEEPER INSIGHT.
8. Breakthrough.
9. Making Implicit Concepts Explicit.
Listening.
Scrutinizing Awkwardness.
Read the Book.
Try, Try Again.
Expressing Less Obvious Categories of Concepts.
Explicit Constraints.
Representing Processes as Domain Objects.
SPECIFICATION.
10. Supple Design.
INTENTION REVEALING INTERFACES.
SIDE-EFFECT-FREE FUNCTIONS.
ASSERTIONS.
CONCEPTUAL CONTOURS.
STANDALONE CLASSES.
CLOSURE OF OPERATIONS.
Declarative Design.
Extending SPECIFICATIONS in a Declarative Style.
Where to Start.
Example Integrating the Patterns: Shares Math.
11. Applying Analysis Patterns.
12. Relating Design Patterns to the Model.
STRATEGY AKA POLICY.
COMPOSITE.
Why Not FLYWEIGHT?
13. Bringing the Pieces Together.
IV. STRATEGIC DESIGN.
14. Maintaining Model Integrity.
BOUNDED CONTEXT.
CONTINUOUS INTEGRATION.
CONTEXT MAP.
Relationships Between BOUNDED CONTEXTS.
SHARED KERNEL.
CUSTOMER/SUPPLIER DEVELOPMENT TEAMS.
CONFORMIST.
ANTICORRUPTION LAYER.
SEPARATE WAYS.
OPEN HOST SERVICE.
PUBLISHED LANGUAGE.
Unifying an Elephant.
Choosing Your Model Context Strategy.
Transformations.
Merging CONTEXTS (SEPARATE WAYS * SHARED KERNEL).
Merging CONTEXTS (SHARED KERNEL * CONTINUOUS INTEGRATION).
Phasing Out a Legacy System.
OPEN HOST SERVICE * PUBLISHED LANGUAGE.
15. Distillation.
CORE DOMAIN.
GENERIC SUBDOMAINS.
DOMAIN VISION STATEMENT.
HIGHLIGHTED CORE.
COHESIVE MECHANISMS.
Distilling to a Declarative Style.
SEGREGATED CORE.
ABSTRACT CORE.
Deep Models Distill.
Choosing Refactoring Targets.
16. Large-Scale Structure.
EVOLVING ORDER.
SYSTEM METAPHOR.
RESPONSIBILITY LAYERS.
KNOWLEDGE LEVEL.
PLUGGABLE COMPONENT FRAMEWORK.
How Restrictive Should a Structure Be?
Refactoring Toward a Fitting Structure.
17. Bringing the Strategy Together.
Bringing Together Large-Scale Structures and
BOUNDED CONTEXTS.
Bringing Together Large-Scale Structures and Distillation.
Assessment First.
Who Sets the Strategy.
V. CONCLUSIONS.