1.領域驅動簡介 領域驅動本身是一款古老的軟體建模思想 領域驅動兩大特性:通用語言.限界上下文 1.通用語言是一種思想.解釋是:團隊共用的術語.便於交流.//比如行業的術語或者.一個圈子內通俗的名稱如開發者們對Visual Studio 的簡稱:VS. 2.限界上下文是整個應用程式之內一種概念性邊界 ...
1.領域驅動簡介
領域驅動本身是一款古老的軟體建模思想
領域驅動兩大特性:通用語言.限界上下文
1.通用語言是一種思想.解釋是:團隊共用的術語.便於交流.//比如行業的術語或者.一個圈子內通俗的名稱如開發者們對Visual Studio 的簡稱:VS.
2.限界上下文是整個應用程式之內一種概念性邊界.這個邊界內的領域術語.片語或句子.都是通用語言.都有確定的上下文含義.//限界上下文就像一個圈.包含了內部的術語.也能和其他限界上下文交互.
限界上下文和通用語言屬於一對一關係.限界上下文能容納一個獨立的業務領域所使用的通用語言.
註意當整個團隊工作在同一個限界上下文中通用語言才是通用.
雖然我們只工作在一個限界上下文中.但是我們通常需要和其他限界上下文交互.這時候可以通過上下文映射圖集成.
每個限界上下文都有自己的通用語言.但是語言間的通用術語會有很多重疊.
如果試圖將一種通用語言運用在整個企業中.難免會失敗.//以燃料為例.汽車的柴油和航空煤油.
2.領域.子域.限界上下文
領域是一個團體所做的事和他包含的事物.商業機構通常會確定一個市場.然後在這個市場上銷售產品.每個團體都有他的業務範圍和行為.這個業務範圍就是領域.當你為某個公司開發軟體時.你面對的就是這個公司的領域.
假設物流是一個領域.物流領域應該有四個子域.產品.訂單.發票.物流.假設這套領域開始運轉.零售商用產品向客戶展示.達成購買意向.出現訂單.最後生成發票.安排物流.
產品.訂單.發票.物流這四個子域構成了物流領域.
常規的產品在銷售後必應存在需求量大或者小的情況.量大就容易脫銷.量小就容易過剩.都會對利潤造成損傷.
所以就需要一個核心域:銷量預測系統.通過歷史銷售記錄或者.市場調研等方式.採購正確的數量.
舉個慄子.解釋限界上下文中通用語言的含義.
每一個子域的業務範圍就是一個限界上下文.含有通用語言.
在產品的限界上下文中.客戶的含義只需要:購買歷史.對此產品的忠誠度.購買能力.
在下單的限界上下文中.客戶含義只需要:名字.購買產品.寄送地址.價格.
客戶在每個限界上下文中屬於通用語言.但是只限於此限界上下文使用.
3.上下文映射圖
一個公司的上下文映射圖可以抽象的理解為.一個簡單的框圖.表示若幹限界上下文的映射關係.
上下文映射圖表現的是公司架構當前的狀態.可以直白的看出公司中系統的上下游關係.以及平行關係.
相比傳統的開發思想.大泥球.瀑布.領域驅動設計一般採取敏捷.
系統間明確統一上下游系統交互協議.
單個系統註意解耦合.
以物流為例.一位客戶瀏覽產品系統確定訂購.首先產品系統和庫存系統交互.提供產品.然後產品系統和訂單交互生成訂單.付款後和發票系統交互生成發票.最後通過物流系統交付客戶.最終將此銷售記錄提交預測系統.
預測控制產品系統中能展示的用品.
看起來就像一個金字塔結構.底層的庫存系統最龐大.各種用品.
上一層金字塔產品.只展示有效.能盈利的用品.
在上一層訂單.只有達成購買意向的用品.
在上一層發票.已經付款的用品.不包含購買後未處理客戶就申請退款的用品.
金字塔頂.雙方達成共識.貨物交付.