第四章 轉換個案
4.2 個案之 PIM 至 PSM 轉換
4.2.4 介面類別與控制類別關聯線之轉換
本個案使用第三章企業邏輯層之轉換規則 P2來建立介面類別與控制類別之 關聯線,規則P2產生二個類別:Book Details Form、Shopping Cart Form 以及與 Display Cart 控制類別的呼叫關係;規則 P4產生多個類別之間的呼叫關係,以下 分別詳述之。
在PSM中依據第三章所建立的P2規則,將產生出Form型別的類別圖並包含 Client Page中Form型式的元素,並分別與P3規則所轉換出的Client Page以及 與規則B1所轉換出的Server Page有連結關係(圖44)。
來源模型 目標模型 Composition 關聯以及與 Server Page 擁有 Dependency 關聯。
P2 規則
圖44. 個案使用 P2規則之轉換圖
在PSM中依據第三章所建立的P4規則,將轉換Client Page與Server Page之間
P4:PIM 中從控制類別到介面類別的 Dependency 關聯線將在 PSM 產出一個由 Server Page 到 Client Page 的 Dependency 關聯線,其中 Server Page 由控制 類別產生,Client Page 由介面類別產生。
來源模型 目標模型
B6:在 PIM 中控制類別與 Persistent entity class 之間的關聯線會轉換為從 Server page 類別圖連結至 Table 類別圖的 Dependency 關聯線。
B6 規則
圖46. 個案使用 B6規則之轉換圖
第五章 展示與驗證
本章節將在Borland Together 軟體平台上建立第四章的個案,並且執行其使 用之規則的QVT 語法,最後展示個案之轉換結果,並探討轉換案例中 PSM 的完 整性。以下步驟均以Borland Together 操作畫面說明。
5.1 建立個案之 PIM 類別圖
5.1.1 建立專案與類別圖
本研究在Borland Together平台上分成五個步驟來建立專案,並在專案中建立 個案之PIM類別圖。
Step 1:在 Borland Together 軟體平台中建立新的 UML 2.0 Project (如 圖 47)。
圖47. 在 Borland Together 平台中建立新的 UML Project
Step 2:將專案名稱命名為 Business Project 並點選 Finish 後,即可看到左側 目錄表出現建立的UML Project(如 圖 48)。
圖48. 在 Borland Together 平台中完成 UML Project 的建立
Step 3:在專案右鍵新增 Package 並命名(如 圖 49)。
圖49. 在 Borland Together 平台中建立新的 Package
Step 4:在套件部分右鍵新增類別圖型,並在其新增之類別圖型中右鍵新增 類別圖(如 圖50)。
圖50. 在 Borland Together 平台中建立類別圖
Step 5:接著依企業需求定義出類別圖名稱、型別、屬性以及屬性型別,建 立企業需求類別圖(如 圖51)。
圖51. 在 Borland Together 平台中建立類別圖屬性 5.1.2 類別圖屬性型別定義
Borland Together沒有支援本個案PSM層所需要的屬性資料型別,例如HTML 與MySQL的型別,Borland Together軟體只有提供Boolean、Byte、Character、Date、
Double、Float、Integer、Long、Real、Short、String以及UnlimitedNatural這幾種 資料型態可以選擇,Borland Together有自行更改的功能,使用者能夠以重新命名 的方式,將屬性型別進行更改,但是這造成了Borland Together在使用QVT語言進 行轉換時,無法辨識出使用者所自行定義的型別,以至於轉換失敗。因此Borland Together提供了描述檔(profile)的擴充,描述檔是UML讓使用者建立的一種語 言,利用刻版(stereotype)用來擴充UML的定義,並將該特定資訊紀錄在附標 值中(tagged value)。而描述檔是UML標準下的一種擴充機制,所以描述檔的模 型也必須合乎UML的規範。本研究在Borland Together的平台中,分成了九個步 驟來進行描述檔的定義,擴充了Borland Together軟體中UML的型別,加入了使 用者自行定義的型別,使QVT語言在進行轉換時,能正確辨識出來源類別圖中的 屬性型別。
Step 1:建立新的 Project 並選擇 Profile Definition Project 並命名(如 圖 52)。
圖52. 在 Borland Together 平台中建立 Profile Project
Step 2 : 在 繪 圖 區 右 鍵 新 增 中 選 擇 Shortcut , 並 在 目 錄 中 選 擇 metamodel→uml20→kernel→PrimitiveType(如圖53)。
圖53. 新增 Profile Project 內元素
Step 3:透過右側的調色盤,新增 Stereotype,並命名 BusinessType,接著再 新增extensive 關聯線將新增的 stereotype 繼承 metaclass(如 圖 54)。
圖54. 在 Profile Project 內新增 Stereotype 與其關聯線
Step 4:完成了metamodel的繼承後,必須將定義的stereotype加到palette contribution,當有Project引用該Profile project之後,才能在palette 找到這些stereotype並使用;在Borland Together操作中,使用右側 新增palette contribution並且以關聯線contribution連結至stereotype
(如圖55)。
圖55. 在 Profile Project 內建立 palette contribution 與其關聯線
Step 5:本研究是類別圖使用此Profile project,故需要在palette Contribution 中定義使用的圖形;右鍵選擇palette Contribution中的Properties,並 在底下Properties選單中將Profile Definition裡的diagrams選擇Class
(如圖56)。
圖56. 在 Profile Project 內設定所擴充的圖形
Step 6:完成了Profile project的定義後,接著將此Profile project佈署到Borland Together上,以提供其他Project引用之;右側目錄欄選擇已建立的 BusinessProfile , 並 在 上 列 工 具 列 中 選 擇 Model→Profile→Deploy Profile後點選Finish,Borland Together將會自動重新啟動(如圖57)。
圖57. 佈署 Profile Project 至 Borland Together 中
Step 7:佈署完BusinessProfile後,將建立的Business Project進行引用;右鍵 點選右側目錄欄中Business Project並選擇Properties,接著所開啟的 視 窗 中 , 右 側 的UML Profiles 裡 會 顯 示 了 剛 剛 所 佈 署 的 BusinessProfile,將之勾選並且確認(如圖58)。
圖58. 在 UML Project 內引用 Profile Project
Step 8:進行Profile project的引用後,在Business Project的右側塑模工具中即 出 現 定 義PrimitiveTypes 的 工 具 列 , 透 過 工 具 可 以 自 行 定 義 PrimitiveTypes(如圖59)。
圖59. UML Project 完成 Profile Project 的引用
Step 9:新增自行定義的PrimitiveTypes後,即可在屬性的型別部分,選擇新 增的PrimitiveTypes;對屬性右鍵選擇Properties,並在底下Properties 目錄中的type選擇自行定義的型別(如圖60)。
圖60. 使用 Profile 所擴充之型別
藉由上述建立UML 類別圖形以及針對 Borland Together 中型別擴充的使 用,即可完成第三章企業需求的個案類別圖,類別圖中不僅定義系統的類別,也 表示出了類別與類別之間的關聯關係、以及類別本身的內部結構,其在Borland Together 軟體平台上所塑模的完整 PIM 如 圖 61。
圖61. Borland Together 平台中完成之 PIM
5.2 建立 QVT 轉換檔
本節將以圖示以及步驟的方式,說明如何在Borland Together 軟體平台上建 立QVT 檔,並針對模型執行轉換。
5.2.1 在專案中新增個案之 QVT 程式
Step 1:左側目錄選擇 Navigator 顯示方式,並在 Business Project 右鍵選擇 新增File。
圖62. 新增檔案至 Business Project
Step2:將新增檔案命名 Transformation 並將副檔名定義為.qvt,完成後 即可在左側目錄看到建立之 qvt 檔,以及右側撰寫語法部分。
本個案之完整轉換程式碼如附錄。
圖63. 建立 QVT 檔至 Business Project
5.2.2 專案執行 QVT 轉換檔
當建立的 QVT 撰寫完成並儲存後,即可選擇模型來使用此 QVT 檔進行轉 換,以下是Borland Together 執行 QVT 轉換的步驟。
Step 1:將左側目錄中選擇 Model Navigator 顯示,點選來源模型 Book,
後 在 平 台 上 排 的 工 具 列 依 序 選 擇 Model→Apply Transformation→QVT→From Workspace。
圖64. 選擇來源模型 Book 進行轉換
Step 2 : 在 出 現 的 視 窗 中 選 取 Business Project 目 錄 下 名 為 Tramsformation 的 qvt 檔並選擇下一步。
圖65. 選擇執行轉換語言檔
Step 3:此一步驟為設定目標模型存放之路徑,本研究將目標模型存放至原 本的專案中,故在其Target type 選擇 Existing container,URI 選擇 Business Project,而 Feature 選擇 Model 目錄下的 ownedMembers,
最後不勾選Clear conents 以保留來源模型。
圖66. 選擇目標模型存放位置
Step 4:完成上述動作並點選 Finish 後,即完成轉換,左側目錄下將產生轉 換之目標模型BookPSM。
圖67. 完成轉換後左側目錄圖 5.3 結果展示
在Borland Together 軟體平台根據第四章個案所執行其轉換規則與語法之結 果如 圖 68。在介面類別轉換中,根據 P3產生 Catalog Page、Book Details Page 與Shopping Cart Page 三張類別圖,其包含之屬性型態轉換為 HTML 相對應的屬 性型態,以及根據P4轉換其所連結至控制類別之 Dependency 關聯線。在控制類 別轉換中,根據規則B1產生出 Browse Books、Display Detail 與 Display Cart 三 個控制類別;根據規則B5產生出 Cart Items 一個類別;根據規則 B6則轉換出控 制類別與後台資料庫之Dependency 關聯線。在實體類別轉換中根據規則 D1產生 出Book、Order、Invoice 三個類別;根據規則 D2產生出 Order Items、Invoice Items 兩個類別;根據規則 D3與規則 D4產生出 Association 關聯線表達實體類別之間
的關係。
圖68. 本研究實作轉換之 PSM 結果圖
第六章 結論與建議
本研究詳細彙整QVT 語言,並以 QVT 撰寫模式轉換規則,將 QVT 轉換程 式碼運用在PIM 至 PSM 的自動化轉換上,使用者或企業能參考本研究的結果,
建構出不同的轉換規則與QVT 語言的應用。此外,本研究也提出一個轉換個案 實作,包含了PIM 模型的建立與 QVT 的執行轉換,也可成為日後的參考依據。
6.1 結果分析
本研究彙整並展示以QVT 建構模式轉換規則的過程,並且藉由實際個案的 操作,探討轉換結果以及QVT 與 Borland Together 軟體的優缺點。本研究在介面 類別未完成規則P1與規則 P2之轉換,規則 P1與 P2原本應會產生出的 Frameset、
Form 以及 Target 類別圖以及與控制類別之間的關聯線並無轉出。推究其原因,
過去有學者表示大部分的QVT 範例通常應用在簡單轉換上,也就是將單一個來 源模型元素轉換至單一個目標模型元素[16],故本研究在撰寫 QVT-O 的語法上,
應屬於使用基礎的對應來源圖形後並執行轉換,對於 PIM 中未出現的圖形,無 法對應並執行轉換。也有學者表示目前Ecplise 軟體平台可能無法執行 QVT 可用 的所有功能[7](Borland Together 是建構在 Ecplise 平台上執行),而目前也沒有 辦法確認QVT-O 語法是否可以新增圖形至目標模型中。因此在介面類別的 PSM 結果無法轉換出Frameset、Form 以及 Target 之間的關聯線與其新增之 Dependency 關聯線;而保持著與 PIM 相同,只有屬性以及其型態進行轉換。在控制類別以 及實體類別部分,由於來源模型中均有出現,故使用QVT-O 即成功轉換其類別 圖型別以及屬性,關聯線部分也將多對多關聯以MySQL 的應用平台表示之。本 研究將QVT 應用在轉換模型上的優缺點歸納如下:
優點一:函數應用
QVT-O 屬於命令式語言的語言,能夠將轉換規則撰寫成函數的方
式,並重複呼叫。本研究發覺轉換規則之間有彼此呼叫的需求,由 於轉換規則已經以函數實作,轉換規則之間的呼叫可以用函數之間 彼此呼叫的方式進行。
優點二:Meta-Model 的擴充
藉由 Meta-Model 的擴充,QVT 可以匯入來源模型與目標模型的 Meta-Model,讓 QVT 在將來可以適用其他模式或平台之間的轉換。
缺點一:撰寫難度較高
雖然命令式語言能夠以獨立函數的方式重複呼叫應用,但其方式針 對大型的來源模型進行轉換時,撰寫函數使用的程序與邏輯也相對 變得複雜[10] [14]。
缺點二:只能產出程式框架
QVT 對於來源模型所包含的函數應用,僅轉換其程式框架,例如 轉換類別圖中的操作函數,只能產出操作名稱以及操作函數所應用 的參數,其函數中詳細的程式碼無法轉換出來。這也是轉換所面臨 的困難點之一[18] [33]。
本研究也將Borland Together 軟體在使用上的優缺點歸納如下:
本研究也將Borland Together 軟體在使用上的優缺點歸納如下: