- UML基礎(chǔ)與Rose建模實(shí)用教程(第三版)
- 謝星星 周新國(guó)編著
- 1751字
- 2020-11-23 15:05:26
5.2.1 參與者
1.參與者的概念
參與者(Actor)是指存在于系統(tǒng)外部并直接與系統(tǒng)進(jìn)行交互的人、系統(tǒng)、子系統(tǒng)或類(lèi)的外部實(shí)體的抽象。每個(gè)參與者可以參與一個(gè)或多個(gè)用例,每個(gè)用例也可以有一個(gè)或多個(gè)參與者。在用例圖中使用一個(gè)人形圖標(biāo)來(lái)表示參與者,參與者的名字寫(xiě)在人形圖標(biāo)下面,如圖5-3所示。
很多初學(xué)者都把參與者理解為人,這是錯(cuò)誤的。參與者代表的是一個(gè)集合,通常一個(gè)參與者可以代表一個(gè)人、一個(gè)計(jì)算機(jī)子系統(tǒng)、一個(gè)硬件設(shè)備或者時(shí)間等。人是其中最常見(jiàn)也是最容易理解的參與者,對(duì)于上一節(jié)中提到的銀行自動(dòng)取款機(jī)(ATM)來(lái)說(shuō),它的參與者就是銀行用戶。

圖5-3 參與者
一個(gè)系統(tǒng)也可以作為參與者,大家去商場(chǎng)購(gòu)物,經(jīng)常會(huì)采用刷卡付款的方式,這時(shí)候就需要商場(chǎng)的管理程序和外部的應(yīng)用程序建立聯(lián)系,來(lái)驗(yàn)證信用卡以便完成信用卡的付款操作。其中,外部信用卡程序就是一個(gè)參與者,是一個(gè)系統(tǒng)。
而在有的系統(tǒng)中,一個(gè)進(jìn)程也可以作為參與者,例如時(shí)間。如果家里開(kāi)通上網(wǎng)包月的話,當(dāng)包月時(shí)間快結(jié)束的時(shí)候,系統(tǒng)就會(huì)提示相關(guān)服務(wù)人員,再由這些人員通知包月到期的用戶。由于時(shí)間不在人的控制范圍內(nèi),因此也是一個(gè)參與者。
要注意的是,參與者雖然可以代表人或事物,但參與者不是指人或事物本身,而是表示人或事物當(dāng)時(shí)所扮演的角色。例如小王是銀行的工作人員,他參與銀行管理系統(tǒng)的交互,這時(shí)他既可以作為管理員這個(gè)角色參與管理,也可以作為銀行用戶來(lái)取錢(qián),在這里小王扮演了兩個(gè)角色,是兩個(gè)不同的參與者。因此,不能將參與者的名字表示成參與者的某個(gè)實(shí)例,例如小王作為銀行用戶來(lái)取錢(qián),但是參與者的名字還是銀行用戶而不能是小王。
一個(gè)用例的參與者可以劃分為發(fā)起參與者和參加參與者。發(fā)起參與者發(fā)起了用例的執(zhí)行過(guò)程,一個(gè)用例只有一個(gè)發(fā)起參與者,可以有若干個(gè)參加參與者。在用例中標(biāo)明發(fā)起參與者是一個(gè)明智的做法。
參與者還可以劃分為主要參與者和次要參與者。主要參與者指的是執(zhí)行系統(tǒng)主要功能的參與者,次要參與者指的是使用系統(tǒng)次要功能的參與者。標(biāo)明主要參與者有利于找出系統(tǒng)的核心功能,往往也是用戶最關(guān)心的功能。
2.確定參與者
在獲取用例前首先要確定系統(tǒng)的參與者,尋找參與者可以從以下問(wèn)題入手:
- 系統(tǒng)開(kāi)發(fā)完成后,使用系統(tǒng)主要功能的是誰(shuí)。
- 誰(shuí)需要借助系統(tǒng)來(lái)完成日常的工作。
- 系統(tǒng)需要從哪些人或其他系統(tǒng)中獲得數(shù)據(jù)。
- 系統(tǒng)會(huì)為哪些人或其他系統(tǒng)提供數(shù)據(jù)。
- 系統(tǒng)會(huì)與哪些其他系統(tǒng)交互?其他系統(tǒng)包括計(jì)算機(jī)系統(tǒng)和計(jì)算機(jī)中的其他應(yīng)用軟件。其他系統(tǒng)可以分為兩類(lèi):一類(lèi)是該系統(tǒng)要使用的系統(tǒng);另一類(lèi)是啟動(dòng)該系統(tǒng)的系統(tǒng)。
- 系統(tǒng)是由誰(shuí)來(lái)維護(hù)和管理的,以保證系統(tǒng)處于工作狀態(tài)。
- 系統(tǒng)控制的硬件設(shè)備有哪些?
- 誰(shuí)對(duì)本系統(tǒng)產(chǎn)生的結(jié)果感興趣。
要注意的是,尋找參與者的時(shí)候不要把目光只停留在使用計(jì)算機(jī)的人身上,直接或間接地與系統(tǒng)交互的任何人和事都是參與者。另外,由于參與者總是處于系統(tǒng)外部,因此他們或它們可以處于人的控制之外。讓我們來(lái)看一個(gè)比較特殊的參與者—系統(tǒng)時(shí)鐘。有時(shí)候需要在系統(tǒng)內(nèi)部定時(shí)地執(zhí)行一些操作,如檢測(cè)系統(tǒng)資源使用的情況、定期地生成統(tǒng)計(jì)報(bào)表等等。這些操作并不是由外部的人或系統(tǒng)觸發(fā)的,它是由一個(gè)抽象出來(lái)的系統(tǒng)時(shí)鐘或定時(shí)器參與者來(lái)觸發(fā)的,如圖5-4所示。

