解讀中興通訊在物聯網行業如何踐行DDD

  此前,在由 ThoughtWorks 舉辦的領域驅動設計峯會 DDD-China 2019 上,InfoQ 記者就開發團隊爲什麼須要 DDD、目前業界實踐 DDD 的挑戰等問題對中興通信資深軟件架構師張曉龍進行了採訪。如下爲重點內容,這裏記錄採訪內容的學習筆記。html

  張曉龍認爲,開發團隊真的須要 DDD。DDD 思想貫穿了整個軟件開發的生命週期,包括對需求的分析、建模、架構、設計,和最終的代碼實現,甚至對代碼的測試與重構。代碼是業務的核心資產,開發團隊確定是代碼的編寫者和守護者。架構

  對於開發團隊而言,須要關注如下幾點:性能

  第一,統一語言,讓團隊成員能夠作到無障礙溝通,不論是什麼角色都能基於一樣的畫面進行討論;學習

  第二,團隊中各個角色都圍繞領域模型開展工做測試

  第三,代碼物理分層設計標準化,好比說在分層設計時,基礎設施層怎麼設計,應用層怎麼設計,DTO 應該放在哪兒,領域層中各個建模元素如何組織?編碼

  更進一步,在分層架構中,應用層更加關注橫切面的東西,好比上報告警、給用戶發送 Email 等,這些最好都集中放到應用層裏面。但觸發是在領域層發生的,應用層怎麼知道?能夠經過領域事件來實現依賴反轉,即應用層訂閱領域事件,領域層發佈領域事件。spa

  在中興通信,核心業務屬於通訊行業,DDD 的應用場景跟互聯網企業有着很大差異,中興通信的技術與業務兼具複雜性,其軟件規模大,功能複雜,特性交叉,還有高質量、高性能、高可靠的要求。操作系統

  第一,領域專家下團隊,和團隊一塊兒交流和協做;設計

  第二,教練指導,開展戰訓營,按期 review;htm

  第三,在架構、設計、編碼和工程實踐方面,不只採用 DCI、DSL、正交設計、組合式設計,還要遵照編碼規範和紀律,運用嵌入式 C/C++ 最佳實踐,此外還要保證有持續交付的流水線和每日 Code Review。

DDD 的困局

  最近幾年 DDD 的火爆也給業界開發團隊帶來了一些迷思,好比,爲何個人 DDD 推行不下去?爲何個人 DDD 作起來老是跟敏捷同樣,最後都變了味?

  張曉龍總結了 DDD 目前面臨的幾大困局:

  第一,領域案例面比較窄。目前業界的 DDD 實踐案例並很少,並且不少案例是偏向互聯網領域的,對於工業領域、嵌入式領域和操做系統領域基本沒有涉及;

  第二,DDD 書籍很是少,並且大多數書籍是以 Java 或 C# 寫的。若是開發團隊用的是 C、C++、Python 或 Go 語言,基本沒有可參考的書籍,難度也就更大一些(尤爲是 C 和 C++);

  第三,各個巨頭公司,好比谷歌、微軟、BAT 等,不多組織、參與或贊助 DDD 峯會,沒有造成引導做用,業界天然也就少有跟隨效應;

  第四,開發團隊要麼找不到領域專家,要麼領域專家沒法與開發團隊長時間保持溝通,致使實踐中出現誤差;

  第五,DDD 落地有必定的門檻,對開發者的技能和素質都有較高的要求。

  針對以上幾大困局,張曉龍也給出了本身的解決方案:

  • 培訓 OOA、OOD 和 OOP 的基本知識,並實戰演練,不斷彌補與高手的差距 ;
  • 領域專家和團隊一塊兒工做,確保你們頭腦中的畫面是一致的;
  • DDD 建模要有文檔交付物,並和代碼同步演進,以便不熟悉代碼的人員也能看到並理解領域驅動設計成果的全貌。

  軟件開發沒有銀彈,DDD 也不是萬能的。若是開發團隊真的決定用 DDD 的思想指導軟件開發,就必定要跟隨時代的腳步,吃透 DDD 這個舊瓶裏裝的新酒。

 

原文出處:https://www.cnblogs.com/jackyfei/p/12114424.html

相關文章
相關標籤/搜索