天天看點

DDD領域驅動設計 - 設計文檔模闆

系統背景和定位

業務需求描述

系統用例圖

關鍵業務流程圖

領域語言整理,主要是整理領域中的各種術語的定義,名詞解釋

領域劃分(分析出子域、核心域、支撐域)

每個子域的領域模型設計(實體、值對象、聚合、領域事件,需要注意的是:領域模型是需要抽象的,要分析業務本質,而不是簡單的直接對需求進行模組化)

領域模型詳細說明(如為什麼這樣設計的原因、模型内對象的關系、各種業務規則、資料一緻性規則等)

領域服務、倉儲、工廠設計

saga流程設計

場景走查(講述如何通過領域模型、領域服務、倉儲、saga流程等完成系統用例以及關鍵業務流程的)

架構設計(如傳統三層架構、經典四層架構、cqrs/es架構)

去除一切花俏的模組化技巧,我覺得最重要的方向就是去努力分析問題和事物的本質,針對這個本質進行領域模組化。這個領域模組化,最主要的還是鍛煉的人的事物抽象能力。10個人,建出來的領域模型都不同。本質原因就是大家對同一個問題的了解不同,對事物的本質的了解不同。雖然最終都能解決目前的問題,但是對适應未來需求變化的能力卻是不同。

是以,我們要把時間花在多了解業務上,讓自己成為領域專家,隻有這樣,才能充分了解業務。多了解一點業務,你才能更好的抽象出業務本質最後的領域模型。

領域模組化是一個疊代的過程,人無完人,時間也很多時候不是很充足。是以,不太可能一步到位把領域設計做的很完美,會有一個持續的過程。整體項目規劃的時候可能會有個大的架構設計、業務大圖,但是不可能達到領域設計的粒度,隻能是一期一期的完善,到最後可能才會有完整的上面的目錄内容。每一期都需要考慮支援的場景限制、上下文、系統邊界、持續內建的相關設計。設計product, not project。

繼續閱讀