UML:需求分析與設(shè)計(jì)的利器

流年
8 評(píng)論 34884 瀏覽 266 收藏 32 分鐘
🔗 产品经理的职业发展路径主要有四个方向:专业线、管理线、项目线和自主创业。管理线是指转向管理岗位,带一个团队..

本文筆者將為大家總結(jié)一些在需求分析與設(shè)計(jì)階段會(huì)常用的到的UML圖,并且對(duì)每一個(gè)UML圖進(jìn)行了詳細(xì)講解。

最近在學(xué)習(xí)UML相關(guān)的知識(shí),結(jié)合了以往的項(xiàng)目以及之前學(xué)習(xí)編程時(shí)的面向?qū)ο笏枷?,瞬間感覺(jué)UML真的是產(chǎn)品需求分析和設(shè)計(jì)的強(qiáng)大武器(尤其針對(duì)于復(fù)雜的2B類項(xiàng)目)!同時(shí),在產(chǎn)品文檔中多融入U(xiǎn)ML圖也可以很好的增加文檔的可讀性。

本文就來(lái)總結(jié)一下UML的相關(guān)知識(shí)吧~

一、UML基礎(chǔ)知識(shí)

UML的全稱是Unified Modeling Language,翻譯過(guò)來(lái)就是統(tǒng)一建模語(yǔ)言。

UML是一種開放的方法,用于說(shuō)明、可視化、構(gòu)建和編寫一個(gè)正在開發(fā)的、面向?qū)ο蟮摹④浖芗到y(tǒng)的制品的開放方法。UML展現(xiàn)了一系列最佳工程實(shí)踐,這些最佳實(shí)踐在對(duì)大規(guī)模,復(fù)雜系統(tǒng)進(jìn)行建模方面,特別是在軟件架構(gòu)層次已經(jīng)被驗(yàn)證有效(摘自百度百科,真拗口……)。

UML其實(shí)就是一系列的圖形,那么為什么說(shuō)是語(yǔ)言呢?

——因?yàn)檎Z(yǔ)言是包括文字和圖形的,在機(jī)械工程或建筑領(lǐng)域,設(shè)計(jì)圖紙內(nèi)都是包含大量圖形和語(yǔ)言的,在這兩個(gè)領(lǐng)域都有各自的標(biāo)準(zhǔn)來(lái)描述設(shè)計(jì)。

那么同理,在軟件開發(fā)界,就需要UML來(lái)幫助我們完成軟件開發(fā)的工作,UML就是軟件領(lǐng)域的標(biāo)準(zhǔn)。當(dāng)然,UML并不是唯一的標(biāo)準(zhǔn),只不過(guò)UML是業(yè)內(nèi)比較推崇的一類罷了。

二、UML有何作用?

很多初學(xué)UML的人會(huì)認(rèn)為:UML是開發(fā)人員專門使用的,可以用來(lái)生成代碼,可以用來(lái)指導(dǎo)編程,如果不是開發(fā)人員會(huì)很難理解UML的。

其實(shí)不然,我認(rèn)為: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應(yīng)用在項(xiàng)目需求分析和設(shè)計(jì)時(shí),會(huì)使得它的學(xué)習(xí)門檻大大降低,而且也不一定需要掌握開發(fā)知識(shí)。通過(guò)學(xué)習(xí)應(yīng)用UML,將會(huì)使我們的工作事半功倍。

三、UML圖

廢話不多說(shuō)了,開始介紹幾種在需求分析和設(shè)計(jì)階段會(huì)用到的UML圖(在以下的介紹中,我會(huì)加入各種UML圖的推薦指數(shù),這個(gè)推薦指數(shù)是針對(duì)于在需求分析與設(shè)計(jì)階段的一個(gè)推薦度)。

1. 活動(dòng)圖

(1)什么是活動(dòng)圖?

活動(dò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)活動(dòng)圖的畫法

活動(dòng)圖的繪制涉及幾個(gè)重要的元素:

起始點(diǎn):是一連串活動(dòng)的開始點(diǎn),在一個(gè)活動(dòng)圖中,有且只有一個(gè)起始點(diǎn)。

起始點(diǎn)的圖示:

結(jié)束點(diǎn):是一連串活動(dòng)的終結(jié)點(diǎn),在一個(gè)活動(dòng)圖中,可以有多個(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)作——比如“打開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í)。

