UML建模——用例图(Use Case Diagram)
用例圖主要用來(lái)描述角色以及角色與用例之間的連接關(guān)系。說(shuō)明的是誰(shuí)要使用系統(tǒng),以及他們使用該系統(tǒng)可以做些什么。一個(gè)用例圖包含了多個(gè)模型元素,如系統(tǒng)、參與者和用例,并且顯示這些元素之間的各種關(guān)系,如泛化、關(guān)聯(lián)和依賴(lài)。它展示了一個(gè)外部用戶(hù)能夠觀察到的系統(tǒng)功能模型圖。
【用途】:幫助開(kāi)發(fā)團(tuán)隊(duì)以一種可視化的方式理解系統(tǒng)的功能需求。
?
一、用例圖所包含的的元素
1.?參與者(Actor)——與應(yīng)用程序或系統(tǒng)進(jìn)行交互的用戶(hù)、組織或外部系統(tǒng)。用一個(gè)小人表示。
?
?
2.?用例(Use Case)——用例就是外部可見(jiàn)的系統(tǒng)功能,對(duì)系統(tǒng)提供的服務(wù)進(jìn)行描述。用橢圓表示。
?
?
?
3. 子系統(tǒng)(Subsystem)——用來(lái)展示系統(tǒng)的一部分功能,這部分功能聯(lián)系緊密。
?
?
?
二、用例圖所包含的的關(guān)系
用例圖中涉及的關(guān)系有:關(guān)聯(lián)、泛化、包含、擴(kuò)展。
如下表所示:
?
?
a. 關(guān)聯(lián)(Association)
?
表示參與者與用例之間的通信,任何一方都可發(fā)送或接受消息。
?
【箭頭指向】:無(wú)箭頭,將參與者與用例相連接,指向消息接收方
?
?
b. 泛化(Inheritance)
?
就是通常理解的繼承關(guān)系,子用例和父用例相似,但表現(xiàn)出更特別的行為;子用例將繼承父用例的所有結(jié)構(gòu)、行為和關(guān)系。子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象的。在實(shí)際應(yīng)用中很少使用泛化關(guān)系,子用例中的特殊行為都可以作為父用例中的備選流存在。
?
【箭頭指向】:指向父用例
?
?
c. 包含(Include)
?
包含關(guān)系用來(lái)把一個(gè)較復(fù)雜用例所表示的功能分解成較小的步驟。包含關(guān)系對(duì)典型的應(yīng)用就是復(fù)用,也就是定義中說(shuō)的情景。但是有時(shí)當(dāng)某用例的事件流過(guò)于復(fù)雜時(shí),為了簡(jiǎn)化用例的描述,我們也可以把某一段事件流抽象成為一個(gè)被包含的用例;相反,用例劃分太細(xì)時(shí),也可以抽象出一個(gè)基用例,來(lái)包含這些細(xì)顆粒的用例。這種情況類(lèi)似于在過(guò)程設(shè)計(jì)語(yǔ)言中,將程序的某一段算法封裝成一個(gè)子過(guò)程,然后再?gòu)闹鞒绦蛑姓{(diào)用這一子過(guò)程。
例如:業(yè)務(wù)中,總是存在著維護(hù)某某信息的功能,如果將它作為一個(gè)用例,那添加、修改以及刪除都要在用例詳述中描述,過(guò)于復(fù)雜;如果分成添加用例、修改用例和刪除用例,則劃分太細(xì)。這時(shí)包含關(guān)系可以用來(lái)理清關(guān)系。
?
【箭頭指向】:指向分解出來(lái)的功能用例
?
?
d. 擴(kuò)展(Extend)
?
擴(kuò)展關(guān)系是指用例功能的延伸,相當(dāng)于為基礎(chǔ)用例提供一個(gè)附加功能。將基用例中一段相對(duì)獨(dú)立并且可選的動(dòng)作,用擴(kuò)展(Extension)用例加以封裝,再讓它從基用例中聲明的擴(kuò)展點(diǎn)(Extension Point)上進(jìn)行擴(kuò)展,從而使基用例行為更簡(jiǎn)練和目標(biāo)更集中。擴(kuò)展用例為基用例添加新的行為。擴(kuò)展用例可以訪問(wèn)基用例的屬性,因此它能根據(jù)基用例中擴(kuò)展點(diǎn)的當(dāng)前狀態(tài)來(lái)判斷是否執(zhí)行自己。但是擴(kuò)展用例對(duì)基用例不可見(jiàn)。
對(duì)于一個(gè)擴(kuò)展用例,可以在基用例上有幾個(gè)擴(kuò)展點(diǎn)。
?
【箭頭指向】:指向基礎(chǔ)用例
?
?
e. 依賴(lài)(Dependency)
?
以上4種關(guān)系,是UML定義的標(biāo)準(zhǔn)關(guān)系。但VS2010的用例模型圖中,添加了依賴(lài)關(guān)系,用帶箭頭的虛線表示,表示源用例依賴(lài)于目標(biāo)用例。
?
【箭頭指向】:指向被依賴(lài)項(xiàng)
?
?
5. 項(xiàng)目(Artifact)
?
用例圖雖然是用來(lái)幫助人們形象地理解功能需求,但卻沒(méi)多少人能夠通看懂它。很多時(shí)候跟用戶(hù)交流甚至用Excel都比用例圖強(qiáng),VS2010中引入了“項(xiàng)目”這樣一個(gè)元素,以便讓開(kāi)發(fā)人員能夠在用例圖中鏈接一個(gè)普通文檔。
?
用依賴(lài)關(guān)系把某個(gè)用例依賴(lài)到項(xiàng)目上:
?
?
然后把項(xiàng)目->屬性的Hyperlink設(shè)置到你的文檔上;
?
這樣當(dāng)你在用例圖上雙擊項(xiàng)目時(shí),就會(huì)打開(kāi)相關(guān)聯(lián)的文檔。
?
6. 注釋(Comment)
?
?
包含(include)、擴(kuò)展(extend)、泛化(Inheritance)?的區(qū)別:
?
條件性:泛化中的子用例和include中的被包含的用例會(huì)無(wú)條件發(fā)生,而extend中的延伸用例的發(fā)生是有條件的;
?
直接性:泛化中的子用例和extend中的延伸用例為參與者提供直接服務(wù),而include中被包含的用例為參與者提供間接服務(wù)。
?
對(duì)extend而言,延伸用例并不包含基礎(chǔ)用例的內(nèi)容,基礎(chǔ)用例也不包含延伸用例的內(nèi)容。
?
對(duì)Inheritance而言,子用例包含基礎(chǔ)用例的所有內(nèi)容及其和其他用例或參與者之間的關(guān)系;
●泛化側(cè)重表示子用例間的互斥性;
●包含側(cè)重表示被包含用例對(duì)Actor提供服務(wù)的間接性;
●擴(kuò)展側(cè)重表示擴(kuò)展用例的觸發(fā)不定性;
另外一點(diǎn)需要提及的是:泛化中的子用例和擴(kuò)展中的擴(kuò)展用例均可以作為基本用例事件的備選擇流而存在。
?
?
三、幾個(gè)用例圖示例
?
****************************************************************************
以下為某在線購(gòu)物系統(tǒng)的用例圖,對(duì)系統(tǒng)做出做了整體的描繪。
(1)系統(tǒng)整體用例圖
????
???
????(商品用例圖)
???
???
????
???
???
???(購(gòu)買(mǎi)信息用例)
??
???
???
??? (用戶(hù)資料用例)
???
總結(jié)
以上是生活随笔為你收集整理的UML建模——用例图(Use Case Diagram)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: npm install 时--save-
- 下一篇: UML建模综述