【乾貨分享】 10分鐘掌握14種UML圖

更新於 發佈於 閱讀時間約 15 分鐘

一、UML概述

UML(Unified Modeling Language)是統一建模語言的縮寫,它是一種用於描述軟體系統的視覺化工具。 UML提供了一套豐富的圖形符號和規範,用於描述和視覺化軟體系統的結構、行為和互動。透過使用UML,軟體開發人員可以更好地理解和溝通系統的設計和功能,降低開發風險,提高開發效率。

二、UML圖的主要分類

UML圖主要分為三大類,共14種類型:

結構性圖形(靜態圖):主要分析和描述系統或流程的結構,包括:類圖、對象圖、組件圖、組合結構圖、部署圖、包圖和剖面圖。

行為圖形(動態圖):主要描述系統的行為、它的參與者和它的建構元件,包括:活動圖、用例圖、狀態圖。

互動圖形: 通訊圖、互動概覽圖、時序圖、序列圖。

接下來我將結合ProcessOn作圖工具來跟大家分享一下每種圖形的概念及使用。

1.類圖

它主要用於描述系統中類的集合、類的內部結構(如屬性和方法)以及類之間的關係。類圖是物件導向建模的主要組成部分,廣泛應用於軟體工程中的系統分析和設計階段。

定義:類圖是一種用來表示系統中類的靜態結構,包括類、介面以及它們之間關係的圖。

特點:

強調類的靜態結構,不展示暫時的資訊。

描述類的屬性(欄位)、方法(操作)以及類與類之間的關係(如關聯、聚合、組合、繼承等)。

是系統編碼和測試的重要模型基礎。

raw-image

動物UML類圖

2.對象圖

主要用於描述系統在某個特定時刻的具體情況,特別是物件及它們之間的相互關係。

定義:物件圖顯示了在某個時刻物件和物件之間的關係,反映了系統的靜態過程。它是類別圖的實例,展示了類別的多個物件實例以及這些實例之間的關聯、組合等關係。

特點:

強調系統在某一時刻的狀態,而不是過程或行為。

使用與類別圖相同的符號和關係,但顯示的是類別的具體實例。

由於物件存在生命週期,因此物件圖只能在系統某一時間段存在。

raw-image

資料庫UML對象圖

3.組件圖

組件圖(Component Diagram)又稱構件圖,是UML中描述一個系統中的物理方面的圖形,它是用來描述構成系統的各個組件、組件提供的接口與需求的接口、端口以及它們之間關係的圖。這種圖在基於組件開發的系統建模中很重要,可以幫助使用者理解系統的結構。

組件圖中主要包括組件、介面及其它們之間的關係三種元素。

1. 組件

組件(Component)是定義了良好介面的、可重複使用的、可替代的物理實作單元,它一般表示實際存在的、物理的物件。程式原始碼、執行檔、子系統、一個腳本、動態連結程式庫(DLL)、ActiveX控制項都可以成為系統中的元件。組件隱藏了內部實現的細節,僅透過介面提供服務。

2. 介面

組件中的介面主要分為兩類:提供介面(Provided Interface)和需求介面(Required Interface)。

(1)提供接口又稱導出接口,是組件提供的服務的集合。

提供接口是由元件本身直接實現的接口、或者是由實現組件的類別之一實現的接口,或者是由組件的公共端口提供的接口。提供介面可以使用介面與元件之間的實作關係來表示,可以在元件圖示的邊框上使用類似棒棒糖式(lollipop)的圖示來表示。

(2)需求接口又稱為導入接口,是組件請求其它元件對應服務時所遵循的接口。

需求介面透過依賴關係來表示,需求介面可以使用插座(Socket)的圖示連接到元件邊框來表示。

3. 組件圖中的關係

組件圖中的關係主要包括兩種:依賴關係和實現關係。

(1)依賴關係

組件圖中的依賴關係與類別圖中相同,都是「供應者-客戶」關係(supplier-client),使用虛線箭頭由客戶(client)元件指向供應者(supplier)元件。

(2)實現關係

組件之間的實作關係表示一個元件實作了另一個元件,這與類別和介面之間的實作關係相同。

raw-image

組件開發-UML構件圖

4.組合結構圖

用於描述系統中某一部分(即「組合結構」)的內部結構,以及該部分與系統其它部分的交互點。

定義:組合結構圖是一種UML結構圖,它表示某一物件的內部結構,其內部由一組小物件組成,它專注於物件內部的組成物件及其相互關係。

特點:

鎖定的範圍是物件內部,而不是整個系統或業務系統的系統內部。

強調對象內部的組成對象及其協作關係,這與一般業務系統中對象的平等性有所不同。

是一種靜態圖,展示的是系統在某一方面的靜態結構。

