UML入門使用指南

2 評(píng)論 5605 瀏覽 47 收藏 19 分鐘

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)類圖的使用

類圖分析需求基本步驟:

  1. 識(shí)別出類
  2. 識(shí)別出類的基本屬性
  3. 描繪出類之間的關(guān)系
  4. 對(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):

  1. 參與者位于系統(tǒng)之外,自身不屬于系統(tǒng)結(jié)構(gòu)之中;
  2. 參與者是抽象的一類角色,而不是具體的對(duì)象。例如,即用戶是參與者,但是具體的用戶‘張三’不是參與者;
  3. 參與者不一定是人,也可是外部系統(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)景,文字版描述如下:

  1. 加盟商需申請(qǐng)入駐平臺(tái)
  2. 入駐平臺(tái)前需先完成個(gè)人資料維護(hù)、公司資料的維護(hù)
  3. 后臺(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)景,文字版描述如下:

  1. 用戶在系統(tǒng)登錄頁(yè)「輸入賬密」
  2. 用戶「點(diǎn)擊登錄」按鈕
  3. 登錄模塊「發(fā)送登錄數(shù)據(jù)」到權(quán)限驗(yàn)證模塊
  4. 用戶模塊對(duì)登錄數(shù)據(jù)進(jìn)行「權(quán)限驗(yàn)證」
  5. 驗(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ù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 感謝!學(xué)習(xí)了!目前沒(méi)看到比你寫得更清楚更好懂的了,你一定是位優(yōu)秀的產(chǎn)品經(jīng)理!

    來(lái)自四川 回復(fù)
  2. 組合那塊的關(guān)系說(shuō)明寫錯(cuò)了

    來(lái)自上海 回復(fù)