de_DEen_USes_ESfa_IRfr_FRhi_INjapl_PLpt_PTru_RUvizh_CNzh_TW

從文字到UML模型:將問題描述轉換為類圖與序列圖的實務案例研究

引言

在現代軟體工程中,將模糊的商業需求轉化為精確且可執行的系統模型,是一項關鍵技能。文字分析作為自然語言問題陳述與正式UML(統一建模語言)圖表之間的強大橋樑。本案例研究展示了一個完整且逐步的流程,從真實世界問題描述中提取候選類別,透過系統性的排除標準進行優化,並逐步發展成穩健的類圖與序列圖。

以Saturn國際停車場安全系統作為我們的實務範例,我們說明產品經理、業務分析師與軟體架構師如何利用Visual Paradigm的文字分析功能,加速需求發現、減少模糊性,並產出可維護的設計成果。無論您正在建模存取控制系統、企業工作流程,或客戶導向的應用程式,本文所提出的方法論提供了一個可重複使用的框架,將文字轉化為可運作的模型。

Transforming Problem Descriptions into Class and Sequence Diagrams


問題描述

以下問題描述將在本教學中使用。讓我們來看一下。

Saturn Int.的管理層希望提升其建築物與現場的安全措施。他們希望阻止非公司人員使用其停車場。

Saturn Int.已決定向所有員工發放身份證。每張證件記錄員工的姓名、部門與編號,並提供進入公司停車場的權限。員工被要求在現場時佩戴此證件。

停車場入口設有柵欄與感應卡機。當駕駛者駕車進入停車場時,需將身份證插入卡機。卡機隨即驗證卡號是否為系統所知。若卡號被識別,卡機會發出訊號,觸發柵欄升起。駕駛者便可駕車進入停車場。

停車場出口處另設有一道柵欄,當車輛欲離開停車場時,會自動升起。

當停車場無空位時,入口處的顯示牌會顯示「已滿」。只有當車輛離開時,顯示牌才會關閉。

另有一種訪客專用卡片,同樣允許進入停車場。此卡片記錄卡號與當前日期。這些卡片可事先寄出,或於接待處領取。所有訪客卡片必須在訪客離開Saturn Int時歸還至接待處。


從文字中識別類別

建立文字分析

  1. 建立新專案。選擇 專案 > 新增 從主選單中選擇。在 新專案 視窗中,將專案命名為 教學 並點選 建立空白專案 以確認。

  2. 建立新的文字分析。選擇 圖表 > 新增 從主選單中。

  3. 在 新圖表 視窗中,選擇 文字分析 並按一下 下一步。輸入 安全改進 作為圖形名稱,然後按一下 確定.

    Create Textual Analysis

  4. 這將開啟文字分析編輯器。複製上方提供的問題描述,並貼到編輯器中。可透過按下 Ctrl-V 或在編輯器上按右鍵並選擇 貼上.

    Identify candidate class

從文字中識別候選物件

閱讀問題描述以識別候選類別。當找到候選項目時,於文字段落上按右鍵並選擇 將文字新增為類別 來自浮出式功能表。

Problem statement pasted

以下是取得的候選類別清單:

土星公司 安全措施 建築物 場地
非公司成員 停車場 身份證 員工
姓名 部門 編號 公司員工
存取 障礙 讀卡器 駕駛員
卡號 系統 信號 出口
為客人提供的另一種卡片 接待 客人卡片 訪客

到目前為止,文字分析編輯器應該看起來像這樣:

Candidate classes identified

拒絕候選物件

在本節中,這些候選類別將根據一組拒絕規則進行審查。到本節結束時,將獲得一個類別模型的清單。

現在,根據以下拒絕規則審查候選類別的清單:

  • 重複:如果兩個或多個物件只是同一事物的不同名稱。

  • 無關:在問題領域中存在,但並非預期的物件。

  • 模糊:仔細考慮詞語時,有時會發現它們並無明確意義,無法作為系統中有用的基礎。

  • 過於廣泛:含義太寬泛。

  • 屬性:作為物件的屬性。

  • 關聯:實際上代表物件之間的關係。

  • 角色:有時物件是根據其在系統特定部分所扮演的角色來指稱的。

下表列出了審查結果:

