提出問題架構
「領域驅動設計」之於微服務,比如麥當勞之於漢堡(我的更喜歡肯德基,漢堡要大些,麥當勞的漢堡,想吃頓飽飯,請先給我上6個😂)。可是TDD測試驅動、MDD模型驅動好像也很火啊,到底什麼在驅動?併發
分析問題框架
不用着急,這是三個5分鐘就能區分開的概念。開發中在協同工做。分佈式
首先糾正兩個誤區。DDD是Domain-Driven Design領域驅動設計。可是TDD和MDD的D意思是Development開發的意思。TDD對應測試驅動開發,MDD對應模型驅動開發。微服務
這就是爲何不少大佬在大談特談「領域」,可是測試驅動、模型驅動其實也都在用,但談的少些。由於這是我等實際一線寫代碼的同窗才用的。高併發
其次,它們三者之間的關係也不是感官直覺感覺到的這種:工具
而實際上他們是在不一樣的階段使用的方法。在咱們團隊,使用關係是這種:測試
下面會介紹咱們團隊怎麼用的。設計
解決問題blog
在Eric Evans的《領域驅動設計-軟件核心複雜性應對之道》中第一節的消化知識開始就開始建模。在咱們平時的設計開發中,在描述整體設計思路也須要用模型也表示。通常常使用的圖有:
流程圖
https://baike.baidu.com/item/%E6%B5%81%E7%A8%8B%E5%9B%BE
時序圖 https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E5%9B%BE/3659178?fr=aladdin
實體-聯繫圖 https://baike.baidu.com/item/%E5%AE%9E%E4%BD%93%E5%85%B3%E7%B3%BB%E5%9B%BE/9005309
用例圖 https://baike.baidu.com/item/%E7%94%A8%E4%BE%8B%E5%9B%BE/9531932?fr=aladdin
領域模型 https://baike.baidu.com/item/%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8B/1022567?fr=aladdin
這些本質上是模型驅動開發的一種方法。如今不少公司和組織在研究一些更方便建模的工具。基於MDA(模型驅動架構)的工具涌現的比較多了,可是基本都是收費的。
在咱們團隊中,會用以文檔形式,裏面附加經常使用的圖的形式來作第一版方案的review。review完以後要進行可行性驗證,這種會用代碼創建一個demo版本。在這個階段,須要將完整的測試用例都補充完整,並測試經過。確保測試用例的正確性。開發階段,測試結果須要和建模階段的結果一致。
因此能夠理解爲demo版是一個帶有mock的粗糙開發版本。實際的開發階段是對demo版本的重構。由於demo版實際功能已經實現了,測試用例不須要有改變。這也符合Martin Fowler的《重構-改善既有代碼的設計》的思想。
總結
以提出問題爲驅動,以解決問題爲整合、用輸出倒逼輸入產品化。
推薦閱讀