用例圖與序列圖互為補充UML工具能夠協同工作,以提供對系統功能與行為的全面理解。本指南將帶您逐步了解如何有效地結合使用這些圖表,並提供實用範例與詳細說明。
用例圖代表系統的高階功能(用例)以及與這些功能互動的外部參與者(使用者或其他系統)。它們有助於識別什麼系統從使用者觀點應執行的內容。用例以橢圓形表示,參與者以人形圖示表示,而關係則顯示互動或依賴關係。
範例:考慮一個線上銀行系統。用例圖可能包含如客戶、銀行管理員與外部支付網關等參與者。用例可能包括「登入」、「轉帳」、「檢視帳單」與「管理帳戶」。關係將顯示哪些參與者與哪些用例互動,從而提供系統功能範圍的清晰概覽。
序列圖模擬如何透過顯示物件(類別的實例)之間在時間上交換訊息的順序,以實現特定用例。它們呈現物件的生命線,以及執行用例行為所需互動的時間順序流程。
範例:針對線上銀行系統中的「轉帳」用例,序列圖將顯示客戶、銀行帳戶、交易處理器與外部支付網關等物件之間的互動。圖表將展示訊息的順序,例如「請求轉帳」、「驗證帳戶」、「處理交易」與「確認轉帳」,從而提供實現功能所需的動態行為與協作的詳細視圖。
識別並建立系統中關鍵用例與參與者的模型。這能提供系統功能範圍與使用者互動的清晰概覽。
範例:針對圖書館管理系統,用例圖可能包含圖書館員、會員與管理員等參與者。用例可能包括「借書」、「還書」、「搜尋目錄」與「管理庫存」。關係將顯示哪些參與者與哪些用例互動,有助於定義系統的功能需求。
選擇一個特定的用例(例如「借書」),以進一步探討。此用例將作為您序列圖的基礎。
範例:在圖書館管理系統中,選擇「借書」用例需識別會員借書所需的關鍵互動與步驟。這包括檢查書籍的可借閱狀態、更新會員帳戶,以及記錄交易。
模擬用例情境中涉及的物件(例如會員、書籍、圖書館資料庫、交易日誌)。依序展示這些物件之間的互動(訊息),以完成用例。這能清楚說明實現功能所需的動態行為與協作。
範例: 對於「借書」用例,序列圖將展示成員、書籍、圖書館資料庫和交易日誌之間的互動。該圖將展示訊息的順序,例如「請求書籍」、「檢查可借性」、「更新會員帳戶」和「記錄交易」,提供實現功能所需的動態行為與協作的詳細視圖。
除了主要流程外,還應建立額外的序列圖,以表示用例內的替代流程或例外流程。
範例:對於「借書」用例,替代流程可能涉及書籍不可借的情況。此替代流程的序列圖將展示如「請求書籍」、「檢查可借性」、「通知不可借」和「建議替代品」等互動,提供系統如何處理例外情況的詳細視圖。
透過將序列圖連結回其對應的用例,維持可追溯性,確保高階需求與詳細互動之間的清晰導航。
範例:在圖書館管理系統中,將「借書」用例的序列圖連結回用例圖,可確保利益相關者能輕鬆在高階概覽與詳細互動之間導航。這種可追溯性有助於在整個開發過程中維持清晰與一致性。
| 圖表類型 | 目的 | 關鍵元素 | 在開發中的角色 |
|---|---|---|---|
| 用例圖 | 捕捉系統功能與參與者 | 參與者、用例、關係 | 定義 系統做什麼系統做什麼 |
| 序列圖 | 模擬物件在時間上的互動 | 物件(生命線)、訊息 | 定義 系統如何動態運作系統如何動態運作 |
線上書店的用例圖識別出如顧客與管理員等參與者,以及「下訂單」和「管理庫存」等用例。關係顯示哪些參與者與哪些用例互動,提供系統功能範圍的清晰概覽。
範例:
順序圖透過展示顧客、購物車、訂單和庫存物件之間的互動順序,來模擬「下訂單」使用案例。這清楚地說明了實現功能所需的動態行為與協作。
範例:
透過結合使用案例圖與順序圖,您既能獲得系統功能的高階概觀,也能深入了解實現這些功能所需的互動細節,從而促進清晰的溝通與有效的系統設計。
使用案例圖:
「開立處方」的順序圖:
用例圖:
「結帳」的序列圖:
透過結合使用用例圖與序列圖,您可以全面理解系統的功能與行為。用例圖提供系統應執行功能的高階概覽,而序列圖則呈現系統動態行為的詳細視圖。這種組合確保了清晰的溝通、有效的系統設計,以及複雜系統的成功實現。
參考資料:
[1] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2577
[2] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2577_sequencediag.html
[3] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2575/6362_drawinguseca.html
[4] https://www.visual-paradigm.com/learning/handbooks/software-design-handbook/sequence-diagram.jsp
[5] https://www.visual-paradigm.com/VPGallery/diagrams/Sequence.html
[7] https://www.visual-paradigm.com/support/documents/vpuserguide/124_interoperabi.html
[8] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2575_usecasediagr.html