候選類別 接受/拒絕 拒絕原因
土星國際管理 拒絕 與系統無關
安全措施 拒絕 模糊
建築物 拒絕 與系統無關
場地 拒絕 與系統無關
非公司成員 拒絕 與系統無關
停車場 接受
身份證 接受
員工 拒絕 與「公司員工」重複
姓名 拒絕 屬性
部門 拒絕 屬性
數量 拒絕 屬性
公司員工 拒絕 角色
存取 接受
障礙 接受
讀卡機 接受
駕駛員 拒絕 角色
卡號 拒絕 屬性
系統 拒絕 過於廣泛
信號 接受
退出 拒絕 與系統無關
另一種給訪客的卡 拒絕 與訪客卡重複
接待 拒絕 與系統無關
訪客卡 接受
訪客 拒絕 角色

為了區分被接受和被拒絕的候選類別,我們將被接受的類別的高亮顏色改為綠色。要做到這一點,請點擊黃色高亮的單元格,並從顏色選擇器中選擇綠色。

Change highlight color

因此,現在獲得的候選類別剩餘清單如下:

停車場 身份證 存取 障礙
讀卡器 信號 訪客卡

重新表述已識別的類別

讓我們重新表述被接受的候選類別:(1) 統一單數和複數用法中的名詞形式,(2) 准確反映提取文本的含義。

請閱讀下方表格,了解所需的更改及更改的說明。

提取的文本 重新表述為 原因
停車場
身份證 員工卡 「身份證」字面意思是各種卡片,但根據段落內容,「身份證」一詞來自名詞短語「給所有員工的身份證」,因此實際上指的是員工卡。我們應重新表述以避免混淆。
存取
障礙
讀卡器
信號
出口
訪客卡 訪客卡 改為使用單數名詞,使其與其他詞語一致

相應地更新候選類別的名稱:

Renaming candidate

從文本創建類模型元素

您已識別出一組類別。要將它們用於模型建構,您需要將它們從文字轉換為模型元素。

  1. 在表格中選擇七個類別。要執行多選操作,請按住 Ctrl 鍵,並逐一點擊各行。

  2. 右鍵點擊您的選擇,並選擇 建立模型元素 從彈出式功能表中。

    Create element

  3. 系統會提示您在圖形中顯示所建立的元素。請保持選擇 建立新圖形 選中。將類別圖形重新命名為 停車場系統 並點擊 建立.

    Visualize classes into class diagram
    這將建立一個類別圖形。
    Class diagram formed


建立類別模型 – 識別結構關係

您已獲得在類別圖形中可視化的類別集合。現在,請透過關聯、泛化和依賴等關係連接器將它們相互連接,以識別其結構關係。下圖顯示了結果。在此過程中,可能會新增類別,例如在此範例中新增「卡」類別作為「員工卡」和「訪客卡」子類別的超類別。

Class diagram updated


建立互動模型 – 識別屬性和操作

