領域驅動設計是時下軟件設計領域中的熱門話題,它通過指導我們構建領域模型,來表達豐富的軟件功能需求,并由此實現可以滿足用戶真正的需要的軟件。然而在真實的實踐過程中,由于不同的角色對于DDD的核心概念和主要工具的理解不同,常常會造成協(xié)作上的不一致。為了幫助和指導面向對象開發(fā)人員、系統(tǒng)分析人員和設計人員更加合理地組織工作,各有側重、有條不紊地進行復雜系統(tǒng)的開發(fā),并有效地建立豐富而實用的領域模型。本書的作者Vaughn Vernon(他也是《實現領域驅動設計》)將自己近年來在領域驅動設計領域的理解進一步提煉,并將本書以精粹的形式呈現給廣大的讀者。 本書的內容包括: * DDD對于廣大讀者的意義- DDD 對我而言 * 從戰(zhàn)略層面進行設計 - 如何運用限界上下文和通用語言、子域、上下文映射 * 從戰(zhàn)術層面進行設計 - 如何運用聚合、領域事件 * 相關輔助工具 - 加速和管理工具 當然,僅僅通過此書的閱讀是無法深入的掌握領域驅動設計的精髓,無論你是什么經驗水平或角色,請閱讀本書并在項目中實踐DDD。并在這之后,再重讀此書,看看你從項目的經歷中學到了什么,反復這樣的循環(huán),你將會獲益匪淺。
Vaughn Vernon 是一位經驗豐富的軟件工匠,也是追求簡化軟件設計和實現的思想領袖。他是暢銷書《實現領域驅動設計》和《響應式架構:消息模式Actor實現與Scala,Akka應用集成》的作者。他在全球面向數百位開發(fā)者教授過IDDD課程,并經常在行業(yè)會議上發(fā)表演講。他對分布式計算、消息機制、特別是Actor模型非常有興趣。Vaughn擅長領域驅動設計和使用Scala、Akka實現DDD方面的咨詢。
覃宇,ThoughtWorks 高級咨詢師,10余年移動應用開發(fā)經驗,Android 技術專家,曾為AOSP貢獻過測試用例;目前專注于移動應用的架構設計、自動化測試以及持續(xù)交付。譯有《Kotlin實戰(zhàn)》《Severless:無服務架構與AWS Lambda》等書。
目錄
第1章 DDD對我而言 1
DDD很難掌握嗎 2
優(yōu)秀設計、糟糕設計和有效設計 3
戰(zhàn)略設計 8
戰(zhàn)術設計 9
學習過程與知識提煉 10
讓我們開始吧! 11
第2章 運用限界上下文與通用語言進行戰(zhàn)略設計 13
領域專家和業(yè)務驅動 20
案例分析 24
戰(zhàn)略設計是必要的根基 28
在質疑中統(tǒng)一 32
發(fā)展通用語言 38
應用場景 42
如何持續(xù) 45
架構 46
本章小結 50
第3章 運用子域進行戰(zhàn)略設計 51
什么是子域 52
子域類型 53
應對復雜性 54
本章小結 56
第4章 運用上下文映射進行戰(zhàn)略設計 57
映射的種類 60
合作關系 60
共享內核 61
客戶—供應商 62
跟隨者 63
防腐層 64
開放主機服務 65
已發(fā)布語言 65
各行其道 66
大泥球 67
善用上下文映射 69
基于SOAP的RPC 70
RESTful HTTP 72
消息機制 74
上下文映射示例 79
本章小結 83
第5章 運用聚合進行戰(zhàn)術設計 85
為什么使用它 86
聚合的經驗法則 91
規(guī)則一:在聚合邊界內保護業(yè)務規(guī)則不變性 92
規(guī)則二:聚合要設計得小巧 93
規(guī)則三:只能通過標識符引用其他聚合 95
規(guī)則四:利用最終一致性更新其他聚合 96
建立聚合模型 99
慎重選擇抽象級別 104
大小適中的聚合 106
可測試的單元 108
本章小結 108
第6章 運用領域事件進行戰(zhàn)術設計 111
設計、實現并運用領域事件 113
事件溯源 119
本章小結 121
第7章 加速和管理工具 123
事件風暴 124
其他工具 134
在敏捷項目中管理DDD 135
運用SWOT分析法 137
建模Spike和建模債務 139
任務識別與工作量估算 140
限制建模時間 143
如何實施 144
和領域專家打交道 145
本章小結 147
參考文獻 148