一、什麼是業務領域建模
業務物件模型(也叫領域模型 domain model)是描述業務用例實現的物件模型。它是對業務角色和業務實體之間應該如何聯絡和協作以執行業務的一種抽象。業務物件模型從業務角色內部的觀點定義了業務用例。該模型為產生預期效果確定了業務人員以及他們處理和使用的物件(「業務類和物件」)之間應該具有的靜態和動態關係。它注重業務中承擔的角色及其當前職責。這些模型類的物件組合在一起可以執行所有的業務用例。
二、為什麼要進行領域建模
軟體的世界裡沒有銀彈,是用事務指令碼還是領域模型沒有對錯之分,關鍵看是否合適。實際上,cqrs就是對事務指令碼和領域模型兩種模式的綜合,因為對於query和報表的場景,使用領域模型往往會把簡單的事情弄複雜,此時完全可以用奧卡姆剃刀把領域層剃掉,直接訪問infrastructure。我個人也是堅決反對過度設計的,因此對於簡單業務場景,我強力建議還是使用事務指令碼,其優點是簡單、直觀、易上手。但對於複雜的業務場景,你再這麼玩就不行了,因為一旦業務變得複雜,事務指令碼就很難應對,容易造成**的「一鍋粥」,系統的腐化速度和複雜性呈指數級上公升。
目前比較有效的治理辦法就是領域建模,因為領域模型是物件導向的,在封裝業務邏輯的同時,提公升了物件的內聚性和重用性,因為使用了通用語言(ubiquitous language),使得隱藏的業務邏輯得到顯性化表達,使得複雜性治理成為可能。talk is cheap,直接上乙個銀行轉賬的例子,對事務指令碼和領域模型進行比較,孰優孰劣一目了然。
三、業務領域建模的設計步驟
領域模型設計是需求分析的關鍵步驟。它幫助使用者及需求分析人員建立業務概念,確定使用者業務的問題域,系統涉及的業務範圍等等。
1. 從業務描述中提取名詞;
2. 從提取出來的名詞中總結業務實體,區分名詞中的屬性、角色、實體、例項,形成問題域中操作實體的集合;
3. 從業務實體集合中抽象業務模型,建立問題域的概念;
4. 用uml提供的方法和圖例進行領域模型設計、確定模型之間的關係;
四、業務領域建模的方法
四色建模法是由 peter coad 發明的一種建模方法,將抽象出來的物件分成四種原型:
moment-interval:這種物件表示那些在某個時間點存在,或者會存在一段時間的,這樣的物件往往表示了一次外界的請求,比如一次詢價(quotation),一次購買(sale),這樣的物件表示的都是系統的價值所在,所以也是最重要的一類物件,一般用粉紅色來表示。這樣的物件一般都有乙個起始時間和終止時間,以及乙個唯一的標識號,用來唯一的標識這一次客戶請求,比如 policyno.
role:這種物件表示的是一種角色,往往由人或者物來承擔,會有相應的責任和權利,一般乙個 moment-interval 物件會關聯多個 role,比如說一次詢價(quotation)涉及到兩個 role, 詢價人(quoter)和詢價的產品(product for quotation), 這類物件是除 moment-interval 物件外最重要的一類物件,一般用黃色來表示。這類物件一般都有一些被 moment-interval 物件請求的操作,用來完成它們的職責。
party:place or thing, 這種物件往往表示的是一種客觀存在的事物,例如:人,組織,產品,配件等等,這些事物往往會在一種 moment-interval 中扮演某個 role, 比如某個人會在一次購買中扮演 customer 的角色,也可以在詢價中扮演詢價人的角色。這類物件第三重要,所以一般用綠色來表示。這類物件一般都有 name, address 等屬性。
description:這種物件一般是分類用或者描述性的物件,一般某個 thing, place,party會屬於某個 description,主要用來表示一類事物,它的屬性一般都是這一類事物都有的屬性,這類物件一般用藍色來表示。這類物件一般都有 type, defaultvalue 等屬性。
五. 領域建模指南
關注現實世界(問題領域)物件。
使用泛化(is-a)和聚合(has-a)關係來顯示物件如何相互關聯。
將您的初始域建模工作限制在幾個小時。
圍繞問題領域的「關鍵抽象」來組織您的類。
不要將您的領域模型誤認為資料模型。
不要將乙個物件(代表單個例項)與資料庫表(其中包含事物的集合)混淆。
使用領域模型作為專案詞彙表。
在您編寫用例之前,先做一些初始域模型,以避免使用名稱歧義。
不要指望您的最終類圖精確匹配您的領域模型,但他們之間應該有一些相似之處。
不要在您的域模型上放置螢幕(screens)和其他gui特定的類。
業務領域建模Domain Modeling
每個業務都有乙個對應的業務模型,這個業務模型設計的時候,完全不需要考慮任何軟體設計的思想,比如物件的抽象 繼承 儲存 效能,等。我們是從業務本身出發,分析業務邊界範圍內的各種業務概念,以及業務概念之間的關係,通常我們可以使用乙個業務模型的圖來表達這些業務概念以及業務概念之間的關係。那麼如何得到乙個業...
業務領域建模Domain Modeling
以您的工程實踐專案為例,在深入理解需求的基礎上進行業務領域建模domain modeling 最終畫出業務類圖,並說明業務類圖中每乙個類 屬性 方法的 對於有關聯類association class的情況要進一步給出關聯式資料庫的模型。記住 我們是對業務建模,不是對系統建模!我的工程實踐題目改成了 ...
業務領域建模Domain Modeling
我的工程實踐業務是設計和實現乙個搜尋引擎,並在此基礎上搭建乙個食譜查詢服務。1 找出業務中用到的類 食譜 食材 食材處理步驟 食譜爬蟲 請求分發處理器 分詞器 相似度衡量器 計算詞向量相似度 食譜queryer web服務請求者 使用者 系統管理員 2 建立類和類之間的聯絡 類與類之間的關係通常包括...