Skip to main content

Command Palette

Search for a command to run...

Lld - 循序圖

Published
•1 min read•View as Markdown
Lld - 循序圖

循序圖(Sequence Diagram)是統一建模語言(UML)中的一種圖形化表示方法,用於描述系統中對象之間的動態互動。它著重於描述物件之間訊息傳遞的時間順序,以時間為縱軸,物件為橫軸,清楚地展示了物件如何互動以完成特定的使用案例或場景。循序圖常用於詳細設計階段,幫助開發團隊理解和驗證系統的行為。

循序圖的主要目的是幫助開發者和設計者理解系統中對象之間的互動過程,並作為系統設計和實現的工具。它可以用於需求分析、系統設計、測試案例設計和文檔編寫等階段。

循序圖的基本元素

  1. 物件 (Object):代表系統中的一個實例,以垂直的生命線 (Lifeline) 表示。生命線是一條垂直的虛線,物件的名稱位於生命線的頂端,通常使用 物件名稱:類別名稱 的格式表示,如果物件名稱不重要,也可以只寫類別名稱。

    • 範例: user:User、orderProcessor:OrderProcessor、:ShoppingCart。
  2. 訊息 (Message):代表物件之間傳遞的訊息,以箭頭表示。箭頭的方向表示訊息的傳遞方向。訊息可以包含參數和回傳值。

    • 同步訊息 (Synchronous Message): 發送者發送訊息後會等待接收者回覆,才會繼續執行。以實心箭頭表示。

    • 非同步訊息 (Asynchronous Message): 發送者發送訊息後不會等待接收者回覆,會繼續執行。以開放箭頭表示。

    • 回覆訊息 (Return Message): 表示方法的回傳值,以虛線箭頭表示。

  3. 啟動方塊 (Activation Box/Focus of Control):表示物件執行操作的時間段,是一個覆蓋在生命線上的矩形。啟動方塊的長度表示物件執行操作的時間長短。

  4. 物件生命週期 (Object Lifeline):生命線的起始和結束可以表示物件的創建和銷毀。

    • 物件創建 (Object Creation): 以指向物件生命線的箭頭表示。

    • 物件銷毀 (Object Destruction): 以生命線底端的「X」符號表示。

循序圖的用途

  • 詳細描述物件之間的互動: 循序圖可以清楚地展示物件如何互動以完成特定的功能或場景。

  • 驗證系統設計的正確性: 透過循序圖,可以檢驗系統的設計是否合理,是否存在潛在的問題。

  • 程式碼設計的參考: 循序圖可以作為程式碼設計的參考,幫助開發人員理解物件之間的訊息傳遞和方法調用。

  • 測試案例的基礎: 循序圖可以作為測試案例的基礎,幫助測試人員設計測試場景和驗證系統的行為。

循序圖的注意事項

  • 著重於時間順序: 循序圖的核心是描述訊息傳遞的時間順序,因此箭頭的方向和位置非常重要。

  • 保持圖表的簡潔和清晰: 避免在一個圖中包含過多的物件和訊息,可以將複雜的場景分解成多個較小的圖表。

  • 搭配使用案例圖和類別圖使用: 循序圖通常會搭配使用案例圖和類別圖使用,以更全面地描述系統的行為和結構。

循序圖實踐

  1. 明確定義場景和目的:

    • 針對特定的使用案例或場景繪製: 循序圖應該針對特定的使用案例或場景繪製,而不是試圖用一張圖涵蓋所有可能的互動。

    • 明確圖表的目的: 在繪製之前,先確定圖表要表達的重點,例如:展示某個功能的運作流程、分析某個效能瓶頸。

  2. 選擇適當的物件:

    • 只包含必要的物件: 只包含參與互動的物件,避免包含過多的物件,使圖表變得複雜難懂。

    • 使用清晰的物件名稱: 使用清晰、簡潔的物件名稱,例如 user:User、order:Order,清楚地表達物件的類別和角色。

    • 考慮物件的生命週期: 如果物件的創建和銷毀是場景的重要部分,則應該在圖中明確表示。

  3. 正確使用訊息:

    • 使用清晰的訊息名稱: 使用動詞或動詞片語描述訊息,例如 placeOrder()、checkInventory(),清楚地表達訊息的意圖。

    • 區分同步和非同步訊息: 正確使用實心箭頭 (同步訊息) 和開放箭頭 (非同步訊息),準確表達訊息的傳遞方式。

    • 標示訊息的參數和回傳值: 如果訊息有參數或回傳值,應該在訊息旁標示,以提供更詳細的資訊。

    • 避免過度使用回覆訊息: 如果回覆訊息只是簡單地確認訊息已收到,則可以省略,以簡化圖表。

  4. 清晰地表達時間順序:

    • 從上到下表示時間流逝: 圖表的頂部表示時間的開始,底部表示時間的結束。

    • 使用垂直生命線和啟動方塊: 使用垂直生命線表示物件的存在時間,使用啟動方塊表示物件的活動時間。

    • 避免訊息線交叉: 盡量避免訊息線交叉,以保持圖表的清晰易讀。

  5. 恰當地使用組合片段:

    • 使用組合片段表達複雜的控制流程: 使用組合片段 (例如:alt、opt、loop、par、break) 來表達條件判斷、選擇、迴圈、並行等複雜的控制流程。

    • 清晰地標示組合片段的條件: 在組合片段的左上角標示片段的類型和條件,例如 alt [condition1]、loop [i=1 to 10]。

  6. 保持圖表的簡潔和清晰:

    • 避免在一個圖中包含過多的訊息: 如果場景過於複雜,可以將其分解成多個較小的循序圖。

    • 使用適當的圖表大小: 避免圖表過大或過小,以方便閱讀和列印。

    • 使用一致的佈局和排版: 使圖表易於閱讀和理解。

  7. 與利害關係人共同審閱:

    • 與開發團隊和利害關係人溝通: 與開發團隊和利害關係人共同審閱循序圖,確保其準確地反映了系統的行為。