泳道的圖示:

活動(dòng)圖范例:

(3)活動(dòng)圖的使用場(chǎng)景

由于活動(dòng)的定義不是十分的明確,因此,在系統(tǒng)設(shè)計(jì)時(shí)不會(huì)利用活動(dòng)圖來(lái)表達(dá)應(yīng)用程序的架構(gòu)?;顒?dòng)圖通常適用于表達(dá)企業(yè)或系統(tǒng)的工作流程關(guān)系,例如:在梳理業(yè)務(wù)流程時(shí),我們通常會(huì)使用帶泳道的活動(dòng)圖。

此外,活動(dòng)圖非常類似于流程圖,因此也適用于表達(dá)程序的內(nèi)部的工作流或結(jié)構(gòu)。

(4)推薦指數(shù)

活動(dòng)圖在需求分析與規(guī)劃階段是梳理業(yè)務(wù)流程的必備工具,同時(shí)在涉及單獨(dú)模塊流程時(shí)也應(yīng)用頻繁。因此,推薦指數(shù):★★★★★

2. 用例圖

(1)什么是用例?

根據(jù)用例的創(chuàng)始人Ivar Jacobson的定義:“用例是在一個(gè)系統(tǒng)中所進(jìn)行的一連串的活動(dòng),該活動(dòng)要能夠滿足系統(tǒng)外部的執(zhí)行者對(duì)系統(tǒng)的預(yù)期”。

其實(shí)說(shuō)白了,一個(gè)產(chǎn)品或系統(tǒng)的用例,就是用戶對(duì)于產(chǎn)品或系統(tǒng)的某一個(gè)完整的預(yù)期。從另一個(gè)角度來(lái)說(shuō),用例也代表著一個(gè)具體的業(yè)務(wù)場(chǎng)景。

(2)用例圖的畫法

用例圖涉及到的幾個(gè)重要元素:

用例:如前所述,用例代表著用戶對(duì)于產(chǎn)品或系統(tǒng)的完整預(yù)期,也就是用戶在系統(tǒng)內(nèi)期望的事,在完成了該預(yù)期后用戶可以離開產(chǎn)品或系統(tǒng)。是不是有點(diǎn)“用完即走”的意思?微信的一個(gè)用例,就可以是“聊天、支付或發(fā)朋友圈”等。

用例通常會(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)外之分,明確的劃分了開發(fā)過(guò)程中需要關(guān)心和不需要關(guān)心的邊界。系統(tǒng)邊界的圖示:

泛化:執(zhí)行者之間可以有泛化關(guān)系,泛化關(guān)系可以簡(jiǎn)單理解為繼承關(guān)系——比如:職員擁有“申請(qǐng)開票”功能,經(jīng)理?yè)碛小吧暾?qǐng)開票、審核”功能,那么經(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)用例圖的使用場(chǎng)景

用例圖表達(dá)的是:什么角色通過(guò)軟件系統(tǒng)能做什么事情?

從用戶的角度描述了系統(tǒng)的功能,并指出各個(gè)功能的執(zhí)行者,強(qiáng)調(diào)用戶的使用者,系統(tǒng)為執(zhí)行者完成哪些功能。因此,我們可以使用用例圖系統(tǒng)地表達(dá)軟件系統(tǒng)的絕大部分功能性需求。

4)推薦指數(shù)

用例圖通常應(yīng)用在需求分析,和產(chǎn)品或系統(tǒng)的功能描述與定義上。因此,對(duì)于需求分析與描述是至關(guān)重要的,推薦指數(shù):★★★★★

3. 序列圖

(1)什么是序列圖?

序列圖也叫順序圖,序列圖最主要的目的就是表達(dá)對(duì)象與對(duì)象之間是如何溝通與協(xié)作的。

用例常常被細(xì)化為一個(gè)或者更多的序列圖,同時(shí)序列圖更有效地描述如何分配各個(gè)類的職責(zé)以及各類具有相應(yīng)職責(zé)的原因。

(2)序列圖的畫法

序列圖涉及到的幾個(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ì)象必須在其生命線中才能彼此交換消息。

序列圖中生命線的圖示如下:

約束:是對(duì)象與對(duì)象之間進(jìn)行消息交互式的約束條件,也就是要完成此次消息交互必須需要的條件約束。

