设计模式(2)用例图之一
- 導(dǎo)言
- 用例
- 簡(jiǎn)介
- 定義
- 用例模型
- 用例理解
- 用例例子
- 參與者執(zhí)行者
- 定義
- 參與者角色和用戶區(qū)別
- 主要參與者和次要參與者區(qū)別
- 主要參與者和次要參與者的實(shí)例
- 對(duì)參與者建模
- 人類參與者
- 外部系統(tǒng)參與者
- 輸入設(shè)備參與者輸入輸出設(shè)備參與者
- 計(jì)時(shí)器參與者
- 注意
- 參與者之間的泛化繼承關(guān)系
- 如何識(shí)別執(zhí)行者
- 思路
- 辨別誰(shuí)是參與者
導(dǎo)言
為了說(shuō)明用例圖,我們將先介紹用例的定義,然后介紹用例圖的相關(guān)內(nèi)容,比如參與者、次要參與者等等。
用例
簡(jiǎn)介
在用例建模方法中,功能性需求參與者(系統(tǒng)的用戶)和用例來(lái)描述。
參與者另可稱為執(zhí)行者,執(zhí)行者執(zhí)行用例,參與者可以說(shuō)是參與者參與了用例,或參與了用例的實(shí)現(xiàn)
定義
用例 定義了一個(gè)或多個(gè)參與者和系統(tǒng)之間的交互序列。
用例是在系統(tǒng)中執(zhí)行的一系列動(dòng)作,這些動(dòng)作將生成特定執(zhí)行者可見的價(jià)值結(jié)果。
一個(gè)用例定義一組用例實(shí)例。
在需求階段,用例模型將系統(tǒng)考慮成黑盒,并以包含用戶輸入和系統(tǒng)響應(yīng)的敘述形式描述參與者和系統(tǒng)的交互
用例模型
用例模型用參與者和用例描述系統(tǒng)的功能性需求。系統(tǒng)被看作黑盒,即處理系統(tǒng)會(huì)做什么來(lái)響應(yīng)參與者輸入,而不是系統(tǒng)如何做的內(nèi)部細(xì)節(jié)。
用例理解
用例總是從參與者的輸入開始。典型地,一個(gè)用例包含了參與者和系統(tǒng)之間的交互序列。每個(gè)交互由參與者的輸入以及后續(xù)的系統(tǒng)響應(yīng)組成。
參與者向系統(tǒng)提供輸入,而系統(tǒng)向參與者提供響應(yīng)。
系統(tǒng)總是被考慮成為一個(gè)黑盒,使得其內(nèi)部細(xì)節(jié)不會(huì)被暴露。盡管一個(gè)簡(jiǎn)單的用例可能只包含參與者和系統(tǒng)之間的一個(gè)交互,但更為典型的用例是會(huì)由參與者和系統(tǒng)之間的多個(gè)交互組成。更復(fù)雜的用例也可能涉及了不止一位參與者。
用例例子
這里可以舉出一個(gè)例子:
簡(jiǎn)單的銀行系統(tǒng):
自動(dòng)提款機(jī)(ATM)允許客戶從他們的銀行賬戶中取款。這里有一個(gè)參與者“ATM客戶”(ATM Customer)和一個(gè)用例“取款”(Withdraw Funds),如下圖所示:
“取款”用例描述了客戶和系統(tǒng)之間的交互序列。用例始于客戶將一張ATM卡插入到讀卡器中,然后,客戶響應(yīng)系統(tǒng)提示輸入密碼(PIN),最終客戶接收到ATM機(jī)發(fā)出的現(xiàn)金。
參與者(執(zhí)行者)
定義
參與者(執(zhí)行者)是在系統(tǒng)之外,透過(guò)系統(tǒng)邊界與系統(tǒng)進(jìn)行有意義交互的任何事物。
參與者描繪了一個(gè)與系統(tǒng)交互的外部用戶(即在系統(tǒng)之外)
在用例建模中,參與者是與系統(tǒng)交互的唯一外部實(shí)體。換句話說(shuō),參與者是在系統(tǒng)之外的,不是系統(tǒng)的一部分
引入?yún)⑴c者(執(zhí)行者)的目的:幫助確定系統(tǒng)邊界。
參與者、角色和用戶區(qū)別
參與者代表了應(yīng)用領(lǐng)域中扮演的一種角色;典型地,該角色是人類用戶扮演的。用戶是一個(gè)個(gè)體,而參與者代表了相同類型的所有用戶所扮演的角色。
比如,“銀行系統(tǒng)”(上面的實(shí)例)中有多位客戶,他們都由參與者ATM Customer來(lái)代表。因此,參與者ATM Customer是對(duì)一種用戶類型的建模;單個(gè)的客戶是該參與者的實(shí)例。
參與者常常是人類用戶。因?yàn)檫@個(gè)原因,所以,在UML中,參與者都是用人性圖標(biāo)來(lái)表示的。在許多的信息系統(tǒng)中,人是唯一的參與者。但是在其他系統(tǒng)中,會(huì)有其他類型的參與者作為人類參與者的補(bǔ)充或者替代。
因此,參與者可能是一個(gè)和本系統(tǒng)通過(guò)接口連接的外部系統(tǒng)。在某些應(yīng)用中,參與者還可以是外部輸入輸出(I/O)設(shè)備或計(jì)時(shí)器。外部I/O設(shè)備和計(jì)時(shí)器參與者在實(shí)時(shí)簽入系統(tǒng)中是非常普遍的。在這些系統(tǒng)中,本系統(tǒng)通過(guò)傳感器和執(zhí)行器與外部環(huán)境進(jìn)行交互。
主要參與者和次要參與者區(qū)別
主要參與者啟動(dòng)用例。因此,用例始于主要參與者的輸入,系統(tǒng)必須相應(yīng)主要參與者。
其他參與者稱為次要參與者,可以參與到用例中。
一個(gè)用例中的主要參與者,可以是另一個(gè)用例中的次要參與者。
至少有一個(gè)參與者必須從用例中獲得價(jià)值;通常,這就是主要參與者。
主要參與者和次要參與者的實(shí)例
主要參與者和次要參與者的實(shí)例如下圖:
參與者“遠(yuǎn)程系統(tǒng)”(Remote System)啟動(dòng)“生成監(jiān)控?cái)?shù)據(jù)”(Generate Monitoring Data)用例,該用例中遠(yuǎn)程系統(tǒng)發(fā)送監(jiān)控?cái)?shù)據(jù),向監(jiān)控操作員顯示。在該用例中,”遠(yuǎn)程系統(tǒng)”是主要參與者,它啟動(dòng)了用例;“監(jiān)控操作員”(Monitorig Operator)是次要參與者,它接收監(jiān)控?cái)?shù)據(jù),并因此從該用例中獲得價(jià)值。
對(duì)參與者建模
人類參與者
人類參與者通常使用多種I/O設(shè)備與系統(tǒng)進(jìn)行物理交互。人類參與者通過(guò)標(biāo)準(zhǔn)的I/O設(shè)備頻繁地與系統(tǒng)交互,例如鍵盤、顯示器或鼠標(biāo)等。然而,在某些情況下,人類參與者也會(huì)通過(guò)非標(biāo)準(zhǔn)的I/O設(shè)備與系統(tǒng)交互,如各種各樣的傳感器。所有這些情況中,人是參與者,I/O設(shè)備不是參與者。因此,參與者是終端用戶。
比如下面的例子
參與者是ATM客戶,他通過(guò)多種的I/O設(shè)備與“銀行系統(tǒng)”進(jìn)行交互,包括了讀卡器、吐鈔機(jī)和憑條打印機(jī),另外還有鍵盤和顯示器。
外部系統(tǒng)參與者
參與者可以是外部系統(tǒng)參與者,或者啟動(dòng)(作為主要參與者)或者參與(次要參與者)用例。外部參與者的一個(gè)例子是“應(yīng)急監(jiān)控系統(tǒng)”中的“遠(yuǎn)程系統(tǒng)”。“遠(yuǎn)程系統(tǒng)”啟動(dòng)“生成監(jiān)控?cái)?shù)據(jù)”用例,如下面所示:
遠(yuǎn)程系統(tǒng)發(fā)送要顯示給監(jiān)控操作員的監(jiān)控?cái)?shù)據(jù)。
輸入設(shè)備參與者(輸入/輸出設(shè)備參與者)
當(dāng)用例中沒有人的參與、向系統(tǒng)通過(guò)外部輸入的參與者是輸入設(shè)備或I/O設(shè)備時(shí),這種情況就會(huì)發(fā)生。
典型地,輸入設(shè)備參與者通過(guò)傳感器與系統(tǒng)交互。輸入設(shè)備參與者通過(guò)傳感器與系統(tǒng)交互。輸入設(shè)備參與者的一個(gè)例子是“監(jiān)控傳感器”(Monitoring Sensor),它為“生成警報(bào)”(Generate Alarm)用例提供傳感器輸入,如下所示:
“監(jiān)控操作員”(Monitoring Operator)在該用例中也是次要參與者。
計(jì)時(shí)器參與者
參與者可以是計(jì)時(shí)器參與者,周期性地向系統(tǒng)發(fā)送定時(shí)事件。當(dāng)系統(tǒng)需要定時(shí)地輸出某些信息時(shí),就需要周期性用例。
“報(bào)告計(jì)時(shí)器”(Report Timer)參與者啟動(dòng)“顯示每日?qǐng)?bào)告”(Display Daily Report)用例,該用例周期性地(比如,每天中午)準(zhǔn)備一份每日?qǐng)?bào)告,并將其顯示給用戶。如下圖所示:
在這個(gè)例子中,計(jì)時(shí)器是主要參與者,用戶是次要參與者。在計(jì)時(shí)器是主要參與者的用例中,通常是次要參與者(本例中的用戶)從用例中獲得價(jià)值。
注意
如果一個(gè)人類用戶可能會(huì)扮演兩個(gè)或兩個(gè)以上的獨(dú)立角色,則每個(gè)角色由不同的參與者來(lái)表示。
比如,同樣的用戶可能在不同的時(shí)間會(huì)扮演“ATM操作員”(ATM Operator)角色(當(dāng)向ATM機(jī)現(xiàn)金吐鈔中補(bǔ)充現(xiàn)金時(shí))和“ATM客戶”(ATM Customer)角色(當(dāng)取現(xiàn)金時(shí)),于是會(huì)被建模成為兩個(gè)參與者
參與者之間的泛化(繼承)關(guān)系
在某些系統(tǒng)中,不同參與者可能擁有一些公共的角色,但其他的角色卻不相同。在這種情況下,這些參與者都被泛化,使得他們角色中的公共部分部分能被捕獲為泛化的參與者,而不同的部分則作為特化的參與者。
如下所示:
選取其中一部分
如何識(shí)別執(zhí)行者?
執(zhí)行者是指直接和系統(tǒng)交互的一類事物,執(zhí)行者主要有如下三類:
(1) 直接使用系統(tǒng)的人,如使用一個(gè)庫(kù)存管理系統(tǒng)的倉(cāng)庫(kù)管理員、倉(cāng)儲(chǔ)部經(jīng)理等用戶,倉(cāng)庫(kù)管理員可以通過(guò)系統(tǒng)進(jìn)行入庫(kù)和出庫(kù)操作,倉(cāng)儲(chǔ)部經(jīng)理可以通過(guò)系統(tǒng)查看各種報(bào)表,如庫(kù)存報(bào)表、財(cái)務(wù)報(bào)表等;
(2) 與該系統(tǒng)相關(guān)的其他系統(tǒng),如在庫(kù)存管理系統(tǒng)中如果涉及到付款操作,需要使用另一個(gè)軟件——支付系統(tǒng),此時(shí)支付系統(tǒng)就是庫(kù)存管理的執(zhí)行者之一;
(3) 自動(dòng)發(fā)生的事件,如時(shí)間、溫度等自動(dòng)事件,如果庫(kù)存管理系統(tǒng)要求每晚零點(diǎn)執(zhí)行一個(gè)數(shù)據(jù)匯總操作,此時(shí)時(shí)間就成為該操作的執(zhí)行者。
思路
誰(shuí)使用系統(tǒng)?
誰(shuí)改變系統(tǒng)的數(shù)據(jù)?
誰(shuí)從系統(tǒng)獲取信息?
誰(shuí)需要系統(tǒng)的支持以完成日常工作任務(wù)?
誰(shuí)負(fù)責(zé)維護(hù)、管理并保持系統(tǒng)正常運(yùn)行?
系統(tǒng)需要和哪些外部系統(tǒng)交互?
有沒有自動(dòng)發(fā)生的事件?
辨別誰(shuí)是參與者
有時(shí)候并不能明確誰(shuí)是參與者。實(shí)際上,最先的評(píng)估可能是不正確的。
例如,在報(bào)告失竊卡片的用例中,用戶參與者電話告知銀行他的ATM卡遭竊了。這看上去很明顯客戶是參與者,然而,如果客戶實(shí)際上是通過(guò)電話向銀行職員告知,而銀行職員實(shí)際上將信息錄入系統(tǒng),那么銀行職員才是參與者。
在比如在公交上上,乘客要訂票上車。看上去是乘客訂票,實(shí)際上操作者卻是售票員,售票員與其售票系統(tǒng)進(jìn)行交互。
接下來(lái)的文章會(huì)介紹如何識(shí)別用例,以及用例之間的關(guān)系,并配備實(shí)例進(jìn)行一個(gè)建模過(guò)程的顯示。(請(qǐng)期待~~)
總結(jié)
以上是生活随笔為你收集整理的设计模式(2)用例图之一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义生成公众号二维码,用于小票打印机使
- 下一篇: 信息安全等级保护定级备案流程