《领域驱动设计 软件核心复杂性应对之道 英文版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)ERICEVANS著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2010
  • ISBN:9787115224071
  • 页数:529 页
图书介绍:本书介绍领域驱动设计的系统化方法,展现针对设计的可扩展的最佳实践集合,展示通过经验验证过的技术以及处理软件开发项目所面对的复杂领域的基本原则。本书围绕设计和开发的实践,结合真实项目中的案例,阐述如何在真实的软件开发中应用领域驱动设计。

Part Ⅰ Putting the Domain Model to Work 1

Chapter 1:Crunching Knowledge 7

Ingredients of Effective Modeling 12

Knowledge Crunching 13

Continuous Learning 15

Knowledge-Rich Design 17

Deep Models 20

Chapter 2:Communication and the Use of Language 23

UBIQUITOUS LANGUAGE 24

Modeling Out Loud 30

One Team,One Language 32

Documents and Diagrams 35

Written Design Documents 37

Executable Bedrock 40

Explanatory Models 41

Chapter 3:Binding Model and Implementation 45

MODEL-DRIVEN DESIGN 47

Modeling Paradigms and Tool Support 50

Letting the Bones Show:Why Models Matter to Users 57

HANDS-ON MODELERS 60

Part Ⅱ The Building Blocks of a Model-Driven Design 63

Chapter 4:Isolating the Domain 67

LAYERED ARCHITECTURE 68

Relating the Layers 72

Architectural Frameworks 74

The Domain Layer Is Where the Model Lives 75

THE SMART UI"ANTI-PATTERN" 76

Other Kinds of Isolation 79

Chapter 5:A Model Expressed in Software 81

Associations 82

ENTITIES(A.K.A.REFERENCE OBJECTS) 89

Modeling ENTITIES 93

Designing the Identity Operation 94

VALUE OBJECTS 97

Designing VALUE OBJECTS 99

Designing Associations That Involve VALUE OBJECTS 102

SERVICES 104

SERVICES and the Isolated Domain Layer 106

Granularity 108

Access to SERVICES 108

MODULES(A.K.A.PACKAGES) 109

Agile MODULES 111

The Pitfalls of Infrastructure-Driven Packaging 112

Modeling Paradigms 116

Why the Object Paradigm Predominates 116

Nonobjects in an Object World 119

Sticking with MODEL-DRIVEN DESIGN When Mixing Paradigms 120

Chapter 6:The Life Cycle of a Domain Object 123

AGGREGATES 125

FACTORIES 136

Choosing FACTORIES and Their Sites 139

When a Constructor Is All You Need 141

Designing the Interface 143

Where Does Invariant Logic Go? 144

ENTITY FACTORIES Versus VALUE OBJECT FACTORIES 144

Reconstituting Stored Objects 145

REPOSITORIES 147

Querying a REPOSITORY 152

Client Code Ignores REPOSITORY Implementation;Developers Do Not 154

Implementing a REPOSITORY 155

Working Within Your Frameworks 156

The Relationship with FACTORIES 157

Designing Objects for Relational Databases 159

Chapter 7:Using the Language:An Extended Example 163

Introducing the Cargo Shipping System 163

Isolating the Domain:Introducing the Applications 166

Distinguishing ENTITIES and VALUE OBJECTS 167

Role and Other Attributes 168

Designing Associations in the Shipping Domain 169

AGGREGATE Boundaries 170

Selecting REPOSITORIES 172

Walking Through Scenarios 173

Sample Application Feature:Changing the Destination of a Cargo 173

Sample Application Feature:Repeat Business 173

Object Creation 174

FACTORIES and Constructors for Cargo 174

Adding a Handling Event 175

Pause for Refactoring:An Alternative Design of the Cargo AGGREGATE 177

MODULES in the Shipping Model 179

Introducing a New Feature:Allocation Checking 181

Connecting the Two Systems 182

Enhancing the Model:Segmenting the Business 183

Performance Tuning 185

A Final Look 186

Part Ⅲ Refactoring Toward Deeper Insight 187

Chapter 8:Breakthrough 193

Story of a Breakthrough 194

A Decent Model,and Yet... 194

The Breakthrough 196

A Deeper Model 198

A Sobering Decision 199

The Payoff 200

Opportunities 201

Focus on Basics 201

Epilogue:A Cascade of New Insights 202

Chapter 9:Making Implicit Concepts Explicit 205

Digging Out Concepts 206

Listen to Language 206

Scrutinize Awkwardness 210

Contemplate Contradictions 216

Read the Book 217

Try,Try Again 219

How to Model Less Obvious Kinds of Concepts 219

Explicit Constraints 220

Processes as Domain Objects 222

SPECIFICATION 224