約束通常使用“[]”表示,圖示:

注釋:一般是對(duì)象行為的解釋性內(nèi)容,圖示為:

序列圖范例:

(3)序列圖的使用場(chǎng)景

序列圖強(qiáng)調(diào)了角色/對(duì)象之間的交互,信息傳遞是非常明確的。當(dāng)流程內(nèi)涉及到多種角色或?qū)ο螅⑶視?huì)經(jīng)過(guò)這些角色或?qū)ο笳归_交互,并且會(huì)有信息進(jìn)行傳遞時(shí),順序圖就會(huì)派上用場(chǎng)了。

比如:在用戶網(wǎng)購(gòu)時(shí),就會(huì)涉及到譬如“用戶、平臺(tái)、訂單中心、支付平臺(tái)”等對(duì)象之間的交互。

再比如:小程序內(nèi)基于微信支付的支付業(yè)務(wù),也會(huì)用序列圖來(lái)進(jìn)行描述。

(4)推薦指數(shù)

在分析對(duì)角色或?qū)ο笾g的交互時(shí),會(huì)使用到序列圖進(jìn)行分析交互過(guò)程。序列圖通常會(huì)搭配活動(dòng)圖和用例圖進(jìn)行使用,我個(gè)人還是比較喜歡序列圖的,所以推薦指數(shù):★★★★★

4、狀態(tài)機(jī)圖

(1)什么是狀態(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)移條件。

(2)狀態(tài)機(jī)圖的畫法

狀態(tài)機(jī)圖涉及到的幾個(gè)重要元素:

起始狀態(tài):在一個(gè)狀態(tài)機(jī)圖里,只能有一個(gè)起始狀態(tài),這一點(diǎn)類似于活動(dòng)圖。

起始狀態(tài)的圖示:

結(jié)束狀態(tài):結(jié)束狀態(tài)代表整個(gè)狀態(tài)到此活動(dòng)結(jié)束。在一個(gè)狀態(tài)機(jī)圖中,可以有多個(gè)結(jié)束狀態(tài)。

結(jié)束狀態(tài)的圖示:

狀態(tài):狀態(tài)顯示了狀態(tài)的變化。

圖示為:

復(fù)合狀態(tài):指的是某個(gè)狀態(tài)內(nèi)包括其他的狀態(tài)組合。

例如:

遷移。狀態(tài)之間使用遷移表達(dá)期間的關(guān)系,圖示為:

警戒條件:如果某個(gè)狀態(tài)需要在某個(gè)特殊的條件下才可發(fā)生,可以在遷移條件上標(biāo)注警戒條件。警戒條件用一個(gè)“[]”表示。

狀態(tài)機(jī)圖范例:

(3)狀態(tài)機(jī)圖的使用場(chǎng)景

在產(chǎn)品的需求分析中,如果一個(gè)流程是圍繞某一事物/對(duì)象的狀態(tài)變化而展開時(shí),我們應(yīng)該優(yōu)先使用狀態(tài)機(jī)圖。

比如:常見的訂單流程就可以使用訂單的狀態(tài)圖來(lái)表示訂單對(duì)象的流程。再比如,在請(qǐng)假系統(tǒng)中,請(qǐng)假條的狀態(tài)變化流程也可以用狀態(tài)機(jī)圖來(lái)進(jìn)行分析。

(4)推薦指數(shù)

狀態(tài)機(jī)圖通常會(huì)搭配活動(dòng)圖、用例圖和序列圖來(lái)共同使用,方便分析事物或?qū)ο蟮臓顟B(tài)變化過(guò)程,在需求分析與設(shè)計(jì)階段也會(huì)用的到。推薦指數(shù):★★★★

5. 類圖

(1)什么是類圖?

類圖其實(shí)更加的貼近于開發(fā),一些UML的工具可以通過(guò)類圖直接生成代碼。我理解的類圖,是根據(jù)之前的用例抽象而成的,一個(gè)用例往往就是一個(gè)類。類圖描述了類的內(nèi)部結(jié)構(gòu)和類和類之間的關(guān)系。

對(duì)于類,一些沒(méi)有面向?qū)ο蠡A(chǔ)的同學(xué)可能很不好理解,其實(shí)類就是對(duì)一些業(yè)務(wù)對(duì)象的抽象。

