de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

什麼是UML?

UML 是一種物件導向方法的標準符號,由整合物件模型技術所創建。它用於系統的分析、設計與部署。統一模型語言 是為了回應企業自動化軟體生產、提升品質並降低成本與上市時間的需求而設計的。它也為理解建模語言提供了正式基礎。

為什麼使用UML?

大型企業應用必須以一種能支援可擴展性、安全性,並在壓力條件下穩定執行的方式進行結構設計。良好的架構設計能促進程式碼重用,並讓維護工程師能在原始作者轉往其他專案多年後,仍能找出並修復出現的錯誤。模型對於大型軟體專案至關重要,對中型與小型專案也有幫助。模型可確保業務功能完整且正確,滿足終端使用者的需求,並使程式設計支援可擴展性、穩定性、安全性、可擴充性及其他特性。

  • 模型能幫助我們以更高層次的抽象來工作,透過隱藏或遮蔽細節,呈現整體圖像,或專注於原型的不同面向。
  • UML 可讓您建模任何類型的應用程式,無論運行在哪種硬體、作業系統、程式語言或網路環境下,也能用於非物件導向應用程式的建模。
  • 某些工具會分析現有的原始碼(或有人聲稱是目標碼!),並將其反向工程為一組UML 圖表,而其他工具則執行 UML 模型,通常會產生程式語言碼,若程式碼產生器整合了最佳實務的可擴展模式,則執行速度會很快。
  • 收集並分析應用程式需求,並將其納入程式設計的過程相當複雜。UML 是一種語言,可讓您表達分析與設計的成果。

它從何而來?

UML 的根源可追溯至 1980 年代末至 1990 年代初發展的物件導向程式設計方法。吉姆·倫巴ugh、葛雷迪·布奇與伊瓦·雅各布森將他們的想法整合成統一方法,後被稱為統一模型語言(UML)。物件管理小組(OMG)發布的第一份提案請求(RFP)促使多家組織合作,共同回應該提案。RFP 回應版本 UML 1.0 具備明確性、表達力、強大功能與廣泛適用性,並在後續逐步提升至 1.1 至 1.5 版,再進化至 2001 至 2006 年的 UML 2.1(目前 UML 的最新版本為 2.5)

UML 的優點

使用 UML 最大的好處是,圖表中的程式碼即使只理解程式的一小部分,任何程式員都能輕易閱讀。

  • UML 是一種用於視覺化描述程式的標準,廣泛使用並被接受為規劃程式的語言。
  • UML 圖表顯示電腦程式中類別與實體之間的關係。透過觀察圖表,就能輕易理解程式的關係。
  • UML 圖表能以直觀的方式解釋程式中的關係,並讓程式員能重用已存在的程式碼片段,而非重新撰寫這些函數。
  • UML 是物件導向程式語言目前的標準。它有助於在程式設計之前進行規劃,並產生程式碼,根據模型中設定的類別產生程式碼。

UML 圖表與模型 – 結構 vs 行為

UML 圖表顯示系統元件如何與其他元件互動,以及系統將如何運作。UML 模型是系統模型的完整圖形化呈現,而圖表則是部分呈現。

靜態 vs 動態觀點

靜態建模使用物件、屬性、操作與關係來呈現系統的結構,而動態建模則使用物件間的協作與物件內部狀態的變化來呈現系統的行為。

  • 結構圖代表軟體系統的靜態面向,用於記錄軟體系統的架構。
  • 行為圖描述系統的動態方面。它們用於描述軟體系統的功能。

UML 圖表的 14 種類型

UML 2.2 包含 14 種圖表其中 7 種表示結構資訊,另外 7 種表示互動的一般方面。

結構圖

由於結構圖表示結構,因此廣泛用於記錄軟體系統的軟體架構。結構圖描繪系統中各元素的靜態結構。七種 UML 結構圖大致圍繞著建模系統時會遇到的主要事物群組進行組織。

例如,組件圖描述軟體系統如何被拆分為組件,並顯示這些組件之間的依賴關係。

