领域驱动设计:软件核心复杂性应对之道(英文版)(图灵程序设计丛书)(Domain-Driven Design Tackling Complexity in the Heart of Software)
分類: 图书,计算机与互联网,软件工程及软件方法学,软件工程理论,
品牌: 埃文斯(Eric Ecans)
基本信息·出版社:人民邮电出版社
·页码:529 页
·出版日期:2010年04月
·ISBN:9787115224071
·条形码:9787115224071
·版本:第1版
·装帧:平装
·开本:16
·正文语种:英语
·丛书名:图灵程序设计丛书
·外文书名:Domain-Driven Design Tackling Complexity in the Heart of Software
产品信息有问题吗?请帮我们更新产品信息。
内容简介本书是领域驱动设计领域的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、经验验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。 本书适合各层次的面向对象软件开发人员、系统分析员阅读。
目录
Contents Part IPutting the Domain Model to Work1 Chapter 1: Crunching Knowledge7 Ingredients of Effective Modeling12 Knowledge Crunching13 Continuous Learning15 Knowledge-Rich Design17 Deep Models20 Chapter 2: Communication and the Use of Language23 UBIQUITOUS LANGUAGE24 Modeling Out Loud30 One Team, One Language32 Documents and Diagrams35 Written Design Documents37 Executable Bedrock40 Explanatory Models41 Chapter 3: Binding Model and Implementation45 MODEL-DRIVEN DESIGN47 Modeling Paradigms and Tool Support50 Letting the Bones Show: Why Models Matter to Users57 HANDS-ON MODELERS60 Part IIThe Building Blocks of a Model-Driven Design63 Chapter 4: Isolating the Domain67 LAYERED ARCHITECTURE68 Relating the Layers72 Architectural Frameworks74 The Domain Layer Is Where the Model Lives75 THE SMART UI “ANTI-PATTERN”76 Other Kinds of Isolation79 Chapter 5: A Model Expressed in Software81 Associations82 ENTITIES (A.K.A. REFERENCE OBJECTS)89 Modeling ENTITIES93 Designing the Identity Operation94 VALUE OBJECTS97 Designing VALUE OBJECTS99 Designing Associations That Involve VALUE OBJECTS102 SERVICES104 SERVICES and the Isolated Domain Layer106 Granularity108 Access to SERVICES108 MODULES (A.K.A. PACKAGES)109 Agile MODULES111 The Pitfalls of Infrastructure-Driven Packaging112 Modeling Paradigms116 Why the Object Paradigm Predominates116 Nonobjects in an Object World119 Sticking with MODEL-DRIVEN DESIGN When Mixing Paradigms120 Chapter 6: The Life Cycle of a Domain Object123 AGGREGATES125 FACTORIES136 Choosing FACTORIES and Their Sites139 When a Constructor Is All You Need141 Designing the Interface143 Where Does Invariant Logic Go?144 ENTITY FACTORIES Versus VALUE OBJECT FACTORIES144 Reconstituting Stored Objects145 REPOSITORIES147 Querying a REPOSITORY152 Client Code Ignores REPOSITORY Implementation; Developers Do Not154 Implementing a REPOSITORY155 Working Within Your Frameworks156 The Relationship with FACTORIES157 Designing Objects for Relational Databases159 Chapter 7: Using the Language: An Extended Example163 Introducing the Cargo Shipping System163 Isolating the Domain: Introducing the Applications166 Distinguishing ENTITIES and VALUE OBJECTS167 Role and Other Attributes168 Designing Associations in the Shipping Domain169 AGGREGATE Boundaries170 Selecting REPOSITORIES172 Walking Through Scenarios173 Sample Application Feature: Changing the Destination of a Cargo173 Sample Application Feature: Repeat Business 173 Object Creation174 FACTORIES and Constructors for Cargo174 Adding a Handling Event175 Pause for Refactoring: An Alternative Design of the Cargo AGGREGATE177 MODULES in the Shipping Model179 Introducing a New Feature: Allocation Checking181 Connecting the Two Systems182 Enhancing the Model: Segmenting the Business183 Performance Tuning185 A Final Look186 Part IIIRefactoring Toward Deeper Insight187 Chapter 8: Breakthrough193 Story of a Breakthrough194 A Decent Model, and Yet...194 The Breakthrough196 A Deeper Model198 A Sobering Decision199 The Payoff200 Opportunities201 Focus on Basics201 Epilogue: A Cascade of New Insights202 Chapter 9: Making Implicit Concepts Explicit205 Digging Out Concepts206 Listen to Language206 Scrutinize Awkwardness210 Contemplate Contradictions216 Read the Book217 Try, Try Again219 How to Model Less Obvious Kinds of Concepts219 Explicit Constraints220 Processes as Domain Objects222 SPECIFICATION224 Applying and Implementing SPECIFICATION227 Chapter 10: Supple Design243 INTENTION-REVEALING INTERFACES246 SIDE-EFFECT-FREE FUNCTIONS250 ASSERTIONS255 CONCEPTUAL CONTOURS260 STANDALONE CLASSES265 CLOSURE OF OPERATIONS268 Declarative Design270 Domain-Specific Languages272 A Declarative Style of Design273 Extending SPECIFICATIONS in a Declarative Style273 Angles of Attack282 Carve Off Subdomains283 Draw on Established Formalisms, When You Can283 Chapter 11: Applying Analysis Patterns293 Chapter 12: Relating Design Patterns to the Model309 STRATEGY (A.K.A. POLICY)311 COMPOSITE315 Why Not FLYWEIGHT?320 Chapter 13: Refactoring Toward Deeper Insight321 Initiation321 Exploration Teams322 Prior Art323 A Design for Developers324 Timing324 Crisis as Opportunity325 Part IVStrategic Design327 Chapter 14: Maintaining Model Integrity331 BOUNDED CONTEXT335 Recognizing Splinters Within a BOUNDED CONTEXT339 CONTINUOUS INTEGRATION341 CONTEXT MAP344 Testing at the CONTEXT Boundaries351 Organizing and Documenting CONTEXT MAPS351 Relationships Between BOUNDED CONTEXTS352 SHARED KERNEL354 CUSTOMER/SUPPLIER DEVELOPMENT TEAMS356 CONFORMIST361 ANTICORRUPTION LAYER364 Designing the Interface of the ANTICORRUPTION LAYER366 Implementing the ANTICORRUPTION LAYER366 A Cautionary Tale370 SEPARATE WAYS371 OPEN HOST SERVICE374 PUBLISHED LANGUAGE375 Unifying an Elephant378 Choosing Your Model Context Strategy381 Team Decision or Higher382 Putting Ourselves in Context382 Transforming Boundaries382 Accepting That Which We Cannot Change: Delineating the External Systems383 Relationships with the External Systems384 The System Under Design385 Catering to Special Needs with Distinct Models386 Deployment387 The Trade-off388 When Your Project Is Already Under Way388 Transformations389 Merging CONTEXTS: SEPARATE WAYS ? SHARED KERNEL389 Merging CONTEXTS: SHARED KERNEL ? CONTINUOUS INTEGRATION391 Phasing Out a Legacy System393 OPEN HOST SERVICE ? PUBLISHED LANGUAGE394 Chapter 15: Distillation397 CORE DOMAIN400 Choosing the CORE402 Who Does the Work?403 An Escalation of Distillations404 GENERIC SUBDOMAINS406 Generic Doesn’t Mean Reusable412 Project Risk Management413 DOMAIN VISION STATEMENT415 HIGHLIGHTED CORE417 The Distillation Document418 The Flagged CORE419 The Distillation Document as Process Tool420 COHESIVE MECHANISMS422 GENERIC SUBDOMAIN Versus COHESIVE MECHANISM424 When a MECHANISM Is Part of the CORE DOMAIN425 Distilling to a Declarative Style426 SEGREGATED CORE428 The Costs of Creating a SEGREGATED CORE429 Evolving Team Decision430 ABSTRACT CORE435 Deep Models Distill436 Choosing Refactoring Targets437 Chapter 16: Large-Scale Structure439 EVOLVING ORDER444 SYSTEM METAPHOR447 The “Naive Metaphor” and Why We Don’t Need It448 RESPONSIBILITY LAYERS450 Choosing Appropriate Layers460 KNOWLEDGE LEVEL465 PLUGGABLE COMPONENT FRAMEWORK475 How Restrictive Should a Structure Be?480 Refactoring Toward a Fitting Structure481 Minimalism481 Communication and Self-Discipline482 Restructuring Yields Supple Design482 Distillation Lightens the Load483 Chapter 17: Bringing the Strategy Together485 Combining Large-Scale Structures and BOUNDED CONTEXTS485 Combining Large-Scale Structures and Distillation488 Assessment First490 Who Sets the Strategy?490 Emergent Structure from Application Development491 A Customer-Focused Architecture Team492 Six Essentials for Strategic Design Decision Making492 The Same Goes for the Technical Frameworks495 Beware the Master Plan496 Conclusion499 Appendix: The Use of Patterns in This Book507 Glossary511 References515 Photo Credits517 Index519
……[看更多目录]