第四章 轉換個案
4.2 個案之 PIM 至 PSM 轉換
4.2.2 控制類別轉換
本個案使用第三章企業邏輯層之轉換規則B1與B5來建立控制類別 ,規則B1 產生三個類別:Browse Books、Display Details與Display Cart;規則B5產生一個 類別:Cart Items,以下分別詳述之。
在PSM中依據第三章所建立之B1規則,將PIM中控制類別轉換為Server Page 類別(圖38)。
來源模型 目標模型
B1
B1
B1 B1
B1
B1 B1
B1 B1
B1:將 PIM 中控制類別轉換成 Server page 類別圖至 PSM。
B1 規則
圖38. 個案使用 B1規則之轉換圖
在 PSM 中依據第三章所建立之 B5規則,將 Non-persistent entity class 轉換為 JavaBean 類別圖,並轉換其包含之屬性(圖 39)。
來源模型 目標模型
B5 B5 B5
B5:在 PIM 中的 Non-persistent entity class 將會轉換為 JavaBean 類別圖至 PSM 中,而 Non-persistent entity class 當中的屬性將轉換至 JavaBean 類 別圖中且型別轉換為與PSM 相對應的平台。
B5 規則
圖39. 個案使用 B5規則之轉換圖 4.2.3 實體類別轉換
本個案使用第三章資料層之轉換規則D1、D2、D3與D4來建立實體類別與其 關聯線,規則D1產生三個類別:Book、Order與Invoice;規則D2產生兩個類別:
Order Items與Invoice Items;規則D3與規則D4產生類別之間的關聯線,以下分別 詳述之。
在PSM中依據第三章所建立之D1規則,將Persistent entity class轉換為Table 類別圖,並轉換其包含之屬性(圖40)。
來源模型 目標模型
D1
D1
D1 D1
D1
D1 D1
D1 D1
D1:當 PSM 為關聯資料庫技術時,將 PIM 中的 Persistent entity class 轉換 成Table 類別圖至 PSM,Persistent entity class 中的屬性型別轉換為與 關聯資料庫技術相對應的屬性型別至PSM 中。
D1 規則
圖40. 個案使用 D1規則之轉換圖
在PSM中依據第三章所建立之D2規則,將Association class轉換為Table類別 圖,並轉換其包含之屬性(圖41)。
來源模型 目標模型
D2
D2 D2 D2
D2 D2
D2:當 PSM 為關聯資料庫技術時,將 PIM 中的 Association class 轉換成Table 類別圖至 PSM,Association class 中的屬性型別 轉換為與關聯資料庫技術相對應的屬性型別至PSM 中。
D2 規則
圖41. 個案使用 D2規則之轉換圖
在 PSM 中依據第三章所建立之 D3規則,將多對多關聯關係以不同型式表達
(圖42)。
來源模型 目標模型
D3:在 PIM 中兩個 Persistent entity class(類別 A 與類別 B)與其之間多對多 的關聯關係所產生的Association class(類別 C),將會轉換為三張 Table 類別圖,類別A 轉成 Table A;類別 B 轉成 Table B;類別 C 轉成 Table C,
D4:在 PIM 中 Persistent entity class 將轉換為 Table 類別 圖,其關聯線將以相同基數轉換至PSM 中。
D4 規則
圖43. 個案使用 D4規則之轉換圖
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 軟體的優缺點。本研究在介面
本研究彙整並展示以QVT 建構模式轉換規則的過程,並且藉由實際個案的 操作,探討轉換結果以及QVT 與 Borland Together 軟體的優缺點。本研究在介面