UML的全稱是Unified Modeling Language,翻譯過(guò)來(lái)就是統(tǒng)一建模語(yǔ)言碧囊。
UML可以很有效的幫助產(chǎn)品經(jīng)理或產(chǎn)品設(shè)計(jì)師進(jìn)行前期的產(chǎn)品需求分析與產(chǎn)品的設(shè)計(jì)蛉幸。在我們梳理項(xiàng)目的業(yè)務(wù)流程時(shí)就會(huì)用到活動(dòng)圖,在我們整理系統(tǒng)功能時(shí)就會(huì)用到用例圖喳整,在我們與客戶面對(duì)面進(jìn)行溝通調(diào)研時(shí)用例圖管搪、活動(dòng)圖虾攻、順序圖等UML可以使得溝通變得更加順暢。
UML圖
開(kāi)始介紹幾種在需求分析和設(shè)計(jì)階段會(huì)用到的UML圖更鲁。
1. 流程圖
(1)什么是流程圖?
流程中包含一個(gè)個(gè)活動(dòng)霎箍,在業(yè)務(wù)系統(tǒng)中強(qiáng)調(diào)從活動(dòng)到活動(dòng)的控制流。
這里的活動(dòng)澡为,可以指企業(yè)的活動(dòng)漂坏,也可以指應(yīng)用程序中的活動(dòng)。因此,也可說(shuō)活動(dòng)圖是用來(lái)陳述活動(dòng)與活動(dòng)之間的流程控制的遷移樊拓。
(2)流程圖的畫(huà)法
流程圖的繪制涉及幾個(gè)重要的元素:
起始點(diǎn):是一連串活動(dòng)的開(kāi)始點(diǎn)纠亚,在一個(gè)流程圖中,有且只有一個(gè)起始點(diǎn)筋夏。
起始點(diǎn)的圖示:
結(jié)束點(diǎn):是一連串活動(dòng)的終結(jié)點(diǎn)蒂胞,在一個(gè)流程圖中,可以有多個(gè)結(jié)束點(diǎn)条篷。
結(jié)束點(diǎn)的圖示:
活動(dòng):是活動(dòng)圖最核心的元素骗随,指人或系統(tǒng)的一連串執(zhí)行細(xì)節(jié)。比如赴叹,用戶在淘寶APP內(nèi)的“要求退貨”就是一個(gè)活動(dòng)鸿染,在這個(gè)活動(dòng)中,可能會(huì)包括用戶的一連串的動(dòng)作——比如“打開(kāi)APP乞巧、進(jìn)入訂單頁(yè)面”等涨椒,但是這些細(xì)節(jié)都要通過(guò)“要求退貨”這個(gè)活動(dòng)來(lái)表達(dá)。
活動(dòng)的圖示:
遷移:代表流程控制權(quán)的遷移绽媒,當(dāng)某一個(gè)活動(dòng)結(jié)束后蚕冬,流程的控制權(quán)就通過(guò)遷移給另一個(gè)活動(dòng)。如下圖:
分支:代表一個(gè)判斷的準(zhǔn)則是辕,以菱形塊表示囤热。當(dāng)指定一個(gè)分支時(shí),從分支連接出去的遷移必須要有必要條件获三,這在UML中稱為約束旁蔼。在UML中,使用“[]”來(lái)表示約束:
分叉以及會(huì)合:代表對(duì)于后續(xù)活動(dòng)的同步處理疙教,這也是活動(dòng)圖區(qū)分與流程圖的關(guān)鍵一點(diǎn)棺聊。當(dāng)某個(gè)活動(dòng)結(jié)束后,需要同時(shí)進(jìn)行兩個(gè)以上的活動(dòng)松逊,此時(shí)需要用分叉來(lái)表達(dá)躺屁;而當(dāng)某個(gè)活動(dòng)必須要等其前置的多個(gè)活動(dòng)完成后方可執(zhí)行肯夏,此時(shí)會(huì)用會(huì)合來(lái)表達(dá)经宏。
分叉與會(huì)合的圖示都是:
通常來(lái)說(shuō),分叉與會(huì)合會(huì)搭配出現(xiàn)驯击,當(dāng)活動(dòng)圖中出現(xiàn)了分叉點(diǎn)烁兰,那么在后續(xù)的某個(gè)特定環(huán)節(jié)必定會(huì)有會(huì)合點(diǎn)。
泳道:對(duì)于產(chǎn)品經(jīng)理來(lái)說(shuō)并不陌生徊都,利用泳道可以分配對(duì)應(yīng)的角色沪斟,可以幫助我們清晰地知道發(fā)起活動(dòng)的角色是誰(shuí)。
2. 用例圖
(1)什么是用例?
? ??用例也代表著一個(gè)具體的業(yè)務(wù)場(chǎng)景主之。從用戶的角度描述了系統(tǒng)的功能择吊,并指出各個(gè)功能的執(zhí)行者,強(qiáng)調(diào)用戶的使用者槽奕,系統(tǒng)為執(zhí)行者完成哪些功能几睛。因此,我們可以使用用例圖系統(tǒng)地表達(dá)軟件系統(tǒng)的絕大部分功能性需求粤攒。
(2)用例圖的畫(huà)法
? ??用例通常會(huì)用一個(gè)橢圓形表示:
執(zhí)行者/角色:即是扮演著某個(gè)角色的用戶或系統(tǒng)所森,執(zhí)行者通常版扮演者對(duì)于產(chǎn)品或系統(tǒng)來(lái)說(shuō)有實(shí)際作用的用戶或其他系統(tǒng)。
在UML中夯接,執(zhí)行者的圖示如下:
系統(tǒng)邊界:展示了系統(tǒng)的內(nèi)外之分焕济,明確的劃分了開(kāi)發(fā)過(guò)程中需要關(guān)心和不需要關(guān)心的邊界。系統(tǒng)邊界的圖示:
泛化:執(zhí)行者之間可以有泛化關(guān)系盔几,泛化關(guān)系可以簡(jiǎn)單理解為繼承關(guān)系——比如:職員擁有“申請(qǐng)開(kāi)票”功能晴弃,經(jīng)理?yè)碛小吧暾?qǐng)開(kāi)票、審核”功能逊拍,那么經(jīng)理類就可以是職員類泛化生成的肝匆。用例之間也會(huì)具有泛化關(guān)系,比如“篩選用例”可以泛化出“按播放量”和“按訂閱數(shù)”的用例顺献。
泛化通常是子類指向基類:
關(guān)聯(lián):執(zhí)行者與用例之間旗国,只能有關(guān)聯(lián)的關(guān)系。
關(guān)聯(lián)用來(lái)連接執(zhí)行者和用例:
擴(kuò)展:擴(kuò)展是用例與用例之間的關(guān)系注整,指的是一個(gè)用例的擴(kuò)展功能——比如:“登錄”用例的擴(kuò)展用例是“忘記密碼”能曾,這個(gè)“忘記密碼”功能不一定會(huì)使用。
擴(kuò)展一般使用extend表示(注意箭頭方向):
包括:區(qū)別于擴(kuò)展肿轨,包括指的是一個(gè)用例內(nèi)寿冕,包括的子用例——比如:“角色管理”用例包括“創(chuàng)建角色”、“查詢角色”等用例椒袍。
包括使用include表示(注意箭頭方向):
用例圖范例:
3. 序列圖
(1)什么是序列圖驼唱?
序列圖也叫順序圖,序列圖最主要的目的就是表達(dá)對(duì)象與對(duì)象之間是如何溝通與協(xié)作的驹暑。
用例常常被細(xì)化為一個(gè)或者更多的序列圖玫恳,同時(shí)序列圖更有效地描述如何分配各個(gè)類的職責(zé)以及各類具有相應(yīng)職責(zé)的原因。
(2)序列圖的畫(huà)法
序列圖涉及到的幾個(gè)重要元素:
對(duì)象:在序列圖中优俘,每個(gè)參與部分都是對(duì)象京办。在序列圖中,主要是以“對(duì)象名稱”的方式來(lái)表述帆焕。
圖示:
消息:對(duì)象與對(duì)象之間只能通過(guò)消息來(lái)進(jìn)行聯(lián)系惭婿,消息可以理解為對(duì)象的某一個(gè)操作。消息分為同步消息、異步消息和自關(guān)聯(lián)消息财饥,同步消息需要同步等待消息换吧。
圖示為:
異步發(fā)送消息時(shí)不需要等待,圖示為:
自關(guān)聯(lián)消息是對(duì)象給自身發(fā)送消息钥星,圖示為:
約束:是對(duì)象與對(duì)象之間進(jìn)行消息交互式的約束條件式散,也就是要完成此次消息交互必須需要的條件約束,
約束通常使用“[]”表示打颤。
序列圖范例:
4暴拄、狀態(tài)機(jī)圖
狀態(tài)機(jī)圖從某個(gè)對(duì)象的狀態(tài)是如何變化的角度來(lái)展示流程的,是一種由狀態(tài)编饺、變遷乖篷、事件和活動(dòng)組成的狀態(tài)機(jī),用來(lái)描述類的對(duì)象所有可能的狀態(tài)以及時(shí)間發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移條件透且。
在產(chǎn)品的需求分析中撕蔼,如果一個(gè)流程是圍繞某一事物/對(duì)象的狀態(tài)變化而展開(kāi)時(shí),我們應(yīng)該優(yōu)先使用狀態(tài)機(jī)圖秽誊。
比如:常見(jiàn)的訂單流程就可以使用訂單的狀態(tài)圖來(lái)表示訂單對(duì)象的流程鲸沮。再比如,在請(qǐng)假系統(tǒng)中锅论,請(qǐng)假條的狀態(tài)變化流程也可以用狀態(tài)機(jī)圖來(lái)進(jìn)行分析讼溺。
狀態(tài)機(jī)圖范例:
5. 類圖
類:圖中最重要的就是類,類是由名稱最易、屬性和操作組成怒坯。屬性可以簡(jiǎn)單理解為這個(gè)類包括的字段,操作就是該類可以實(shí)現(xiàn)的方法藻懒。
圖示如下:
類圖中最為重要的剔猿,就是類之間的關(guān)系,UML類圖中有六大關(guān)系嬉荆。
關(guān)聯(lián)關(guān)系:類與類之間最基本的關(guān)系归敬。關(guān)聯(lián)表達(dá)了兩個(gè)類的對(duì)象之間的結(jié)構(gòu)性關(guān)系,比如老師類與課程類之間有一個(gè)關(guān)聯(lián)鄙早,那么就代表著一個(gè)老師一定會(huì)管理著一個(gè)學(xué)生(一對(duì)一家教或多對(duì)多的學(xué)習(xí))汪茧。
關(guān)聯(lián)的圖示:
泛化:在用例圖中我們介紹過(guò)泛化,同理蝶锋,類與類之間的泛化關(guān)系也可以理解為繼承陆爽,也就是特殊類與一般類之間的關(guān)系。泛化圖示扳缕,通常為子類指向基類:
實(shí)現(xiàn):是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實(shí)現(xiàn)∏颍可以理解為驴剔,類通過(guò)接口實(shí)現(xiàn)了什么功能。
實(shí)現(xiàn)的圖示:
依賴:是一種使用關(guān)系粥庄,比如司機(jī)使用汽車丧失。
依賴的圖示:
聚合:是整體與部分的關(guān)系,且部分可以離開(kāi)整體而單獨(dú)存在惜互。如車和輪胎是整體和部分的關(guān)系布讹,輪胎離開(kāi)車仍然可以存在。
聚合的圖示:
類圖例子: