本報告使用 E-R 圖來說明資料庫邏輯結構,以 UML 描述模組的功能、架構、
元件與運作流程,並用 MVC 架構圖將目前模組的外部顯示和內部實作分開以提 高模組化。為了幫助讀者了解上述三種表示法,以下將一一說明。
2.1. E-R 圖
E-R 圖藉由簡單的圖形描述資料庫的邏輯結構,可以很容易表達資料之間的
關聯[1]。E-R 圖中使用了三個基本元素:實體集合(entity sets)、關係(relationship) 與屬性(attributes),各元素說明見表 1。實體(entity)是一個存在且可以被分辨的個 體,如企業中身分證號碼為 A100000000 的員工,即為一個實體。
表 1. E-R 圖中三個基本元素所代表的意義
元素 圖形 意義
實體集合 相同屬性的實體組成的集合
關係 實體集合之間的關係
屬性 實體或關係的特性
上述三個基本元素相對於實際的資料庫而言,實體集合和關係是以表格 (table)的方式存在資料庫中,實體就是表格中的一筆記錄(record),屬性則是表格 中的資料欄位(field)。兩個實體集合之間的關係可註明其為一對一(1:1)、一對多 (1:M)或多對多(M:N)的關係。以員工與計畫之間的關係為例,圖 1 代表一個員工 可以參與一個以上的計畫(N),而一個計畫可以有很多個員工一起參與(M),也就 是多對多的關係。此外,有加底線的屬性代表主鍵(primary key),該屬性用來識 別不同的實體,圖 1 中的員工與計畫分別以身分證號碼和計畫代號為主鍵。
圖 1. 員工參與計畫的 E-R 圖
2.2. UML
UML 是一個軟體塑模(modeling)的標準語言[3,4],目前已經廣泛地在企業上 和學術上被使用。UML 不是包含詳細程序的程式設計語言,而是一種用來把設 計表達出來的描述語言,因此可以應用於各種類型的系統。
本報告利用 UML 來描述異動管理模組,讓讀者透過圖形化的描述語言來了 解其功能、架構、元件與運作流程。本報告使用到的 UML 圖有:部署圖(deployment diagram)、使用案例圖(use case diagram)、循序圖(sequence diagram)、類別圖(class diagram)。以下將簡單介紹各圖形的表示法。
(1) 部署圖
部署圖主要的目的是表現軟、硬體系統的實際配置情形,可以清楚了解 整個系統的架構。部署圖包含節點(node)、元件(component)、節點或元件之 間的關係,其中節點代表的是一種實體元素,通常是具有記憶體和運算能力 的硬體,元件指的是程式、檔案、文件等軟體物件,如圖 2 中的個人電腦與 瀏覽器分別代表節點與元件。
節點的部份加上註明(節點名稱:節點類型)以表達其名稱與類型。節點 之間的連線(connection)以實線來表示,並註明兩個節點透過什麼來連線,元 件之間的關係以虛線加上方向來表示。在圖 2 中顯示了個人電腦透過 TCP/IP 連結到網站伺服器,而使用者利用瀏覽器來顯示網站上的網頁。
圖 2. 使用者連線到網站的部署圖
(2) 使用案例圖
使用案例圖描述系統功能與其使用者之間的關係,它可以幫助系統開發 人員找出系統需求或是了解現有的系統功能。使用案例圖包含一組使用案例 (use case)、行為者(actor)與兩者之間的關係。一個使用案例說明系統所提供 的一項功能,而行為者就是跟系統互動的人或外部系統。使用案例之間的使 用關係以實線加上箭頭表示,並可以加上模板(stereotype)來說明其關係,而 整個系統的範圍會以框線來界定。
圖 3 顯示一個金融交易系統所提供的交易功能,交易員和會計系統都是 行為者,其中會計系統屬於外部系統,因此用矩形來表示。風險分析、決定 交易價格、訂定交易價格、取得交易與更新帳目都是使用案例,其中風險分 析 和 決 定 交 易 價 格 使 用 案 例 會 用 到 訂 定 交 易 價 格 使 用 案 例 ,因 此加上
“<<uses>>”模板來說明其關係。
圖 3. 金融交易系統使用者案例圖
(3) 類別圖
類別圖用來描述不同的個體(人、事物和資料)與個體之間的關係;它描 述了一個系統的靜態結構。類別圖包含一組類別和類別之間的關係。當針對 數位典藏網頁進行剖析時,由於 UML 並沒有完全支援 Web application 的表 示法,因此參考 UML Web Application Extension [2]來說明類別之間的關係,
並加上模板來描述其關係。
類別圖中的類別是由三個部分所組成,由上而下依序為類別名稱、屬性 (attribute)、操作方法(method),如圖 4 所示。圖中用“<”和“>”括起來的內容用 來敘述存取權限、說明、屬性類型、初始值、傳入參數與回傳類型等相關資 訊。屬性和操作方法前面需以“+”、“-”、“#”分別代表 public、private、protected 存取權限。此外,本報告在屬性和操作方法後面會加上說明以敘述其功能。
若剖析的數位典藏系統由 JavaServer Pages (JSP)網頁組成時,本報告將 JSP 網頁視為一個類別 ,其中用到的變數或物件視為屬性,而所呼叫的函式 (function)則當作操作方法。
圖 4. 類別的三種內容
在報告中所使用的類別圖關係有:相依(dependency)、結合(association) 、 聚合(aggregation)以及一般化(generalization) 關係。相依關係是一種使用關 係,用來表示一個類別使用到其他類別的情形。報告中使用到的相依關係包 含 include 和 import,其表示方法以 include 為例,如圖 5 所示。在 JSP 中,include 代表將指定的類別程式碼加入成為程式的一部份;而 import 代表將指定的類 別或套件(package)匯入(import)作為參考,因此可以使用所 import 的類別變數 或函式。
圖 5. include 相依關係表示法
結合關係是一種結構關係,也就是說明兩個類別之間如何互相連接,在 此兩個類別概念上是同等地位的。報告中使用到的結合關係有 link、submit、
redirect,三者的功能相似,其表示方法以 link 為例,如圖 6 所示。link 和 submit 是一種 HTML 語法,link 代表連結到指定的網頁,submit 除了連結的功能外,
還會伴隨著表單(form)資料的傳送。而 redirect 是一個 JSP 函式,只要執行就 會重新導向指定的網頁。
聚合關係是一種包含關係,也是一種特殊的結合關係,會有一個整體 (whole)的類別包含部份(part)的類別[3],在整體的類別那端加上菱形來表示,
如圖 7 所示,它表示類別 2 包含了類別 1。結合和聚合關係可以在連接線兩 端註明 1(恰一)、0..1(零或一)、0..*(零到多)、1..*(一到多)或 m..n(m 到 n)來表 現其對應的個數。
圖 6. link 結合關係表示法
圖 7. 聚合關係表示法
一般化關係是父類別和子類別之間的關係,通常是用來表現繼承的關 係。當一個類別繼承一個套件時,其表示方法如圖 8 所示。
圖 8. 一般化關係表示法 (4) 循序圖
循序圖用來描述物件之間的互動情形,它強調時間上的先後順序,從圖
形左上方的驅動者(driver)開始引發一連串的事件。循序圖通常是系統的一個 使用案例或是其部分的詳細流程,其中包含一組物件實體(instances)和物件實 體 之間 的訊 息傳 遞 。 循 序 圖 有 兩 個 象 限:垂 直 方 向 代 表 物 件 的 生 命 線 (lifeline),描述事件發生的先後順序;水平方向則描述物件實體間傳遞訊息的 過程。
圖 9 顯示客戶下訂單的過程,客戶、訂單接受單位與訂單處理單位都是 物件實體。循序圖中的物件實體可能是一個系統、類別或單位等物件,除了 人(如圖 9 中的客戶)以外的物件實體以矩形作為區分。生命線以垂直的虛線 表示,而傳遞與回傳的訊息分別以實線和虛線來代表,傳遞的訊息若為一個 呼叫(call)時用實心的箭頭作為區分。此外,若要描述傳遞的訊息在什麼情形 下會被送出,可以在傳遞的訊息加上“[條件]”來說明。
圖 9. 客戶訂單循序圖
2.3. MVC 架構圖
MVC 是一種 design pattern [5],它將軟體系統分成 model、view、controller 三個部分,以分開外部顯示跟內部運作的設計工作,並提高模組化和重複使用 性。其中 model 包含系統的核心功能、邏輯與狀態。view 是整個系統的外觀呈 現,當 model 的狀態改變時應該要通知 view 已變更外觀,以維持跟 model 狀態 的一致性。controller 反應使用者的輸入,呼叫 model 中相對應的功能,處理結 果可能會改變 model 的狀態,且可以選擇所要呈現的 view。model、view、controller 之間的關係可以用圖 10 表示。
圖 10. MVC 架構圖