1) 用例圖包含6個(gè)元素,分別是:參與者(Actor)、用例(UseCase)、關(guān)聯(lián)關(guān)系(Association) 、
包含關(guān)系(Include)、擴(kuò)展關(guān)系(Extend) 以及泛化關(guān)系(Generalization)。
2) 參與者有三大類:系統(tǒng)用戶、與所建造的系統(tǒng)交互的其他系統(tǒng)和一些可以運(yùn)行的進(jìn)程。
第一類參與者是真實(shí)的人,即用戶,是最常用的參與者,幾乎存在于每一個(gè)系統(tǒng)中。命
名這類參與者時(shí),應(yīng)當(dāng)按照業(yè)務(wù)而不是位置命名,因?yàn)橐粋€(gè)人可能有很多業(yè)務(wù)。例如汽車租
賃公司的客戶服務(wù)代表,通常情況下是客戶服務(wù)代表,但是如果他(她)自己要租車的時(shí)候,
就變成了客戶,所以,按照業(yè)務(wù)而不是位置命名可以獲得更穩(wěn)定的參與者。
第二類參與者是其他的系統(tǒng).例如汽車租賃系統(tǒng)可能需要與外部應(yīng)用程序建立聯(lián)系,驗(yàn)
證信用卡以便付款。 其中,外部信用卡應(yīng)用程序是一個(gè)參與者,是另一個(gè)系統(tǒng)。因此在當(dāng)前
項(xiàng)目的范圍之外,需要建立與其他系統(tǒng)的接口。這類位于程序邊界之外的系統(tǒng)也是參與者。
第三類參與者是一些可以運(yùn)行的進(jìn)程,如時(shí)間。當(dāng)經(jīng)過(guò)一定時(shí)間出發(fā)系統(tǒng)中的某個(gè)事件
時(shí),時(shí)間就成了參與者。例如,在汽軍租賃系統(tǒng)中,到了還車的時(shí)間客戶還沒(méi)有歸還汽車,
系統(tǒng)會(huì)提醒客戶服務(wù)代表致電客戶。 由于時(shí)間不在人的控制之內(nèi),因此它也是一個(gè)參與者。
注意:參與者之間,還存在著一般化與特殊化的關(guān)系。一般用泛化關(guān)系來(lái)表示。具體表示法
同類的泛化關(guān)系相同。
3) 用例是外部可見的系統(tǒng)功能單元,這些功能由系統(tǒng)單元所提供,并通過(guò)-系列系統(tǒng)單元
與一個(gè)或多個(gè)參與者之間交換的消息所表達(dá)。用例的用途是,在不揭示系統(tǒng)內(nèi)部構(gòu)造的前提
下定義連貫的行為。
在系統(tǒng)層,用例表示整個(gè)系統(tǒng)對(duì)外部用戶可見的行為。-個(gè)用例就像外部用戶可以使用
的系統(tǒng)操作。但是,它又與操作不同,用例可以在執(zhí)行過(guò)程中持續(xù)接受參與者的輸入信息。
4) 識(shí)別用例
識(shí)別用例最好的方法就是從分析系統(tǒng)的參與者開始,考慮每個(gè)參與者是如何使用系統(tǒng)
的。使用這種策略的過(guò)程中可能會(huì)發(fā)現(xiàn)新的參與者,這對(duì)完善整個(gè)系統(tǒng)的建模有很大的幫助。
用例建模的過(guò)程就是一個(gè)法代和逐步精華的過(guò)程,系統(tǒng)分析者首先從用例的名稱開始,然后
添加用例的細(xì)節(jié)信息。這些信息由簡(jiǎn)短的描述組成,它們被精華成完整的規(guī)格說(shuō)明。
在識(shí)別用例的過(guò)程中,通過(guò)回答以下的兒個(gè)問(wèn)題,系統(tǒng)分析者可以獲得幫助。
(1)特定參與者希望系統(tǒng)提供什么功能。
(2)系統(tǒng)是否存儲(chǔ)和檢索信息,如果是,由哪個(gè)參與者觸發(fā)。
(3)當(dāng)系統(tǒng)改變狀態(tài)時(shí),是否通知參與者。
(4) 是否存在影響系統(tǒng)的外部事件。
(5) 哪個(gè)參與者通知系統(tǒng)這些事件。
5) 用例間的關(guān)系
用例除了與其參與者發(fā)生關(guān)聯(lián)外,還可以具有系統(tǒng)中的多個(gè)關(guān)系,這些關(guān)系包括關(guān)聯(lián)關(guān)系、
包含關(guān)系、擴(kuò)展關(guān)系和泛化關(guān)系。應(yīng)用這些關(guān)系的目的是為了從系統(tǒng)中抽取出公共行為和
其變體。
1 關(guān)聯(lián)關(guān)系(Association )
關(guān)聯(lián)關(guān)系表示參與者用例之間的通信。
2 包含關(guān)系(Include )
雖然每個(gè)用例的實(shí)例都是獨(dú)立的,但是一個(gè)用例可以用其他的更簡(jiǎn)單的用例來(lái)描述。這
有點(diǎn)像通過(guò)繼承父類并增加附加描述來(lái)定義一個(gè)類。 個(gè)用例可以簡(jiǎn)單地包含其他用例具有
的行為,并把它所包含的用例行為作為自身行為的一部分,這被稱作包含關(guān)系。在這種情況
下,新用例不是初始用例的一個(gè)特殊例子,并且不能被初始用例所代替。在m伍中,包含
關(guān)系表示為虛線箭頭加<<include> >字樣,箭頭指向被包含的用例。
包含關(guān)系使-個(gè)用例的功能可以在另一個(gè)用例中使用,如下所述。
(1)如果兩個(gè)以上用例有大量一致的功能,則可以將這個(gè)功能分解到另 個(gè)用例中o 其
他用例可以和這個(gè)用例建立包含關(guān)系。
(2) 一個(gè)用例的功能太多時(shí),可以用包含關(guān)系建模兩個(gè)小用例。
3 擴(kuò)展關(guān)系(Extend )
一個(gè)用例也可以被定義為基礎(chǔ)用例的增量擴(kuò)展,這稱作擴(kuò)展關(guān)系,擴(kuò)展關(guān)系是把新的行
為插入到已有用例中的方法。同一個(gè)基礎(chǔ)用例的幾個(gè)擴(kuò)展用例可以在一起應(yīng)用。擴(kuò)
展關(guān)系表示為虛線箭頭加<<extend>>字樣,箭頭指向被擴(kuò)展的用例(即基礎(chǔ)用例。
基礎(chǔ)用例提供了一組擴(kuò)展點(diǎn),在這些新的擴(kuò)展點(diǎn)中可以添加新的行為,而擴(kuò)展用例提供
了一組插入片段,這些片段能夠被插入到基礎(chǔ)用例的擴(kuò)展點(diǎn)上。基礎(chǔ)用例不必知道擴(kuò)展用例
的任何細(xì)節(jié),它僅為其提供擴(kuò)展點(diǎn)。事實(shí)上,基礎(chǔ)用例即使沒(méi)有擴(kuò)展用例也是完整的,這點(diǎn)
與包含關(guān)系有所不同。擴(kuò)展關(guān)系為處理異常或構(gòu)建靈活的系統(tǒng)框架提供了一種十分有效的方法。
4. 泛化關(guān)系(Generaliza苗。n)
一個(gè)用例可以被特別列舉為一個(gè)或多個(gè)子用例,這被稱作用例泛化。當(dāng)父用例能夠被使
用時(shí),任何子用例也可以被使用。在UML中,用例泛化與其他泛化關(guān)系的表示法相同,用
一個(gè)三角箭頭從子用例指向父用例。