UML(Unified Modeling Language)是統一建模語言的縮寫,它是一種用於描述軟體系統的視覺化工具。 UML提供了一套豐富的圖形符號和規範,用於描述和視覺化軟體系統的結構、行為和互動。透過使用UML,軟體開發人員可以更好地理解和溝通系統的設計和功能,降低開發風險,提高開發效率。
UML圖主要分為三大類,共14種類型:
結構性圖形(靜態圖):主要分析和描述系統或流程的結構,包括:類圖、對象圖、組件圖、組合結構圖、部署圖、包圖和剖面圖。
行為圖形(動態圖):主要描述系統的行為、它的參與者和它的建構元件,包括:活動圖、用例圖、狀態圖。
互動圖形: 通訊圖、互動概覽圖、時序圖、序列圖。
接下來我將結合ProcessOn作圖工具來跟大家分享一下每種圖形的概念及使用。
1.類圖
它主要用於描述系統中類的集合、類的內部結構(如屬性和方法)以及類之間的關係。類圖是物件導向建模的主要組成部分,廣泛應用於軟體工程中的系統分析和設計階段。
定義:類圖是一種用來表示系統中類的靜態結構,包括類、介面以及它們之間關係的圖。
特點:
強調類的靜態結構,不展示暫時的資訊。
描述類的屬性(欄位)、方法(操作)以及類與類之間的關係(如關聯、聚合、組合、繼承等)。
是系統編碼和測試的重要模型基礎。
2.對象圖
主要用於描述系統在某個特定時刻的具體情況,特別是物件及它們之間的相互關係。
定義:物件圖顯示了在某個時刻物件和物件之間的關係,反映了系統的靜態過程。它是類別圖的實例,展示了類別的多個物件實例以及這些實例之間的關聯、組合等關係。
特點:
強調系統在某一時刻的狀態,而不是過程或行為。
使用與類別圖相同的符號和關係,但顯示的是類別的具體實例。
由於物件存在生命週期,因此物件圖只能在系統某一時間段存在。
3.組件圖
組件圖(Component Diagram)又稱構件圖,是UML中描述一個系統中的物理方面的圖形,它是用來描述構成系統的各個組件、組件提供的接口與需求的接口、端口以及它們之間關係的圖。這種圖在基於組件開發的系統建模中很重要,可以幫助使用者理解系統的結構。
組件圖中主要包括組件、介面及其它們之間的關係三種元素。
1. 組件
組件(Component)是定義了良好介面的、可重複使用的、可替代的物理實作單元,它一般表示實際存在的、物理的物件。程式原始碼、執行檔、子系統、一個腳本、動態連結程式庫(DLL)、ActiveX控制項都可以成為系統中的元件。組件隱藏了內部實現的細節,僅透過介面提供服務。
2. 介面
組件中的介面主要分為兩類:提供介面(Provided Interface)和需求介面(Required Interface)。
(1)提供接口又稱導出接口,是組件提供的服務的集合。
提供接口是由元件本身直接實現的接口、或者是由實現組件的類別之一實現的接口,或者是由組件的公共端口提供的接口。提供介面可以使用介面與元件之間的實作關係來表示,可以在元件圖示的邊框上使用類似棒棒糖式(lollipop)的圖示來表示。
(2)需求接口又稱為導入接口,是組件請求其它元件對應服務時所遵循的接口。
需求介面透過依賴關係來表示,需求介面可以使用插座(Socket)的圖示連接到元件邊框來表示。
3. 組件圖中的關係
組件圖中的關係主要包括兩種:依賴關係和實現關係。
(1)依賴關係
組件圖中的依賴關係與類別圖中相同,都是「供應者-客戶」關係(supplier-client),使用虛線箭頭由客戶(client)元件指向供應者(supplier)元件。
(2)實現關係
組件之間的實作關係表示一個元件實作了另一個元件,這與類別和介面之間的實作關係相同。
4.組合結構圖
用於描述系統中某一部分(即「組合結構」)的內部結構,以及該部分與系統其它部分的交互點。
定義:組合結構圖是一種UML結構圖,它表示某一物件的內部結構,其內部由一組小物件組成,它專注於物件內部的組成物件及其相互關係。
特點:
鎖定的範圍是物件內部,而不是整個系統或業務系統的系統內部。
強調對象內部的組成對象及其協作關係,這與一般業務系統中對象的平等性有所不同。
是一種靜態圖,展示的是系統在某一方面的靜態結構。
5.部署圖
也稱為實施圖或配置圖,是UML(統一建模語言)中的靜態圖,用於顯示系統中軟體和硬體的物理架構。它描述了系統中硬體的物理拓撲結構以及在此結構上執行的軟體。透過部署圖,可以了解到軟體和硬體組件之間的實體關係以及處理節點的組件分佈。
定義:部署圖是用來顯示系統中軟體和硬體的實體架構的圖形表示。
特點:
強調硬體和軟體組件的物理分佈和連接。
顯示運行時系統的結構,傳達構成應用程式的硬體和軟體元素的配置和部署方式。
常用於幫助理解分散式系統。
6.包圖
主要用於描述系統中套件(Package)以及套件內所含元素的組織結構和它們之間的依賴關係。
定義:包圖是在UML中以類似資料夾的符號表示的模型元素的組合,用於描述模型中的套件和所包含元素的組織方式。
特點:
強調包的組織結構和層級關係。
展示包之間的依賴關係。
可以包含各種類型的UML元素,如類別、介面、用例等。
7.剖面圖
剖面圖也叫設定檔圖,是統一建模語言 (UML) 中的一種結構圖,它提供了一種通用擴展機制,用於為特定領域和平台自訂 UML 模型。擴展機制允許以嚴格附加的方式細化標準語義,防止它們與標準語義相矛盾。
配置檔案是使用構造型、 標記值定義和 應用於特定模型元素(如類別、屬性、操作和活動)的約束來定義的。 Profile 是這樣的擴充集合,它們共同為特定領域(例如,航空航太、醫療保健、金融)或平台(J2EE、.NET)客製化 UML。
剖面圖
8.活動圖
主要用於描述系統、子系統或業務流程中的一系列活動以及這些活動之間的控制流程。活動圖展示了從活動到活動的流程,包括決策點(如分支和合併)、並行執行的活動以及可能的流程循環。它們對於理解和設計系統的工作流程非常有用,特別是在業務流程建模、工作流程建模和系統動態行為建模中。
活動圖的主要組成部分
1.活動(Actions):代表系統或業務流程中的一個操作步驟或任務。活動之間透過控制流連接。
2.控制流程(Control Flows):箭頭表示從一個活動到另一個活動的流程。控制流可以是單向的,也可以是帶有條件分支的,也可以表示循環或併發。
3.決策點(Decision Points):包括分支(Fork)和合併(Join)。分支用於表示並行活動的開始,而合併用於表示並行活動的結束。
4.泳道(Swimlanes):將活動圖劃分為不同的邏輯區域,每個區域代表不同的參與者(如使用者、系統或子系統),有助於理解不同實體在過程中的角色和責任。
5.開始和結束點:分別表示活動圖的起點和終點。
6.物件流(Object Flows):雖然活動圖主要關注流程控制,但也可以表示物件或資料的流動,尤其是在物件之間傳遞資料時。
9.用例圖
是軟體工程中用來展示系統外部使用者(參與者)與系統內部功能(用例)之間互動關係的圖形化工具。它是UML(統一建模語言)中用於需求分析階段的重要圖表,旨在幫助開發人員和使用者理解系統的功能需求。
用例圖的基本組成:
1.參與者(Actor):
參與者是與系統互動的外部實體,可以是人、組織、外部系統或硬體設備。
在用例圖中,參與者通常以「小人」圖示表示。
2.用例(Use Case):
使用案例代表系統的一個功能單元,描述了系統如何回應參與者發出的請求。
它定義了系統的行為,即係統在特定條件下對特定參與者請求的反應。
在用例圖中,用例通常用一個橢圓來表示,並在其中寫上用例的名稱。
3.關聯(Association):
關聯表示參與者與用例之間的關係,即哪個參與者能夠觸發哪個用例。
關聯通常以一條實線表示,一端連接到參與者,另一端連接到使用案例。
4.包含(Include):
包含關係表示一個用例(包含用例)的功能被另一個用例(基底用例)所包含或使用。
在使用案例圖中,包含關係以帶有「<<include>>」標籤的虛線箭頭表示,箭頭指向基底用例。
5.擴展(Extend):
擴展關係表示在特定條件下,一個用例(擴展用例)可以插入到另一個用例(基底用例)中,為其增加額外的行為。
在用例圖中,擴充關係以帶有「<<extend>>」標籤的虛線箭頭和一個圓圈(表示擴充點)表示,箭頭指向基底用例,圓圈連接到基底用例中的一個點。
10.狀態圖
狀態圖主要用於對類別或物件的動態行為進行建模,也可以對一個用例,或整個系統進行建模。
UML狀態圖在軟體開發過程中廣泛應用於分析、設計和實作階段,以幫助開發者理解和設計系統的動態行為。
狀態圖由狀態、轉移、事件和動作等組成。
1. 狀態
狀態(state)是指物件在其生命週期中,滿足某些條件、執行某些活動或等待某些事件時的一個狀況。
2. 轉移
轉移(Transition)指的是兩個不同狀態之間的一種關係,是物件在滿足某個條件或發生某個事件時,從一種狀態遷移到另一個狀態。
3. 事件
事件(Event)是指在特定時間或空間內出現,並能導致狀態轉移的訊號、逾時、條件改變、時間段等,主要包括訊號事件、時間事件、改變事件和呼叫事件等。
4. 動作
動作通常是一個簡短的計算處理過程,如賦值操作或算術運算。動作也可以是一個動作序列,包括給另一個物件發送訊息、呼叫一個操作、設定回傳值、建立或銷毀物件。
11.通訊圖
在UML 1稱為協作圖(Collaboration Diagram),是UML(統一建模語言)中的互動圖,用來描述一組物件在協作過程中如何互相溝通。
定義:通訊圖展現了多個物件在協同工作達成共同目標的過程中互相溝通的情況,透過物件和物件之間的連結、發送的訊息來顯示參與互動的物件。
特點:
強調物件在互動中所承擔的角色和它們之間的關係。
著重於展示物件之間的空間組織結構,而非時間順序。
透過鍊和訊息來連接和傳遞物件之間的互動訊息。
12.互動概覽圖
主要用於將不同交互圖(如順序圖、通訊圖等)銜接在一起,以提供交互過程中控制流的整體概覽。
定義:交互概覽圖是交互圖與活動圖的混合物,可以將其理解為細化的活動圖,其中的活動都通過一些小型的順序圖來表示;也可以將其理解為利用標明控制流的活動圖分解過的順序圖。
特點:交互概覽圖並沒有引入新的建模元素,其主要元素來自於活動圖和時序圖。它著重從整體上概覽互動過程中的控制流,包括交互圖之間的事件或訊息流。
13.時序圖
是一種UML(統一建模語言)互動圖。它透過描述物件之間發送訊息的時間順序來顯示多個物件之間的動態協作。
定義:時序圖用於展示物件之間的互動順序,它會依照時間順序排列物件之間的訊息傳遞,從而清楚地表達物件之間的協作關係。
特點:時序圖具有時間順序性,能夠直觀地展示物件之間互動的先後順序和時序關係。同時,它也能夠表示並發進程,透過不同的生命線來區分不同物件的執行過程。
時序圖主要由以下幾個元素組成:
物件(Object):代表時序圖中的實體,可以是系統角色、子系統或其他物件。物件在時序圖中透過生命線來表示其存在時間。
生命線(Lifeline):時序圖中每個物件底部中心的垂直虛線,表示物件在一段時間內的存在。生命線上的窄矩形代表物件的活動期,即物件執行某項操作的時期。
訊息(Message):物件之間傳遞的訊息,用來表示物件之間的互動。訊息可以帶有參數和條件表達式,以表示傳遞的資料和互動的條件。
控制焦點(Activation):物件執行操作時的時期,在時序圖中以生命線上的窄矩形來表示。控制焦點表示物件在某一時間點開始執行某項操作,並持續一段時間。
14.序列圖
也稱為順序圖或時序圖,是一種UML(統一建模語言)交互圖,主要用於描述系統中物件之間的動態協作和訊息傳遞的時間順序。
定義:序列圖是一種依照時間順序描述物件之間互動行為的圖表。它展示了物件之間發送訊息的順序,以及這些訊息如何影響物件的狀態。
特點:
時間順序性:序列圖強調物件之間互動的時間順序,透過橫向的時間軸和縱向的物件生命線來展示。
動態協作:它展示了物件之間如何透過訊息傳遞進行協作,從而完成特定的任務或功能。
視覺化表示:序列圖以圖形化的方式展示了物件之間的互動過程,使得系統行為更加直觀易懂。
提高溝通效率:UML圖透過視覺化的方式展示系統的結構和行為,使得開發人員之間可以更好地溝通和理解系統的設計和功能。
降低開發風險:在軟體開發之前,透過UML圖對整個軟體設計進行建模和驗證,可以及早發現潛在的問題和風險,從而降低開發過程中的不確定性。
支援物件導向開發:UML圖支援物件導向的設計和開發方法,包括類別、物件、介面、繼承、關聯等概念,使得開發人員可以更自然地描述和建構軟體系統。
學習UML圖需要掌握其基本概念和符號規範,並透過實踐來加深理解和應用。建議初學者從類別圖、使用案例圖等基本的UML圖開始學習,逐步掌握更複雜的行為圖形。同時,結合具體的軟體開發專案來應用UML圖,可以更好地理解其在實際工作中的作用和價值。
UML圖作為一種強大的建模工具,在軟體開發過程中扮演著重要的角色。掌握UML圖不僅可以提高開發效率和質量,還可以促進開發人員之間的溝通和協作。透過本文的介紹,讀者可以在短時間內了解UML圖的主要分類和用途,為後續的學習和實踐打下基礎。 ProcessOn 是一款常用於繪製uml圖的軟體,它內建專業的uml圖形符號元素和箭頭線條,支援自訂調節樣式和顏色,且能透過連結分享給他人,完成後還能自由導出成圖片或PDF文件格式,非常容易操作,新手使用也沒有壓力。