以游戲?yàn)槔涸诖┰交鹁€游戲中,槍可以是一個(gè)類,那么AK、43等型號(hào)的槍可是繼承于“槍類”的泛化類。再比如,人是一個(gè)類,男人和女人就可以是繼承于“人類”的泛化類。

通過(guò)學(xué)習(xí)編程我了解到,類也可以是數(shù)據(jù)表,表中的字段就是這個(gè)類的屬性。

(2)類圖的畫法

類機(jī)圖涉及到的幾個(gè)重要元素:

類:圖中最重要的就是類,類是由名稱、屬性和操作組成。屬性可以簡(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)系,且部分可以離開整體而單獨(dú)存在。如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以存在。

聚合的圖示:

組合:是整體與部分的關(guān)系,但部分不能離開整體而單獨(dú)存在。如公司和部門是整體和部分的關(guān)系,沒(méi)有公司就不存在部門。

組合的圖示:

類圖范例:

(3)類圖的使用場(chǎng)景

類圖顯示了類、類的方法、類的接口以及它們之間靜態(tài)結(jié)構(gòu)和關(guān)系。運(yùn)用類圖可以理清業(yè)務(wù)概念以及它們的關(guān)系,能更加深入地剖析系統(tǒng)/產(chǎn)品業(yè)務(wù)。

類圖可能不容易上手,使用類圖時(shí),盡量從用例圖出發(fā),每一個(gè)用例抽象為一個(gè)類。類圖可以初步用來(lái)梳理概念性的內(nèi)容,比如:在理清訂單概念時(shí),訂單都會(huì)涉及什么字段(屬性),訂單與其他對(duì)象類之間的關(guān)系如何,訂單類可以提供哪些方法等。

(4)推薦指數(shù)

相較于上述幾個(gè)行為型的UML圖,類圖在使用上不是那么的好上手,對(duì)于有面向?qū)ο缶幊袒A(chǔ)的同學(xué)比較好理解,但是個(gè)人覺(jué)得類之間的這些關(guān)系在梳理業(yè)務(wù)概念時(shí)還是很有用的。

推薦指數(shù):★★★

6. 其他UML圖

在上面介紹類圖中,說(shuō)到了活動(dòng)圖、用例圖、序列圖和狀態(tài)機(jī)圖都屬于行為型的UML圖。那么,UML圖為什么會(huì)分為結(jié)構(gòu)型和行為型兩種呢?

結(jié)構(gòu)型的圖描述的是某種結(jié)構(gòu),這種結(jié)構(gòu)在某段時(shí)間內(nèi)應(yīng)該是穩(wěn)定的,“靜態(tài)”的;而結(jié)構(gòu)型的圖描述的是某種行為,是“動(dòng)態(tài)”的。

分析系統(tǒng)需求時(shí),我們會(huì)面對(duì)很多業(yè)務(wù)概念,它們之間會(huì)有某些關(guān)系,這些內(nèi)容可以看成是“靜態(tài)”的,我們可以利用UML的結(jié)構(gòu)性的圖來(lái)分析,比如上述的類圖。

同時(shí),業(yè)務(wù)會(huì)涉及大量的流程、過(guò)程等,這些內(nèi)容是“動(dòng)態(tài)”的,此時(shí)就可以用行為型的UML圖來(lái)分析,比如活動(dòng)圖、用例圖、序列圖和狀態(tài)機(jī)圖。

行為型的UML圖除了活動(dòng)圖、用例圖、序列圖和狀態(tài)機(jī)圖,還包括通信圖和時(shí)間圖。結(jié)構(gòu)型的UML圖除了類圖,還包括對(duì)象圖,包圖,組件圖和部署圖。

(1)通信圖

通信圖其實(shí)和序列圖表達(dá)的是同一件事,并且通信圖和序列圖在一些UML工具中二者是可以相互轉(zhuǎn)換的。在涉及多對(duì)象或系統(tǒng)的交互描述時(shí),序列圖會(huì)比通信圖更加明確。所以,在需求分析與設(shè)計(jì)階段,幾乎不會(huì)用到通信圖,有此方面的需求使用序列圖就可以了。

通信圖范例:

(2)時(shí)間圖

