定義
在UP【敏捷開發】中領域模型的UML框被稱作領域概念或者概念類。概念類指的是現實世界中的概念與事物。在概念或者本質透視圖中使用。UP領域模型中包括概念類。
通俗的來講,概念類是思想,事物或者對象。更正式的來講,概念類可以從其符號,內涵與外延來考慮。
性質
通俗的來講,概念類是思想,事物或者對象。更正式的來講,概念類可以從其符號,內涵與外延來考慮:
· 符號 :表示概念類的詞語或圖形
·內涵:概念類的定義
·外延:概念類所適用的一組實例
舉例來說,考慮購買交易事件的概念類。我可以用符號Sales對其命名。Sales的內涵可以表示為,”表示購買交易的事件,並且具有日期時間。“Sales的外延是所有銷售的例子,換句話說,就是世界上所有銷售的集合。
確認一種概念類是OO【Object Oriented】分析的核心,如果能夠通過熟練與快速的的調查來完成這個工作,那么通常能在設計過程中得到良好的回報,因為領域模型支持更好的理解與溝通。
概念類與其他UP開發常用類的對比:
概念類:現實世界中的概念與事物。
軟體類:無論是在過程還是方法中,都表示軟體構件在規格說明或者實現透視圖中的類
實現類:特定OO【面向對象】【比如JAVA】語言中的類
概念類的尋找
尋找概念類是構建領域模型的關鍵,一般的構建方法有三種,重用和修改現有的模型、使用分類列表、確定名詞短語。
重用和修改現有的模型
這是首要,最佳而且最簡單的方法,如果條件許可,通常從這一步開始。在許多領域都存在已經發布的,繪製精細的的領域模型與數據模型【可以修改為領域模型】,這些領域包括庫存,金融,衛生等等。
使用分類列表
我們可以通過製作概念類候選列表來開始創建領域模型。建議在分析時建立一些優先權。右圖有部分示例,該示例取自POS,Monopoly或者航天預訂領域
通過識別短語名詞來識別
在【Abbot83】中所建議的一種有效【因為簡單】技術是語言分析【linguisticanalysis】,即在對領域的文本性描述中識別名詞與名詞短語,將其作為候選的概念或者屬性。
準則:使用這種方法一定要小心,不可能存在從名詞映射到類的機制。而且自然語言中的詞語存在二義性。
儘管如此,語言分析仍不失是一種激發靈感的來源,詳述形式用例用例中的描述對這種方式極為適合,例如,可以使用處理銷售用例的場景【右圖】:
領域模型是重要領域概念與辭彙的可視化,那么從哪裡來找這些術語呢?其中某些想法來源於用例,另外一部分來源於其他文檔或者領域專家的看法。無論如何,用例都是挖掘名詞短語的重要來源之一。
其中有些名詞是候選的概念類,有些名詞所指的概念類可能在本次疊代中被忽略【例如“賬務系統”和“提成”】,還有一些名詞不是概念類而是概念類的屬性。
這種方法的主要弱點就是自然語言的不精確性,不同的名詞可能表示同一概念或者屬性,此外還可能存在歧義,建議與概念類分類列表一起使用。