第 一篇 開篇
第 1章 軟件復(fù)雜度剖析 2
1.1 什么是復(fù)雜系統(tǒng) 2
1.2 理解能力 4
1.2.1 規(guī)模 4
1.2.2 結(jié)構(gòu) 6
1.3 預(yù)測能力 9
1.3.1 過度設(shè)計(jì) 9
1.3.2 設(shè)計(jì)不足 11
第 2章 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)概覽 13
2.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的基本概念 14
2.1.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)元模型 14
2.1.2 問題空間和解空間 16
2.1.3 戰(zhàn)略設(shè)計(jì)和戰(zhàn)術(shù)設(shè)計(jì) 17
2.1.4 領(lǐng)域模型驅(qū)動(dòng)設(shè)計(jì) 18
2.2 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)過程 19
2.3 控制軟件復(fù)雜度 21
2.3.1 控制規(guī)模 21
2.3.2 清晰結(jié)構(gòu) 23
2.3.3 響應(yīng)變化 25
2.4 冷靜認(rèn)識(shí) 28
第3章 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)統(tǒng)一過程 29
3.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)現(xiàn)存的不足 30
3.2 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)統(tǒng)一過程 31
3.2.1 統(tǒng)一過程的二維模型 31
3.2.2 統(tǒng)一過程的動(dòng)態(tài)結(jié)構(gòu) 33
3.2.3 統(tǒng)一過程的靜態(tài)結(jié)構(gòu) 36
第二篇 全局分析
第4章 問題空間探索 40
4.1 全局分析的5W模型 40
4.2 高效溝通 42
4.2.1 達(dá)成共識(shí) 42
4.2.2 統(tǒng)一語言 44
4.3 高效協(xié)作 49
4.3.1 商業(yè)模式畫布 49
4.3.2 業(yè)務(wù)流程圖 51
4.3.3 服務(wù)藍(lán)圖 52
4.3.4 用例圖 54
4.3.5 事件風(fēng)暴 55
4.3.6 學(xué)習(xí)循環(huán) 56
第5章 價(jià)值需求分析 57
5.1 識(shí)別利益相關(guān)者 57
5.1.1 什么是利益相關(guān)者 57
5.1.2 利益相關(guān)者的分類 58
5.2 明確系統(tǒng)愿景 61
5.3 確定系統(tǒng)范圍 62
5.4 使用商業(yè)模式畫布 64
第6章 業(yè)務(wù)需求分析 66
6.1 業(yè)務(wù)流程 66
6.1.1 業(yè)務(wù)流程的關(guān)鍵點(diǎn) 67
6.1.2 業(yè)務(wù)流程的分類 67
6.1.3 業(yè)務(wù)流程的呈現(xiàn) 67
6.2 業(yè)務(wù)場景 71
6.2.1 業(yè)務(wù)場景的5W模型 71
6.2.2 業(yè)務(wù)服務(wù) 72
6.2.3 業(yè)務(wù)服務(wù)的識(shí)別 75
6.2.4 業(yè)務(wù)服務(wù)的呈現(xiàn) 76
6.3 子領(lǐng)域 77
6.3.1 子領(lǐng)域元模型 78
6.3.2 子領(lǐng)域的劃分 79
6.3.3 子領(lǐng)域映射圖 80
第三篇 架構(gòu)映射
第7章 同構(gòu)系統(tǒng) 82
7.1 概念層次的同構(gòu)系統(tǒng) 83
7.1.1 架構(gòu)的定義 83
7.1.2 架構(gòu)方案的推演 84
7.1.3 領(lǐng)域驅(qū)動(dòng)架構(gòu)風(fēng)格 86
7.2 設(shè)計(jì)層次的同構(gòu)系統(tǒng) 87
7.3 管理層次的同構(gòu)系統(tǒng) 89
7.3.1 組建團(tuán)隊(duì)的原則 89
7.3.2 康威定律的運(yùn)用 91
第8章 系統(tǒng)上下文 93
8.1 系統(tǒng)內(nèi)和系統(tǒng)外 93
8.2 系統(tǒng)上下文 94
8.2.1 伴生系統(tǒng) 94
8.2.2 系統(tǒng)上下文圖 95
8.3 系統(tǒng)上下文的確定 95
8.3.1 參考價(jià)值需求 95
8.3.2 業(yè)務(wù)序列圖 96
第9章 限界上下文 98
9.1 限界上下文的定義 98
9.2 限界上下文的特征 101
9.2.1 領(lǐng)域模型的知識(shí)語境 101
9.2.2 業(yè)務(wù)能力的縱向切分 103
9.2.3 自治的架構(gòu)單元 105
9.2.4 案例:供應(yīng)鏈的商品模型 106
9.3 限界上下文的識(shí)別 111
9.3.1 業(yè)務(wù)維度 111
9.3.2 驗(yàn)證原則 115
9.3.3 管理維度 118
9.3.4 技術(shù)維度 120
第 10章 上下文映射 124
10.1 上下文映射概述 124
10.2 通信集成模式 126
10.2.1 防腐層 126
10.2.2 開放主機(jī)服務(wù) 128
10.2.3 發(fā)布語言 129
10.2.4 共享內(nèi)核 131
10.3 團(tuán)隊(duì)協(xié)作模式 132
10.3.1 合作者 133
10.3.2 客戶方/供應(yīng)方 133
10.3.3 發(fā)布者/訂閱者 135
10.3.4 分離方式 136
10.3.5 遵奉者 137
10.4 上下文映射的設(shè)計(jì)誤區(qū) 138
10.4.1 語義關(guān)系形成的誤區(qū) 138
10.4.2 對象模型形成的誤區(qū) 139
10.5 上下文映射的確定 140
10.5.1 任務(wù)分解的影響 140
10.5.2 呈現(xiàn)上下文映射 143
第 11章 服務(wù)契約設(shè)計(jì) 145
11.1 消息契約 145
11.1.1 消息契約模型 145
11.1.2 消息契約的轉(zhuǎn)換 147
11.2 服務(wù)契約 149
11.2.1 應(yīng)用服務(wù) 150
11.2.2 遠(yuǎn)程服務(wù) 153
11.3 設(shè)計(jì)服務(wù)契約 160
11.3.1 業(yè)務(wù)服務(wù)的細(xì)化 160
11.3.2 服務(wù)序列圖 162
11.3.3 服務(wù)契約的表示 163
第 12章 領(lǐng)域驅(qū)動(dòng)架構(gòu) 165
12.1 菱形對稱架構(gòu) 165
12.1.1 六邊形架構(gòu) 165
12.1.2 整潔架構(gòu)思想 168
12.1.3 分層架構(gòu) 169
12.1.4 演進(jìn)為菱形對稱架構(gòu) 173
12.1.5 菱形對稱架構(gòu)的組成 177
12.1.6 引入上下文映射 179
12.1.7 改進(jìn)的菱形對稱架構(gòu) 180
12.1.8 菱形對稱架構(gòu)的價(jià)值 182
12.1.9 菱形對稱架構(gòu)的運(yùn)用 190
12.2 系統(tǒng)分層架構(gòu) 197
12.2.1 關(guān)注點(diǎn)分離 197
12.2.2 映射子領(lǐng)域 198
12.2.3 邊緣層 200
12.3 領(lǐng)域驅(qū)動(dòng)架構(gòu)風(fēng)格 202
第四篇 領(lǐng)域建模
第 13章 模型驅(qū)動(dòng)設(shè)計(jì) 206
13.1 軟件系統(tǒng)中的模型 206
13.2 模型驅(qū)動(dòng)設(shè)計(jì) 207
13.3 領(lǐng)域模型驅(qū)動(dòng)設(shè)計(jì) 210
13.3.1 領(lǐng)域模型 210
13.3.2 共同建模 211
13.3.3 領(lǐng)域模型與統(tǒng)一語言 212
13.3.4 迭代建模 213
第 14章 領(lǐng)域分析建模 215
14.1 統(tǒng)一語言與領(lǐng)域分析模型 215
14.2 快速建模法 215
14.2.1 名詞建模 217
14.2.2 動(dòng)詞建模 219
14.2.3 歸納抽象 221
14.2.4 確定關(guān)系 222
14.3 領(lǐng)域分析模型的精煉 222
14.4 領(lǐng)域分析模型與限界上下文 223
第 15章 領(lǐng)域模型設(shè)計(jì)要素 226
15.1 領(lǐng)域設(shè)計(jì)模型 226
15.1.1 理想的對象模型 226
15.1.2 戰(zhàn)術(shù)設(shè)計(jì)元模型 227
15.1.3 模型元素的哲學(xué)依據(jù) 228
15.2 實(shí)體 229
15.2.1 身份標(biāo)識(shí) 230
15.2.2 屬性 234
15.2.3 領(lǐng)域行為 236
15.3 值對象 239
15.3.1 值對象與實(shí)體的本質(zhì)區(qū)別 239
15.3.2 不變性 241
15.3.3 領(lǐng)域行為 242
15.3.4 值對象的優(yōu)勢 247
15.4 聚合 247
15.4.1 類的關(guān)系 247
15.4.2 模型的設(shè)計(jì)約束 249
15.4.3 聚合的定義與特征 252
15.4.4 聚合的設(shè)計(jì)原則 254
15.4.5 聚合的協(xié)作 260
15.5 聚合生命周期的管理 265
15.5.1 工廠 266
15.5.2 資源庫 274
15.6 領(lǐng)域服務(wù) 280
15.6.1 聚合的問題 280
15.6.2 領(lǐng)域服務(wù)的特征 281
15.6.3 領(lǐng)域服務(wù)的運(yùn)用場景 282
15.7 領(lǐng)域事件 287
15.7.1 建模思想的轉(zhuǎn)變 287
15.7.2 領(lǐng)域事件的定義 289
15.7.3 對象建模范式的領(lǐng)域事件 290
第 16章 領(lǐng)域設(shè)計(jì)建模 295
16.1 角色構(gòu)造型 295
16.1.1 角色構(gòu)造型與領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) 296
16.1.2 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的角色構(gòu)造型 297
16.2 設(shè)計(jì)聚合 301
16.2.1 理順對象圖 302
16.2.2 分解關(guān)系薄弱處 303
16.2.3 調(diào)整聚合邊界 310
16.3 服務(wù)驅(qū)動(dòng)設(shè)計(jì) 312
16.3.1 業(yè)務(wù)服務(wù) 312
16.3.2 業(yè)務(wù)服務(wù)的層次 313
16.3.3 服務(wù)驅(qū)動(dòng)設(shè)計(jì)方法 313
16.3.4 服務(wù)驅(qū)動(dòng)設(shè)計(jì)過程 315
16.3.5 業(yè)務(wù)服務(wù)的關(guān)鍵價(jià)值 323
第 17章 領(lǐng)域?qū)崿F(xiàn)建模 324
17.1 穩(wěn)定的領(lǐng)域模型 324
17.1.1 菱形對稱架構(gòu)與測試金字塔 325
17.1.2 測試形成的精煉文檔 326
17.1.3 單元測試 327
17.2 測試優(yōu)先的領(lǐng)域?qū)崿F(xiàn)建模 329
17.2.1 測試驅(qū)動(dòng)開發(fā) 329
17.2.2 測試驅(qū)動(dòng)開發(fā)的節(jié)奏 331
17.2.3 簡單設(shè)計(jì) 333
17.3 領(lǐng)域建模過程 334
17.3.1 薪資管理系統(tǒng)的需求說明 336
17.3.2 薪資管理系統(tǒng)的領(lǐng)域分析建模 336
17.3.3 薪資管理系統(tǒng)的領(lǐng)域設(shè)計(jì)建模 340
17.3.4 薪資管理系統(tǒng)的領(lǐng)域?qū)崿F(xiàn)建模 351
第五篇 融合
第 18章 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的戰(zhàn)略考量 362
18.1 限界上下文與微服務(wù) 362
18.1.1 進(jìn)程內(nèi)的通信邊界 362
18.1.2 進(jìn)程間的通信邊界 364
18.1.3 限界上下文與微服務(wù)的關(guān)系 366
18.2 限界上下文之間的分布式通信 368
18.2.1 分布式通信的設(shè)計(jì)因素 368
18.2.2 分布式通信機(jī)制 369
18.3 命令查詢職責(zé)的分離 377
18.3.1 CQS模式 377
18.3.2 CQRS模式的架構(gòu) 378
18.3.3 命令總線的引入 379
18.3.4 事件溯源模式的引入 380
18.3.5 事件總線的引入 381
18.4 事務(wù) 383
18.4.1 本地事務(wù) 384
18.4.2 分布式事務(wù) 386
18.4.3 柔性事務(wù) 388
第 19章 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的戰(zhàn)術(shù)考量 396
19.1 設(shè)計(jì)概念的統(tǒng)一語言 396
19.1.1 設(shè)計(jì)術(shù)語的統(tǒng)一 396
19.1.2 諸多XO 399
19.1.3 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的設(shè)計(jì)統(tǒng)一語言 402
19.2 領(lǐng)域模型的持久化 402
19.2.1 對象關(guān)系映射 403
19.2.2 JPA的應(yīng)對之道 403
19.2.3 瞬態(tài)領(lǐng)域模型 413
19.2.4 領(lǐng)域模型與數(shù)據(jù)模型 415
19.3 資源庫的實(shí)現(xiàn) 417
19.3.1 通用資源庫的實(shí)現(xiàn) 417
19.3.2 資源庫端口與適配器 419
19.3.3 聚合的領(lǐng)域純粹性 420
19.3.4 領(lǐng)域服務(wù)的協(xié)調(diào)價(jià)值 420
第 20章 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)體系 423
20.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的精髓 423
20.1.1 邊界是核心 423
20.1.2 紀(jì)律是關(guān)鍵 425
20.2 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)能力評估模型 426
20.2.1 敏捷迭代能力 427
20.2.2 需求分析能力 427
20.2.3 領(lǐng)域建模能力 428
20.2.4 架構(gòu)設(shè)計(jì)能力 428
20.3 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)參考過程模型 429
20.3.1 EAS案例背景 431
20.3.2 EAS的全局分析 431
20.3.3 EAS的架構(gòu)映射 452
20.3.4 EAS的領(lǐng)域建模 467
20.3.5 EAS的融合設(shè)計(jì) 485
20.4 總結(jié) 495
附錄
附錄A 領(lǐng)域建模范式 498
A.1 結(jié)構(gòu)建模范式 498
A.1.1 結(jié)構(gòu)化編程的設(shè)計(jì)原則 498
A.1.2 結(jié)構(gòu)化編程的問題 499
A.1.3 結(jié)構(gòu)建模范式的設(shè)計(jì)模型 502
A.2 對象建模范式 507
A.2.1 職責(zé) 507
A.2.2 抽象 514
A.3 函數(shù)建模范式 522
A.3.1 代數(shù)數(shù)據(jù)類型 522
A.3.2 純函數(shù) 525
A.3.3 函數(shù)建模范式的演繹法 530
附錄B 事件驅(qū)動(dòng)模型 533
B.1 事件風(fēng)暴 534
B.1.1 理解事件風(fēng)暴 534
B.1.2 探索業(yè)務(wù)全景 537
B.1.3 領(lǐng)域分析建模 543
B.1.4 事件風(fēng)暴與建模范式 547
B.2 事件溯源模式 547
B.2.1 領(lǐng)域事件的定義 548
B.2.2 聚合的創(chuàng)建與更新 548
B.2.3 快照 551
B.2.4 面向聚合的事件溯源 552
B.2.5 聚合查詢的改進(jìn) 553
B.3 事件驅(qū)動(dòng)架構(gòu) 555
B.3.1 事件驅(qū)動(dòng)架構(gòu)風(fēng)格 555
B.3.2 引入事件流 556
附錄C 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)魔方 561
C.1 發(fā)展過程的里程碑 561
C.2 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)魔方 562
C.3 全局分析的魔方切面 563
C.3.1 業(yè)務(wù)角度 563
C.3.2 技術(shù)角度 564
C.3.3 管理角度 564
C.4 架構(gòu)映射的魔方切面 565
C.4.1 業(yè)務(wù)角度 565
C.4.2 技術(shù)角度 566
C.4.3 管理角度 566
C.5 領(lǐng)域建模 566
C.5.1 業(yè)務(wù)角度 567
C.5.2 技術(shù)角度 567
C.5.3 管理角度 568
附錄D 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)統(tǒng)一過程交付物 569
D.1 價(jià)值需求 569
D.1.1 利益相關(guān)者 569
D.1.2 系統(tǒng)愿景 569
D.1.3 系統(tǒng)范圍 569
D.2 業(yè)務(wù)需求 569
D.2.1 概述 569
D.2.2 業(yè)務(wù)流程 570
D.2.3 子領(lǐng)域1…n 570
D.3 系統(tǒng)上下文 571
D.3.1 概述 571
D.3.2 系統(tǒng)協(xié)作 571
D.4 業(yè)務(wù)架構(gòu) 571
D.4.1 業(yè)務(wù)組件 571
D.4.2 業(yè)務(wù)架構(gòu)視圖 571
D.5 應(yīng)用架構(gòu) 571
D.5.1 應(yīng)用組件 571
D.5.2 應(yīng)用架構(gòu)視圖 572
D.6 子領(lǐng)域架構(gòu) 572
D.6.1 核心子領(lǐng)域1…n 572
D.6.2 支撐子領(lǐng)域 572
D.6.3 通用子領(lǐng)域 572
參考文獻(xiàn) 573