建模基礎與UML
1. 什麼是模型?
模型是一種 從特定觀點出發,對系統的完整描述 並作為一種 現實的簡化呈現。您建立模型,是因為複雜系統無法被完全理解。
建模的四大核心目標:
-
視覺化 系統原本的樣貌。
-
明確規範 系統的結構或行為。
-
提供一個範本 以指導系統的建構。
-
記錄 設計決策。
建模的四大原則
-
您選擇的模型會直接影響問題的處理方式。
-
每個模型都可以以不同精確度來表達。
-
最有效的模型與現實緊密相連。
-
單一模型不足以應付;複雜系統需要多個觀點。
什麼是UML?
統一建模語言(UML) 是一種由 物件管理小組(OMG)所管理的標準化圖形語言。它明確地 並非一種方法論或程序,而是一種技術性與圖形化的規範,用於:
「可視化、規格化、建構並記錄軟體密集型系統的各項成果。」
UML 為概念性元素(商業流程、系統功能)與具體實作(程式碼陳述、資料庫結構、可重用元件)提供了一種通用的藍圖格式。

UML 的四大支柱
| 目的 | 描述 |
|---|---|
| 可視化 | 確保所有利害關係人使用相同的語言。明確的模型可消除溝通錯誤,並揭示在未建模情況下無法察覺的系統面向。 |
| 規格化 | 建立精確、無歧義且完整的系統定義。 |
| 建構 | 可直接對應至程式語言(Java、C++、VB)、關係資料庫管理系統表格或物件資料庫管理系統儲存空間。支援正向工程(模型 → 程式碼)以及逆向工程(程式碼 → 模型)。 |
| 文件化 | 記錄系統架構、需求、測試計畫、專案時程與發行管理。 |
2. UML 圖表生態系統
UML 2.2 定義了14 種圖表類型,分為兩個主要類別:
-
結構模型(靜態架構)
-
行為與互動模型(動態流程)
不同的圖表服務於不同的利害關係人觀點:
-
使用案例觀點:使用者功能
-
邏輯觀點:分析師與設計師(系統結構)
-
流程檢視: 軟體管理(效能、可擴展性、吞吐量)
-
實作檢視: 程式設計師(具體組件)
-
部署檢視: 系統整合者(拓撲、安裝、通訊)
3. 核心UML圖表說明
🔹 使用案例圖
-
目的: 模擬系統的預期功能及其環境。作為客戶與開發人員之間的合約。
-
元件: 參與者、使用案例及其關係。
-
支援圖表: 活動圖(使用案例內的流程)、序列圖(物件協作以實現使用案例)。
🔹 活動圖
-
目的: 呈現流程或使用案例內事件的逐步流程。
-
關鍵元素:
-
動作:工作流程中的獨立步驟。 -
流程:活動的順序。 -
決策:根據守衛條件分割流程[條件]. -
分叉:啟動並行執行緒。 -
合併:結束並行執行緒(同步)。
-
-
範例: 課程註冊流程,包含檢查、衝突解決以及並行的課程表更新。
🔹 序列圖
-
目的: 顯示物件如何在時間上互動以完成使用案例。時間 以完成使用案例。
-
主要元素:
-
生命線:垂直線,顯示物件在時間上的存在。 -
物件/類別:互動中的參與者。 -
訊息:物件之間交換的資料或方法呼叫。 -
執行發生:細長的矩形,顯示物件正在積極處理的時刻。 -
合併片段:opt(選擇性執行)(選擇性執行),loop(重複執行)(重複執行),ref(參考另一個互動)(參考另一個互動)。
-
🔹 通訊圖
-
目的: 序列圖的替代方案。強調物件之間的結構關係,而非時間順序。結構關係 之間的關係,而非時間順序。
-
主要元素:物件透過連結在一起,並以編號訊息表示沿著連結的互動順序。
🔹組件圖
-
目的:顯示軟體組件層級的執行時期結構。
-
主要元素:隱藏在外接介面後的模組化系統部分。通常包含類別以顯示實作關係。
🔹部署圖
-
目的:將軟體實體對應至實體硬體。
-
主要元素:
-
節點:代表實體機器或執行環境。 -
實體:代表實體檔案或可部署單元。 -
擁有元素:顯示巢狀或包含關係。
-
4. 掌握類別圖與關係
類別圖描述系統的 靜態結構 。它們是資料規格(例如 INSPIRE)的基礎,且不顯示時間資訊。不 顯示時間資訊。
類別解剖
| 區隔 | 描述 |
|---|---|
| 名稱 | 類別的識別碼(例如 CadastralParcel)。通常包含如 «FeatureType». |
| 屬性 | 具有資料類型的命名屬性(例如 - 地址 : 字元, - 樹齡 : 整數)。支援的類型:整數、長整數、雙精度、字元、日期、布林、字串、幾何等。 |
| 操作 | 類別的行為/方法。格式: + 操作名稱(輸入類型) : 回傳類型. |
關係類型
| 關係 | 符號 | 意義 |
|---|---|---|
| 關聯 | ─────── |
類別之間的一般連結。包含角色名稱、導航箭頭與基數(1..*, 0..*, 1..2,等)。 |
| 泛化 | ─────▷ |
繼承。子類別(來源)繼承超類別(目標)的所有特性。 |
| 聚合 | ◇───── |
「部分-整體」關係。部分 可以獨立存在整體的一部分。(空心菱形) |
| 組成 | ◆───── |
強烈的「部分-整體」關係。部分的存在完全取決於整體。(實心菱形) |
來自訓練教材的範例:
-
個人→伐木工(一般化:伐木工繼承姓名,性別) -
森林◇─樹(聚集:樹可以在沒有特定森林的情況下存在) -
伐木工◆─員工(組成:在此情境下,員工無法獨立於伐木工實體存在)
5. 實務應用:INSPIRE 地籍建模
訓練教材使用INSPIRE 地籍資料規範來示範現實世界中的UML應用。
練習1:建模核心類別
任務: 建立 地籍圖塊 類別。
解答結構:
«特徵類型» 地籍圖塊
- 地址:字元
- APN(圖塊編號):字元
- 界線:GM_Surface
- 中心點:GM_Point
- 標籤:字元
- 國家地籍參考:字串
- 面積值:雙精度數(可選)
- 參考點:GM_Point(可選)
注意:存在多個有效的解決方案。屬性應反映常見的現實世界特徵。
練習 2:建模關係
任務: 連接 地籍圖塊, 地籍界線,以及 行政區.
關鍵建模決策:
-
地籍圖塊────地籍界線: 關聯/組成 (界線定義圖塊;通常1..1或1..*基數)。角色:+是邊界/+具有邊界. -
地籍區塊◇──行政區域: 聚合/關聯。該區域的存在不依賴於於區塊。區塊屬於多個層級區域(1..*至0..*). -
lesson:根據生命週期依賴關係和業務規則選擇關係類型。圖表應反映現實,而非強加人工限制。
6. 優良實務:有效UML建模
-
策略性地使用圖表:圖表用以呈現特定觀點。單一圖表無法完整理解複雜系統。
-
跨圖表重複使用元素:單一類別可能出現在類圖、狀態機、序列圖與部署視圖中,各自強調不同的面向。
-
依觀眾調整精確度:根據觀看者是終端使用者、開發人員、系統整合者或專案經理,調整圖表的複雜度。
-
與現實驗證:持續驗證模型元素、關係與基數是否反映實際系統行為與領域規則。
-
善用工具支援:使用符合UML規範的工具(例如Sparx Systems)進行正向/逆向工程、一致性檢查與程式碼產生。
結論
UML是一種強大且標準化的語言,用於溝通、設計與文件化軟體與資料密集型系統。透過掌握核心圖表(特別是類別圖、序列圖、活動圖與用例圖),並理解關係語意(關聯、泛化、聚合、組成),實務工作者能夠建立精確且符合現實的藍圖,彌補概念需求與技術實作之間的差距。












