領域驅動設計 1 概述

2021-09-24 15:58:29 字數 1391 閱讀 6603

領域驅動設計

隨著計算機的普及,軟體的發展也從一開始的單一計算,變為大規模,多功能的集合.這也就對軟體開發的效率,規模,可維護性提出了更多的要求,針對於軟體不同的發展階段,它的開發模式也是乙個逐漸演變的過程:    

瀑布開發模式 -> 敏捷開發模式 -> 領域驅動設計 -> 微服務 -> ...
**瀑布開發模式**:強調軟體規範,使用工程管理思想來管理軟體.通過嚴格的流程分工:需求分析->設計->開發->測試->運維.職能的明確可以提高節點內部的執行效率,針對小專案,這種方式從需求到運維,可以發揮很好的作用,部門之間協調週期也是可控的.但是對於複雜專案,由於軟體並不像工程那樣固定明確,設計無法面面俱到,很多設計到了開發階段才能發現,返工現象變多,問題的反饋週期會變長,再加上市場等外部環境的變化,軟體失敗的風險也會更大.

**敏捷開發模式**:敏捷開發模式的出現就是為了解決設計固化的問題,它講究以源**為設計文件,通過宣告性約束來保證**的規範性,上來就是,什麼都不說就是幹.然後通過不斷重構,獲取乙個整體設計.這種開發模式打破了設計和開發的界限,將開發視為軟體的核心,它很適合需求變化快,迭代快的行業,比如網際網路.

**領域驅動設計**:因為敏捷開發模式這種以點帶面的特點,使得很難形成乙個整體設計,因為大家都專注於自己的模組,整體性就很差.通過將領域專家和開發人員結合,共同協商出乙個統一模型,然後再細化開發,然後通過約束和重構,不斷深化模型,實現設計和開發的統一,就是領域驅動設計的內容,它的核心是領域模型,領域即你的問題域,也就是軟體要解決問題的範圍.模型就是你現實問題的抽象,就像你說地球感覺很陌生,但是說地球儀,就能從整體上把握地球的特點.當然任何事物都有兩面性,領域驅動設計從提出到現在,並沒有太多的實踐示例,因為它的逼格有點高.首先領域專家就很難找,其次領域模型很難獲取,不同行業模型不同,像電信等複雜的領域,模型獲取更加困難.

**微服務**:小而自製的服務模型.它也是解決軟體的複雜性問題方案.核心就是將軟體根據領域進行拆分,一般複雜都是因為規模大,行業資訊量大,規則交錯,但是你將軟體根據領域進行拆分為多個服務,將規模變小,它的資訊量和規則的複雜度也會下降,通過不斷的分化,拆解自己問題域,實現問題的簡化.同時通過服務呼叫,組合的方式,實現原來的單體應用功能.任何設計都不是一蹴而成的,了解背後的發展階段,可以更好的理解它的理念.

*領域驅動設計*:

核心理論包括兩方面:通用語言和領域模型管理.    

其中領域模型管理又包括:模型驅動設計,上下文邊界,核心領域

領域驅動設計

領域驅動設計 1 概述

領域驅動設計 隨著計算機的普及,軟體的發展也從一開始的單一計算,變為大規模,多功能的集合.這也就對軟體開發的效率,規模,可維護性提出了更多的要求,針對於軟體不同的發展階段,它的開發模式也是乙個逐漸演變的過程 瀑布開發模式 敏捷開發模式 領域驅動設計 微服務 瀑布開發模式 強調軟體規範,使用工程管理思...

領域驅動設計概述(一)

答 使用者亟待解決的問題區域就是領域。人類社會的方方面面,上至高精尖的前沿科技,下至常態化的衣食住行都可以用領域來描述。答 領域驅動設計的本質就是通過消化吸收大量的領域知識,最終得出乙個反映深層次領域知識並聚焦於關鍵領域概念的模型。也可以理解為領域驅動設計的產物就是模型。答 1 模型是對大量知識進行...

1 認識《領域驅動設計》

第一,大家應該知道領域驅動的是設計,這是必須的。領域驅動設計 顧名思義,首先強調的是 領域 這個詞不是指技術上的任何東西,而是指 業務領域 是說用領域的角度去分析和設計業務。可是在現實中我們有多少人又真的懂業務呢,那些低層次的程式設計師就不用說了,因為他們了解的業務甚至都不是第一手的,都是經過架構師...