轉 領域驅動設計,為何又死灰復燃了?

2021-08-22 11:29:32 字數 2112 閱讀 9443

一、領域驅動設計為何又死灰復燃煥發青春?

領域驅動設計(domain driven design,ddd)確實已不再青春,從 eric evans 出版了劃時代的著作《領域驅動設計》至今,已有將近十五年的時間,在軟體設計領域中,似乎可以稱得上是步入老年時代了。

可惜的是,對於這樣乙個在國外 it 圈享有盛譽並行之有效的設計方法學,國內大多數的技術人員卻並不了解,也未曾運用到專案實踐中,真可以說是知音稀少。

ddd 似乎成了一門悄悄發展的隱學,它從來不曾大行其道,卻依舊頑強地發揮著出人意料的價值。

直到行業內吹起微服務的熱風,人們似乎才重新發現了領域驅動設計的價值,並不是微服務拯救了領域驅動設計,是因為領域驅動設計一直在堅硬的生長,然而看起來,確乎因為微服務,領域驅動設計才又煥發了青春。

我從 2006 年開始接觸領域驅動設計,一開始我就發現了它的魅力並沉迷其間。從閱讀 eric evans 的《領域驅動設計》入門,然後嘗試在軟體專案中運用它,也取得了一定成效。

然而,我的學習與運用一直處於摸索之中,始終感覺不得其門而入,直到有機會拜讀 vaughn vernon 出版的《實現領域驅動設計》一書,並負責該書的審校工作,我才觸控到了領域驅動從戰略設計到戰術設計的整體脈絡,並了解其本質:領域驅動設計是乙個開放的設計方法體系

即使如此,許多困惑與謎題仍然等待我去發現線索和答案。設計總是如此,雖然前人已經總結了許多原則與方法,卻不能像數學計算那樣,按照公式與公理進行推導就一定能得到準確無誤的結果。設計沒有唯一的真相。

如果你已經能設計出美麗優良的軟體架構,如果你只希望腳踏實地做一名高效編碼的程式設計師,如果你是一位注重使用者體驗的前端設計人員,如果你負責的軟體系統並不複雜,那麼,你確實不需要學習領域驅動設計!

領域驅動設計當然並非「銀彈」,自然也不是解決所有疑難雜症的「靈丹妙藥」,請事先降低對領域驅動設計的不合現實的期望。

我以中肯地態度總結了領域驅動設計可能會給你帶來的收穫:

沒有誰能夠做到領域驅動設計的一蹴而就,一門課程也不可能窮盡領域驅動設計的方方面面,從知識的學習到知識的掌握,進而達到能力的提公升,需要乙個漫長的過程。

所謂「理論聯絡實際」雖然是一句耳熟能詳的老話,但其中蘊含了顛撲不破的真理。

我在進行領域驅動設計培訓時,總會有學員希望我能給出數學公式般的設計準則或規範,似乎軟體設計就像拼積木一般,只要遵照圖示中給出的拼搭過程,不經思考就能拼出期待的模型。——這是不切實際的幻想。

要掌握領域驅動設計,就不要被它給出的概念所迷惑,而要去思索這些概念背後蘊含的原理,多問一些為什麼。同時,要學會運用設計原則去解決問題,而非所謂的「設計規範」。例如:

我強烈建議讀者諸君要學會對設計的本質思考,不要只限於對設計概念的掌握,而要追求對設計原則與方法的融匯貫通。

只有如此,才能針對不同的業務場景靈活地運用領域驅動設計,而非像乙個牽線木偶般遵照著僵硬的過程進行死板地設計。

國內關於領域驅動設計(domain driven design,ddd)的原創書籍少之又少,甚至可以說沒有,我結合了十餘年實踐領域驅動設計的經驗與心得,並糅合了 ddd 社群最新發展的理論知識與最佳實踐,策劃了《領域驅動設計實踐》系列課程,可以稱得上是乙個全面講解 ddd 的原創課程

本系列課程拆分為兩個課程,即《領域驅動戰略設計實踐》和《領域驅動戰術設計實踐》,分別對應領域驅動設計的戰略設計階段與戰術設計階段。

本課程是《領域驅動設計實踐》系列課程的第乙個課程,其全面覆蓋了領域建模分析與架構設計的戰略設計過程。

從剖析軟體複雜度的根源開始,引入了領域場景分析與敏捷專案實踐,幫助需求分析人員與軟體設計人員分析軟體系統的問題域、提煉真實表達的領域知識、最終建立系統的統一語言。

本課程將主流架構設計思想、微服務架構設計原則與領域驅動設計中屬於戰略設計層面的限界上下文、上下文對映、分層架構結合起來,完成從需求到架構設計再到構建**模型的架構全過程。

此外,本課程內容的每乙個知識點都會結合專案實踐案例來講解,力求內容的深入淺出,並在講解過程中介紹了諸多架構設計原則與模式,豐富了知識內涵,但又不僅只限於對領域驅動設計的覆蓋。同時,本課程也可以作為軟體架構設計的參考書。

為了讓讀者更容易掌握整個戰略設計的全過程,最後還給出了乙個真實的完整案例:eas 系統,結合該案例來講解如何在專案實踐中進行領域建模分析、識別限界上下文,並最終構建整個系統的架構。

為何要領域驅動設計

參考 領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是 都顯得太過 高大上 一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一...

為何要領域驅動設計

參考 領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是 都顯得太過 高大上 一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一...

為何要領域驅動設計?

領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是 都顯得太過 高大上 一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一些中小...