UML 統一塑模語言是什麼? 作用是什麼?

UML 統一塑模語言 (Unified Modeling Language) 是一種標準化的建模語言,可用於視覺化軟體設計和架構。常被誤會的是為何他是語言 (Language)? 因為任何系統化的、用於表示資訊或表達思想的方法都可以稱為語言。

UML 的起源可以追溯到三位著名的軟體工程師:Grady Booch、Ivar Jacobson 和 James Rumbaugh。在 1990 年代初,他們創建一個統一的建模語言,即 UML。在 1997 年,OMG 採納了 UML 作為一個標準,並從此持續管理和發展它。隨著時間的推移,UML 經歷了多次修訂,以滿足不斷變化的軟體工程需求。

簡單來說,UML所涵蓋的內容是表式法而非程序,UML是與程序無關的(Process Independent),也就是說,無論以任何程式語言來開發軟體系統,都可以使用UML來建構軟體模型。

請參考 : 什麼是物件導向與UML?

所以你拿出UML建構的模型,別的工程師就了解你的軟體功能是什麼,因此UML可以說是工程師之間溝通軟體規格的語言。

例如我們可以用UML的Use Case Diagram (案例圖) 來表示線上購物系統與行為者的關係 : 

從以上的UML案例圖就可以知道,會員與非會員都可以把商品放入購物車,但是只有會員可以購物結帳,非會員就必須先加入會員才能完成購物結帳。

在UML系統開發中有三個主要的模型:

(1) 功能模型:從使用者的角度展示系統的功能,包括使用個案圖 (Use Case Diagram)。

(2) 物件模型:採用物件,屬性,操作,關聯等概念展示系統的結構和基礎,包括類別圖 (Class Diagram)、物件圖 (Object Diagram)。

(3) 動態模型:展現系統的內部行為。包括序列圖 (Sequence Diagram),活動圖 (Activity Diagram),狀態圖 (State Diagram)。

UML 模型是對整個系統或應用的完整表示,它涵蓋了所有的實體、關係、行為和互動。通常,一個 UML 模型由多個 UML 圖組成,這些圖從不同的角度和層次描述系統。因此,當我們談論 "UML 模型" 時,我們通常指的是一個完整的系統描述,它包含了以下的 UML 圖。

UML 圖 (UML Diagrams):

UML 提供了多種不同的圖,每種圖都針對系統的某一特定方面。以下是 UML 中的主要圖類型: 

使用案例圖 (Use Case Diagram) * : 描述系統的功能以及用戶和系統之間的交互。 

類別圖 (Class Diagram) * : 描述系統中的類、屬性、方法以及它們之間的關係。 

物件圖 (Object Diagram) : 描述系統中的物件及其關聯,常用於表示類圖的特定實例。 

活動圖 (Activity Diagram) * : 描述業務流程或系統操作的順序。 

序列圖 (Sequence Diagram) * : 描述物件之間的交互和消息傳遞的順序。 

通信圖 (Communication Diagram) : 描述物件之間的交互,以及它們如何通過消息進行通信。 

時序圖 (Timing Diagram) : 描述物件的狀態和交互在時間軸上的變化。 

狀態圖 (State Diagram) * : 描述物件的生命週期和狀態變化。 

組件圖 (Component Diagram) : 描述系統的物理組件和它們之間的關係。 

部署圖 (Deployment Diagram) : 描述軟體的部署方式,以及它在硬體上的配置。 

封裝圖 (Package Diagram) : 描述系統的模組結構和各模組之間的依賴關係。 

交互概覽圖 (Interaction Overview Diagram) : 描述交互的高層次流程,結合了活動圖和序列圖的特點。

組合結構圖 (Composite structure diagram) : 組合結構圖從 UML 2.0 起開始出現,描述個別分類器內部的參與者和關係,例如物件、使用案例、類別或合作。 組合結構圖通常附屬於更大的圖型,用來描述上層圖型中單一元素的內部結構或環境定義。

概要 (Profile Diagram) : 概要圖提供了一種通用擴展機制,用於為特定領域和平台定制 UML 模型。擴展機制允許以嚴格附加的方式細化標準語義,防止它們與標準語義相矛盾。

每種 UML 圖都有其特定的用途和語法,可用於從不同的角度描述和理解系統。

從以下UML 2.2的規格裡可以更清楚看到,UML 圖可以分成三大類型 : 結構圖 (Structure Diagram)、行為圖 (Behavior Diagram)、互動圖 (Interaction Diagram)。



想知道每個UML圖的詳細樣子,可以參考這篇文章"什麼是統一建模語言?"

所以UML 統一塑模語言的作用,你可以說是用來描述軟體系統的結構、行為、互動。拿一個電子商務網站的UML給另一個工程師看,他就知道這個電子商務網站是怎麼回事。

