領域驅動設計及其優點介紹 - DEV社群
應用可以使用最新的技術開發,使用最新的技術並具有最佳的介面等,但如果它不能解決業務需求,那麼它就不會被認為是有用的。這就是領域驅動設計(DDD)的用武之地。正如其名稱所述,這裡的重點是關注特定業務的領域。
事實上,要設計一個好的軟體,瞭解該軟體的用途非常重要。要建立銀行軟體系統,您需要充分了解銀行業務的內容,必須瞭解銀行業務領域。
什麼是領域驅動設計?
在軟體開發中,領域驅動設計方法用於複雜需求,將實現連線到核心業務概念的演化模型。它將重點放在問題域上,基本上有助於識別架構並告知軟體需要複製的機制。
DDD具有戰略價值,它將業務領域概念對映到軟體工件中。它是關於使用相同的普通,統一的語言來組織與業務問題一致的程式碼工件。
DDD不是一種方法論,它更多的是關於軟體的架構設計,提供一種實踐結構來做出有助於軟體專案複雜領域的設計決策。
DDE方法由Eric Evans在“域驅動設計:處理軟體核心中的複雜性 ”一書中介紹。Apiumhub的每個開發人員都已閱讀它,絕對建議您閱讀它!
領域驅動設計側重於:
- 核心域和域邏輯
- 域模型的複雜設計
- 透過與領域專家合作,改進應用程式模型並解決與領域相關的新興問題
DDD包含通用統一語言,技術和模式以及架構。重點放在業務和模擬試圖解決的問題上。
使用DDD,開發人員可以獲得有助於最大限度地降低複雜性的技術,並有助於推動與其他人的協作。我們的想法是使用需求語言,或使用業務本身使用的相同語言將業務流程對映到模型中。
一些用於DDD的常用術語
統一語言
在這裡,我們討論了所有團隊使用的語言,以便將團隊的所有活動與軟體連線起來。無處不在的DDD語言有助於更多地瞭解業務專家使用的術語。技術團隊能夠知道語言是否發生變化以及特定術語是否會用於不同的含義。
1.上下文 ,上下文是一個確定語句含義的設定。
2.上下文對映, 將上下文連線在一起的形式。對於您找到的每個上下文:一種語言,一個獨立的實現以及與其他有界上下文互動的介面。
3.有界上下文, 有界上下文是泛在語言和相應模型有效的上下文。它使團隊清楚地瞭解什麼必須是一致的,什麼可以獨立發展。
4.模型,模型是描述域的選定方面的系統,通常用於解決與該特定域相關的問題。
強域模型的特徵是什麼?
- 對齊,藉助業務模式,戰略和流程。
- 隔離,隔離業務中域和和其他層
- 鬆散設計,不依賴於域層兩側的應用程式層
- 可重複使用,避免重複的模型
- 是一個抽象而乾淨的分層,使維護,測試和版本控制更容易。
- 對基礎架構框架的最小依賴性,避免超出這些框架並在外部框架上緊密耦合
- 設計有“普通的舊Java物件程式設計模型”。沒有任何技術或框架依賴
我們同意這是對DDD的簡短而簡短的介紹。本文的重點是瞭解什麼是域驅動設計。我將給你留下DDD的主要好處列表,這些好處可能會讓你對這個話題更加好奇!
領域驅動設計的主要優點
1.以業務必須為導向
如您所知,在域驅動設計中,每個人最終都使用相同的語言和術語,團隊正在共享模型。開發人員與業務團隊進行更好的溝通,在為反映業務運營方式的模型建立解決方案時,工作效率更高,而不是軟體如何運作。
2. 整個團隊使用的一組通用術語和定義
團隊在開發週期中發現溝通變得更加容易,因為從一開始,他們就專注於建立雙方共同普遍存在的語言(開發和業務專家)。該語言與專案的領域模型相關聯,技術方面透過所有理解的簡單術語來引用。
3. 讓跟蹤變得容易
不用說,如果每個人都使用相同的術語,跟蹤需求實現變得非常簡單。
4. 更好的程式碼
使用DDD,您最終會獲得更易讀的程式碼並減少重複。
5. 敏捷是一個標準
透過遵循迭代和增量的敏捷方法,DDD將領域專家的心理模型闡明為業務的有用模型。
6. 獲得良好的軟體架構
由於充分了解有界上下文,所有團隊都能夠了解某些整合的重要性,尤其是原因。這意味著您知道自己正在獲得良好的軟體架構。
7. 溝通很重要
一般來說,DDD在幫助團隊建立通用模型方面非常有用。然後,來自業務方和開發方的團隊可以使用此模型來交流業務需求,資料實體和流程模型。
8.平衡的應用程式
使用DDD,您可以圍繞域的概念以及領域專家提供的建議進行構建。這意味著開發的應用程式確實代表了域所需的內容,而不是獲得僅專注於UX和UI的應用程式,而忽略了其餘的需求。最重要的是獲得適合該特定領域的使用者/受眾的均衡產品。
9.繼續關注解決方案
事實上,純模型周圍有清晰的界限,使開發人員能夠將精力放在最重要的事情上,使他們能夠專注於解決方案。
10.純粹靈活
DDD基於物件導向設計的概念。這意味著域模型中的幾乎所有內容都基於物件,因此將採用模組化和封裝,使系統能夠定期和持續地進行更改和改進。
相關文章
- EntityFramework之領域驅動設計實踐介紹Framework
- 領域驅動設計的概念解釋 -DEVdev
- 領域驅動設計簡介
- 領域驅動設計的參考建議 | heise Devdev
- 領域驅動設計 (DDD) 簡介 - jannikwempe
- 社群驅動增長 | Dev.Together 分論壇介紹dev
- 領域驅動設計--戰術模式簡介模式
- 領域驅動設計簡介 - danhaywood(點選標題見原文)
- DDD領域驅動設計:領域事件事件
- MasaFramework -- 領域驅動設計Framework
- 領域驅動設計示例
- 理解領域驅動設計
- 戲說領域驅動設計(廿五)——領域事件事件
- 領域驅動設計戰術模式--領域事件模式事件
- 領域驅動設計核心概念
- DDD領域驅動設計pdf
- 再談領域驅動設計
- 實現領域驅動設計
- 戲說領域驅動設計(廿一)——領域服務
- 領域驅動設計戰術模式--領域服務模式
- DDD社群權威解讀:2020年之領域驅動設計 - ziobrando
- DDD-領域驅動設計示例
- 微服務領域驅動設計 - semaphoreci微服務
- 淺談DDD(領域驅動設計)
- 淺談 DDD 領域驅動設計
- 何時使用領域驅動設計
- DDD領域驅動設計:倉儲
- JavaScript中的領域驅動設計JavaScript
- 前端開發-領域驅動設計前端
- 戲說領域驅動設計(五)——子域
- 掌握領域驅動設計的關鍵點在哪裡? - jfcloutier
- 問題驅動設計與領域驅動設計的區別 - abdullin
- 最常見領域驅動設計錯誤
- 領域驅動設計整合與架構架構
- dayatang/dddlib:DDD領域驅動設計庫
- 戲說領域驅動設計(廿二)——聚合
- 戲說領域驅動設計(三)——困境
- DDD-領域驅動設計簡談