解構領域驅動設計
張逸
- 出版商: 人民郵電
- 出版日期: 2021-09-01
- 定價: $899
- 售價: 8.5 折 $764
- 語言: 簡體中文
- 頁數: 576
- 裝訂: 平裝
- ISBN: 7115566232
- ISBN-13: 9787115566232
-
相關分類:
Domain-Driven Design
-
相關翻譯:
複雜架構極簡化:領域驅動設計(DDD)10倍程式開發速度 (繁中版)
銷售排行:
👍 2021 年度 簡體中文書 銷售排行 第 16 名
🥉 2021/10 簡體中文書 銷售排行 第 3 名
🥇 2021/9 簡體中文書 銷售排行 第 1 名
立即出貨
買這商品的人也買了...
-
$480$379 -
$730實現領域驅動設計 (Implementing Domain-Driven Design)
-
$450$356 -
$390$371 -
$680$578 -
$680$537 -
$680$537 -
$714$678 -
$534$507 -
$980$774 -
$680$537 -
$560$437 -
$690$538 -
$480$379 -
$534$507 -
$662敏捷測試 : 以持續測試促進持續交付
-
$600$468 -
$556金融級 IT 架構:數字銀行的雲原生架構解密
-
$720$562 -
$780$608 -
$1,015架構之道 : 軟件構建的設計方法 (Righting Software)
-
$620$484 -
$800$624 -
$780$616 -
$580$458
相關主題
商品描述
本書全面闡釋了領域驅動設計(domain-driven design,DDD)的知識體系,內容覆蓋領域驅動設計的主要模式與主流方法,並在此基礎上提出“領域驅動設計統一過程”(domain-driven design unified process,DDDUP),將整個軟件構建過程劃分為全局分析、架構映射和領域建模3個階段。除給出諸多案例來闡釋領域驅動設計統一過程中的方法與模式之外,本書還通過一個真實而完整的案例全面展現瞭如何進行領域驅動設計統一過程的實施和落地。為了更好地運用領域驅動設計統一過程,本書還開創性地引入了業務服務、菱形對稱架構、領域驅動架構、服務驅動設計等方法與模式,總結了領域驅動設計能力評估模型與參考過程模型。本書提出的一整套方法體系已在多個項目中推廣和落地。
本書適合希望領會軟件架構本質、提高軟件架構能力的軟件架構師,希望提高領域建模能力、打磨軟件設計能力的開發人員,希望掌握業務分析與建模方法的業務分析人員,希望學習領域驅動設計並將其運用到項目中的軟件行業從業人員閱讀參考。
作者簡介
張逸,高質量編碼實踐者、領域驅動設計佈道師、微服務系統架構師、大數據平台架構師、敏捷轉型諮詢師,曾就職於中興通訊、惠普、思特沃克(ThoughtWorks)、民航(成都)信息等企業,致力於大型軟件企業的分佈式架構設計、領域驅動設計、大數據平台架構設計以及垂直領域的企業架構規劃與建設,並為國內外多家企業提供技術培訓與諮詢服務。
目錄大綱
一篇 開篇
1章 軟件複雜度剖析 2
1.1 什麼是複雜系統 2
1.2 理解能力 4
1.2.1 規模 4
1.2.2 結構 6
1.3 預測能力 9
1.3.1 過度設計 9
1.3.2 設計不足 11
2章 領域驅動設計概覽 13
2.1 領域驅動設計的基本概念 14
2.1.1 領域驅動設計元模型 14
2.1.2 問題空間和解空間 16
2.1.3 戰略設計和戰術設計 17
2.1.4 領域模型驅動設計 18
2.2 領域驅動設計過程 19
2.3 控制軟件複雜度 21
2.3.1 控制規模 21
2.3.2 清晰結構 23
2.3.3 響應變化 25
2.4 冷靜認識 28
3章 領域驅動設計統一過程 29
3.1 領域驅動設計現存的不足 30
3.2 領域驅動設計統一過程 31
3.2.1 統一過程的二維模型 31
3.2.2 統一過程的動態結構 33
3.2.3 統一過程的靜態結構 36
*二篇 全局分析
4章 問題空間探索 40
4.1 全局分析的5W模型 40
4.2 高效溝通 42
4.2.1 達成共識 42
4.2.2 統一語言 44
4.3 高效協作 49
4.3.1 商業模式畫布 49
4.3.2 業務流程圖 51
4.3.3 服務藍圖 52
4.3.4 用例圖 54
4.3.5 事件風暴 55
4.3.6 學習循環 56
5章 價值需求分析 57
5.1 識別利益相關者 57
5.1.1 什麼是利益相關者 57
5.1.2 利益相關者的分類 58
5.2 明確係統願景 61
5.3 確定係統範圍 62
5.4 使用商業模式畫布 64
6章 業務需求分析 66
6.1 業務流程 66
6.1.1 業務流程的關鍵點 67
6.1.2 業務流程的分類 67
6.1.3 業務流程的呈現 67
6.2 業務場景 71
6.2.1 業務場景的5W模型 71
6.2.2 業務服務 72
6.2.3 業務服務的識別 75
6.2.4 業務服務的呈現 76
6.3 子領域 77
6.3.1 子領域元模型 78
6.3.2 子領域的劃分 79
6.3.3 子領域映圖 80
三篇 架構映
7章 同構系統 82
7.1 概念層次的同構系統 83
7.1.1 架構的定義 83
7.1.2 架構方案的推演 84
7.1.3 領域驅動架構風格 86
7.2 設計層次的同構系統 87
7.3 管理層次的同構系統 89
7.3.1 組建團隊的原則 89
7.3.2 康威定律的運用 91
8章 系統上下文 93
8.1 “系統內”和“系統外” 93
8.2 系統上下文 94
8.2.1 伴生系統 94
8.2.2 系統上下文圖 95
8.3 系統上下文的確定 95
8.3.1 參考價值需求 95
8.3.2 業務序列圖 96
9章 限界上下文 98
9.1 限界上下文的定義 98
9.2 限界上下文的特徵 101
9.2.1 領域模型的知識語境 101
9.2.2 業務能力的縱向切分 103
9.2.3 自治的架構單元 105
9.2.4 案例:供應鏈的商品模型 106
9.3 限界上下文的識別 111
9.3.1 業務維度 111
9.3.2 驗證原則 115
9.3.3 管理維度 118
9.3.4 技術維度 120
10章 上下文映 124
10.1 上下文映概述 124
10.2 通信集成模式 126
10.2.1 防腐層 126
10.2.2 開放主機服務 128
10.2.3 發布語言 129
10.2.4 共享內核 131
10.3 團隊協作模式 132
10.3.1 合作者 133
10.3.2 客戶方/供應方 133
10.3.3 發布者/訂閱者 135
10.3.4 分離方式 136
10.3.5 遵奉者 137
10.4 上下文映的設計誤區 138
10.4.1 語義關係形成的誤區 138
10.4.2 對像模型形成的誤區 139
10.5 上下文映的確定 140
10.5.1 任務分解的影響 140
10.5.2 呈現上下文映 143
11章 服務契約設計 145
11.1 消息契約 145
11.1.1 消息契約模型 145
11.1.2 消息契約的轉換 147
11.2 服務契約 149
11.2.1 應用服務 150
11.2.2 遠程服務 153
11.3 設計服務契約 160
11.3.1 業務服務的細化 160
11.3.2 服務序列圖 162
11.3.3 服務契約的表示 163
12章 領域驅動架構 165
12.1 菱形對稱架構 165
12.1.1 六邊形架構 165
12.1.2 整潔架構思想 168
12.1.3 分層架構 169
12.1.4 演進為菱形對稱架構 173
12.1.5 菱形對稱架構的組成 177
12.1.6 引入上下文映 179
12.1.7 改進的菱形對稱架構 180
12.1.8 菱形對稱架構的價值 182
12.1.9 菱形對稱架構的運用 190
12.2 系統分層架構 197
12.2.1 關注點分離 197
12.2.2 映子領域 198
12.2.3 邊緣層 200
12.3 領域驅動架構風格 202
篇 領域建模
13章 模型驅動設計 206
13.1 軟件系統中的模型 206
13.2 模型驅動設計 207
13.3 領域模型驅動設計 210
13.3.1 領域模型 210
13.3.2 共同建模 211
13.3.3 領域模型與統一語言 212
13.3.4 迭代建模 213
14章 領域分析建模 215
14.1 統一語言與領域分析模型 215
14.2 快速建模法 215
14.2.1 名詞建模 217
14.2.2 動詞建模 219
14.2.3 歸納抽象 221
14.2.4 確定關係 222
14.3 領域分析模型的精煉 222
14.4 領域分析模型與限界上下文 223
15章 領域模型設計要素 226
15.1 領域設計模型 226
15.1.1 理想的對像模型 226
15.1.2 戰術設計元模型 227
15.1.3 模型元素的哲學依據 228
15.2 實體 229
15.2.1 身份標識 230
15.2.2 屬性 234
15.2.3 領域行為 236
15.3 值對象 239
15.3.1 值對象與實體的本質區別 239
15.3.2 不變性 241
15.3.3 領域行為 242
15.3.4 值對象的優勢 247
15.4 聚合 247
15.4.1 類的關係 247
15.4.2 模型的設計約束 249
15.4.3 聚合的定義與特徵 252
15.4.4 聚合的設計原則 254
15.4.5 聚合的協作 260
15.5 聚合生命週期的管理 265
15.5.1 工廠 266
15.5.2 資源庫 274
15.6 領域服務 280
15.6.1 聚合的問題 280
15.6.2 領域服務的特徵 281
15.6.3 領域服務的運用場景 282
15.7 領域事件 287
15.7.1 建模思想的轉變 287
15.7.2 領域事件的定義 289
15.7.3 對象建模範式的領域事件 290
16章 領域設計建模 295
16.1 角色構造型 295
16.1.1 角色構造型與領域驅動設計 296
16.1.2 領域驅動設計的角色構造型 297
16.2 設計聚合 301
16.2.1 理順對像圖 302
16.2.2 分解關係薄弱處 303
16.2.3 調整聚合邊界 310
16.3 服務驅動設計 312
16.3.1 業務服務 312
16.3.2 業務服務的層次 313
16.3.3 服務驅動設計方法 313
16.3.4 服務驅動設計過程 315
16.3.5 業務服務的關鍵價值 323
17章 領域實現建模 324
17.1 穩定的領域模型 324
17.1.1 菱形對稱架構與測試金字塔 325
17.1.2 測試形成的精煉文檔 326
17.1.3 單元測試 327
17.2 測試優先的領域實現建模 329
17.2.1 測試驅動開發 329
17.2.2 測試驅動開發的節奏 331
17.2.3 簡單設計 333
17.3 領域建模過程 334
17.3.1 薪資管理系統的需求說明 336
17.3.2 薪資管理系統的領域分析建模 336
17.3.3 薪資管理系統的領域設計建模 340
17.3.4 薪資管理系統的領域實現建模 351
五篇 融合
18章 領域驅動設計的戰略考量 362
18.1 限界上下文與微服務 362
18.1.1 進程內的通信邊界 362
18.1.2 進程間的通信邊界 364
18.1.3 限界上下文與微服務的關係 366
18.2 限界上下文之間的分佈式通信 368
18.2.1 分佈式通信的設計因素 368
18.2.2 分佈式通信機制 369
18.3 命令查詢職責的分離 377
18.3.1 CQS模式 377
18.3.2 CQRS模式的架構 378
18.3.3 命令總線的引入 379
18.3.4 事件溯源模式的引入 380
18.3.5 事件總線的引入 381
18.4 事務 383
18.4.1 本地事務 384
18.4.2 分佈式事務 386
18.4.3 柔性事務 388
19章 領域驅動設計的戰術考量 396
19.1 設計概念的統一語言 396
19.1.1 設計術語的統一 396
19.1.2 諸多“XO” 399
19.1.3 領域驅動設計的設計統一語言 402
19.2 領域模型的持久化 402
19.2.1 對象關係映 403
19.2.2 JPA的應對之道 403
19.2.3 瞬態領域模型 413
19.2.4 領域模型與數據模型 415
19.3 資源庫的實現 417
19.3.1 通用資源庫的實現 417
19.3.2 資源庫端口與適配器 419
19.3.3 聚合的領域純粹性 420
19.3.4 領域服務的協調價值 420
20章 領域驅動設計體系 423
20.1 領域驅動設計的精髓 423
20.1.1 邊界是核心 423
20.1.2 紀律是關鍵 425
20.2 領域驅動設計能力評估模型 426
20.2.1 敏捷迭代能力 427
20.2.2 需求分析能力 427
20.2.3 領域建模能力 428
20.2.4 架構設計能力 428
20.3 領域驅動設計參考過程模型 429
20.3.1 EAS案例背景 431
20.3.2 EAS的全局分析 431
20.3.3 EAS的架構映 452
20.3.4 EAS的領域建模 467
20.3.5 EAS的融合設計 485
20.4 總結 495
附錄
附錄A 領域建模範式 498
A.1 結構建模範式 498
A.1.1 結構化編程的設計原則 498
A.1.2 結構化編程的問題 499
A.1.3 結構建模範式的設計模型 502
A.2 對象建模範式 507
A.2.1 職責 507
A.2.2 抽象 514
A.3 函數建模範式 522
A.3.1 代數數據類型 522
A.3.2 純函數 525
A.3.3 函數建模範式的演繹法 530
附錄B 事件驅動模型 533
B.1 事件風暴 534
B.1.1 理解事件風暴 534
B.1.2 探索業務全景 537
B.1.3 領域分析建模 543
B.1.4 事件風暴與建模範式 547
B.2 事件溯源模式 547
B.2.1 領域事件的定義 548
B.2.2 聚合的創建與更新 548
B.2.3 快照 551
B.2.4 面向聚合的事件溯源 552
B.2.5 聚合查詢的改進 553
B.3 事件驅動架構 555
B.3.1 事件驅動架構風格 555
B.3.2 引入事件流 556
附錄C 領域驅動設計魔方 561
C.1 發展過程的里程碑 561
C.2 領域驅動設計魔方 562
C.3 全局分析的魔方切面 563
C.3.1 業務角度 563
C.3.2 技術角度 564
C.3.3 管理角度 564
C.4 架構映的魔方切面 565
C.4.1 業務角度 565
C.4.2 技術角度 566
C.4.3 管理角度 566
C.5 領域建模 566
C.5.1 業務角度 567
C.5.2 技術角度 567
C.5.3 管理角度 568
附錄D 領域驅動設計統一過程交付物 569
D.1 價值需求 569
D.1.1 利益相關者 569
D.1.2 系統願景 569
D.1.3 系統範圍 569
D.2 業務需求 569
D.2.1 概述 569
D.2.2 業務流程 570
D.2.3 子領域1…n 570
D.3 系統上下文 571
D.3.1 概述 571
D.3.2 系統協作 571
D.4 業務架構 571
D.4.1 業務組件 571
D.4.2 業務架構視圖 571
D.5 應用架構 571
D.5.1 應用組件 571
D.5.2 應用架構視圖 572
D.6 子領域架構 572
D.6.1 核心子領域1…n 572
D.6.2 支撐子領域 572
D.6.3 通用子領域 572
參考文獻 573