不過並不是每個UML圖都會用到,根據下圖來看,交互概覽圖 (Interaction Overview Diagram)、時序圖 (Timing Diagram)、概要圖 (Profile Diagram) 是比較少用的圖。

類別圖 (Class Diagram)、活動圖 (Activity Diagram)、序列圖 (Sequence Diagram)、使用案例圖 (Use Case Diagram)、狀態圖 (State Diagram)則是最常使用的。

參考資料 : 14 種 UML 圖的綜合指南

你想要開發一個電子商務網站,只要把UML圖做出來給工程師,工程師就知道如何設計你的電子商務網站,所以UML也可以看成是像蓋房子的藍圖,UML在軟體工程中的作用可以與建築中的藍圖相提並論。以下是這兩者之間的一些相似之處:

設計之前的規劃:在建築物真正開始建造之前,建築師會先創建藍圖來描述建築的各個方面。同樣地,軟體工程師在開始編碼之前,會使用 UML 來規劃和設計軟體的結構和行為。 

提供視覺化表示:藍圖為建築專案提供了視覺化的表示,使所有相關人員都能理解建築的設計和結構。UML 圖也為軟體專案提供了類似的視覺化,幫助團隊成員理解軟體的工作方式和結構。 

標準化:建築藍圖遵循特定的標準和規範,確保它們可以被所有建築專業人員理解。UML 也是一個標準化的建模語言,被廣泛接受和使用,確保不同的軟體團隊可以理解和使用它。 

修改和迭代:當建築物在建造過程中需要進行更改時,藍圖可以輕鬆地進行修改。同樣,當軟體需求變更或出現問題時,UML 圖可以輕鬆地更新,以反映新的設計決策。 

多層次的詳細程度:建築藍圖可能包括從整體布局到特定組件的詳細視圖。UML 也提供了從系統的高層次概述(如用例圖)到具體交互的詳細描述(如序列圖)的多種圖。 

總的來說,UML 在軟體工程中的角色與建築中的藍圖非常相似,它們都是在實際建造或實施之前進行規劃和設計的工具。

在設計之前的規劃,應該有人會去聯想到DFD (Data Flow Diagram) 與ERD (Entity Relationship Diagram),這兩個也是在做概念塑模時常用到的方法。

請參考 : 
什麼是DFD (Data Flow Diagram 資料流程圖) ?
實體關係模型(Entity-relationship model)
Database Design
Data Flow Diagram (DFD) 與 Entity Relationship Diagram (ERD) 實作練習

DFD跟ERD與UML比較起來,差異是什麼? 

DFD (Data Flow Diagram)、ERD (Entity-Relationship Diagram) 和 UML (Unified Modeling Language) 都是軟體工程和資料庫設計中常用的建模工具。但它們各自專注於不同的目的和方面。以下是這三者的比較:

DFD (Data Flow Diagram) 

主要目的:DFD 主要用於描述系統中資料的流動。它顯示了資料如何從一個部分流向另一個部分,以及資料在途中如何被系統的各個組件或功能處理。 

元件:DFD 包含實體 (entities)、處理 (processes)、資料存儲 (data stores) 和資料流 (data flows)。 

不涉及的方面:DFD 不描述資料的具體結構或資料之間的關係。 

ERD (Entity-Relationship Diagram) 

主要目的:ERD 主要用於描述資料庫中資料實體之間的關係。它顯示了資料庫的結構,以及資料實體之間如何互相關聯。 

元件:ERD 包含實體 (entities)、關係 (relationships) 和屬性 (attributes)。 

不涉及的方面:ERD 不描述資料的流動或處理。 

UML (Unified Modeling Language) 

主要目的:UML 是一個通用的建模語言,用於描述軟體系統的結構和行為。它提供了多種圖,可以從不同的角度和層次描述系統。 

元件:UML 包含多種圖,如類圖、活動圖、序列圖等,每種圖都有其特定的元件和語法。 

不涉及的方面:UML 是一個綜合性的工具,涵蓋了系統的許多方面。但是,它不像 ERD 那樣專注於資料關係,也不像 DFD 那樣專注於資料流動。 

總結來說: DFD專注於資料的流動和處理。 ERD專注於資料實體之間的關係。 UML是一個綜合性的建模工具,用於描述軟體系統的結構和行為。 雖然這三者有其各自的專長和目的,但在實際的軟體開發和資料庫設計中,它們往往會一起使用,以提供系統的完整視圖。

用白話來講,我會先用DFD來描述資料,用ERD來描述資料間的關係,再來把ERD轉換為UML的Class Diagram,這樣就弄清楚了資料庫的結構,後續再用其他的UML圖來描述軟體的結構、行為、互動了。

張貼留言

0 留言