5.部署圖

也稱為實施圖或配置圖,是UML(統一建模語言)中的靜態圖,用於顯示系統中軟體和硬體的物理架構。它描述了系統中硬體的物理拓撲結構以及在此結構上執行的軟體。透過部署圖,可以了解到軟體和硬體組件之間的實體關係以及處理節點的組件分佈。

定義:部署圖是用來顯示系統中軟體和硬體的實體架構的圖形表示。

特點:

強調硬體和軟體組件的物理分佈和連接。

顯示運行時系統的結構,傳達構成應用程式的硬體和軟體元素的配置和部署方式。

常用於幫助理解分散式系統。

raw-image

選課系統UML部署圖

6.包圖

主要用於描述系統中套件(Package)以及套件內所含元素的組織結構和它們之間的依賴關係。

定義:包圖是在UML中以類似資料夾的符號表示的模型元素的組合,用於描述模型中的套件和所包含元素的組織方式。

特點:

強調包的組織結構和層級關係。

展示包之間的依賴關係。

可以包含各種類型的UML元素,如類別、介面、用例等。

raw-image

UML包圖

7.剖面圖

剖面圖也叫設定檔圖,是統一建模語言 (UML) 中的一種結構圖,它提供了一種通用擴展機制,用於為特定領域和平台自訂 UML 模型。擴展機制允許以嚴格附加的方式細化標準語義,防止它們與標準語義相矛盾。

配置檔案是使用構造型、 標記值定義和 應用於特定模型元素(如類別、屬性、操作和活動)的約束來定義的。 Profile 是這樣的擴充集合,它們共同為特定領域(例如,航空航太、醫療保健、金融)或平台(J2EE、.NET)客製化 UML。

raw-image

剖面圖

8.活動圖

主要用於描述系統、子系統或業務流程中的一系列活動以及這些活動之間的控制流程。活動圖展示了從活動到活動的流程,包括決策點(如分支和合併)、並行執行的活動以及可能的流程循環。它們對於理解和設計系統的工作流程非常有用,特別是在業務流程建模、工作流程建模和系統動態行為建模中。

活動圖的主要組成部分

1.活動(Actions):代表系統或業務流程中的一個操作步驟或任務。活動之間透過控制流連接。

2.控制流程(Control Flows):箭頭表示從一個活動到另一個活動的流程。控制流可以是單向的,也可以是帶有條件分支的,也可以表示循環或併發。

3.決策點(Decision Points):包括分支(Fork)和合併(Join)。分支用於表示並行活動的開始,而合併用於表示並行活動的結束。

4.泳道(Swimlanes):將活動圖劃分為不同的邏輯區域,每個區域代表不同的參與者(如使用者、系統或子系統),有助於理解不同實體在過程中的角色和責任。

5.開始和結束點:分別表示活動圖的起點和終點。

6.物件流(Object Flows):雖然活動圖主要關注流程控制,但也可以表示物件或資料的流動,尤其是在物件之間傳遞資料時。

raw-image

自助提款機提款UML活動圖

9.用例圖

是軟體工程中用來展示系統外部使用者(參與者)與系統內部功能(用例)之間互動關係的圖形化工具。它是UML(統一建模語言)中用於需求分析階段的重要圖表,旨在幫助開發人員和使用者理解系統的功能需求。

用例圖的基本組成:

1.參與者(Actor):

參與者是與系統互動的外部實體,可以是人、組織、外部系統或硬體設備。

在用例圖中,參與者通常以「小人」圖示表示。

2.用例(Use Case):

使用案例代表系統的一個功能單元,描述了系統如何回應參與者發出的請求。

它定義了系統的行為,即係統在特定條件下對特定參與者請求的反應。

在用例圖中,用例通常用一個橢圓來表示,並在其中寫上用例的名稱。

3.關聯(Association):

關聯表示參與者與用例之間的關係,即哪個參與者能夠觸發哪個用例。

關聯通常以一條實線表示,一端連接到參與者,另一端連接到使用案例。

4.包含(Include):

包含關係表示一個用例(包含用例)的功能被另一個用例(基底用例)所包含或使用。

在使用案例圖中,包含關係以帶有「<<include>>」標籤的虛線箭頭表示,箭頭指向基底用例。

5.擴展(Extend):

擴展關係表示在特定條件下,一個用例(擴展用例)可以插入到另一個用例(基底用例)中,為其增加額外的行為。

在用例圖中,擴充關係以帶有「<<extend>>」標籤的虛線箭頭和一個圓圈(表示擴充點)表示,箭頭指向基底用例,圓圈連接到基底用例中的一個點。

raw-image

人力資源管理系統UML用例圖

10.狀態圖

狀態圖主要用於對類別或物件的動態行為進行建模,也可以對一個用例,或整個系統進行建模。

