
摘要:本文提出了一種基于模板技術的BREW應用程序可視化用戶界面設計以及代碼自動生成的方法,從而改變了手工編寫BREW應用的現狀。本系統為提供一個可視化的圖形界面設計工具,開發人員可以進行所見即所得的界面設計,同時根據用戶的設計生成XML文件,接下來利用該XML文件及BREW程序框架模板自動生成應用代碼。可視化的界面設計及自動代碼生成提高BREW應用的開發效率。
關鍵詞:模板;自動代碼生成;可視化
1 引言
隨著時代的發展,手機用戶群體越來越大,人們對手機應用軟件的需求也隨之增大。2008年我國電信行業重組、以及3G牌照的發放,標志這3G時代的到來。手機應用程序的開發面臨著更為巨大的市場。快速變化的市場要求開發人員能夠快速開發出豐富多彩的應用程序。以往BREW應用程序的開發仍然處于手工編寫的狀態。當開發人員開發應用的界面部分時,需要在編輯環境中將代碼寫好,經過編譯鏈接后在模擬器中執行以觀察界面實際效果,如若不滿意,需要再回來修改源代碼,如此反復,效率非常低下。
可視化的開發環境在目前已經較為普遍,但在BREW應用開發中還屬空白。本文提出一個可視化用戶界面設計及基于模板的代碼自動生成的方法。在可視化的圖形用戶界面設計環境中,開發人員可以為自己的應用程序設定一個圖形手機屏幕進行界面設計。我們將BREW中主要界面接口進行封裝,以界面元素控件的形式提供給用戶。用戶可以通過鼠標拖拽將各種圖形界面元素控件添加到手機屏幕的相應位置,通過調整達到理想的效果,同時在該環境中對個控件的相關屬性進行設置,完成“所見即所得”的界面設計。
在完成可視化的、所見即所得的界面設計后,系統根據用戶設計的結果生成一個XML文件。該XML文件記錄的用戶所設計界面的各種參數。接下來根據XML文件及BREW應用程序模板文件自動生成BREW應用框架代碼。用戶即開發人員可以在生成的代碼上進行進一步的完善,得到最優的代碼。
2 系統總體設計
本系統包括一個可視化的用戶界面設計工具和一個代碼自動生成引擎。如圖1所示。
BREW應用的代碼有其自身特點,其代碼的自動生成是由代碼自動生成引擎根據BREW應用程序框架模板文件和用于描述界面信息的XML文件進行的。其中BREW應用程序框架模板文件是事先根據BREW應用代碼的特點設計而成的XML文件;用戶通過使用一個可視化的用戶界面設計工具對用戶界面進行設計,該工具包括各種界面控件,用戶通過鼠標拖拽對界面布局進行設計并對空間屬性進行設置。該圖形設計工具最終生成一個XML文件,該文件描述了用戶界面的各種信息。
代碼自動生成引擎根據XML文件的信息在BREW應用程序框架模板文件中搜索相應的標簽,并根據界面控件的屬性在模板文件中添加相應代碼,從而生成BREW程序。
3 BREW應用的可視化界面設計及代碼自動生成
3.1 圖形界面控件的封裝及可視化設計環境
目前BREW應用的用戶界面設計仍然是手工編寫代碼的方式,編程人員需要多次運行修改才能達到滿意的效果,效率十分低。
本文開發一個包含有界面設計環境及多種圖形界面控件的可視化界面設計工具。利用該工具,開發人員可以為自己的應用程序創建一個圖形手機屏幕,并可以通過鼠標拖拽將各種圖形界面元素添加到手機屏幕的相應位置,進行“所見即所得”的界面設計。
該工具實現的關鍵是將BREW中相關接口進行抽象并封裝為圖形界面元素控件。例如將BREW中的IImage接口封裝為圖片控件,將ITextCtl控件封裝為文本框控件等等。當用戶將該控件拖拽到屏幕區域并進行調整時,需要記錄下該控件對應接口的各種表象屬性參數,如x、y坐標,寬、高等。此外,對于控件對應接口的其他屬性需要用戶進行設置。
本系統中的可視化界面設計工具可以使人們從從繁瑣的界面設計編碼工作中解脫出來,從而將主要精力放在應用程序業務邏輯的設計與實現上,從而提高了開發效率。
3.2 用戶界面XML文件
可視化界面設計工具根據用戶的設計要生成一個XML文件,該文件記錄了程序界面的各種設計信息,是自動代碼生成中數據來源之一,代碼自動生成引擎根據該文件及程序模板生成最終代碼。在這里,用戶界面信息是以XML文件的格式保存用戶在向導中輸入的信息。之所以采用XML文件的格式保存用戶輸入的信息,是由XML文件的特點決定的。XML是被設計用來存儲數據、攜帶數據和交換數據,并且XML可以從多種類型的數據存儲方式中分離數據。
XML數據定義文件中的標簽名為待替換的參數,也是模板文件中的特殊的標簽,標簽值為用戶輸入的信息,用于代替模板中的待替換的參數。
在本文中,用戶界面XML中定義了每一種界面元素的名稱、類型、所屬窗口、尺寸、坐標等等信息。例如:
….
….
上例中定義了一個名為mainform的主界面窗口和一個名為pic1的圖片控件。主界面窗口大小為128*160,顏色深度為16位。圖片對應的文件時pic/test1.jpg,該圖片的大小為50*70,位于主界面窗口上(20,10)的位置。圖片其中的標簽名,如FormName, ImageName, FormCX, FormCY, FormColorDepth,ImageFile等是模板中待替換的參數,而標簽值,如mainform, userid,pic1,128,160,16,/pic/test1.jpg等用于代替模板中待替換的參數。
3.3 BREW應用程序框架模板文件
模板描述文件可以理解成是一種解釋型文件,需要模板引擎解析執行,執行的結果輸出是程序源代碼文本。模板描述文件實現了代碼框架、數據和流程分離,而且支持模板塊嵌套。
BREW應用程序框架模板文件包括AEEApplet結構體定義部分,入口函數AEEClsCreateInstance(),事件處理函數AEEApplet_HandelEvent(),初始化函數AEEApplet_InitAppData(),和系統終了函數AEEApplet_FreeAppData()四部分。
模板中入口函數AEEClsCreateInstance()采用固定的格式和內容,一般不需要修改。事件處理函數AEEApplet_HandelEvent()包含EVT_APP_START、EVT_APP_STOP、EVT_APP_SUSPEND等小程序事件、按鍵事件EVT_KEY、EVT_COMMAND事件等的處理。這部分是BREW應用的重要組成部分。初始化函數AEEApplet_InitAppData()主要完成應用的初始化,包括變量的初始化、接口實例的創建及初始化等;系統終了函數AEEApplet_FreeAppData()主要完成接口實例的釋放,內存變量的釋放等。
3.4 BREW應用代碼自動生成引擎
代碼自動生成引擎用于解析XML定義文件和讀取指定的模板文件,并將定義文件中解析得來的數據信息,在引擎中進行保存,然后對模板文檔中的標記及變量進行匹配及替換,從而產生源代碼輸出。根據上面的流程將引擎的設計分成三個步驟:
●解析XML數據文件,讀取其中相關的信息;
●解析模板文件,找到要添加代碼的位置并添加代碼;
●根據需要,對已替換的模板進行總體的調整。
例如引擎對用戶界面XML文件分析得知在窗口上設計了一個圖片,引擎將在程序模板的結構體初始化部分生成圖片實例指針的定義:
IImage*pIImage_pic1;
在初始化函數中生成圖片接口示例代碼:
pMe->pIImage_pic1 = ISHELL_LoadImage (pMe->pIshell, “/pic/test1.jpg”);
在事件處理函數的EVT_APP_START事件中生成加載圖片的代碼:
IIMAGE_Draw(pMe->pIImage_pic1,picX,picY);
在終了函數中生成釋放圖片實例的代碼:
if(pMe->pIImage_pic1 != NULL)
{
IIMAGE_Release(pMe->pIImage_pic1);
pMe->pIImage_pic1=NULL;
}
4 結束語
本文提出了一種基于XML模板的BREW代碼自動生成技術。在本系統中,通過對BREW接口的封裝,為BREW手機應用開發提供一個可視化的設計環境。利用該系統,開發人員可以進行“所見即所得”的應用程序界面設計,并根據BREW程序框架模板生成相應的源代碼。該系統可使BREW應用開發由過去的手工書寫源代碼變為可視化設計、源代碼自動生成,促進BREW應用開發的標準化和工業化,大幅度提高開發效率。
參考文獻
[1]R.J.Sanchez. CDMA Digital Cellular Overview and Field Trials Results[J].IEEE MTT-S International Topical Symposium,1995.
[2]ATTAR R, GHOSH D, LOTT C ,et al. Evolution of cdma2000 Cellular Networks: Multicarrier[J]. EV-DO.IEEE Communications Magazine,0163-6804/06,2006(3):46.
[3]李賀,尹國強,蔣亮.BREW技術開發與應用[M].北京:機械工業出版社,2006.
[4]郭金發,張龍.短信與BREW開發技術及實踐[M].西安:西安電子科技大學出版社,2005.
[5]卜佳俊,張海翔,陳天洲.深入BREW手機游戲開發[M].北京:清華大學出版社,2004.