詳解 UML 用例圖畫法 & 用例說明方式
本文主要結(jié)合實(shí)際使用,介紹UML用例圖的畫法以及用例的說明方式。希望對(duì)你有所啟發(fā)。
一、概述
用例圖是編寫需求說明時(shí)經(jīng)常用到的需求表達(dá)方式,用于向開發(fā)、測(cè)試同事說明需求中用戶與系統(tǒng)功能單元之間的關(guān)系。但是很多剛接觸用例的新人,在準(zhǔn)備用例說明時(shí)并不清楚參與者與用例之間應(yīng)該如何表達(dá),網(wǎng)上教程五花八門,但感覺部分用例圖不夠規(guī)范,因此對(duì)用例圖及用例說明梳理總結(jié)。
考慮到用例圖的作圖規(guī)范,使用Visio的UML用例組件,對(duì)用例中的各種關(guān)系進(jìn)行說明。
二、用例圖
用例圖的結(jié)構(gòu)主要分為三個(gè)部分:參與者、用例、參與者與用例之間的關(guān)系,具體說明如下:
2.1 參與者
顧名思義,代表系統(tǒng)外部與系統(tǒng)發(fā)生交互的人或事物;需要注意,人指的是參與者與系統(tǒng)發(fā)生交互時(shí)的角色,不代指具體的人。
事物指的是某一個(gè)應(yīng)用程序或者特殊進(jìn)程;例如微信登錄,通過跳轉(zhuǎn)微信確認(rèn)登錄信息,微信對(duì)系統(tǒng)產(chǎn)生輸入時(shí),可以把微信作為參與者;而設(shè)定時(shí)間,強(qiáng)制退出賬號(hào)時(shí),時(shí)間這一特殊進(jìn)程對(duì)系統(tǒng)產(chǎn)生輸入,因此時(shí)間也可以作為參與者。
2.2 用例
2.2.1 用例的說明
用例是系統(tǒng)外部可見的一個(gè)功能單元,是某一個(gè)參與者在系統(tǒng)中做某件事從開始到結(jié)束的一系列活動(dòng)的集合,以及結(jié)束時(shí)應(yīng)該返回的可觀測(cè)、有意義的結(jié)果,其中還包含可能的各種分支情況;具體用例在用例屬性中說明。
2.2.2 用例的特征
- 用例都是動(dòng)賓結(jié)構(gòu);例如:登錄賬號(hào)
- 用例是相互獨(dú)立的
- 用例由參與者啟動(dòng)
- 有可觀測(cè)的執(zhí)行結(jié)果
2.3 關(guān)系說明
角色與用例之間的關(guān)系主要包括關(guān)聯(lián)、歸納(泛化)、包含、拓展和依賴。
2.3.1 關(guān)聯(lián)關(guān)系
- 關(guān)系說明:表示參與者與用例之間的關(guān)系
- 展示形式:以一條直線相連
- 舉例說明:用戶登錄系統(tǒng)
圖1 參與者與用例之間的關(guān)聯(lián)關(guān)系
2.3.2 歸納(泛化)關(guān)系
- 關(guān)系說明:表示參與者與參與者之間、用例與用例之間的關(guān)系
- 展示形式:用箭頭表示,箭頭從子參與者(子用例)指向父參與者(基礎(chǔ)用例),一般父參與者(基礎(chǔ)用例)相對(duì)子參與者(子用例)更為抽象
- 舉例說明:VIP會(huì)員和普通用戶,歸納為用戶;賬號(hào)登錄與微信登錄,也可歸納為登錄系統(tǒng)。
圖2 用戶之間、用例之間的歸納關(guān)系
2.3.3 包含關(guān)系
- 關(guān)系說明:表示用例與用例之間的關(guān)系
- 展示形式:用帶有“包含”的箭頭表示,箭頭從基礎(chǔ)用例指向包含用例
- 舉例說明:用戶在賬號(hào)登錄過程中,包括輸入賬號(hào)、輸入密碼、確認(rèn)登錄等操作
圖3 用例與用例之間的包含關(guān)系
2.3.4 拓展關(guān)系
- 關(guān)系說明:表示用例與用例之間的關(guān)系;用于拓展用例對(duì)基礎(chǔ)用例的增強(qiáng);拓展用例是在特定條件出現(xiàn)時(shí),才會(huì)被執(zhí)行的用例
- 展示形式:用帶有“拓展”的箭頭表示,由拓展用例指向基礎(chǔ)用例
- 舉例說明:用戶在登錄過程中忘記了密碼
圖4 用例與用例之間的拓展關(guān)系
2.3.5 依賴關(guān)系
- 關(guān)系說明:表示用例與用例之間的關(guān)系;一個(gè)用例在活動(dòng)執(zhí)行過程中,要依賴另一個(gè)用例的執(zhí)行
- 展現(xiàn)形式:以一條直線相連
- 舉例說明:用戶要登錄系統(tǒng)后,才能查看首頁信息
- 補(bǔ)充說明:A用例依賴B用例,A用例或使用B用例執(zhí)行后的返回結(jié)果,或使用B用例執(zhí)行部分功能。依賴關(guān)系類似于包含關(guān)系,都是在用例執(zhí)行過程中,調(diào)用其它用例來完成部分任務(wù)。
圖5 用例與用例之間的依賴關(guān)系
2.3.6 注釋
對(duì)于部分有特殊條件支撐的用例,也可以添加注釋加以說明,例如VIP用戶與普通用戶登錄系統(tǒng)后,可查看的菜單、數(shù)據(jù)甚至對(duì)系統(tǒng)的操作都是不一樣的,此時(shí)可以在對(duì)應(yīng)用例上加以注釋,以強(qiáng)調(diào)此用例的特殊需求。
圖6 對(duì)用例進(jìn)行注釋
2.3.7 子系統(tǒng)
關(guān)系說明:用于強(qiáng)調(diào)某部分用例的強(qiáng)關(guān)聯(lián)性,例如門戶包含系統(tǒng)登錄、首頁信息展示等。
圖7 子系統(tǒng)與用例之間的關(guān)系
2.3.8 各關(guān)系的對(duì)比
為了對(duì)包含、拓展和歸納(泛化)關(guān)系更好的區(qū)分,以圖7為例說明各種關(guān)系之間的差別:
1)用例的使用條件
包含用例與歸納(泛化)的子用例,都沒有限定的使用條件;例如用戶登錄系統(tǒng)時(shí),直接選擇輸入賬號(hào)密碼登錄系統(tǒng),或者通過微信登錄系統(tǒng);而忘記密碼是在用戶賬號(hào)登錄時(shí)遺忘密碼才會(huì)發(fā)生的用例,是有特定條件下才會(huì)發(fā)生的用例。
2)直接、間接提供服務(wù)
歸納(泛化)的子用例與拓展用例為參與者直接提供服務(wù),例如用戶登錄系統(tǒng)時(shí),會(huì)直接選擇賬號(hào)登錄或微信登錄,而賬號(hào)登錄或微信登錄直接為參與者提供登錄服務(wù);而包含關(guān)系的用例,為參與者提供間接服務(wù),例如賬號(hào)登錄時(shí),需要輸入賬號(hào)、輸入密碼等,這些用例直接鼓舞于賬號(hào)登錄這個(gè)用例,間接為參與者提供登錄服務(wù)。
3)其余說明
- 延伸用例與基礎(chǔ)用例相互獨(dú)立,兩者之間不包含對(duì)方用例的內(nèi)容。
- 歸納(泛化)的子用例包含基礎(chǔ)用例所有內(nèi)容、基礎(chǔ)用例與其他用例的關(guān)系以及基礎(chǔ)用例與參與者之間的關(guān)系;例如賬號(hào)登錄是登錄系統(tǒng)的子用例,但賬號(hào)登錄包含了登錄系統(tǒng)的內(nèi)容、登錄系統(tǒng)與展示首頁的關(guān)系以及登錄系統(tǒng)與參與者的關(guān)系。
三、用例描述
完成了用例圖,實(shí)際上工作只完成了一半,更重要的是對(duì)每個(gè)用例進(jìn)行具體的說明;包括說明用例之間的關(guān)系、參與者身份角色以及用例從開始至結(jié)束過程中的條件及分支情況等;具體用例說明形式可參考下表:
用例的描述針對(duì)不同業(yè)務(wù)系統(tǒng),描述的重點(diǎn)可能會(huì)存在差異,因此用例描述的重點(diǎn)在于清晰表達(dá)用例需求,不必拘泥于表達(dá)形式。
最后
不管用例圖與表格畫得多么酷炫,最終目的也是為了團(tuán)隊(duì)同事可以用最短的時(shí)間及精力完成對(duì)需求的理解。因此扎實(shí)的文檔能力是產(chǎn)品的基礎(chǔ)要求,希望這份總結(jié)能給到對(duì)用例說明無從下手的童鞋一點(diǎn)幫助。
如有錯(cuò)誤,希望各位指正;共勉!
本文由 @龐龐? 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
圖五,依賴是否畫上指向被依賴的用例的箭頭更好?
是的,同問作者。
太棒了,通俗易懂
profession
看了好幾篇終于找到專業(yè)的文章了
專業(yè)
專業(yè),終于在這篇文章找到答案了
用例需要細(xì)致和耐心,想好團(tuán)隊(duì)同事所知道的前提。
簡單易懂,比書上好懂多了