序列圖用於可視化物件之間的互動,也就是上述識別出的類別的實例。在此過程中,將識別出屬性和操作,從而使類別模型完整。讓我們建立一個序列圖,以可視化公司員工駕車進入停車場的情境。

  1. 建立一個序列圖。選擇 圖形 > 新增 從主功能表中。

  2. 在 新圖形 視窗中,選擇 序列圖 並點擊 下一步。選擇 空白 作為範本並按一下 下一步。輸入 汽車停車場(使用員工卡) 作為圖表名稱並按一下 確定.

    Create sequence diagram

  3. 此情境從一位駕駛員將其員工卡插入讀卡器開始。讓我們建立一個參與者 員工。要建立參與者,請選擇 參與者 工具,從圖表工具列中拖曳至圖表上。

    Create actor

  4. 我們需要將讀卡器顯示為物件。除了建立生命線之外,讓我們從 讀卡器 類別建立物件實例。有幾種方法可以達成此目的。其中一種方法是透過 模型探索器。按一下 模型探索器 標籤,位於應用程式視窗左側(或選擇 檢視 > 面板 > 模型探索器 如果標籤未出現)。然後,將類別讀卡器拖曳至圖表上。

    Drag reader class onto diagram

  5. 選擇 生命線 以建立,當您被提示選擇類型時。

  6. 生命線會自動命名為「讀卡器」,依照分類器的名稱。由於名稱是可選的,讓我們將其移除。這也讓圖表更容易閱讀。

    Card reader lifeline created

  7. 連接 員工 與 : 讀卡器。將滑鼠指標移至參與者 員工。按一下 資源目錄 按鈕並拖曳至生命線 : 卡片讀取器.

    To create sequence message

  8. 釋放滑鼠指標並選擇 訊息 來自 資源目錄.

    Selecting sequence message to create

  9. 輸入 插入員工卡 作為訊息的名稱。

    Sequence message created

  10. 作為輸入裝置,卡片讀取器接收卡片後,會要求系統進行驗證。讓我們為系統建立一條生命線。由於我們沒有這樣的類別,因此直接建立生命線。拖曳 生命線 從圖表工具列拖曳至圖表。將生命線命名為 汽車停車系統.

    Create car parking system lifeline

  11. 建立訊息 verify card() 來自 : 卡片讀取器 至 汽車停車系統.

    Verify card message created

  12. 有兩種可能的結果:成功或失敗。我們將同時模擬這兩種情況。在UML序列圖中,可以使用替代合併片段來模擬多種可能的流程。建立一個覆蓋參與者和生命線的替代合併片段。隨著越來越多的生命線被加入,我們將調整其大小以涵蓋更多生命線。

    Alternative combined fragment created

  13. 如果成功,系統將載入員工卡的記錄。建立一個自我訊息 load staff()。為達成此目的,將滑鼠指標移至 汽車停車系統然後按一下資源目錄,然後選擇自我訊息 -> 生命線來自資源目錄。輸入自我訊息的名稱。

    Create self message

  14. 依照步驟 4 來視覺化類別員工卡作為生命線。再次,移除其名稱。

    Staff card class visualized

  15. 假設最後存取時間將設定為員工卡的記錄。以設定訊息來表示此動作設定最後存取時間().

    Sequence message created

  16. 將會建立一筆存取記錄。讓我們在圖表上視覺化存取類別為生命線,然後以建立訊息連接至它。別忘了擴大選擇性合併片段以涵蓋生命線。

    Create message created

  17. 也會建立一個訊號以觸發欄杆升起。讓我們在圖表上視覺化訊號類別在圖表上,然後以建立訊息連接至它。截至目前為止,您的順序圖應與下方圖示相似。

    Sequence diagram updated

  18. 升起欄杆。視覺化欄杆類別為生命線,並以升起()訊息連接。在此我們將生命線命名為入口因為入口和出口都有欄杆,而在此圖中我們指的是入口處的欄杆。

    Barrier class visualized

  19. 最後,要求卡片讀取器顯示訊息,以表示員工卡驗證成功。建立一個順序訊息「顯示成功訊息」,連接於汽車停車系統: 卡片讀取器.

    Show success message

  20. 當卡片無法驗證時會發生什麼情況?讓我們在 alt. 合併片段的下方部分進行建模。假設系統會要求卡片讀取器顯示驗證失敗訊息。請在圖中創建這樣的訊息。

    Show fail message

  21. 無論成功或失敗,員工卡片在驗證程序後都會被彈出。讓我們創建序列訊息彈出卡片 連接 汽車停車系統 和 : 卡片讀取器.

    Eject card message created

  22. 最後,創建一個從 : 卡片讀取器 返回到 角色 員工。要執行此操作,請先創建訊息,然後右鍵點擊它並從彈出式選單中選擇 類型(未指定)> 回覆 從彈出式選單中。

    Card returned message created

  23. alt. 合併片段的兩個部分稱為運算元。將運算元的條件作為約束條件輸入。右鍵點擊合併片段左上角的標籤 alt 並從彈出式選單中選擇 運算元 > 管理運算元 從彈出式選單中。在彈出視窗中,將兩個運算元的約束條件分別設為 卡片已接受 和 卡片被拒絕 分別。

Manage operand

  1. 讓我們從序列訊息創建操作。首先,從停車系統的生命線創建一個類別。右鍵點擊生命線,並從選單中選擇 類別 > 建立類別「停車系統」 從彈出式選單中。

    Create class from lifeline

  2. 請參考以下圖像。針對每個突出顯示的連接器,右鍵點擊它並選擇 輸入 > 呼叫 > 建立作業從彈出式功能表中選擇。

    Create operations

  3. 回到類別圖。作業會自動顯示在類別模型中。

    Class model updated

透過為不同情境不斷建立序列圖,類別模型將逐漸被豐富,包含系統所需的所有作業與屬性。


結論

