• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

25

其提供了縮放和著色的一些操作。ImageView 提供圖像的顯示的 View(視景),使開發人 員能夠在螢幕上提供圖像的顯示,在應用上常用來取得手機內的圖片資料並顯示在螢幕 上。表 2-18 為 ImageView 在 XML 中的宣告方式,圖 2-16 為螢幕上顯示的效果。

表 2-18:Android 上實作 ImageView。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_weight="fill_parent"

android:layout_weight="fill_parent">

<Button android:id="@+id/button1"

android:layout_weight="fill_parent"

android:layout_weight="wrap_content"/>

<ImageView android:id="@+id/image1"

android:layout_weight="fill_parent"

android:layout_weight="wrap_content"/>

</LinearLayout>

圖 2-16:ImageView 元件。

2.5 Model-Driven Architecture, MDA

現今的軟體開發大多是以程式碼為中心,亦即所有的系統分析與系統設計的結果最後均 是以程式碼方式保存與呈現。由於程式碼的分離程度不足,無法區分何者屬於平台無關 的部分,以及何者為與平台相關的程式碼,因此重複使用性低。為了解決此問題,OMG 組織提出了 MDA 架構希望能改善此問題。從程式語言的抽象化程度來看,早期低階的

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

26

組合語言(assembly language)是透過「組譯器」(assembler)將程式碼轉換成硬體可以執行 的機器碼。而高階的程式語言(例如 C/C++, Java)則是透過「編譯器」(compiler)將程式碼 轉換成組合代碼(assembly code),再透過組譯器的支援轉換成機器碼。到近期的 MDA 架 構,主要是利用建立模型的方式進行系統的分析與設計,然後透過「模型編譯器」(model compiler)將模型轉換成一般的高階語言程式碼,再透過編譯器的支援得到可執行的機器 碼,所以 MDA 架構將系統開發的中心由高階語言的程式往上提升至更抽象化的模型層 次。再從可重複使用性來看,早期的組合語言以巨集(macro)的方式來達到重複使用的效 果,而在高階語言裡則以函數(function)的方式來進行,直到物件導向程式設計(Object-Oriented Programming)的出現,才以類別(class)的資料結構來達到程式碼的重複使用性。

從巨集到類別的使用其主要的目標都是往如何提高模組化、抽象化的設計理念去發展,

藉此來降低程式碼之間的相依性並且提高互通性,所以 MDA 使用模型的方式來提高程 式的抽象化層次與重複使用性,希望能讓程式開發者能更專注在使用者的需求上進行程 式的設計與開發,降低直接進行程式碼撰寫的負擔。

圖 2-17:MDA 概念圖。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

27

MDA 的主要概念是以模型作為系統開發的核心,如圖 2-17 所示,在進行系統分析 時利用一個通用的模型標準描述語言,如 UML【23】、MOF【9】或 Ecore【10】等模型 語言,來進行整個系統的描述與設計,接著再利用相關的模型工具,將模型自動轉換成 符合各個平台特性的程式碼,如 Java、Eclipse、Android 等。我們希望能夠透過 MDA 的 系統開發的流程,將它應用在導引精靈領域裡,提供一個快速且有效率的方式產生各種 相關的導引精靈程式,讓就算是不懂 Android 語言的程式開發者,也能寫出 Android 的 導引精靈程式。

圖 2-18:以 MOF 為基礎的四層 MDA 架構圖。

MDA 的基礎架構,如圖 2-18 所示,主要是由一個超模型架構(Meta-Modeling Architecture)與幾個 OMG 制定的相關模型標準所組成,超模型架構主要是以抽象化的程 度來做區分的標準,分為四層越上層表示抽象化的程度越高,從最上層開始分別是 M3 層(meta-metamodel)、M2 層(metamodel)、M1 層(model)與最下層的 M0 層(instance),相 關 的 模 型 標 準 包 含 UML(Unified Modeling Language) 、 MOF(Meta-Object Facility) 與 XMI(XML Metadata Interchange)【24】。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