More from this blog

筆記 - 軟體工程: 現代化方式 測試

概述 軟體測試的重要性:軟體系統容易出現各種bug,測試是防止bug進入生產環境的重要手段。 測試的演變:從傳統的瀑布模型到敏捷方法,測試從單獨階段演變為與開發過程緊密結合。 自動化測試:現代測試強調自動化,開發者不僅實現系統類,還要編寫測試這些類的代碼。 測試金字塔 測試金字塔是一種用來分類和優先排序自動化測試的模型,最早由Mike Cohn提出。它將測試分為三個層次,從底部到頂部依次為單元測試、集成測試和端到端測試。每個層次的測試數量和複雜度隨著金字塔的高度增加而減少。 單元測試(...

Jan 4, 20252 min read
筆記 - 軟體工程: 現代化方式 測試

筆記 - 軟體工程: 現代化方式 架構

架構定義 架構的定義在軟體工程中具有重要意義,通常涉及高層次的設計。這意味著重點從個別類別的組織和介面轉移到更大的單位,如包、組件、模組、子系統、層或服務。具體的術語可能會有所不同,但核心概念是相同的:架構關注的是系統的整體結構和組織,而不是細節 。 這種高層次的設計方法有助於確保系統的可擴展性、可維護性和可重用性。通過將系統分解為更大的單位,開發人員可以更容易地理解和管理複雜的軟體系統。 系統與元件 架構和元件之間有著密切的關係。架構定義了系統的高層次設計和組織結構,而元件是實現這些設計和結構...

Jan 1, 20251 min read

筆記 - 軟體工程: 現代化方式 設計原則

設計原則 設計原則是軟體工程中的核心概念,旨在指導開發者如何構建高質量、可維護和可擴展的軟體系統。這些原則提供了一套經過驗證的方法,幫助開發者處理複雜性,提高系統的穩定性和靈活性。 概念完整性 概念完整性是指系統設計中的每個概念應該是完整和一致的。這意味著每個模塊或類應該有明確的職責和界限,並且應該與系統的其他部分協同工作。概念完整性有助於提高系統的可理解性和可維護性。 資訊隱藏 資訊隱藏是指隱藏模塊內部的細節,只暴露必要的接口。這有助於減少模塊之間的依賴性,提高系統的模塊化和可維護性。資訊隱藏...

Dec 29, 20241 min read
筆記 - 軟體工程: 現代化方式 設計原則

筆記 - 軟體工程: 現代化方式 需求

需求定義 需求定義了系統應該做什麼以及其運行的約束條件。系統應該做什麼屬於功能需求,而約束條件則由非功能需求描述。功能需求與非功能需求的區別 功能需求定義了系統應該執行的具體功能和行為,這些需求描述了系統在特定輸入或條件下應該如何運作,並且通常與用戶或其他系統的互動有關。 非功能需求與系統的質量屬性相關,包括性能、可用性、安全性、可移植性、隱私性以及內存和磁碟使用情況等。 需求規範的重要性 需求規範是軟體開發過程中的關鍵階段,即使系統設計優良、使用現代編程語言、採用最佳開發流程並具有高測...

Dec 29, 20242 min read
筆記 - 軟體工程: 現代化方式 需求

筆記 - 軟體工程:現代化方式 流程

敏捷宣言 最早的軟體開發流程,如 1970 年代開發的瀑布流程,遵循線性、順序的方法。通常,項目從需求規範階段開始,經過實施、測試、部署和維護階段。 採用這種嚴格順序的方法是合乎邏輯的,傳統工程領域的項目通常遵循基於詳細和前期計劃的順序流程。新興的軟體工程領域最初模仿了電子、土木、機械和航空航天工程等更成熟學科的流程。然而到了 1980 年代,軟體開發與其他工程實踐有顯著不同,這些項目經常超出時間和預算。 2001 年,十七位軟體行業專業人士在猶他州的 Snowbird 聚會,討論並提出一種替代...

Dec 29, 20242 min read
筆記 - 軟體工程:現代化方式 流程

Slime21023 SoftwareDev

15 posts