產(chǎn)品經(jīng)理必學(xué)UML(二):用例圖
上一篇中介紹了UML中的類圖,本篇筆者將與大家介紹UML中的用例圖的三個(gè)方面內(nèi)容:用例(Use Case); 參與者(Actor); 參與者、用例之間的關(guān)系。
用例圖(Use Case Diagrame):描述了人們希望如何使用一個(gè)系統(tǒng),將相關(guān)用戶、用戶需要系統(tǒng)提供的服務(wù)以及系統(tǒng)需要用戶提供的服務(wù)更清晰的顯示出來,以便使系統(tǒng)用戶更容易理解這些元素的用途,也便于開發(fā)人員最終實(shí)現(xiàn)這些元素。
之所以說用例圖至關(guān)重要,是由于用戶并不關(guān)心系統(tǒng)的實(shí)現(xiàn)和內(nèi)部結(jié)構(gòu),只關(guān)心產(chǎn)品所呈現(xiàn)出來的外部特征動(dòng)態(tài)。而用例圖恰好就是描述軟件產(chǎn)品外部特性的視圖,它從用戶的角度而不是從開發(fā)者的角度來描述需求,分析產(chǎn)品的功能和動(dòng)態(tài)行為。
用例圖包括三方面內(nèi)容:用例(Use Case); 參與者(Actor); 參與者、用例之間的關(guān)系。用例圖模型如下圖所示,參與者用人形圖標(biāo)顯示,用例用橢圓形表示,連線描述之間的關(guān)系。
一、參與者(Actor)
1. 概念
參與者是系統(tǒng)外部的一個(gè)實(shí)體,它以某種方式參與了用例的執(zhí)行過程,在UML中,通常用名字寫在下面的人形圖標(biāo)表示。
值得注意的是:參與者不一定是人,也可以是任何的事,通??梢詫⑴c者分為以下三類:
1)真實(shí)的人,即用戶
這一類是最常用的參與者,幾乎在每個(gè)系統(tǒng)中。在命名這一類參與者時(shí),應(yīng)該按照業(yè)務(wù)而不是位置命名,因?yàn)橐粋€(gè)人有可能有多重身份。
比如:汽車租賃公司的客戶服務(wù)代表,通常情況下是客戶服務(wù)代表,但在她有租賃行為時(shí),就變成了客戶。因此,按照業(yè)務(wù)而不是位置命名可以獲得更加穩(wěn)定的參與者。
2)其他的系統(tǒng)
在有的系統(tǒng)中,還需要建立與其他系統(tǒng)的接口,依然以汽車租賃系統(tǒng)為例,它可能要與外部應(yīng)用程序建立練習(xí),比如:說外部信用卡應(yīng)用程序,這時(shí)候外部信用卡應(yīng)用系統(tǒng)就是一個(gè)參與者。
3)可運(yùn)行的進(jìn)程
以時(shí)間為例,當(dāng)經(jīng)過一定時(shí)間觸發(fā)系統(tǒng)中的某個(gè)時(shí)間時(shí),時(shí)間就成了參與者。比如:在汽車租賃系統(tǒng)中,到了還車時(shí)間客戶仍未歸還,系統(tǒng)便會(huì)提醒客戶代表致電客戶。由于時(shí)間不再在人的控制內(nèi),因此它也是一個(gè)參與者。
2. 參與者間的關(guān)系
對(duì)于一些參與者來說,它既扮演者自己的角色,同時(shí)也扮演更一般的角色,在案例圖中用泛化關(guān)系來描述他們(此點(diǎn)與上一節(jié)類圖中介紹的泛化關(guān)系類似)。
假設(shè)汽車租賃系統(tǒng)可以接受客戶的電話預(yù)定和網(wǎng)上預(yù)訂,那么參與者“客戶”就描述了參與者“電話客戶”和“網(wǎng)上用戶”所扮演的一般角色。泛化關(guān)系與類圖一樣都使用一個(gè)空心三角箭頭表示,指向扮演一般角色的超類。
在確定參與者當(dāng)中,如果不考慮客戶是如何與系統(tǒng)接觸的,就使用一般角色參與者,即父類;如果強(qiáng)調(diào)接觸發(fā)生的形式,則必須采用實(shí)際的參與者,即子類。
二、用例(Use Case)
1. 概念
用例:是對(duì)系統(tǒng)的用戶需求(主要是功能需求)的描述,用例表達(dá)了系統(tǒng)的功能和所提供的服務(wù),描述了活動(dòng)者與系統(tǒng)交互中的對(duì)話。
以汽車租賃系統(tǒng)為例,客戶向系統(tǒng)發(fā)出租賃請求,并向系統(tǒng)中輸入數(shù)據(jù)(姓名等信息),系統(tǒng)響應(yīng)活動(dòng)者的請求,進(jìn)行相應(yīng)的處理,并且將結(jié)果返回活動(dòng)者。
每個(gè)用例都必須有一個(gè)唯一的名字以示區(qū)別,用例名字是一個(gè)字符串,包括簡單名(simple)和路徑名(path name),這和類圖中的類名是相同的。
左圖:簡單名/右圖:路徑名
2. 用例與事件流
用例分析處于系統(tǒng)的需求分析階段,這個(gè)階段盡量避免考慮系統(tǒng)實(shí)現(xiàn)的細(xì)節(jié)問題。但若要建立系統(tǒng)還需要更加具體的細(xì)節(jié),這些細(xì)節(jié)可以寫在事件流中。
事件流描述的是一個(gè)系統(tǒng)做什么,而不是怎么做,舉個(gè)栗子,在汽車租賃系統(tǒng)中用例“用戶登錄”可以采取一下方法:
- 主事件流:客戶輸入自己的用戶名和密碼時(shí),用戶開始。輸入的用戶名和密碼被提交后,服務(wù)器判斷密碼是否正確。如果正確,則用戶成功登錄,系統(tǒng)為其展示租賃頁面。
- 異常事件流:用戶用戶名或密碼錯(cuò)誤,不能登錄,用例重新開始。
- 異常事件流:在提交密碼前,用戶清楚用戶名或密碼,重新填寫。
三、參與者、用例之間的關(guān)系
1. 關(guān)聯(lián)關(guān)系
這是最常使用的關(guān)系,用帶箭頭的實(shí)線來描述。以汽車租賃系統(tǒng)中的“客戶”參與這以及和他交互的3個(gè)用例(預(yù)定、取車和換車)為例。
2. 泛化關(guān)系(Generalization)
一個(gè)用例可以被列舉為多個(gè)子用例,這就被成為用例泛化,這與類間的泛化關(guān)系類似。在用例泛化中,子用例表示父用例的特殊形式,可從父用例處繼承行為和屬性。泛化關(guān)系的圖形用空心實(shí)線箭頭表示,箭頭指向父類。
如下圖所示是汽車租賃公司用例圖中的用例“預(yù)定汽車”,該用例有兩個(gè)子用例“預(yù)定大巴中巴”和“預(yù)訂小車”。
3. 包含關(guān)系(Include)
包含:指的是其中一個(gè)用例(稱為基礎(chǔ)用例)的行為包含了另一個(gè)用例(稱為包含用例)。
基礎(chǔ)用例包含用例并依賴包含用例的執(zhí)行結(jié)果。但是二者不能訪問對(duì)方的屬性。包含關(guān)系的圖形為虛線箭頭加<<include>>,箭頭指向包含用例。
再舉個(gè)栗子:仍然是汽車租賃系統(tǒng),客戶無論是預(yù)定、取車還是還車,都需要用戶登錄,所有此時(shí)使用例“登錄”被用例“預(yù)定”、“取車”和“還車”所包含,這樣就能避免許多重復(fù)的動(dòng)作。
4. 擴(kuò)展關(guān)系(Extend)
擴(kuò)展用例可以被定義為:基礎(chǔ)用例的增量擴(kuò)展,它倆之間為擴(kuò)展關(guān)系。
簡單來說,就是當(dāng)某特定條件出現(xiàn)時(shí),該擴(kuò)展用例的行為才會(huì)被執(zhí)行。擴(kuò)展關(guān)系的圖形為虛線箭頭加上<<<exclude>>>,箭頭指向基礎(chǔ)用例。
如下圖,客戶在還車超過了一定期限就需要繳納罰款,其中“借車超期”為特定條件,只有該條件出現(xiàn),才執(zhí)行“繳納罰款”用例行為,“還車”用例和“繳納罰款”之間就是擴(kuò)展關(guān)系。
四、練習(xí):QQ音樂用戶及其相關(guān)用例(簡易版)
- 其中參與者【用戶】可以泛化為QQ用戶與微信用戶。
- 【建立歌曲列表】用例包含了【聽歌】和【登錄】用例,因?yàn)楸仨氁鹊卿洸拍茉诼牳桧撁嫣砑拥礁枨斜碇小?/li>
- 在【聽歌】用例中,有1個(gè)擴(kuò)展點(diǎn),是有的收費(fèi)歌曲需要購買才能收聽,其中歌曲收費(fèi)為特定條件。
相關(guān)閱讀
《產(chǎn)品經(jīng)理必學(xué)UML(一):類圖》
本文由 @AugTalk 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
Extend箭頭方向都畫錯(cuò)了,嚴(yán)重誤導(dǎo),還這么多收藏
你能不能不要胡寫?include關(guān)系也寫錯(cuò)了,extend也寫錯(cuò)了,統(tǒng)共也沒幾個(gè)關(guān)系,亂寫八道,誤導(dǎo)人?。。。。。。。?!
哈哈哈
我也發(fā)現(xiàn)了,,
這何止誤導(dǎo),簡直是草菅人命,因?yàn)楫嬘美靶枰獎(jiǎng)澐肿酉到y(tǒng),用例要放在系統(tǒng)里,用例之間還有有層級(jí),用例還要可復(fù)用,不信的話去做真實(shí)項(xiàng)目,這里全錯(cuò)
作者很詳細(xì)的介紹了用例圖概念及實(shí)現(xiàn)思路,但是對(duì)于產(chǎn)品經(jīng)理來說,用例圖只是以用戶角度對(duì)需求的展現(xiàn),而更重要的是了解用戶需求背后的邏輯關(guān)系。
很多產(chǎn)品經(jīng)理因?yàn)榻?jīng)驗(yàn)不足,僅靠摸索去了解,最后甚至挖掘不到用戶的真實(shí)需求。
這里向你推薦起點(diǎn)學(xué)院的產(chǎn)品體系課,如果你不了解這門課程,可以先來試聽產(chǎn)品經(jīng)理公開課,多位10年+經(jīng)驗(yàn)的產(chǎn)品老司機(jī)分享他們多年實(shí)戰(zhàn)沉淀的產(chǎn)品經(jīng)驗(yàn),現(xiàn)場更有1V1互動(dòng),點(diǎn)擊這里,立即預(yù)約>>http://996.pm/7qaOd
查詢歌曲是不是也能泛化為 歌曲名查詢、歌手名查詢
清晰明了,點(diǎn)贊
寫錯(cuò)啦。
有錯(cuò)誤的內(nèi)容,請修正,避免學(xué)習(xí)用例圖的朋友被誤導(dǎo)。
筆者在畫extend時(shí)有問題,它的箭頭應(yīng)該指向上一級(jí)用例,而非被擴(kuò)展的用例。
擴(kuò)展關(guān)系三extend,文章中寫成exclude了,箭頭應(yīng)該指向基礎(chǔ)用例
用例圖應(yīng)該是測試的時(shí)候用的吧
產(chǎn)品畫完業(yè)務(wù)流程圖 應(yīng)該繪制用例圖
1111
手動(dòng)點(diǎn)贊!請問你一般這些都要寫嗎
這些工具主要還是用來輔助自己更好的整理和理解業(yè)務(wù)。同事給別人說業(yè)務(wù)的時(shí)候有圖輔助別人也更好理解你說的。用別的工具也是可以達(dá)到目的的,所以不是都要寫的。關(guān)鍵是能把業(yè)務(wù)理清楚講清楚。