圖5-4 系統(tǒng)時(shí)鐘用例圖
3.參與者之間的關(guān)系
由于參與者實(shí)質(zhì)上也是類(lèi),因此它擁有與類(lèi)相同的關(guān)系描述,即參與者與參與者之間主要是泛化關(guān)系(或稱(chēng)為“繼承”關(guān)系)。泛化關(guān)系的含義是把某些參與者的共同行為提取出來(lái)表示成通用行為,并描述成超類(lèi)(或父類(lèi))。泛化關(guān)系表示的是參與者之間的一般或特殊關(guān)系,在UML圖中,使用帶空心三角箭頭的實(shí)線表示泛化關(guān)系,如圖5-5所示,箭頭指向超類(lèi)參與者。

圖5-5 參與者泛化關(guān)系
在需求分析中很容易碰到用戶權(quán)限問(wèn)題,就拿一個(gè)公司來(lái)說(shuō),普通職員有權(quán)限進(jìn)行一些常規(guī)操作,而銷(xiāo)售經(jīng)理和人事經(jīng)理在常規(guī)操作之外還有權(quán)限進(jìn)行銷(xiāo)售管理和人事管理。用例圖如圖5-6所示。
在這個(gè)例子中,我們會(huì)發(fā)現(xiàn)銷(xiāo)售經(jīng)理和人事經(jīng)理都是一種特殊的用戶,他們擁有普通用戶所擁有的全部權(quán)限,此外他們還有自己獨(dú)有的權(quán)限。這里可進(jìn)一步把普通用戶和銷(xiāo)售經(jīng)理、人事經(jīng)理之間的關(guān)系抽象成泛化(Generalization)關(guān)系。
如圖5-7所示,職員是父類(lèi),銷(xiāo)售經(jīng)理和人事經(jīng)理是子類(lèi)。通過(guò)泛化關(guān)系,可以有效地減少用例圖中通信關(guān)聯(lián)的個(gè)數(shù),簡(jiǎn)化用例模型,便于大家理解。

圖5-6 公司管理系統(tǒng)用例圖

圖5-7 泛化后的公司管理系統(tǒng)用例圖
- Advanced Machine Learning with Python
- Oracle Exadata性能優(yōu)化
- Python進(jìn)階編程:編寫(xiě)更高效、優(yōu)雅的Python代碼
- C++ 從入門(mén)到項(xiàng)目實(shí)踐(超值版)
- 快速念咒:MySQL入門(mén)指南與進(jìn)階實(shí)戰(zhàn)
- 青少年學(xué)Python(第1冊(cè))
- 區(qū)塊鏈技術(shù)與應(yīng)用
- C++ Fundamentals
- Shopify Application Development
- Java多線程并發(fā)體系實(shí)戰(zhàn)(微課視頻版)
- Elasticsearch搜索引擎構(gòu)建入門(mén)與實(shí)戰(zhàn)
- Practical Responsive Typography
- WCF編程(第2版)
- Getting Started with SQL Server 2014 Administration
- Java EE企業(yè)級(jí)應(yīng)用開(kāi)發(fā)教程:Spring+Spring MVC+MyBatis(第2版)