結構性  簡要說明
組合結構圖 它顯示分類器的內部結構、分類器透過埠與環境的互動,或合作行為。
部署圖 它顯示一組節點及其關係,以說明架構的靜態部署視圖。
套件圖 它將相關的 UML 元素分組為一組邏輯上相關的 UML 結構。
輪廓圖
類圖 它顯示一組類別、介面和合作關係及其關係,通常出現在物件導向系統的建模中。
物件圖 它顯示一組物件及其關係,即類圖中所見事物的實例的靜態快照。
組件圖 它顯示一組組件及其關係,以說明系統的靜態實作視圖。

行為圖

UML 的五種行為圖用於模擬系統的行為。它們顯示資料如何在系統中流動,物件之間如何通訊,時間的流逝如何影響系統,以及哪些事件會導致系統內部狀態的改變。

行為性  簡要說明
活動圖 它是一種圖形化表示步驟式活動和動作的工作流程,並支援選擇、迭代和並發
用例圖 它以用例的形式描述系統的功能需求,使您能夠將對系統的需求與系統如何滿足這些需求聯繫起來。
狀態機圖 它通過有限狀態轉換展示設計系統中某一部分的離散行為。
順序圖 它顯示執行場景功能所需物件之間交換訊息的順序。
通訊圖 它使用有序訊息以自由形式排列的方式展示物件和/或部分(以生命線表示)之間的互動。
互動概觀圖 它以可包含其他元素的節點來描述控制流程互動圖.
時序圖 當圖表的主要目的在於透過聚焦於生命線沿線性時間軸內外條件的變化來進行時間推理時,它顯示互動。

1. 類圖

一個類圖它呈現應用程式的靜態視圖,並有助於構建可執行的軟體程式碼。它顯示屬性、類別、函數和關係,以提供軟體系統的整體概觀。它們用於建立應用程式的靜態視圖。物件模型圖可在編碼前提供應用程式的整體示意圖,從而減少維護時間。

根據系統的複雜程度,您可以使用單一類圖來模擬整個系統,或使用多個類圖來模擬系統的各個組件。類圖是物件模型過程的基礎,並用於模擬系統的靜態結構。在分析階段,類圖可幫助您理解問題領域的需求並識別其組成部分。

這個類圖類圖是物件導向建模的主要構建模塊。它通過顯示類別、其屬性、操作以及物件之間的關係來展示物件導向系統的結構。頂部區段包含類別名稱,中間區段包含其屬性,底部區段包含其操作。

關係通常寫在關聯線的中間。它們通常帶有小箭頭,以顯示閱讀關係的方向。關係中物件的多重性可表示為:恰好一個、零個、一個、多個、一個或多個。

編輯此類圖

  • 類別是物件的藍圖,物件導向設計的重點不在於物件本身,而在於類別,因為我們使用類別來建立物件。
  • 選擇視角取決於您在開發過程中的進度。分析模型具有概念性和規格性視角的混合。
  • UML 類別關係用於傳達如何從圖表中實現程式碼。若能精確解讀,所實現的程式碼將準確反映設計者的意圖。
  • 關聯以連接兩個類別的線條表示。在每一端,我們可以標示所有權、該端元素所扮演的角色,以及實例的多重性。
  • 一般化是兩個類別之間的關係。特定類別的每個實例也是通用類別的間接實例。
  • 聚合是一種關聯類型,代表部分-整體或部分-整體關係。它可以用包含類上的空心菱形圖形表示,並用單條線連接到被包含的類。
  • 當一個類的對象使用另一個類的對象時,就會存在依賴關係。
  • 抽象類用於在類之間查找功能,其名稱以斜體字書寫。

2. 物件圖

物件是類在運行時特定時刻的實例,物件圖顯示系統在某一時刻的詳細狀態。它們用於展示資料結構的範例,而類圖則用於驗證其準確性和完整性。物件圖.

(使用 Visual Paradigm (桌面版) 的物件圖工具)

  • 物件圖顯示系統中物件之間的關係,可用來解釋複雜的系統類圖。
  • 在UML中,物件圖顯示模型中分類器的實例及其關係。您可以透過實例化類、部署、組件和用例圖中的模型元素來建立物件圖。
  • 要開發物件圖,您必須識別構成系統的機制,然後識別參與該機制的類、介面及其他元素,並識別這些事物之間的關係。
  • 物件圖可用於顯示物件在特定時刻的狀態。

