• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

40

的建構,在 MoDWizII 系統裡透過「模型與程式碼之間的轉換」(Model to Text Transformations, M2T)將平台專屬導引精靈模型轉換成符合特定執行平台的程式碼,

完成利用 MDA 架構於多平台導引精靈程式的開發。

4.2 MoDWiz3 系統實作

MoDWiz3 系統的實作大部分沿襲自 MoDQizII,主要是利用 Eclipse 作為系統開發平台,

並且藉由 Eclipse 上的相關模型開發工具 Xtext 與 Xtend 進行開發與設計,其中實作的部 分包含「超模型以及對應領域專屬語言的建立」與「模型的轉換」。

4.2.1 超模型以及對應領域專屬語言的建立

MDA 開發架構主要是以「模型」(Model)為基礎來描述整個程式,也就是將程式抽象化 成一個具體模型,只保留一般程式的屬性和行為等資訊,在不失一般性的情況下忽略其 他程式的細節。將模型進一步的歸納與抽象化則會得到「超模型」(Metamodel),所謂的 超模型是指負責用來描述模型的模型,用以規定模型的可用建構、屬性與格式,每一個 模型都有一個屬於自己必須符合的超模型。超模型再抽象化則會得到「超超模型」(Meta-Metamodel),所謂的超超模型是負責用來定義超模型的標準,並且擁有自我描述的能力。

所以 MoDWiz3 系統的模型實作,主要是針對一般的導引精靈程式與導引精靈在不 同執行平台的執行方式進行分析,然後分別建立「平台無關」與「平台專屬」的導引精 靈超模型。

圖 4-2:MDA 的模型關係圖。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

41

平台無關導引精靈

平台無關導引精靈的超模型及其對應領域專屬語言 EWDL 的實作,主要是利用 Xtext 特 定領域語言開發工具來進行建構。透過 Xtext 建構的超模型主要是以 EMF 的 Ecore 模型 作為超模型的建構標準,由於本系統是以平台無關導引精靈模型作為系統的輸入,所以 利用 Xtext 建立平台無關導引精靈超模型的同時,也可以針對超模型設計專屬的特定領 域語言 EWDL,此外 Xtext 還能夠對此特定領域語言快速建構一個以 Eclipse 平台為基 礎,類似 Java JDT 的特定領域語言編輯環境,藉此提高使用者對平台無關導引精靈模型 的編輯效率。

平台專屬導引精靈

平台專屬導引精靈的超模型實作,主要也是利用 Xtext 特定領域於言開發工具來進行建 構,但不同的地方在於利用 Xtext 建構的平台專屬導引精靈超模型,不需要再為其設計 專屬的特定領域語言。目前建立在 MoDWiz3 系統裡的平台專屬導引精靈超模型共有四 種,包括網頁應用程式、Eclipse 平台,標準 Java 平台,以及 Android 專屬導引精靈超模 型。

在整個系統裡模型扮演著一個極重要的角色,可以把它形容成是整個系統的核心,

並且每一個模型之間都有存在著一些關係,如何將這些關係做適當的連結與建立,就必 須透過接下來模型轉換的方式來達成。

4.2.2 模型的轉換

引入 MDA 目的是希望讓程式開發者只需專注在系統的需求、功能與架構的分析上。當 滿足使用者需求的系統模型即可算完成任務,其餘的平台系統設計與程式碼撰寫只需透 過事先建置的工具鏈就可以自動完成。簡而言之,模型的轉換過程就是 MDA 用來達到 程式開發自動化的主要方式,其中包含「模型與模型之間的轉換」和「模型與程式碼之

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

42

間的轉換」。MoDWiz3 系統的模型轉換實作主要分成兩個部分,第一部分是對平台無關 導引精靈與建構在本系統裡的平台專屬導引精靈建立轉換規則,另一部份是建立每一個 平台專屬導引精靈的程式碼產生器:

模型與模型之間的轉換

在進行模型與模型之間的轉換之前,必須先建立好模型彼此之間轉換的規則(詳細的模 型轉換規則請參照 5.1 節),然後再透過模型轉換語言進行轉換規則的撰寫。模型轉換規 則的實作主要是利用 Xtext 裡所提供的 Xtend 語言撰寫,最後依據定義好的規則來進行 模型轉換。

圖 4-3:模型與模型之間的轉換示意圖。

圖 4-3 顯示的是 MoDWiz3 系統中各種模型間的關係,以及在模型轉換工具裡,各 種相關模型擔任的角色。其中的 Source Model 為程式開發者利用 EWDL 設計好的導引 精靈模型,作為此模型轉換的輸入,此模型必須符合上層的導引精靈 PIMM 的規範,而 PIMM 則必須符合 MoDWiz3 系統的 Meta-metamodel Ecore。Target Model 是經由轉換後

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

43

得到的導引精靈模型,此模型必須符合上層的特定平台導引精靈 PSMM 的規範,同樣 的 PSMM 必須符合本系統的 Meta-metamodel Ecore。同樣的利用 Xtend 轉寫的模型轉 換規則,則必須符合 Xtend 語法的規定。以四層的 MDA 架構來看,利用 EWDL 建構的 Source model 是屬於 M1 模型,可以做為模型轉換工具程式的輸入,而工具程式的對應 輸出為一 PSM(target model)亦屬 M1 模型。由於模型轉換工具將 M1 模型轉換為另一 M1 模型,因此它和 PIMM 以及 PSMM 一樣是屬於 M2 層模型。

模型與程式碼之間的轉換

在進行模型與程式碼之間的轉換之前,必須先設計好模型的轉換範本(templates),然後 再透過模型轉換語言建立模型與模型範本之間的轉換關係,模型範本的轉換實作主要是 利用 Xtext 裡所提供的 Xtend 模型轉換工具,最後依據定義好的模型範本來進行模型至 程式轉換。

圖 4-4:模型與程式碼之間的轉換示意圖。

圖 4-4 左方 M1 層的 Source Model 為程式開發者經由模型與模型之間的轉換過程,

所獲得的特定平台導引精靈模型(PSM),作為此模型轉換的輸入。圖右方 M1 層的 Source Code 是經由模型範本轉換所產生的導引精靈程式,此程式碼必須符合執行平台的規範。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

44

對於利用 Xtend 轉寫的模型範本轉換規則,則必須符合 Xtend 語法的規定。

以四層的 MDA 架構來看,模型與程式碼之間的轉換工具主要是利用 Xtend 實作建 立,本身屬於 M2 層轉換工具,它以 M1 Layer 裡的 PSMM 作為輸入,透過模型範本的 轉換規則產生符合執行平台特性的導引精靈 Source Code。