Applying and Implementing SPECIFICATION 227

Chapter 10:Supple Design 243

INTENTION-REVEALING INTERFACES 246

SIDE-EFFECT-FREE FUNCTIONS 250

ASSERTIONS 255

CONCEPTUAL CONTOURS 260

STANDALONE CLASSES 265

CLOSURE OF OPERATIONS 268

Declarative Design 270

Domain-Specific Languages 272

A Declarative Style of Design 273

Extending SPECIFICATIONS in a DPclarative Style 273

Angles of Attack 282

Carve Off Subdomams 283

Draw on Established Formalisms,When You Can 283

Chapter 11:Applying Analysis Patterns 293

Chapter 12:Relating Design Patterns to the Model 309

STRATEGY (A.K.A.POLICY) 311

COMPOSITE 315

Why Not FLYWEIGHT? 320

Chapter 13:Refactoring Toward Deeper Insight 321

Initiation 321

Exploration Teams 322

Prior Art 323

A Design for Developers 324

Timing 324

Crisis as Opportunity 325

Part Ⅳ Strategic Design 327

Chapter 14:Maintaining Model Integrity 331

BOUNDED CONTEXT 335

Recognizing Splinters Within a BOUNDED CONTEXT 339

CONTINUOUS INTEGRATION 341

CONTEXT MAP 344

Testing at the CONTEXT Boundaries 351

Organizing and Documenting CONTEXT MAPS 351

Relationships Between BOUNDED CONTEXTS 352

SHARED KERNEL 354

CUSTOMER/SUPPLIER DEVELOPMENT TEAMS 356

CONFORMIST 361

ANTICORRUPTION LAYER 364

Designing the Interface of the ANTICORRUPTION LAYER 366

Implementing the ANTICORRUPTION LAYER 366

A Cautionary Tale 370

SEPARATE WAYS 371

OPEN HOST SERVICE 374

PUBLISHED LANGUAGE 375

Unifying an Elephant 378

Choosing Your Model Context Strategy 381

Team Decision or Higher 382

Putting Ourselves in Context 382

Transforming Boundaries 382

Accepting That Whicb We Cannot Change:Delineating the External Systems 383

Relationships with the External Systems 384

The System Under Design 385

Catering to Special Needs with Distinct Models 386

Deployment 387

The Trade-off 388

Whee Your Project Is Already Under Way 388

Transformations 389

Merging CONTEXTS:SEPARATE WAYS→SHARED KERNEL 389

Merging CONTEXTS:SHARED KERNEL→CONTINUOUS INTEGRATION 391

Phasing Out a Legacy System 393

OPEN HOST SERVICE→PUBLISHED LANGUAGE 394

Chapter 15:Distillation 397

CORE DOMAIN 400

Choosing the CORE 402

Who Does the Work? 403

An Escalation of Distillations 404

GENERIC SUBDOMAINS 406

Generic Doesn't Mean Reusable 412

Project Risk Management 413

DOMAIN VISION STATEMENT 415

HIGHLIGHTED CORE 417

The Distillation Document 418

The Flagged CORE 419

The Distillation Document as Process Tool 420

COHESIVE MECHANISMS 422

GENERIC SUBDOMAIN Versus COHESIVE MECHANISM 424

When a MECHANISM Is Part of the CORE DOMAIN 425

Distilling to a Declarative Style 426

SEGREGATED CORE 428

The Costs of Creating a SEGREGATED CORE 429

Evolving Team Decision 430

ABSTRACT CORE 435

Deep Models Distill 436

Choosing Refactoring Targets 437

Chapter 16:Large-Scale Structure 439

EVOLVING ORDER 444

SYSTEM METAPHOR 447

The "Naive Metaphor" and Why We Don't Need It 448

RESPONSIBILITY LAYERS 450

Choosing Appropriate Layers 460

KNOWLEDGE LEVEL 465

PLUGGABLE COMPONENT FRAMEWORK 475

How Restrictive Should a Structure Be? 480

Refactoring Toward a Fitting Structure 481

Minimalism 481

Communication and Self-Discipline 482

Restructuring Yields Supple Design 482

Distillation Lightens the Load 483

Chapter 17:Bringing the Strategy Together 485

Combining Large-Scale Structures and BOUNDED CONTEXTS 485

Combining Large-Scale Structures and Distillation 488

Assessment First 490

Who Sets the Strategy? 490

Emergent Structure from Application Development 491

A Customer-Focused Architecture Team 492

SiX Essentials for Strategic Design Decision Making 492

The Same Goes for the Technical Frameworks 495

Bewart the Master Plan 496

Conclusion 499

Appendix:The Use of Patterns in This Book 507

Glossary 511

References 515

Photo Credits 517

Index 519