OOA 定位與產出
| 階段 | 焦點 | 核心任務 | 產出 |
| 面向物件分析 (OOA) | 問題論域 | 形式化說明應用問題、識別物件協作 | 概念模型:類別、關係、屬性、操作、主題 |
| 傳統系統分析 | 功能分解 | 定義目標系統功能 | 面向過程文件:資料流圖、處理規範 |
分析雙軌:論域分析 vs 應用分析
| 階段 | 目標 | 範圍 | 產出特性 |
| 論域分析 | 建立論域知識庫、理解業務本質 | 超出當前應用、廣泛概念識別 | 論域模型:概念、關係、規則、約束 |
| 應用分析 | 將論域知識映射至具體應用需求 | 受用戶需求限制、縮減資訊量 | 應用模型:具體類別、操作、介面、互動 |
論域分析視野越廣,應用分析保留彈性越大,需求變更時適應力越強。
Coad-Yourdon OOA 五層次 (概念模型構造順序)
| 層次 | 焦點 | 關鍵活動 | 產出組成 |
| 1. 類別與物件 | 識別核心概念實體 | 責任分析、環境調查、類別/物件清單 | 類別圖雛形 |
| 2. 結構 | 建立類別間靜態關係 | 一般-特殊 (繼承)、整體-部分 (聚合/組合) | 結構圖 |
| 3. 屬性 | 定義物件狀態資訊 | 識別屬性、安排位置、實例連接、限制條件 (唯讀/範圍) | 屬性清單、約束規則 |
| 4. 服務 | 定義物件行為與通訊 | 狀態識別、必要服務、訊息連接、服務描述 | 操作契約、序列圖雛形 |
| 5. 主題 | 劃分大型模型邊界 | 識別主題、改進細化、加入分析模型 | 主題架構、模組劃分 |
OOA 執行步驟詳細指南
- 識別類別與物件:從應用領域出發,分析責任、調查環境,確定核心類別/物件。
- 識別結構:
- 一般-特殊:基類別/衍生類別 (is-a)。
- 整體-部分:聚合 (has-a, 生命週期獨立) / 組合 (contains, 生命週期綁定)。
- 識別屬性:狀態資訊、實例連接、限制條件 (唯讀、範圍、格式)、描述 (名稱+說明)。
- 識別服務:物件狀態機、必要操作、訊息流、服務描述 (前置/後置條件)。
- 識別主題:大型模型劃分邊界、提供整體框架、協助溝通與管理。
概念模型特性
- 以概念為中心:非功能分解,非資料結構導向。
- 平台獨立:無特定程式語言/資料庫/UI 技術細節。
- 可驗證:領域專家可閱讀確認 (用 UML 類別圖/術語表)。
- 可追溯:每個元素對應需求/規則/術語來源。
常見分析陷阱
| 陷阱 | 徵兆 | 對策 |
| 過早進入設計 | 討論資料庫表、API 介面、演算法細節 | 嚴格限制討論範圍於「問題論域」 |
| 類別爆炸 | 數百個細碎類別、大量資料傳輸物件 (DTO) | 合併同質概念、識別聚合根 (DDD) |
| 忽略非功能需求 | 效能、安全、可用性、法規未在模型體現 | 建立非功能需求清單、對應品質屬性場景 |
| 主題劃分武斷 | 模組邊界模糊、跨主題耦合高 | 依業務能力 (Business Capability) 劃分 |