一個領(lǐng)域內(nèi)可能存在多個子域、多個限界上下文、多個上下文映射關(guān)系,那么如何考慮自己的領(lǐng)域設(shè)計是否合理:
1、有些軟件資產(chǎn)已經(jīng)存在的,他們可以重用?
2、哪些資產(chǎn)是需要創(chuàng)建的,或者從別處獲得?
3、這些資產(chǎn)是如何集成在一起的?
4、這需要什么樣的集成?
5、假設(shè)已經(jīng)有了現(xiàn)有資產(chǎn)和哪些需要被創(chuàng)建的資產(chǎn),我們還需要做些什么?
6、核心域和那些支撐項目的成功幾率如何?會不會出現(xiàn)由于其中一個失敗而導(dǎo)致整個項目失敗的可能?
7、在哪些地方我們使用了完全不同的術(shù)語。
8、限界上下文之間在哪些地方存在概念重疊?
9、這些重疊的概念在不同的限界上下文之間是如何映射和翻譯的?
10、哪些限界上下文包含了核心域中的概念,其中使用了謝【evans】中的戰(zhàn)術(shù)模式?
開發(fā)核心域的解決方案是一種關(guān)鍵性業(yè)務(wù)投入。
限界上下文是一個顯示的邊界,領(lǐng)域模型在這個邊界之內(nèi)。領(lǐng)域模型把通用語言表達成軟件模型。創(chuàng)建邊界的原因在于,每一個模型概念,包含它的屬性和操作,在邊界之內(nèi)都具有特殊的含義。
限界上下文也不是旨在創(chuàng)建一個單一的項目資產(chǎn),他并不是一個單獨的組件、文檔、或者框圖,也不是一個jar或大流量, 但是這些可以用來部署限界上下文。
限界上下文可以包含模塊、聚合、領(lǐng)域事件和領(lǐng)域服務(wù)等,限界山下文應(yīng)該足夠大,以能夠表達所對應(yīng)的整套通用語言。
限界上下文與技術(shù)組件保持一致。在使用IDE時,譬如eclipse或idea,一個限界上下文通常就是一個工程項目。在使用java時,我們可能從技術(shù)層面上講一個限界上下文放在一個jar文件中,進行獨立的版本演進,也可以借助OSGI或java8的jigsaw進行動態(tài)版本管理。