領域模型

設計
舉一個簡單的例子來說明如何進行領域模型設計。

假如我們要爲一個小賣店設計一套進銷存系統,她爲我們提供的業務描述是這樣的:每天凌晨從布吉農批市場買蘋果、梨、葡萄、橘子、香蕉、荔枝、核桃等等,反正哪些好賣她就買回來賣。葡萄、荔枝不能長久保留,一般要當天賣出去…。

針對上面這段業務描述,我們怎麼進行領域模型設計?我給出以下幾個步驟來完成領域模型設計。

總結業務描述中的名詞

首先建一個名詞表,把涉及到的名詞列出來:

序號名詞備註;
1. 布吉農批市場
2. 買東西的人是一個隱含的名詞,每天凌晨從農批市場拿貨
3. 蘋果
4. 梨
5. 葡萄
6. 橘子
7. 香蕉
8. 荔枝
9. 核桃
10. 顧客是一個隱含的名詞,買回來賣的對象
11. 凌晨、當天時間名詞,與實體及角色無關
這個名詞列表包括了業務的行爲主體:角色,以及業務過程中的操作實體:模型,對我們接下來的用例描述、領域模型分析、需求分析很有幫助。當然這個名詞列表需要經過進一步分析提煉,成爲領域模型
確定業務實體

序號名詞描述;
1. 布吉農批市場不是本業務的一個實體
2. 買東西的人是本業務的一個角色
3. 蘋果是一個實體
4. 梨是一個實體
5. 葡萄是一個實體
6.橘子是一個實體
7. 香蕉是一個實體
8. 荔枝是一個實體
9. 核桃是一個實體
10. 顧客是本業務的一個角色
11. 凌晨、當天時間名詞,與實體及角色無關

抽象業務模型
經過分析,我們得出的實體是蘋果、梨、葡萄、橘子、香蕉、荔枝、核桃,這些是不是模型呢?應該說還不是,還要經過進一步分析:在我們分析的業務領域內,它們有沒有共性?蘋果、梨、葡萄、橘子、香蕉、荔枝屬於水果,核桃屬於乾果,它們都是果品的一個具體實例。而在水果中葡萄和荔枝屬於不宜保存水果,通過這樣進一步的分析得出如下的領域模型:
果品進銷存領域模型
這個領域模型不但能反映當前的經營實體,同時給我們需求分析人員和系統功能提供了一定的擴展視野:將來會不會經營食品,短期保持水果採取什麼利潤空間來促銷,長期保存的水果會不會因爲保存成本而導致利潤下降。


關係
認爲領域模型它是一個分析模型,幫助系統分析人員、用戶認識現實業務的工具,描述的是業務中涉及到的實體及其相互之間的關係,它是需求分析的產物,與問題領域相關。領域模型是需求分析人員與用戶交流的有力工具,是需求分析人員與用戶共同理解的概念,是彼此之間交流的語言。而數據模型是系統設計、實現的一部分,描述的是對用戶需求在數據結構上的實現,僅此而已。當然數據模型中的概念模型設計與領域模型類似,缺乏的是實體之間更廣泛的關係描述。
通常大家會考慮數據怎麼存放的問題,我的理解是領域模型設計期間不用考慮數據的存放問題,只考慮業務描述中涉及的實體以及實體之間的關係。
實體之間的關係,很多書都講了,無非是泛化、依賴和關聯,關聯又分了一般關聯、聚合、組合等等,我這裏就不列了。

總結
領域模型設計是需求分析的關鍵步驟。它幫助用戶及需求分析人員建立業務概念,確定用戶業務的問題域,系統涉及的業務範圍等等。
領域模型設計的步驟爲:
1. 從業務描述中提取名詞;
2. 從提取出來的名詞中總結業務實體,區分名詞中的屬性、角色、實體、實例,形成問題域中操作實體的集合;
3. 從業務實體集合中抽象業務模型,建立問題域的概念(例如在前面的例子中,我們把容易變質的水果稱之爲“短期保持水果”,當然也可以是其它說法,只要能跟用戶達成共識即可);

4. 用UML提供的方法和圖例進行領域模型設計、確定模型之間的關係;


領域模型是對領域內的概念類或現實世界中對象的可視化表示。又稱概念模型、領域對象模型、分析對象模型。它專注於分析問題領域本身,發掘重要的業務領域概念,並建立業務領域概念之間的關係。


面向對象的自底而上的分析、抽象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章