天天看點

《領域驅動設計:軟體核心複雜性應對之道(修訂版)》—第2章 2.5節解釋性模型

本節書摘來自異步社群《領域驅動設計:軟體核心複雜性應對之道(修訂版)》一書中的第2章,第2.5節解釋性模型,作者【美】埃裡克•埃文斯(eric evans), 馬利偉 , 萬龍,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

2.5 解釋性模型

本書的核心思想是在實作、設計和團隊交流中使用同一個模型作為基礎。如果各有各的模型,将會造成危害。

模型在幫助領域學習方面也具有很大價值。對設計起到推動作用的模型是領域的一個視圖,但為了學習領域,還可以引入其他視圖,這些視圖隻用作傳遞一般領域知識的教學工具。出于此目的,人們可以使用與軟體設計無關的其他種類模型的圖檔或文字。

使用其他模型的一個特殊原因是範圍。驅動軟體開發過程的技術模型必須經過嚴格的精簡,以便用最小化的模型來實作其功能。而解釋性模型則可以包含那些提供上下文的領域方面——這些上下文用于澄清範圍更窄的模型。

解釋性模型提供了一定的自由度,可以專門為某個特殊主題定制一些表達力更強的風格。領域專家在一個領域中所使用的視覺隐喻通常呈現了更清晰的解釋,這可以教給開發人員領域知識,同時使領域專家們的意見更一緻。解釋性模型還可以以一種不同的方式來呈現領域,并且各種不同角度的解釋有助于人們更好地學習。

解釋性模型不必是對象模型,而且最好不是。實際上在這些模型中不使用uml是有好處的,這樣可以避免人們錯誤地認為這些模型與軟體設計是一緻的。盡管解釋性模型與驅動設計的模型往往有對應關系,但它們并不完全類似。為了避免混淆,每個人都必須知道它們之間的差別。

示例 航運操作和路線

考慮一個用來追蹤航運公司貨物的應用程式。模型包含一個詳細的視圖,它顯示了如何将港口裝卸和貨輪航次組合為一次貨運的操作計劃(“路線”)。如圖2-4所示。但對外行而言,類圖可能起不到多大的說明作用。

《領域驅動設計:軟體核心複雜性應對之道(修訂版)》—第2章 2.5節解釋性模型

在這種情況下,解釋性模型可以幫助團隊成員了解類圖的實際含義。圖2-5是表示相同概念的另一種方式。

《領域驅動設計:軟體核心複雜性應對之道(修訂版)》—第2章 2.5節解釋性模型

圖中的每根線段都表示貨物的一種狀态——或者正在港口裝卸(裝貨或卸貨),或者停放在倉庫裡,或者正在運輸途中。這個圖并沒有與類圖中的細節一一對應,但強調了領域的要點。

42

這種圖連同對它所表示的模型的自然語言解釋,能夠幫助開發人員和領域專家了解更嚴格的軟體模型圖。綜合使用這兩種圖要比單獨使用一種圖更容易了解。

43

① 清關即結關,習慣上又稱通關,是指進口貨物、出口貨物和轉運貨物進出一國海關或國境時必須向海關申報,辦理海關規定的各項手續,履行各項法規規定的義務。——譯者注

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