3. 組件圖

一個組件圖用於將大型物件導向系統分解為較小的組件。它可視化系統中各組件之間的關係與組織。組件圖是軟體系統的邏輯組件及其關係的表示,是系統的靜態實現視圖。通常用於視覺化組件、建立可執行檔,並描述組件的組織與關係。

編輯此UML組件圖

  • 組件圖說明組件所提供的與所需的介面。
  • 組件是系統的一個模組化部分。它以矩形繪製,可選的區隔欄垂直堆疊。
  • 使用棒棒糖或插座來表示組件到介面的依賴關係,而半圓則用來表示組件到所需介面的依賴關係。

4. 部署圖

部署圖顯示執行時系統的結構,以及軟體將被部署的各種硬體之間的通訊路徑。部署圖是由頂點和弧線組成的集合,用以顯示系統中節點之間的關係。對於系統工程師而言,有助於控制效能、可擴展性、可維護性和可移植性。

線上編輯此部署圖

部署圖將系統架構顯示為軟體實體部署到部署目標的過程。它們可以是規格層級(也稱為類型層級)或實例層級(類似於類圖和物件圖)。

部署圖與組件圖

  • 部署圖用於描述用於在系統中部署軟體組件的硬體組件。
  • 組件圖用於描述系統的軟體實體,而部署圖則用於描述系統的硬體拓撲結構。

5. 套件圖

套件用於將語義相關的元素分組,以組織複雜系統的高階系統元素。 套件圖 是一種用於分組元素並定義其相互依賴關係的模式。它們將模型元素和組件分離為一致的單元或系統。這些圖表簡化了系統存取控制、模型導航、組態管理以及其他語義考量。

編輯此套件圖

  • 套件以資料夾符號表示,模型則以右上角的三角形表示。
  • 套件圖遵循嵌套套件的層次結構,例如,套件圖也可將使用案例分組為邏輯相關的子系統。
  • 若套件 A 中的任何類別依賴於套件 B 中的任何類別,或兩個類別之間存在客戶端-伺服器關係,則兩個套件之間存在依賴關係。
  • 套件圖 可讓我們指定套件之間的依賴關係。依賴關係以虛線箭頭表示。
  • 套件匯入關係被解釋為將目標套件中的元素匯入來源套件。
  • 套件合併是一種兩套件之間的有向關係。它將目標套件的特性加入來源套件的特性中。
  • 套件是其他模型元素的容器。套件可以層次式嵌套,且容器可被刪除或複製,而不會刪除其所包含的元素。

6. 結構組合圖

在 UML 模型中,結構組合圖 透過使用部分、端口和連接器,描述結構化分類器的內部結構

(使用 Visual Paradigm (桌面版) 的結構組合圖工具)

  • 部分:表示包含的結構化分類器所擁有的一个或多個實例的圖示元素
  • 連接器將端口結合在一起,合作關係將實例結合在一起,結構化分類器代表可透過部分之間互動來描述的類別,而封裝式分類器則包含端口。
  • 端口:定義分類器實例與其環境之間,或分類器行為與其內部部分之間的互動點
  • 介面:可被建模為類別,但不會被實例化。具體類別必須實作介面,外部實體可使用介面而無需關心內部實作。
  • 合作關係:使用合作關係使用來定義完成合作特定目標所需的僅有角色與連接

類別 vs 物件 vs 結構組合圖

  • 類別圖顯示構成複雜結構的類別之間的關係,而物件圖則顯示該結構的特定實例。
  • 結構組合圖顯示元件之間如何互動。

7. 設定檔圖

UML 是一種通用的建模語言。然而,在某些情況下,針對特定領域優化的語言會更具優勢。輪廓圖 允許針對特定領域和平台自訂 UML 模型。這些圖表是透過樣式、標籤值定義和約束來定義的。

編輯此輪廓圖

A UML 輪廓 可以透過三種方式建立:建立新的元模型、擴展現有的元模型,或使用語言內建機制。

  • 樣式可讓您透過建立外觀原始且符合您領域語言的新建構模組,來擴充 UML 的詞彙。
  • 標籤值用於為 UML 模型元素添加資訊。可用於程式碼產生、版本控制、組態管理、作者身分等。
  • 約束可透過新增新協定來擴展 UML 建構模組的語意。它們以放置在相關元素附近的括號包覆之字串形式呈現。