UML狀態圖在軟體開發過程中廣泛應用於分析、設計和實作階段,以幫助開發者理解和設計系統的動態行為。

狀態圖由狀態、轉移、事件和動作等組成。

1. 狀態

狀態(state)是指物件在其生命週期中,滿足某些條件、執行某些活動或等待某些事件時的一個狀況。

2. 轉移

轉移(Transition)指的是兩個不同狀態之間的一種關係,是物件在滿足某個條件或發生某個事件時,從一種狀態遷移到另一個狀態。

3. 事件

事件(Event)是指在特定時間或空間內出現,並能導致狀態轉移的訊號、逾時、條件改變、時間段等,主要包括訊號事件、時間事件、改變事件和呼叫事件等。

4. 動作

動作通常是一個簡短的計算處理過程,如賦值操作或算術運算。動作也可以是一個動作序列,包括給另一個物件發送訊息、呼叫一個操作、設定回傳值、建立或銷毀物件。

raw-image

儲值及回饋狀態圖

11.通訊圖

在UML 1稱為協作圖(Collaboration Diagram),是UML(統一建模語言)中的互動圖,用來描述一組物件在協作過程中如何互相溝通。

定義:通訊圖展現了多個物件在協同工作達成共同目標的過程中互相溝通的情況,透過物件和物件之間的連結、發送的訊息來顯示參與互動的物件。

特點:

強調物件在互動中所承擔的角色和它們之間的關係。

著重於展示物件之間的空間組織結構,而非時間順序。

透過鍊和訊息來連接和傳遞物件之間的互動訊息。

raw-image

會員與商品UML通訊圖

12.互動概覽圖

主要用於將不同交互圖(如順序圖、通訊圖等)銜接在一起,以提供交互過程中控制流的整體概覽。

定義:交互概覽圖是交互圖與活動圖的混合物,可以將其理解為細化的活動圖,其中的活動都通過一些小型的順序圖來表示;也可以將其理解為利用標明控制流的活動圖分解過的順序圖。

特點:交互概覽圖並沒有引入新的建模元素,其主要元素來自於活動圖和時序圖。它著重從整體上概覽互動過程中的控制流,包括交互圖之間的事件或訊息流。

raw-image

UML交互概覽圖

13.時序圖

是一種UML(統一建模語言)互動圖。它透過描述物件之間發送訊息的時間順序來顯示多個物件之間的動態協作。

定義:時序圖用於展示物件之間的互動順序,它會依照時間順序排列物件之間的訊息傳遞,從而清楚地表達物件之間的協作關係。

特點:時序圖具有時間順序性,能夠直觀地展示物件之間互動的先後順序和時序關係。同時,它也能夠表示並發進程,透過不同的生命線來區分不同物件的執行過程。

時序圖主要由以下幾個元素組成:

物件(Object):代表時序圖中的實體,可以是系統角色、子系統或其他物件。物件在時序圖中透過生命線來表示其存在時間。

生命線(Lifeline):時序圖中每個物件底部中心的垂直虛線,表示物件在一段時間內的存在。生命線上的窄矩形代表物件的活動期,即物件執行某項操作的時期。

訊息(Message):物件之間傳遞的訊息,用來表示物件之間的互動。訊息可以帶有參數和條件表達式,以表示傳遞的資料和互動的條件。

控制焦點(Activation):物件執行操作時的時期,在時序圖中以生命線上的窄矩形來表示。控制焦點表示物件在某一時間點開始執行某項操作,並持續一段時間。

raw-image

使用者登入UML時序圖

14.序列圖

也稱為順序圖或時序圖,是一種UML(統一建模語言)交互圖,主要用於描述系統中物件之間的動態協作和訊息傳遞的時間順序。

定義:序列圖是一種依照時間順序描述物件之間互動行為的圖表。它展示了物件之間發送訊息的順序,以及這些訊息如何影響物件的狀態。

特點:

時間順序性:序列圖強調物件之間互動的時間順序,透過橫向的時間軸和縱向的物件生命線來展示。

動態協作:它展示了物件之間如何透過訊息傳遞進行協作,從而完成特定的任務或功能。

視覺化表示:序列圖以圖形化的方式展示了物件之間的互動過程,使得系統行為更加直觀易懂。

raw-image

基礎UML序列圖

三、UML圖的主要用途

提高溝通效率:UML圖透過視覺化的方式展示系統的結構和行為,使得開發人員之間可以更好地溝通和理解系統的設計和功能。

降低開發風險:在軟體開發之前,透過UML圖對整個軟體設計進行建模和驗證,可以及早發現潛在的問題和風險,從而降低開發過程中的不確定性。

