欢迎光临
免费的PDF电子书下载网站

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

编辑推荐

1.“领域驱动设计之父”的经典著作;2.软件开发方法学泰斗,极限编程的创始人Kent Beck等众多声名显赫软件大师鼎力推荐;3.领域驱动设计方面的经典之作,凝聚领域建模专家数十年的实战经验;4.深度剖析构建高质量复杂系统的核心技术。领域模型使开发人员可以表达丰富的软件功能需求,由此实现的软件可以满足用户真正的需要,因此被公认为是软件设计的关键所在,其重要性显而易见。但是,讲述如何将领域模型用于软件开发过程的优秀的实用资料却不多见。本书正是这一领域*著名的作品,受到众多业界大师的赞美和推介,广受读者好评。

1.“领域驱动设计之父”的经典著作;

2.软件开发方法学泰斗,极限编程的创始人Kent Beck等众多声名显赫软件大师鼎力推荐;

3.领域驱动设计方面的经典之作,凝聚领域建模专家数十年的实战经验;

4.深度剖析构建高质量复杂系统的核心技术。

领域模型使开发人员可以表达丰富的软件功能需求,由此实现的软件可以满足用户真正的需要,因此被公认为是软件设计的关键所在,其重要性显而易见。但是,讲述如何将领域模型用于软件开发过程的优秀的实用资料却不多见。本书正是这一领域*著名的作品,受到众多业界大师的赞美和推介,广受读者好评。

要通过创建领域模型来加速复杂的软件开发,就需要利用大量*实践和标准模式在开发团队中形成统一的交流语言;不但要重构代码,而且要重构代码底层的模型;同时采取反复迭代的敏捷开发方法,深入理解领域特点,促进领域专家与程序员的良好沟通。针对这些内容,本书结合真实项目,系统地介绍了领域驱动开发的目标、意义和方法,充分探讨了复杂系统的建模与设计问题。

本书将指导面向对象开发人员、系统分析人员和设计人员合理地组织工作,使他们各有侧重、彼此协作,有条不紊地进行复杂系统的开发,帮助他们建立实用而丰富的领域模型,并由此创建长期适用的优质软件。

 

内容简介

本书是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。本书共分4个部分,*部分提出领域驱动开发的基本目标,第二部分将面向对象领域建模中的一些核心的*实践提炼为一组基本的构造块,第三部分讨论如何将构造块装配为实用的模型,从而实现其价值,第四部分讨论在复杂系统、大型组织以及与外部系统和遗留系统的交互中出现的复杂情况。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些*实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计*实践、已验证的技术以及应对复杂领域的软件项目开发的基本原则。

本书适合各层次的面向对象软件开发人员和系统分析师阅读。

作者简介

埃里克·埃文斯(Eric Evans) “领域驱动设计之父”,世界著名软件建模专家。他创建了Domain Language公司,致力于帮助机构创建与其业务紧密相关的软件。他在世界各地宣讲领域驱动设计(Domain-Driven Design,DDD)的思想,开设相关课程,参加会议,接受专访,拥有大批的追随者。从20世纪80年代开始,他就以设计师和程序员的双重身份参与过许多大型面向对象系统的设计和开发,这其中涉及各种复杂的业务领域和技术领域。同时,他还培训和指导过许多开发团队开展极限编程实践。

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

目录

目  录

Part I 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 II 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” / THE SMART UI“反模式” 76

Other Kinds of Isolation / 其他分离方式 79



Chapter 5: A Model Expressed in Software / 软件中所表示的模型 81

Associations / 关联 82

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

ENTITY(也称为REFERENCE OBJECT) 89

Modeling ENTITIES / ENTITY建模 93

Designing the Identity Operation / 设计标识操作 94

VALUE OBJECTS 97

Designing VALUE OBJECTS / 设计VALUE OBJECT 99

Designing Associations That Involve VALUE OBJECTS / 设计包含VALUE OBJECT的关联 102

SERVICES 104

SERVICES and the Isolated Domain Layer / SERVICE与孤立的领域层 106

Granularity / 粒度 108

Access to SERVICES / 对SERVICE的访问 108

MODULES(A.K.A. PACKAGES)/ MODULE(也称为PACKAGE) 109

Agile MODULES / 敏捷的MODULE 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 /在混合范式中坚持使用MODEL-DRIVEN DESIGN 120



Chapter 6: The Life Cycle of a Domain Object / 领域对象的生命周期 123