行為圖

UML 行為圖用於呈現、指定、建構與文件化系統的動態面向。行為圖可分為以下幾類:用例圖、互動圖、狀態圖與活動圖。

1. 用例圖

一個用例圖 是軟體程式行為的視覺化呈現。它幫助設計師透過指定外部可見的系統行為,來向使用者傳達系統的行為。用例僅代表系統的功能性需求。商業規則、服務品質需求與實作限制必須另行表示。用例圖用於描述系統中個人的角色。可用於規劃需求、驗證硬體設計、測試軟體產品,或建立線上幫助參考。

用例模型於 1986 年由伊瓦爾·雅各布森提出。1992 年,他的著作《物件導向軟體工程》使此技術廣為流傳。用例圖是系統的高階視圖。當不需要詳細資訊時,以較粗略的粒度撰寫用例會更有利。用例圖通常在開發初期建立,以捕捉需求、驗證架構並驅動實作。

編輯此用例圖

  • 用例圖應從參與者的觀點進行結構化,並著重於「做什麼」而非「如何做」。
  • 延伸關係用於將擴展用例中的選擇性行為包含在被擴展用例中。
  • 泛化關係連接兩個用例。子用例可新增或覆蓋父用例的行為。
  • 您系統的參與者是那些使用、安裝、啟動、維護、關閉系統,並從系統獲取資訊或向系統提供資訊的人。

2. 活動圖

活動圖用於呈現系統中的控制流程,並描述執行用例時所涉及的步驟。活動圖是工作流程的圖形化表示,支援選擇、迭代與並行。它們也可包含顯示活動之間資料流的元素。活動圖類似於流程圖,用於呈現系統的動態面向。例如,活動圖可用來顯示從初始狀態到最終狀態的控制流程。

活動圖也用於模擬商業流程與工作流程。它們用於捕捉系統的動態行為,並模擬物件導向或分散式系統的工作流程。

線上編輯此活動圖

  • 活動圖用於模擬系統中的一系列動作或控制流程。
  • 菱形代表具有多條路徑的決策。各條路徑應以條件標示。
  • 分叉節點將單一流入流程分割為多個並行流程。
  • 合併節點將多個並行流程重新合併。
  • 針腳用於整理雜亂的活動圖。它們代表動作的一個輸入或輸出。
  • 訊號用於修改系統中的活動。在活動被修改前,需要有回應。
  • 泳道用於在活動圖中對動作進行分組。

3. 序列圖

序列圖是一種簡單的圖表,用於顯示系統各部分(例如子系統或物件)之間的互動。UML序列圖利用垂直軸來表示時間,展示物件之間的時間互動。序列圖記錄系統與使用者之間或系統與系統之間的互動。序列圖顯示操作是如何執行的。時間隨著頁面向下推移而前進。

在序列圖中,訊息代表物件之間的互動。呼叫訊息代表請求調用一個操作,回傳訊息代表從接收者到呼叫者的信息流,而遞迴訊息代表對呼叫者的調用。

編輯此序列圖

  • 序列圖可用於模擬系統的不同部分如何互動以執行單一使用案例,例如,序列圖可幫助視覺化類別之間的互動,並在新系統中發現責任。
  • 在序列圖中,一個物件會向另一個物件發送訊息。在訊息交換期間,兩個物件都處於活躍狀態。
  • 訊息箭頭用於序列圖中表示訊息。訊息箭頭附帶一個描述,稱為訊息簽名。
  • 當訊息呼叫者不等待訊息處理時,會發送非同步訊息。

4. 狀態機圖

狀態機圖(又稱狀態圖、狀態轉移圖)用於描述系統中元件的不同狀態。它由外部或內部事件所控制。用於模擬系統的動態特性。它描述了從一個狀態到另一個狀態的控制流程,並用於模擬物件從創建到終止的整個生命週期。例如,狀態圖顯示類別物件的所有可能行為以及事件的順序,對於我們理解系統至關重要。

