在說明異動管理模組的剖析結果之前,本節先概略描述異動管理模組,介紹 其模組功能及架構。
3.1. 模組功能
從異動管理模組運作觀點來看,可以將模組的功能分為兩個部分:寫入異動 相關記錄和資料異動記錄檢索,如圖 11 所示。當使用者透過數位典藏系統新增、
刪除或修改典藏資料時,異動管理模組會將異動記錄(異動日期、記錄類型、使 用者名稱等)寫入到資料庫中。當日後系統發生錯誤時,異動記錄可以用來追蹤 資料建構過程,進而除錯與回復系統,以確保資料的安全性。當需要查詢異動記 錄時,異動管理模組以網頁的方式提供使用者檢索功能,以作為內部工作的統 計、審核與管考資料。
圖 11. 異動管理模組功能圖
3.2. 系統架構
數位典藏系統是以三層式(3-tier)架構所建構的,包含用戶端(client)、伺服端 (server)與資料庫系統,系統架構如圖 12 所示。圖中描述了異動管理模組如何部 署到實際的硬體環境。數位典藏系統是架構在數位典藏伺服器(Digital Library Server)之中,而異動管理模組是數位典藏系統的一個模組。用戶端若要透過瀏覽 器使用異動管理模組的功能,必須經由 TCP/IP 通訊協定先向網站伺服器(Web server)提出請求,以顯示 JSP 畫面來進行操作。操作異動管理模組時,若需要用 到資料庫裡的資料,網站伺服器會透過 JDBC (Java Database Connectivity)向資料 庫系統提出請求,以進行寫入或查詢的動作。
圖 12. 異動管理模組- 部署圖
4. 剖析結果
本報告根據 DAAL 所開發的異動管理模組程式碼和「數位典藏系統核心元 件及模組」應用程式之介面說明[6],以「傅斯年圖書館藏- 善本古籍數位典藏系 統」網站為例[7],剖析異動管理模組。其結果以 E-R 圖、UML 圖、MVC 架構 圖來描述異動管理模組,分別說明於以下各節。
4.1. E-R 圖
根據異動管理模組所使用的異動記錄資料庫內容,所畫出的 E-R 圖如圖 13 所示。異動記錄資料庫中只有一個 Record_Log 表格,而 Record_Log 的資料欄位 有:ID(自動編號)、RECORD_NO(記錄識別碼)、RECORD_TYPE(記錄類型)、
PROCESS(執行程序)、USER_NAME(使用者名稱)、GROUP_NAME(群組名稱)、
LOG_DATE( 異動 日 期 ) 、 REMARK( 備 註 ) , 其中 ID 為主鍵 (primary key) 。 Record_Log 的資料欄位內容顯示於表 2。
圖 13. Record_Log E-R 圖
表 2. Record_Log 資料欄位內容
4.2. UML
本節使用 UML 中的使用案例圖、類別圖、循序圖來描述異動管理模組的功 能、架構、元件與運作流程。各圖形剖析結果說明如下。
(1) 使用案例圖
根據第 3 節描述的模組功能,異動管理模組有兩個使用案例:寫入異動 相關記錄和資料異動記錄檢索。本報告畫出的異動管理模組使用案例圖如圖 14 所示。由於異動記錄是作為內部工作之用,因此只有擁有權限的使用者可 以使用資料異動記錄檢索這項功能。寫入異動相關記錄的功能並不是由一般 使用者直接使用,而是當資料著錄人員對典藏資料進行操作時,若有新增、
修改或刪除典藏資料的動作,異動管理模組才會由系統執行寫入異動相關記 錄這項功能。圖 14 的典藏資料著錄系統是指 metadata 管理系統中進行新增、
修改或刪除典藏資料時所用到的網頁。此外,執行寫入異動相關記錄和資料 異動記錄檢索功能時,都會到異動記錄資料庫進行寫入或查詢資料的動作。
圖 14. 異動管理模組- 使用案例圖
(2) 類別圖
根據異動管理模組的程式碼內容,將類別(包含異動管理模組中的類別以 及其所使用的套件與類別)與類別之間的關係找出,並畫出類別圖。所畫出的 日誌記錄器、資料異動記錄檢索類別圖分別顯示於圖 15 和圖 16。
當透過典藏資料著錄系統進行新增、修改或刪除典藏資料的動作時,會 呼 叫 Logger.class ( 日誌記錄器) 中的 WriteLog()來 寫 入 異 動 相 關 記 錄 。 Logger.class 封裝在 edu.sinica.iis.cscl.util 之下,如要新增一筆影像檔資料時,
典 藏 資 料 著 錄 系 統 寫 入 影 像 檔 資 料 到 資 料 庫 的 同 時 , 也 會 呼 叫 edu.sinica.iis.cscl.util.Logger.WriteLog()來寫入異動記錄。圖 15 的 Logger.class import 了 java.sql.*、java.io.*、java.util.*、java.text.*這四個套件,有使用到的 類別、屬性和操作方法皆列在相對應的套件底下。
圖 15. 日誌記錄器- 類別圖
圖 16. 資料異動記錄檢索- 類別圖
圖 16 的 Record_Log_List.jsp(資料異動記錄檢索頁面)主要是提供異動記 錄 檢 索功 能 , 透 過 網 頁 輸 入 欲 查 詢 的 條 件 ,即 可 查 詢 到 異 動 記 錄 。而 Record_Log_List_Reset.jsp 的功用是當使用者想要回到初始查詢畫面時,只要
點選網頁上的“清除”按鈕就會連結到 Record_Log_List_Reset.jsp,之後再重新 導向 Record_Log_List.jsp,以顯示初始查詢畫面。Record_Log_List.jsp import 了 java.util.*、java.io.*、java.sql.*、edu.sinica.iis.cscl.util.*、edu.sinica.iis.cscl.db.*
這五個套件,有使用到的類別、屬性和操作方法皆列在相對應的套件底下。
此外,Record_Log_List.jsp 還 include 了 DBSetup.jsp 和 PageType.jsp,其中 DBSetup.jsp 的功能是設定資料庫聯結,而 PageType.jsp 的功能則是顯示查詢 的分頁結果。
(3) 循序圖
圖 14 的異動管理模組使用案例圖中包含兩個使用案例:寫入異動相關記 錄和資料異動記錄檢索,它們所對應的循序圖顯示於圖 17 和圖 18。在圖 17 之中,當資料著錄人員透過典藏資料著錄系統新增、修改或刪除典藏資料時,
典藏資料著錄系統會呼叫 Logger.class 的 WriteLog()函式,接著將相關異動記 錄寫入到 Record_Log 中;若執行寫入成功,則會回傳寫入的 SQL 指令,反 之則回傳錯誤訊息。
圖 17. 寫入異動相關記錄- 循序圖
圖 18 的資料異動記錄檢索功能可再細分為:查詢異動記錄、改變顯示設 定與初始化查詢頁面。查詢異動記錄需要輸入欲查詢的條件,再按下網頁上 的“查詢”按鈕,以送出表單到資料庫中查詢,並傳回結果。改變顯示設定需 改變每頁顯示筆數、排序條件或是顯示頁數,網頁就會顯示新設定的頁面。
初始化查詢頁面則要點選網頁上的“清除”按鈕,之後會重新導向初始頁面。
圖 18. 資料異動記錄檢索- 循序圖
4.3. MVC 架構圖
為了將網頁設計人員和 JSP 與 Java 程式設計人員的工作清楚區別出來,以 提高模組化的特性和加速各模組的開發,本報告利用 MVC 架構將異動管理模組 中所使用的元件分為 model、view、controller 三個獨立的模組,顯示於圖 19。
在 Record_Log_List.jsp 中包含了 HTML 和 JSP 兩種內容,在圖 19 中利用 MVC 架構分開這兩部分,也就是區別網頁顯示和內部實作設計。圖中的典藏資 料著錄系統並不屬於異動管理模組,但為了配合 Logger.class 的運作,所以在圖 中加入典藏資料著錄系統,以說明兩者之間的關係。此外,圖中的 Java package 是指 Java 核心的套件,而 DAAL package 代表 DAAL 小組所開發的套件。
?????‾?????? 用的變數、測試用的程式碼,例如在 Record_Log_List.jsp 程式碼中的 NPG、
LPG、FPG、PPG、checkReport( 由於沒有作用所以不列在類別圖的屬性中) 等變數,就是宣告了卻沒有實際作用的變數。此外同樣在 Record_Log_List.jsp 中的一段程式碼:
// out.print(exSQL+"<br>");
這段程式碼只是為了測試將要執行的 SQL 指令是否正確,但完成程式後卻沒 有將這段程式碼拿掉,造成閱讀上的困擾。因此應該要找出程式中多餘的部 分並刪除,再調整程式碼編排上的一致性,以提升程式的可讀性。
(2) 程式中缺乏詳細的註解,造成閱讀上的困難。建議加入足夠的註解,使後續 開發人員能夠清楚瞭解程式內容,並可供未來修改與測試之用。
(3) Record_Log_List_Reset.jsp 的功能單純,只是重新導回初始頁面,並無其他作 用,建議可以和 Record_Log_List.jsp 整合為一個 JSP,以降低程式的複雜性。
(4) 整個異動管理模組網頁顯示和內部實作的部分過於緊密結合,造成設計人員
到其他數位典藏系統,並提高重複使用性。
(6) 為因應未來龐大的數位典藏系統建構,建議可以透過自動化的方式來產生異 動管理模組,以加速新系統建置的速度。各數位典藏系統共通的部分可以採 用本報告中描述的元件和架構由自動化的工具來產生,而各自獨立的部分也 可以經由自動化的工具來做細部調整與設定。
6. 結論
本報告透過各種圖形或表示法來描述異動管理模組。利用 E-R 圖來介紹資料 庫表格與資料欄位之間的關聯;而 UML 圖形化的特性很清楚地表達模組的功 能、架構、元件與運作流程;最後 MVC 架構將模組的顯示、控制和內部處理分 開。剖析結果有助於找出可重複使用的元件或架構,以提供給各領域的數位典藏 單位作為參考,希望能達到減少重複的分析與開發以加速新系統建置的目標。
參考資料
[1] A. Silberschatz, H. F. Korth, and S. Sudarshan, Database System Concepts, 4th ed., McGraw-Hill, New York, NY, 2002.
[2] J. Conallen, Building Web Applications with UML, 2nd ed., Addison-Wesley, Boston, MA, 2002.
[3] J. Rumbaugh, I. Jacobson, and G. Booch, The Unified Modeling Language
Reference Manual, Addison-Wesley, Boston, MA, 1999.
[4] UML 2.0 Superstructure Specification, ptc/04-10-02, 2004, http://www.omg.org/cgi-bin/doc?ptc/2004-10-02.
[5] Sun Microsystems,
Design Patterns Model-View-Controller,
http://java.sun.com/blueprints/patterns/MVC.html.[6] 中 央 研 究 院 數 位 典 藏 技 術 發 展 組 , 數 位 典 藏 系 統 核 心 元 件 及 模 組 , http://ndweb.iis.sinica.edu.tw/api/index.html.
[7] 中央研究院數位典藏技術發展組, 傅斯年圖書館藏善本古籍數位典藏系統, http://140.109.18.243/rarebook/.
計畫成果自評
過去一年我們的計畫成果有:系統需求分析與設計文件標準化建議架構以及 數位典藏系統 framework 分析整理,一共包含七份報告。本研究內容與原計畫相 符合程度 90%,達成預期目標情況 80%。研究成果之學術或應用價值如下:文 件標準化建議架構提供未來撰寫數位典藏軟體需求規格書、軟體設計規格書之 用,以提高文件品質與標準化作業項目,並減少成本;而分析 framework 之成果 有助於改善系統元件之設計方式,提高系統與元件之可用性,進而發展出符合數 位典藏領域的 framework,以加速新數位典藏系統建置的速度。本研究內容適合 在學術期刊發表,並準備先於會議發表論文。
可供推廣之研發成果資料表
□ 可申請專利 □ 可技術移轉 日期:94 年 2 月 28 日
國科會補助計畫
計畫名稱:數位典藏系統分析程序與建置再造 計畫主持人:林彥君
計畫編號:NSC-93-2422-H-011-001 學門領域:數位典藏 技術/創作名稱 數位典藏軟體需求規格書建議標準
發明人/創作人 林彥君、黃建中、王祥安
發明人/創作人 林彥君、黃建中、王祥安