1. 程式人生 > >領域驅動設計之我見-領域業務

領域驅動設計之我見-領域業務

談到領域驅動設計(DDD),人們很容易想到如下這張圖,那麼是不是你的軟體做了如下的分層設計就是領域驅動設計的了?顯然不是,以下分層只能說明的軟體做了分層架構,領域驅動設計的核心在領域模型,領域模型的核心在業務知識。如果能夠採用面向物件思維將業務抽象為恰當的模型,不管用什麼架構都稱得上領域驅動設計。

在大學期間學了很多GIS的專業課程。其中《GIS原理與應用》,原理講什麼?就是現實世界如何抽象為計算機資料。應用講什麼?就是如果應用抽象的計算機資料服務與現實世界。整書的目標就是講清楚GIS領域如何建模,如果應用領域模型服務於生產。其中《GIS空間分析理論與方法》,空間分析是什麼?就是GIS領域模型如何解決問題,抽象為計算機語言,就是模型應該擁有什麼哪些方法並且如何實現。

GIS應該是計算機相關專業,是用計算機的方法去儲存、查詢、分析和現實地理資料的專業,培養的是地理和計算機兼顧的人才。我想還有很多其他的計算機相關專業也類似,同時學習專業理論知識和計算專業知識。然而科班出生的人,更多的是純粹的學習計算機理論方法,面向物件只是眾多計算機理論中的一方面,從而並不一定引起多大的關注。

相對而言計算機技術是相對不變的東西,而業務是千變萬化的,從研發人員自身角度出發,給自己創造價值的是編碼,而不是業務,特別是在網際網路行業,產品和研發分離,業務成了產品混飯吃的傢伙,而對於研發,寫的一手好程式碼,才是硬本事。可能很少有軟體工程師從業務角度去思考計算機的價值,事實上計算機應該是作為一個工具而為業務服務,是一個將業務資訊化的工具,從而提高業務生產率。

所以若想領略領域驅動設計的精髓,首先要精通業務,在《領域驅動設計:軟體核心複雜性應對之道》一書中大量篇幅講到了領域專家一職。作為一個初學者閱讀該書是也可能會覺得懊惱,這不是一本講軟體架構的書嗎?為什麼有那麼大的篇幅講解我們該如何去溝通,如何去獲取業務知識,如何去做業務建模。作為一個有追求的軟體工程師,在不斷提升軟體開發技能的同時,必須能夠有足夠的認識,精通業務知識才是我們做好軟體設計開發的首要條件。

原文連結