OMT 起源與定位
- 由美國通用電氣 (GE) 研究中心提出 (Rumbaugh 等)。
- 以面向物件思想為基礎,透過抽象構造三個相關模型,全面捕捉問題空間資訊。
- 三模型互補:功能模型定義「做什麼」、動態模型定義「何時做」、物件模型定義「對誰做」。
三模型對照表
| 模型 | 核心問題 | 關鍵圖表 | 焦點層面 |
| 物件模型 | 對誰做 | 類別圖、物件圖 | 靜態結構:類別、屬性、操作、關係 |
| 動態模型 | 何時做 | 狀態圖、事件追蹤圖/序列圖 | 控制邏輯:狀態轉換、事件順序、時間 |
| 功能模型 | 做什麼 | 資料流圖 (DFD) | 資料轉換:輸入→處理→輸出、資料儲存、約束 |
物件模型 (Object Model)
目的
描述系統靜態結構,找出與應用程式密切相關的概念。
建模步驟
- 確定物件類別:從需求/論域識別核心實體。
- 定義資料字典:描述類別、屬性、關係的標準化術語表。
- 用繼承組織與簡化:提取共同屬性/操作至基類別,減少重複。
- 測試存取路徑:驗證導航路徑支援所有查詢/操作需求。
- 根據關係與功能分組建立模組:高內聚低耦合劃分子系統/套件。
UML 類別圖核心符號 (OMT 衍生)
- 類別:矩形三分區 (名稱/屬性/操作)。
- 關聯:實線、角色名、多重度 (1, 0..1, 1..*, 0..*)。
- 繼承:空心三角箭頭指向基類別。
- 聚合:空心菱形指向整體。
- 組合:實心菱形指向整體。
- 依賴:虛線箭頭。
動態模型 (Dynamic Model)
目的
著重控制邏輯,描述物件狀態隨時間變化的序列。
核心圖表
- 狀態圖:狀態 (圓角矩形)、事件/轉換 (箭頭)、守衛條件 [condition]、動作 /action。描述單一類別生命週期。
- 事件追蹤圖 / 序列圖:時間軸垂直、物件生命線、訊息箭頭、啟動桿。描述特定場景 (Scenario) 的物件互動序列。
場景與腳本
- 事件:物件間單一訊息。
- 場景/腳本:特定環境下一系列事件序列,起始於外部輸入事件,終止於外部輸出事件。
- 一個場景對應一個事件追蹤圖/序列圖。
建模步驟
- 準備典型交互序列場景 (正常/替代/例外流程)。
- 確定物件間事件,為每場景建立事件追蹤圖。
- 為每個系統建立事件流程圖 (彙總所有場景事件)。
- 為具重要動態行為的類別建立狀態圖。
- 檢驗不同狀態圖間共享事件的一致性與完整性。
功能模型 (Functional Model)
目的
著重資料傳遞與處理,定義輸入經運算轉換為輸出的過程,不考慮執行時序。
核心圖表:資料流圖 (DFD)
- 外部實體 (矩形)、處理序 (圓角矩形/圓)、資料儲存 (開口矩形)、資料流 (箭頭)。
- 分層分解:上下文圖 (第 0 層) → 第 1 層 → 第 2 層... 每層細化上層處理序。
- 包含物件模型內部資料約束 (如唯一性、參考完整性)。
建模步驟
- 確定輸入與輸出值 (外部實體提供/接收)。
- 用 DFD 表示功能依賴關係 (資料流向)。
- 具體描述每個功能 (處理序邏輯、演算法、業務規則)。
- 確定約束 (資料完整性、業務規則、效能指標)。
- 確定功能優化準則 (吞吐量、延遲、資源使用率)。
三模型整合與一致性檢查
| 檢查點 | 物件模型 | 動態模型 | 功能模型 |
| 操作/服務 | 類別操作清單 | 狀態圖轉換動作 / 序列圖訊息 | DFD 處理序 |
| 資料/屬性 | 類別屬性 | 事件參數 / 狀態變數 | 資料流 / 資料儲存 |
| 控制流程 | 狀態機 (狀態/轉換) | 狀態圖 / 事件順序 | DFD 分解層次 |
| 邊界 | 介面/公開操作 | 外部事件/輸出事件 | 外部實體/資料流 |
三模型共享核心詞彙 (類別名、屬性名、操作名、事件名),確保一致性。
現代實踐映射
- 物件模型 → 領域模型 / 類別圖 / 實體關係圖 (DDD/ER)。
- 動態模型 → 序列圖 / 狀態圖 / 活動圖 / 事件風暴 (UML/Event Storming)。
- 功能模型 → 資料流圖 / 用例圖 / 業務流程圖 (BPMN) (DFD/Use Case/BPMN)。