UML入門使用指南
UML可以理解為一種標(biāo)準(zhǔn)化建模語(yǔ)言,主要用于系統(tǒng)描述與業(yè)務(wù)建模,那么,如何使用UML?這篇文章里,作者就進(jìn)行了拆解分析,并對(duì)類圖、用例圖等類型進(jìn)行詳解,一起來(lái)看看吧。
一、WHAT?
什么是UML?
從網(wǎng)上了解到的UML的定義:UML(Unified Modeling Language)是統(tǒng)一建模語(yǔ)言的縮寫,是一種標(biāo)準(zhǔn)化建模語(yǔ)言,由一組集成圖組成,旨在幫助系統(tǒng)和軟件開發(fā)人員指定、可視化、構(gòu)建和記錄軟件系統(tǒng)的工件,以及用于業(yè)務(wù)建模和其他非軟件系統(tǒng)。
從定義中了解到的關(guān)鍵字為UML是一種標(biāo)準(zhǔn)化建模語(yǔ)言,包含各種可視化集成圖,主要用于系統(tǒng)描述和業(yè)務(wù)建模。
二、WHY?
為什么需要UML?
在需求溝通方面,系統(tǒng)研發(fā)過(guò)程中包含了各類參與者,包含項(xiàng)目經(jīng)理、產(chǎn)品經(jīng)理、研發(fā)和測(cè)試,使用UML在于信息交互時(shí)的標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化的信息可以最大限度的降低溝通成本和減少溝通漏斗。
在系統(tǒng)設(shè)計(jì)方面,在使用UML時(shí),可對(duì)現(xiàn)實(shí)中的業(yè)務(wù)需求,通過(guò)建模,將現(xiàn)實(shí)生活中的業(yè)務(wù)活動(dòng)真實(shí)映射到對(duì)應(yīng)的圖形中,最大程度還原業(yè)務(wù)需求。
在系統(tǒng)描述方面,通過(guò)UML的靜態(tài)和動(dòng)態(tài)圖形(語(yǔ)言),可以讓閱讀者最快速、最全面的了解到整個(gè)系統(tǒng)是如何構(gòu)成和運(yùn)行的。
三、HOW?
如何使用UML?
UML是開發(fā)面向?qū)ο筌浖蛙浖_發(fā)過(guò)程中非常重要的一部分,分為結(jié)構(gòu)型和行為型的圖。
1. 結(jié)構(gòu)型
結(jié)構(gòu)型(structure diagram):結(jié)構(gòu)型的圖描述是某種結(jié)構(gòu),這種結(jié)構(gòu)在某段時(shí)間內(nèi)應(yīng)該是穩(wěn)定的、“靜態(tài)”的。
結(jié)構(gòu)型圖包含類圖(class diagram)、對(duì)象圖(object diagram)、結(jié)構(gòu)圖(component diagram)、部署圖(deployment diagram)和包圖(package diagram)。
類圖為必須會(huì)的結(jié)構(gòu)型圖,主用作分析業(yè)務(wù)概念。
結(jié)構(gòu)圖、部署圖主用作分析IT基礎(chǔ)架構(gòu)、軟件架構(gòu)。
對(duì)象圖、包圖則很少使用。
2. 行為型
行為型(behavior diagram)的圖描述的是某種行為,是“動(dòng)態(tài)”的。
行為型圖包含活動(dòng)圖(activity diagram)、狀態(tài)機(jī)圖(state diagram)、時(shí)序圖(sequence diagram)、通信圖(communication diagram)和用例圖(use case diagram)。
活動(dòng)圖、狀態(tài)機(jī)圖、時(shí)序圖為必須會(huì)的行為型圖,主用作分析業(yè)務(wù)流程,大部分情況下至少會(huì)用到其中兩種圖。
用例圖也為必須會(huì)的行為型圖。
通信圖則很少使用。
由此可見(jiàn),掌握UML中的20%,就能解決需求分析中的80%的問(wèn)題。
不同圖形的使用,沒(méi)有規(guī)定的先后順序,但一定會(huì)交叉使用,不斷迭代對(duì)應(yīng)的圖形,最終得到終版。
3.1 類圖
類圖是鍛煉面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)思想的重要工具,是業(yè)務(wù)結(jié)構(gòu)建模的重要工具,也是其他圖形的基礎(chǔ)。
類圖是用來(lái)展示系統(tǒng)中類的靜態(tài)結(jié)構(gòu)和類之間的關(guān)系,類圖中的基礎(chǔ)元素包含類和接口。
1)結(jié)構(gòu)
類圖分為三層去表示,第一層為類名稱、第二層為類屬性、第三層為類的方法。
在需求分析過(guò)程中,均使用中文即可,類的屬性值和方法值類型可根據(jù)自己的要求去補(bǔ)充。
值類型為字符串(string)、日期(date)、整數(shù)(int)、小數(shù)(double)和布爾(boolean)類型。
2)關(guān)系
類圖包含3類5種關(guān)系,包含泛化 (Generalization) 、實(shí)現(xiàn)(Realization)和關(guān)聯(lián)(Association)三大類,關(guān)聯(lián)關(guān)系又包含聚合 (Aggregation)、組合(Composition)和依賴(Dependency)。
a)泛化
關(guān)系說(shuō)明:類的泛化是將具體抽象成抽象類,抽象類表示這種類是提煉出來(lái)的一種概念,不是具體存在的,具體類具有抽象類的屬性和方法,可用‘is a’理解。
表示方法:由繼承類(具體類)實(shí)線空心箭頭指向被繼承類(抽象類)。
舉例說(shuō)明:學(xué)生 is 用戶。
b)關(guān)聯(lián)
關(guān)系說(shuō)明:關(guān)聯(lián)是一種擁有關(guān)系,關(guān)聯(lián)可以是單向的也可以是雙向的,單向關(guān)聯(lián)只會(huì)有一個(gè)箭頭,雙向關(guān)聯(lián)可以兩個(gè)箭頭或者沒(méi)有箭頭。
表示方法:由擁有者實(shí)線實(shí)心箭頭指向被擁有者。
多重性:多重性表達(dá)在連線末端,表示兩個(gè)類之間的數(shù)量關(guān)系。
- 數(shù)字:精確的數(shù)量
- *或者0..*:表示0到多個(gè)
- 0..1:表示0或者1個(gè)
- 1..*:表示1到多個(gè)
舉例說(shuō)明:老師擁有學(xué)生,老師可以擁有很多學(xué)生,學(xué)生也可以有很多老師,所以二者是雙向關(guān)聯(lián)。
c)聚合
關(guān)系說(shuō)明:聚合是整體和部分的一種關(guān)系,部分可以脫離整體而存在,整體和部分各自有自己的生命周期,可用‘has a’理解。
表示方法:由部分實(shí)線空心棱形箭頭指向整體。
多重性:多重性表達(dá)在連線末端,表示兩個(gè)類之間的數(shù)量關(guān)系。
- 數(shù)字:精確的數(shù)量
- *或者0..*:表示0到多個(gè)
- 0..1:表示0或者1個(gè)
- 1..*:表示1到多個(gè)
舉例說(shuō)明:部門和員工的關(guān)系,部門可以有多名員工,員工也可屬于多個(gè)部門,部門的撤銷并不會(huì)導(dǎo)致員工的消失。
d)組合
關(guān)系說(shuō)明:聚合是整體和部分的一種關(guān)系,部分不可脫離整體而存在,部分依托于整體,可用‘contains a’理解。
表示方法:由部分實(shí)線實(shí)心棱形箭頭指向整體。
多重性:多重性表達(dá)在連線末端,表示兩個(gè)類之間的數(shù)量關(guān)系。
- 數(shù)字:精確的數(shù)量
- *或者0..*:表示0到多個(gè)
- 0..1:表示0或者1個(gè)
- 1..*:表示1到多個(gè)
舉例說(shuō)明:?jiǎn)T工和員工卡的關(guān)系,員工可以沒(méi)有或者一張員工卡,員工卡也只可屬于某一個(gè)員工,不可屬于多名員工。
e)依賴
關(guān)系說(shuō)明:依賴是兩個(gè)類的弱關(guān)聯(lián)關(guān)系,是偶發(fā)性的,可用‘use a’理解。
表示方法:由使用方虛線箭頭指向被使用方。
舉例說(shuō)明:?jiǎn)T工和筆的關(guān)系,在某些需要書寫的場(chǎng)景員工會(huì)使用筆。
f)實(shí)現(xiàn)
關(guān)系說(shuō)明:實(shí)現(xiàn)為接口和類的關(guān)系,需求分析時(shí)用的較少。
表示方法:由類虛線空心三角箭頭指向接口。
舉例說(shuō)明:登錄接口實(shí)現(xiàn)員工的登錄。
3)類圖的使用
類圖分析需求基本步驟:
- 識(shí)別出類
- 識(shí)別出類的基本屬性
- 描繪出類之間的關(guān)系
- 對(duì)各類進(jìn)行分析、抽象、整理
在使用類圖的過(guò)程中,類之間的關(guān)系是因?qū)嶋H不同的業(yè)務(wù)形態(tài),關(guān)系也會(huì)有所不同。
例如,針對(duì)車和輪胎這兩類。
在二手車場(chǎng)景中,二者就是聚合關(guān)系。輪胎是車輛的組成部分,但是車也可以替換輪胎,替換下來(lái)的輪胎也可給其他車輛使用。
在車輛運(yùn)行場(chǎng)景中,二者就是組合關(guān)系,車脫離輪胎后將無(wú)法運(yùn)行。
因此,在類圖的使用過(guò)程中,一定要注重業(yè)務(wù)形態(tài)。
3.2 用例圖
用例圖是旨在描述系統(tǒng)使用用戶眼中系統(tǒng)的功能行為。
用例圖需包含參與者(actor)、用例(use case)和用例之間的關(guān)系(association)。
1)參與者
參與者表示參與和使用系統(tǒng)的一類角色。例如,用戶就是商城系統(tǒng)的參與者。
要精準(zhǔn)把握參與者,需要注意以下幾點(diǎn):
- 參與者位于系統(tǒng)之外,自身不屬于系統(tǒng)結(jié)構(gòu)之中;
- 參與者是抽象的一類角色,而不是具體的對(duì)象。例如,即用戶是參與者,但是具體的用戶‘張三’不是參與者;
- 參與者不一定是人,也可是外部系統(tǒng)。例如,wms系統(tǒng)也可能是商城系統(tǒng)的參與者。
UML中用一個(gè)人表示參與者,可對(duì)不同的參與者進(jìn)行命名。
2)用例
每一個(gè)橢圓表示一個(gè)用例,每個(gè)用例表示系統(tǒng)提供的一類功能。
3)關(guān)系
用例之間的關(guān)系包含三種,分別是包含、繼承和拓展。
a)包含
關(guān)系說(shuō)明:包含關(guān)系表示主用例包含子用例。
表示方法:由主用例虛線實(shí)心箭頭指向子用例,虛線上標(biāo)注《include》。
舉例說(shuō)明:用戶在賬密登錄的時(shí)候,包含輸入賬號(hào)、輸入密碼、確認(rèn)登陸這三個(gè)子用例。
b)繼承
繼承分為用例的繼承和角色的繼承。
① 用例的繼承
關(guān)系說(shuō)明:繼承關(guān)系的兩個(gè)例子所處不同抽象層,被繼承的用例是繼承用例更抽象的用例。
表示方法:由繼承用例(具體用例)實(shí)線空心箭頭指向被繼承用例(抽象用例),實(shí)線線上不標(biāo)注內(nèi)容。
舉例說(shuō)明:用戶在登錄系統(tǒng)的時(shí)候,可以有賬密登錄、微信掃碼登錄這兩種方式。
② 角色的繼承
關(guān)系說(shuō)明:繼承者是對(duì)被繼承者的更具體的角色,繼承者擁有被繼承者的所有用例,且繼承者具備特有用例。
表示方法:由繼承者實(shí)線空心箭頭指向被繼承者,實(shí)線線上不標(biāo)注內(nèi)容。
舉例說(shuō)明:普通用戶只有查看數(shù)據(jù)的權(quán)限,高級(jí)用戶還會(huì)有管理數(shù)據(jù)的權(quán)限。
c)拓展
關(guān)系說(shuō)明:拓展關(guān)系是在基礎(chǔ)用例上在特定場(chǎng)景下功能拓展,拓展用例是對(duì)基礎(chǔ)用例的補(bǔ)充。
表示方法:由拓展用例實(shí)線實(shí)心箭頭指向基礎(chǔ)用例,實(shí)線線上標(biāo)注《extend》。
舉例說(shuō)明:用戶在登錄系統(tǒng)的時(shí)候,在忘記密碼的情況下可以有忘記密碼這個(gè)操作。
3.3 活動(dòng)圖
1)元素
活動(dòng)圖也就是平常我們所說(shuō)的流程圖,具體元素包含以下:
- 開始節(jié)點(diǎn):實(shí)心圓,表示活動(dòng)圖的開始,一個(gè)活動(dòng)圖中僅有一個(gè)
- 結(jié)束節(jié)點(diǎn):圓圈內(nèi)加個(gè)實(shí)心圓,表示活動(dòng)圖的結(jié)束,一個(gè)活動(dòng)圖中可以有多個(gè)
- 活動(dòng):圓角矩形,表示活動(dòng)
- 轉(zhuǎn)換:實(shí)線箭頭,兩個(gè)活動(dòng)上一活動(dòng)指向下一活動(dòng)
- 分支和監(jiān)護(hù)條件:棱形表示分支,分支連接的轉(zhuǎn)換上標(biāo)注監(jiān)護(hù)條件
- 分叉/匯合:分叉表示兩個(gè)或者多個(gè)并發(fā)運(yùn)行的分支,每個(gè)分支都是相互獨(dú)立;匯合表示兩個(gè)或者多個(gè)分支全部完成之后,才可進(jìn)入下一節(jié)點(diǎn)
2)活動(dòng)圖的使用
例如:比如在申請(qǐng)加盟商入駐的場(chǎng)景,文字版描述如下:
- 加盟商需申請(qǐng)入駐平臺(tái)
- 入駐平臺(tái)前需先完成個(gè)人資料維護(hù)、公司資料的維護(hù)
- 后臺(tái)人員需對(duì)資料進(jìn)行審核,審核通過(guò)則入駐完成,審核不通過(guò)則需重新維護(hù)資料
3.4 狀態(tài)機(jī)圖
狀態(tài)機(jī)圖描述了一個(gè)的對(duì)象在生命周期內(nèi)的各種狀態(tài)和對(duì)應(yīng)的轉(zhuǎn)換條件,配合活動(dòng)圖能簡(jiǎn)潔扼要的描述對(duì)應(yīng)的業(yè)務(wù)流程。
1)元素
狀態(tài)機(jī)圖包含元素如下:
- 開始狀態(tài):實(shí)心圓,表示狀態(tài)機(jī)圖的開始,一個(gè)狀態(tài)機(jī)圖中僅有一個(gè)
- 結(jié)束狀態(tài):圓圈內(nèi)加個(gè)實(shí)心圓,表示狀態(tài)機(jī)圖的結(jié)束,一個(gè)狀態(tài)機(jī)圖中可以有多個(gè)
- 狀態(tài):圓角矩形,表示狀態(tài)
- 轉(zhuǎn)換:實(shí)線箭頭,表示兩個(gè)狀態(tài)之間的關(guān)系,當(dāng)滿足事件時(shí),由上一個(gè)狀態(tài)指向下一個(gè)狀態(tài)
- 事件:標(biāo)注在實(shí)線箭頭之上,表示特定的動(dòng)作或行為
2)狀態(tài)機(jī)圖的使用
上例在申請(qǐng)加盟商入駐的場(chǎng)景中狀態(tài)機(jī)圖如下:
3.5 時(shí)序圖
也就是順序圖,強(qiáng)調(diào)時(shí)間維度下不同對(duì)象的消息交互。
1)元素
時(shí)序圖的元素包含如下:
- 對(duì)象/生命線:表示參與交互的對(duì)象。每個(gè)對(duì)象下方都連接著一條生命線(虛線),時(shí)序圖中可以包含多個(gè)對(duì)象/生命線
- 會(huì)話:對(duì)象被激活時(shí),生命線上會(huì)出現(xiàn)一個(gè)長(zhǎng)條,即會(huì)話,表示一次交互。
- 消息:表示對(duì)象間的消息通信,由一個(gè)對(duì)象的生命線指向另一個(gè)對(duì)象的生命線,包含調(diào)用消息和返回消息,其中返回消息分為同步消息和異步消息:
2)時(shí)序圖的使用
在用戶登錄的場(chǎng)景,文字版描述如下:
- 用戶在系統(tǒng)登錄頁(yè)「輸入賬密」
- 用戶「點(diǎn)擊登錄」按鈕
- 登錄模塊「發(fā)送登錄數(shù)據(jù)」到權(quán)限驗(yàn)證模塊
- 用戶模塊對(duì)登錄數(shù)據(jù)進(jìn)行「權(quán)限驗(yàn)證」
- 驗(yàn)證成功,則系統(tǒng)「進(jìn)入主頁(yè)面」;驗(yàn)證失敗,則「清空密碼」并且「提示密碼錯(cuò)誤」
四、總結(jié)
本文從WHAT、WHY和HOW三個(gè)維度介紹了UML,從這三方面讀者能對(duì)UML有個(gè)粗略的認(rèn)識(shí)。
類圖、用例圖、活動(dòng)圖、狀態(tài)機(jī)圖和時(shí)序圖這五種使用頻率較高的圖熟練使用后,應(yīng)該算是基礎(chǔ)入門了,對(duì)于需求分析也許會(huì)有較大的幫助,也許沒(méi)有,這些都因人而異。
UML終究是一種思考方式,了解了基礎(chǔ)使用之后,還是要多實(shí)踐。
這篇文章于我而言算是階段性的總結(jié),希望對(duì)你也有用。
本文由@沒(méi)湯圓啦 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。提供信息存儲(chǔ)空間服務(wù)。
感謝!學(xué)習(xí)了!目前沒(méi)看到比你寫得更清楚更好懂的了,你一定是位優(yōu)秀的產(chǎn)品經(jīng)理!
組合那塊的關(guān)系說(shuō)明寫錯(cuò)了