在大多數系統中,複雜性來自不同類別物件之間的互動,因此並非每個類別都需要狀態圖。然而,對於複雜的類別,例如流程控制或通訊系統,則需要狀態圖來模擬物件的行為。

線上編輯此狀態機圖

  • 用黑色實心圓表示系統或類別的初始狀態。
  • 用實線箭頭表示從一個狀態到另一個狀態的轉移
  • 用圓角矩形表示一個狀態。
  • 狀態轉移由事件所觸發。
  • 守衛可阻止某些轉移發生,而內部轉移不會影響狀態轉移。
  • 狀態圖包含初始狀態、中間狀態、轉移以及終止狀態。它還包括一個圓角框、名稱、狀態變數,以及在每個狀態中執行的操作。

什麼是狀態?

狀態是物件生命週期中的某種條件或情況,而事件是可能觸發狀態轉移的刺激。守衛條件是布林表達式的評估,而轉移可能具有多個守衛條件。狀態圖常被用來描述電子元件的行為。狀態圖可包含將狀態拆分為多個狀態、合併狀態、歷史狀態和複合狀態。

活動圖與狀態圖

  • 在UML中,活動圖代表高階活動。特別是,活動圖可以表示並發與協調。
  • 在狀態機圖中,頂點代表物件的狀態,邊代表事件的發生。額外的符號用來記錄活動是如何協調的。

5. 通訊圖

通訊圖顯示物件之間如何互動。它們也顯示物件之間傳遞的訊息。模擬用例和操作功能的物件間訊息傳遞,並記錄顯示傳遞訊息的互動。在通訊圖中,物件(用例中的參與者)以矩形表示,物件之間傳遞的訊息以標記的箭頭表示,箭頭從發送物件開始,到接收物件結束。由於訊息以數字標記,因此容易閱讀。

(由 Visual Paradigm 的通訊圖工具)

  • UML通訊圖顯示系統或軟體中物件之間訊息的發送與接收方式。
  • 線條代表連結,箭頭代表訊息。
  • 訊息按順序編號,並以數字和小數點來描述。
通訊圖與序列圖

通訊圖與序列圖類似,它們呈現相同資訊,但通訊圖依空間排列,而序列圖依時間排列。

例如,它經常整合活動圖與序列圖,並描述實體之間交換的訊息,以達成系統中特定的指定任務。

  • 序列圖顯示訊息的時間順序,以及
  • 通訊圖顯示物件之間的關係。

6. 互動概觀圖

互動概觀圖與活動圖類似,但每個單獨的活動都以一個框架呈現,該框架可包含嵌套的互動圖。UML 互動概觀圖提供了互動模型的高階抽象。它們也能顯示圖之間活動的流程。換句話說,互動圖透過描述訊息的時間順序以及發送與接收訊息的物件的結構組織,來展現系統的動態行為。

(由 Visual Paradigm 的互動概觀圖工具)

互動概觀圖與活動圖類似,但每個單獨的活動都以一個框架呈現,該框架可包含嵌套的互動圖。UML 互動概觀圖提供了互動模型的高階抽象。它們也能顯示圖之間活動的流程。換句話說,互動圖透過描述訊息的時間順序以及發送與接收訊息的物件的結構組織,來展現系統的動態行為。

互動概觀圖包含代表互動圖的節點。例如,一個互動發生(或參考序列圖)可讓您在序列圖中引用另一個序列圖。此功能可讓您將複雜情境分解為可重複使用的較小情境。每個情境都是一種「互動」。

7. 時間圖

時間圖是互動圖的一部分,用以描述沿線性時間軸,生命線內外條件的變化。它顯示物件在特定時間內的互動方式,顯示每個流程步驟所花費的時間,並可用來尋找改進之處。

(由 Visual Paradigm(桌面版)的時間圖編輯器)

  • 時間圖沿線性時間軸顯示互動,並包含訊息、生命線、時間軸、物件或角色等元素。
  • 生命線代表互動中的單一參與者。它可以放置在圖形框或泳道內。
  • 持續時間約束用於判斷約束是否在某段時間內滿足。
  • 時間約束是一種代表時間區間的區間約束。違反時間約束表示系統已失效。

UML 資源