AGGREGATES 125

FACTORIES 136

Choosing FACTORIES and Their Sites / 选择FACTORY及其应用位置 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 / ENTITY FACTORY与VALUE OBJECT FACTORY 144

Reconstituting Stored Objects / 重建已存储的对象 145

REPOSITORIES 147

Querying a REPOSITORY / REPOSITORY的查询 152

Client Code Ignores REPOSITORY Implementation; Developers Do Not / 客户代码可以忽略REPOSITORY的实现,但开发人员不能忽略 154

Implementing a REPOSITORY / REPOSITORY的实现 155

Working Within Your Frameworks / 在框架内工作 156

The Relationship with FACTORIES / 与FACTORY的关系 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 / 将ENTITY和VALUE OBJECT区别开 167

Designing Associations in the Shipping Domain / 设计运输领域中的关联 169

AGGREGATE Boundaries / AGGREGATE边界 170

Selecting REPOSITORIES / 选择REPOSITORY 172

Walking Through Scenarios / 场景走查 173

Sample Application Feature: Changing the Destination of a Cargo / 应用程序特性举例:更改Cargo的目的地 173

Sample Application Feature: Repeat Business / 应用程序特性举例:重复业务 173

Object Creation / 对象的创建 174

FACTORIES and Constructors for Cargo / Cargo的FACTORY和构造函数 174

Adding a Handling Event / 添加Handling Event 175

Pause for Refactoring: An Alternative Design of the Cargo AGGREGATE / 停一下,重构:Cargo AGGREGATE 的另一种设计 177

MODULES in the Shipping Model / 运输模型中的MODULE 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 III 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 / 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

A Declarative Style of Design / 声明式设计风格 273

Angles of Attack / 切入问题的角度 282

Carve Off Subdomains / 分割子领域 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) / STRATEGY(也称为POLICY) 311

COMPOSITE 315

Why Not FLYWEIGHT / 为什么没有介绍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 IV Strategic Design / 战略设计 327

Chapter 14: Maintaining Model Integrity / 保持模型的完整性 331

BOUNDED CONTEXT 335

CONTINUOUS INTEGRATION 341

CONTEXT MAP 344

Testing at the CONTEXT Boundaries / 测试CONTEXT的边界 351

Organizing and Documenting CONTEXT MAPS / CONTEXT MAP的组织和文档化 351

Relationships Between BOUNDED CONTEXTS / BOUNDED CONTEXT之间的关系 352

SHARED KERNEL 354

CUSTOMER/SUPPLIER DEVELOPMENT TEAMS 356

CONFORMIST 361

ANTICORRUPTION LAYER 364

Designing the Interface of the ANTICORRUPTION LAYER / 设计ANTICORRUPTION LAYER的接口 366

Implementing the ANTICORRUPTION LAYER / 实现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 Which 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

When Your Project Is Already Under Way / 当项目正在进行时 388

Transformations / 转换 389

Merging CONTEXTS: SEPARATE WAYS SHARED KERNEL / 合并CONTEXT:SEPARATE WAY → SHARED KERNEL 389

Merging CONTEXTS: SHARED KERNEL CONTINUOUS INTEGRATION / 合并CONTEXT: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 / 选择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 / 标明CORE 419

The Distillation Document as Process Tool / 把精炼文档作为过程工具 420

COHESIVE MECHANISMS 422

GENERIC SUBDOMAIN Versus COHESIVE MECHANISM / GENERIC SUBDOMAIN与COHESIVE MECHANISM的比较 424

When a MECHANISM Is Part of the CORE DOMAIN / MECHANISM是CORE DOMAIN一部分 425

Distilling to a Declarative Style / 通过精炼得到声明式风格 426

SEGREGATED CORE 428

The Costs of Creating a SEGREGATED CORE / 创建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

RESPONSIBILITY LAYERS 450

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 / 把大型结构与BOUNDED CONTEXT结合起来使用 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 / 制定战略设计决策的6个要点 492

The Same Goes for the Technical Frameworks / 技术框架同样如此 495

Beware the Master Plan / 注意总体规划 496

Conclusion / 结束语 499

Appendix: The Use of Patterns in This Book / 附录:本书中模式的使用 507



Glossary / 术语表 511

References / 参考文献 515

Photo Credits / 图片说明 517

领域驱动设计 软件核心复杂性应对之道 英文版 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:领域驱动设计 软件核心复杂性应对之道 英文版