時(shí)間圖是表示某對(duì)象或系統(tǒng)的狀態(tài)隨時(shí)間變化而變化的一種圖,如下圖是一個(gè)ATM操作的時(shí)間圖:

時(shí)間圖是UML2.0新增加的一個(gè)圖形,從圖中可以看出時(shí)間圖的重要元素包括:生命線、狀態(tài)、時(shí)間軸、時(shí)間線和事件。

在需求分析與設(shè)計(jì)階段,用到時(shí)間圖的情況幾乎沒(méi)有。

(3)對(duì)象圖

在面向?qū)ο蟮木幊讨校瑢?duì)象是由類實(shí)例化得到的。對(duì)象圖和類圖的樣子很相似,對(duì)象是類的實(shí)例化,“person : Person”表示對(duì)象person是類Person的實(shí)例。

對(duì)象圖往往只在需要描述復(fù)雜算法時(shí)才會(huì)使用,畫出來(lái)的對(duì)象圖往往不會(huì)只有一個(gè)對(duì)象,該圖只畫了一個(gè)對(duì)象,其目的是盡量簡(jiǎn)化以便讀者的理解什么是對(duì)象圖。

在需求分析與設(shè)計(jì)工作中基本上不需要使用對(duì)象圖,通常會(huì)用類圖完成相關(guān)工作。

(4)包圖

包圖是一個(gè)高階的UML視圖。包圖的主要用途是“打包”類圖。用類圖描述業(yè)務(wù)概念時(shí),很多時(shí)候會(huì)因?yàn)闃I(yè)務(wù)類太多,而導(dǎo)致類圖非常龐大,不利于閱讀,這時(shí)可以將某些類放入“包”中,通過(guò)包圖來(lái)組織業(yè)務(wù)概念圖。

如下圖所示,包圖包括的元素有包、命名空間(在包的下方加入一個(gè)用小括號(hào)表達(dá)的說(shuō)明方式)和依賴關(guān)系。

包圖在需求分析與設(shè)計(jì)階段很少會(huì)使用到。

(5)組件圖

組件圖也叫構(gòu)件圖。一個(gè)軟件往往是由很多“物理部件”(如:控件、重用構(gòu)件等)組成的,構(gòu)件圖就是用來(lái)描述軟件內(nèi)部物理組成的一種圖。

如下圖所示,組件圖涉及的元素包括組件、提供接口、需求接口和依賴關(guān)系。

在需求分析和設(shè)計(jì)工作中,需要用到組件圖的情況不是很多,除以下情況:

  • 待開發(fā)的系統(tǒng)需要與第三方的系統(tǒng)、原有系統(tǒng)、某些老系統(tǒng)等交互,這時(shí)可用構(gòu)件圖描述交互要求。
  • 客戶對(duì)軟件設(shè)計(jì)有某些特殊要求,這時(shí)可用構(gòu)件圖來(lái)描述要求。

構(gòu)件圖有時(shí)不會(huì)單獨(dú)使用,還會(huì)和部署圖一起結(jié)合使用。

(6)部署圖

部署圖是用來(lái)描述系統(tǒng)如何部署、本系統(tǒng)與其他系統(tǒng)是怎樣的關(guān)系的一種圖。

從下圖可以看出,部署圖包括的要素有:節(jié)點(diǎn)(代表某個(gè)物理資源,如存儲(chǔ)設(shè)備或計(jì)算機(jī))、組件、關(guān)聯(lián)關(guān)系和依賴關(guān)系。

在為客戶開發(fā)項(xiàng)目時(shí),有的客戶場(chǎng)地會(huì)具備一定的IT基礎(chǔ)環(huán)境,比如:局域網(wǎng)、服務(wù)器等。我們的系統(tǒng)需要基于當(dāng)前的IT環(huán)境來(lái)進(jìn)行規(guī)劃和設(shè)計(jì),比如:電視臺(tái)的客戶,通常都會(huì)有自己的服務(wù)器和數(shù)據(jù)庫(kù),是不允許外網(wǎng)訪問(wèn)的。此時(shí)就可以使用部署圖來(lái)描述IT環(huán)境。

分析系統(tǒng)軟件的需求,不能忽略系統(tǒng)架構(gòu)、部署、IT架構(gòu)等方面的要求,我們要基于客戶當(dāng)前的IT基礎(chǔ)環(huán)境,做出一個(gè)最符合客戶利益的規(guī)劃設(shè)計(jì)。

