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