官术网_书友最值得收藏!

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)用例圖

主站蜘蛛池模板: 潼南县| 沂水县| 溧阳市| 桐柏县| 滦南县| 凤庆县| 平潭县| 南木林县| 钦州市| 昌黎县| 扬州市| 鲁甸县| 高雄市| 奉贤区| 沙坪坝区| 阿拉善盟| 宁国市| 巴青县| 敦化市| 嘉黎县| 宁德市| 石阡县| 南涧| 阿拉善右旗| 项城市| 郁南县| 井冈山市| 广宁县| 金乡县| 南昌县| 且末县| 六盘水市| 江北区| 嘉禾县| 桐庐县| 巴东县| 虹口区| 北京市| 遵义县| 公主岭市| 合阳县|