組件圖和部署圖的應(yīng)用,通常需要具備一定的IT技術(shù)架構(gòu)以及軟件設(shè)計(jì)知識(shí)。在業(yè)務(wù)需求分析與設(shè)計(jì)階段更多的還是分析業(yè)務(wù),提煉功能需求,用到組件圖和部署圖的情況還是比較少的。但是,作為有抱負(fù)的青年,我還是希望自己能逐步積累,慢慢了解IT架構(gòu)方面的知識(shí)。

四、總結(jié)

本文我們總結(jié)了一些在需求分析與設(shè)計(jì)階段會(huì)常用的到的UML圖,并且對(duì)每一個(gè)UML圖進(jìn)行了詳細(xì)講解。對(duì)于那些我覺(jué)得不太會(huì)常用到的UML圖就沒(méi)有做過(guò)多的表述。希望可以利用好UML圖,讓UML圖成為支持我們工作的得力助手。

系統(tǒng)學(xué)寫了UML后,對(duì)比自己之前項(xiàng)目中繪制的一些流程圖,確實(shí)不是特別的規(guī)范。在未來(lái)的項(xiàng)目中,我打算要充分利用好UML了。

最后推薦給大家繪制UML的工具——ProcessOn,用著還不錯(cuò)~

#專欄作家#

流年,人人都是產(chǎn)品經(jīng)理專欄作家?;ヂ?lián)網(wǎng)產(chǎn)品設(shè)計(jì)師,4年互聯(lián)網(wǎng)產(chǎn)品設(shè)計(jì)經(jīng)驗(yàn)。擅長(zhǎng)用戶體驗(yàn)設(shè)計(jì),喜歡鉆研需求功能背后的技術(shù)實(shí)現(xiàn)方式;在成為綜合型產(chǎn)品設(shè)計(jì)師的道路上不斷努力前進(jìn)!

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 類圖的企鵝和氣候之間畫錯(cuò)了,這個(gè)地方,要么是“依賴”,要么是“關(guān)聯(lián)”。所以要么換成虛線,要么去掉箭頭。

    來(lái)自新加坡 回復(fù)
  2. 類圖的大雁和雁群的聚合關(guān)系,畫反了。

    來(lái)自新加坡 回復(fù)
  3. ??簡(jiǎn)單明了 好文

    回復(fù)
  4. 1.類圖范例,右下角關(guān)系線連錯(cuò)了。
    2.類圖,大雁與雁群之間的關(guān)系為聚合?且大雁為整體,雁群為聚合?私以為不妥當(dāng)。例子本身舉的有問(wèn)題

    來(lái)自上海 回復(fù)
    1. 我也認(rèn)為不妥,為聚合沒(méi)問(wèn)題。問(wèn)題在于,方向定義反了。

      來(lái)自四川 回復(fù)
  5. 請(qǐng)問(wèn)博主這是用什么軟件畫的圖呢?

    來(lái)自四川 回復(fù)
  6. 用例圖里:聊天作為一個(gè)用例子項(xiàng),顆粒度有點(diǎn)過(guò)大了吧?我覺(jué)得微信中一個(gè)聊天父例中至少,包含視頻,音頻,表情管理等子例,應(yīng)該再細(xì)分些!

    來(lái)自上海 回復(fù)
  7. 6.其他UML圖的第二段中,而結(jié)構(gòu)型的圖描述的是某種行為……中應(yīng)為“行為型”吧

    回復(fù)
专题
32153人已学习19篇文章
一个合格的购物车是怎么设计出来的?
专题
18863人已学习13篇文章
本专题的文章分享了社区运营的正确姿势。
专题
12924人已学习12篇文章
产品立项,对于产品来说是其生命周期中最基础的和最重要的阶段。产品立项都有哪些主要工作?本专题的文章分享了产品立项指南。
专题
55768人已学习20篇文章
产品上线后冷启动怎么做最有效?这是产品经理和运营必须要了解的。
专题
13561人已学习11篇文章
生活中,难免会接到企业的一些外呼电话,无论是人工外呼还是AI外呼,其背后的外呼业务场景是什么?外呼系统包含哪些内容?本专题的文章分享了外呼系统的设计指南。