將自然語言需求轉化為精確的UML模型,既是一門藝術,也是一門科學。本案例研究顯示,透過有紀律的方法——從文字分析開始,應用系統性的排除標準,重新表述以提高清晰度,並透過類別圖與序列圖反覆修正——團隊能夠將模糊的問題陳述轉化為穩健且可執行的系統設計。

Saturn國際停車場的範例說明,即使看似簡單的需求也包含多層複雜性:多種參與者類型、條件流程、硬體互動與狀態管理。透過利用Visual Paradigm的整合式建模環境,實務工作者可從最初的文本到最終程式碼維持可追溯性,確保圖表間的一致性,並有效協作於技術與非技術利益相關者之間。

實務工作者的關鍵收穫:

  • 從廣泛的候選項目提取開始,再透過明確的排除規則進行精煉

  • 使用單數且一致的命名規範以減少歧義

  • 善用序列圖以發現隱藏的作業與屬性

  • 將建模視為迭代過程——每個情境都豐富了類別模型

  • 維持需求、模型與實作之間的雙向可追溯性

無論您是設計存取控制系統、企業工作流程,還是客戶導向的應用程式,本文提出的方法論都提供了一個可重複、可擴展的框架,將文字轉化為可執行的軟體模型。


參考文獻

  1. Visual Paradigm UML工具功能:全面介紹Visual Paradigm的UML建模功能,包含對所有14種UML 2.x圖表類型的支援,以及AI輔助建模功能。
  2. 14種UML圖表類型概覽:詳細指南,說明結構與行為性UML圖表及其在軟體設計中的適當應用情境。
  3. Visual Paradigm使用者指南PDF:官方文件,涵蓋Visual Paradigm的安裝、介面導航與核心建模工作流程。
  4. UML建模文件:逐步說明如何在Visual Paradigm環境中建立、編輯與管理UML圖表。
  5. 什麼是UML圖表?:適合初學者的UML概念、圖表類型介紹,以及其在軟體架構與設計溝通中的角色。
  6. 使用用例捕捉需求:實用指南,說明如何使用用例圖與文字分析來探詢、記錄與驗證系統需求。
  7. AI輔助UML類別圖生成器:介紹Visual Paradigm的AI功能,可自動根據自然語言描述生成類別圖。
  8. PlantUML轉換為Visual圖表教學: 影片教學示範如何將 PlantUML 程式碼轉換為 Visual Paradigm 內的互動式、可編輯 UML 圖表。
  9. 什麼是 UML?: 對統一建模語言原則、歷史及其在現代軟體工程實務中重要性的基礎說明。
  10. 程式工程工具: 對雙向工程功能的描述,支援多種程式語言的程式碼產生與反向工程。
  11. 使用 ORM 的資料庫對應: 使用物件-關聯對應技術,從 UML 類別圖表產生資料庫結構與持久層的指南。
  12. 資料庫工程的優勢: 解釋整合式資料庫建模如何提升資料一致性、縮短開發時間,並支援敏捷迭代。
  13. Visual Paradigm 精選作品集: 展示使用 Visual Paradigm 建立的範例專案、圖表範本與產業特定的建模範例。
  14. 安裝 Visual Paradigm: 官方安裝指南,涵蓋系統需求、授權啟用與初始設定步驟。
  15. Eclipse 中的 UML 整合: 文件說明如何將 Visual Paradigm 建模工具直接嵌入 Eclipse IDE,以實現無縫的開發工作流程。
  16. 免費 UML 工具選項: 比較 Visual Paradigm 社群版功能與專業功能,協助評估建模解決方案的團隊做出選擇。
  17. UML 建模軟體流程: 簡述 UML 工具如何融入迭代式開發流程,包括敏捷、瀑布與混合方法論。
  18. 視覺化建模工具功能: 詳細的功能清單,突出智慧元件重用、語法驗證與資源目錄功能,展現專業建模工具的差異性。
  19. 企業解決方案用的 UML 工具: 以企業為導向的描述,說明 Visual Paradigm 的可擴展性、協作功能,以及與需求管理與敏捷規劃工具的整合。
  20. Visual Paradigm 首頁: Visual Paradigm 的主要網站,提供產品下載、教學影片、社群論壇與支援資源,供建模實務工作者使用。
  21. UML 教學影片合集: 精選的逐步教學影片資料庫,涵蓋從初學到進階的多種圖表類型 UML 建模技巧。
  22. 繁體中文 UML 工具指南: 本地化資源,為使用繁體中文的使用者與團隊提供 UML 建模指引與產品資訊。