28

M3 層主要是定義整個超模型架構的標準,也就是所謂的 Metametamodel。所有的 Metamodel(超模型)都必須符合自訂規範。為此 OMG 提出了 MOF(Meta-Object Facility) 來做為 Metamodel 的標準。MOF 本身具有自我描述的能力,可以定義自己與所有的超 模型,但除了 MOF 之外,EMF(Eclipse Modeling Framework)【4】裡的 Ecore 模型也是 常被用來定義超模型。M2 層 Model,指的是所有使用 MOF 定義的 Metamodel,主要是 用來規定模型的種類、屬性、格式與關聯性,並且限制模型的描述範圍。其中最常被使 用的 Metamodel 就是 UML,是由 OMG 所提出的圖形化模型語言,由於 UML 是一種開 放式的圖型語言,並且在對大範圍且複雜的系統進行模型化已有不錯的效果,因此漸漸 的成為被大家公認的一種標準。M1 層 Model,指的是利用在 M2 層定義出來的 model,

將欲開發的程式以 Model 的方式加以描述。M0 層 Model 包含的則是 M1 層 Model 的實 例(instances)。如果以一般程式語言來對應的話,Metamodel 就是程式語言(如 C/C++、

Java),而 Model 則是程式語言設計出來的類別(class)或程式,至於 M0 物件則是程式執 行所產生的實例,至於 Metametamodel 則相似於定義語言的文法描述系統。

在整個超模型架構中,對於模型資料的儲存與各層之間訊息的互通,XMI(XML Metadata Interchange)扮演著一個極重要的角色,當 MDA 的系統開發者將相關的模型設 計完成後,必須對相關的模型資料進行儲存。XMI 定義了符合 MOF 規定的相關對應關 係,如圖 2-19 所示,屬於 M2 Layer 的 Metamodel 與 XML Schema 之間的對應關係,以 及屬於 M1 Layer 的 Model 與 XML 文件檔案之間的對應關係。透過這樣的關係建立,

可以把建立好的模型轉換成 XML 檔,以利於提高儲存與讀取的便利性。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

29

圖 2-19:XMI in MDA。

MDA 的系統開發流程,必須先從使用者的角度對應用領域進行分析,然後利用 UML、

MOF、或 Ecore 等模型語言建立應用領域的「平台無關超模型」(Platform Independent Metamodel, PIMM)做為使用者進行系統模型(PIM)開發的標準。接著對相關的執行平台 進行分析與定義建立「平台專屬超模型」(Platform Specific Metamodel, PSMM)作為特定 平台系統模型(PSM)描述的標準,每一個 PSMM 都會對應到特定的程式語言或執行平台 (例如 Java、Eclipse、Android 等),這樣的系統開發方式減少了系統與實作平台之間的相 依性。最後利用模型轉換工具建立 PIMM 與 PSMM 之間對應關係的轉換規則,將使用 者設計好的 PIM 轉換成符合某個特定執行平台的 PSM,這樣就可以自動完成系統的設 計。接著對 PSMM 設計專屬的程式碼產生器,即可將 PSM 自動轉換成特定平台的系統 實作。透過這樣方式進行系統開發,使用者只需要專注在系統的需求上進行系統分析即 可,減少了系統設計與程式碼撰寫的負擔。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

30

Eclipse 平台與相關工具

Eclipse 是由 IBM 公司提出的 Java 整合開發環境(Integrated Development Environment, IDE),其主要目的是取代 IBM 原先的 Java 商業開發工具 VisualAge for Java。Eclipse 是 著名的跨平台開源整合式開發環境(IDE)。最初主要用來 Java 語言開發,目前亦有人透 過外掛模組使其作為 C++、Python、PHP 等其他語言的開發工具。Eclipse 的本身只是一 個框架平台,但是眾多外掛模組的支援,使得 Eclipse 擁有較佳的靈活性。許多軟體開 發商以 Eclipse 為框架開發自己的 IDE。

圖 3-1:Eclipse 平台架構圖。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y