支援物件導向開發:UML圖支援物件導向的設計和開發方法,包括類別、物件、介面、繼承、關聯等概念,使得開發人員可以更自然地描述和建構軟體系統。

四、學習建議

學習UML圖需要掌握其基本概念和符號規範,並透過實踐來加深理解和應用。建議初學者從類別圖、使用案例圖等基本的UML圖開始學習,逐步掌握更複雜的行為圖形。同時,結合具體的軟體開發專案來應用UML圖,可以更好地理解其在實際工作中的作用和價值。

五、 結語:

UML圖作為一種強大的建模工具,在軟體開發過程中扮演著重要的角色。掌握UML圖不僅可以提高開發效率和質量,還可以促進開發人員之間的溝通和協作。透過本文的介紹,讀者可以在短時間內了解UML圖的主要分類和用途,為後續的學習和實踐打下基礎。 ProcessOn 是一款常用於繪製uml圖的軟體,它內建專業的uml圖形符號元素和箭頭線條,支援自訂調節樣式和顏色,且能透過連結分享給他人,完成後還能自由導出成圖片或PDF文件格式,非常容易操作,新手使用也沒有壓力。

avatar-img
1會員
18內容數
分享心智圖與流程圖使用技巧
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
ProcessOn的沙龍 的其他內容
泳道圖(Swimlane Diagram),也叫跨職能流程圖,旨在分析和展示各個部門在同一任務流程上的不同進程,明確流程環節所屬的階段、流程環節負責人、組織機構或部門。泳道圖的名稱由來,是流程圖中對職能部門的劃分像游泳池泳道相類似比擬而來。
組織架構圖,又稱組織結構圖,是一種透過圖形方式展示組織內部各部門、職位及其相互關係的圖表。它清楚地描繪了組織的層級結構、職責分配以及資訊流動路徑,是理解和分析組織運作的重要工具。
流程圖是以特定的圖形符號加上說明,表示演算法的圖,簡而言之,就是表示流程行為的圖,形象直觀,便於理解,不會產生歧義。流程圖是高效率工具,在工作、生活以及學習等各方面幫助我們整理流程。
如何快速又牢固的記憶一本書或一部電影的內容?如何記住複雜的人物關係和故事情節?尤其當讀國外人名翻譯過後晦澀難懂時,急需屢屢清楚人物名字和關係,人物關係圖顯得尤為重要。人物關係圖能夠將各要素以及人之間的關係的可視化,也就是說它可以藉你一雙慧眼,讓你看清各要素和人物之間的關係。
大家是不是常常覺得時間不夠用?同樣24小時,為什麼別人的效率那麼高?自己卻總是完不成任務?這其中的差距,最重要的因素是對時間、對專案的管理、掌控能力。要提高時間管理和專案管理的能力,推薦大家使用甘特圖。
魚骨圖作為一項重要的思維可視化工具,它的核心價值在於以直觀形象的方式來梳理解析問題的因果關係,通過對問題現象進行多維度、多層次的分析,讓大家清晰瞭解到此項問題存在的根本原因。
泳道圖(Swimlane Diagram),也叫跨職能流程圖,旨在分析和展示各個部門在同一任務流程上的不同進程,明確流程環節所屬的階段、流程環節負責人、組織機構或部門。泳道圖的名稱由來,是流程圖中對職能部門的劃分像游泳池泳道相類似比擬而來。
組織架構圖,又稱組織結構圖,是一種透過圖形方式展示組織內部各部門、職位及其相互關係的圖表。它清楚地描繪了組織的層級結構、職責分配以及資訊流動路徑,是理解和分析組織運作的重要工具。
流程圖是以特定的圖形符號加上說明,表示演算法的圖,簡而言之,就是表示流程行為的圖,形象直觀,便於理解,不會產生歧義。流程圖是高效率工具,在工作、生活以及學習等各方面幫助我們整理流程。
如何快速又牢固的記憶一本書或一部電影的內容?如何記住複雜的人物關係和故事情節?尤其當讀國外人名翻譯過後晦澀難懂時,急需屢屢清楚人物名字和關係,人物關係圖顯得尤為重要。人物關係圖能夠將各要素以及人之間的關係的可視化,也就是說它可以藉你一雙慧眼,讓你看清各要素和人物之間的關係。
大家是不是常常覺得時間不夠用?同樣24小時,為什麼別人的效率那麼高?自己卻總是完不成任務?這其中的差距,最重要的因素是對時間、對專案的管理、掌控能力。要提高時間管理和專案管理的能力,推薦大家使用甘特圖。
魚骨圖作為一項重要的思維可視化工具,它的核心價值在於以直觀形象的方式來梳理解析問題的因果關係,通過對問題現象進行多維度、多層次的分析,讓大家清晰瞭解到此項問題存在的根本原因。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…