余俊
摘要: 在互聯(lián)網(wǎng)飛速發(fā)展的今天,一些技術(shù)應(yīng)運而生,如HTML5,WEB2.0技術(shù)。這些技術(shù)使得Web App得以出現(xiàn)。Web App不需要下載安裝,是一種生存于瀏覽器中的應(yīng)用。雖然Web App這種輕應(yīng)用使用起來很方便,但開發(fā)過程中仍有大量的重復的工作與技術(shù)細節(jié),而且輕型軟件的開發(fā)應(yīng)該著重具體功能的實現(xiàn)、用戶的易用性和體驗度的設(shè)計上。解決重復性工作就是將模型驅(qū)動架構(gòu)(Model Driven Architecture, MDA)注入到Web App開發(fā)中,將開發(fā)工作從以代碼為核心轉(zhuǎn)變?yōu)橐阅P蜑楹诵?。本文借助了一個基于MDA的Web App開發(fā)框架 MDWAF(Model Driven Web App develop Framework)[11],提出了MDWAF中的平臺無關(guān)模型的建立過程的改進方法。
Abstract: In the rapid development of the Internet today, some technologies came into being, such as HTML5, WEB2.0 technologies. These technologies enable the emergence of Web App. Web App does not need to download and install, and is a kind of application in the browser. Although the use of Web App light application is very convenient, there are still a lot of duplication of work and technical details in the development. And the development of lightweight software should focus on the realization of specific functions, the user's ease of use and experience of the design. To solve the repetitive work is to inject the Model Driven Architecture(MDA) into the Web App development, and to change the development of the work from the code as the core to the model as the core. In this paper, a MDA based Web App is used to develop a framework MDWAF (Model Driven App develop Framework). This paper presents an improved method of establishing a platform independent model in MDWAF.
關(guān)鍵詞: 模型驅(qū)動架構(gòu);Web App;平臺無關(guān)模型
Key words: model driven architecture;Web App;platform independent model
中圖分類號:TP311 文獻標識碼:A 文章編號:1006-4311(2017)06-0205-03
1 緒論
現(xiàn)如今移動端智能設(shè)備的使用率越來越高,且手機主流系統(tǒng)份額逐步拉近,這使得App制造行業(yè)逐步興起。App又分Native App和Web App,其中Native App就是下載后安裝在系統(tǒng)中的應(yīng)用,而Web App是依賴瀏覽器生存的。Web App的優(yōu)勢就在于跨平臺性好,可以減少開發(fā)成本;數(shù)據(jù)存儲在云端,用戶數(shù)據(jù)一致性好。使用模型驅(qū)動的原因就是Web App本身結(jié)構(gòu)簡單,但是重復繁瑣的工作比較多。模型驅(qū)動正好可以解決此問題。
本文所提出的方法就是將模型驅(qū)動的思想加入Web App的開發(fā)當中,主要闡述的是平臺無關(guān)模型(PIM)的建立環(huán)節(jié)。此前的使用模型驅(qū)動思想的軟件開發(fā)工程中的PIM建立使用的一般是類圖和時序圖結(jié)合的方法,但在移動端設(shè)備中,這種結(jié)合方法并不理想,本文就應(yīng)用了類圖和狀態(tài)機圖結(jié)合的方法,尋求了PIM的定義和轉(zhuǎn)換規(guī)則。
2 簡述MDWAF
Model Driven Web App develop Framework(MDWAF)開發(fā)框架由三部分組成,如圖1所示。
第一部分,開發(fā)者使用的本地開發(fā)工具,使開發(fā)者通過MDA實現(xiàn)Web App的快速開發(fā)。
第二部分,云端服務(wù)支持。將Web App存儲在云端,可以實現(xiàn)Web App的推送功能。
第三部分,運行于移動終端的Web App引擎,為最終用戶提供Web App運行環(huán)境的本地支持。
3 平臺無關(guān)模型的建立
在WDWAF架構(gòu)下,在經(jīng)過需求分析階段后,開發(fā)人員需要建立平臺無關(guān)模型(PIM)。這就需要用到UML中的狀態(tài)機圖和類圖。因為Web App是事件驅(qū)動的,所以我們需要狀態(tài)機圖來表示在運行工程中由于事件而產(chǎn)生的狀態(tài)變遷,類圖是用來詳細描述每個狀態(tài)的靜態(tài)結(jié)構(gòu)。首先來看一下需求模型的建立。
3.1 需求模型的建立
本文中的需求模型是通過EMF技術(shù)實現(xiàn)的,需要使用元模型的概念Ecore和XMI來實現(xiàn)模型的持久化。XMI通過標準化的XML文檔格式和其他模型定義了一個數(shù)據(jù)交換模式,通過樣表的輸入將模型轉(zhuǎn)變?yōu)閄ML文檔,通過XSLT技術(shù)將UML轉(zhuǎn)換為XML。需要通過元模型來看出類概念,關(guān)聯(lián)概念,屬性概念,操作概念,狀態(tài)概念,變遷概念,動作概念和觸發(fā)事件概念。圖2表示的就是在MDWAF架構(gòu)中UML的模型如何轉(zhuǎn)化的XML的過程。
根據(jù)整體的轉(zhuǎn)換概念可以從狀態(tài)機圖和類圖模型中,抽取相關(guān)的定義來加以轉(zhuǎn)換,這一部分將在3.2中進行介紹。
3.2 平臺無關(guān)模型的定義
在Web App的開發(fā)過程中,我們可以依據(jù)MVC的三層思想,基于HTML和Javescript技術(shù)利用事件驅(qū)動的考慮Control層的建立。依據(jù)MDWAF架構(gòu),文中提出了以下幾條改進的定義。
定義1:一個具體的頁面可以定義成一個四元組:
SP = (Id, Models, Forms, Events)
Id 用來標識一個網(wǎng)頁頁面;
Models當前狀態(tài)對應(yīng)的頁面內(nèi)涉及的數(shù)據(jù)模型;
Forms 頁面內(nèi)部的頁面布局和UI;
Events 軟件是由事件驅(qū)動的,代表了在此頁面中所有的能用操作觸發(fā)的事件集合還有觸發(fā)此事件的操作集合。
定義2:Event是個三元組:
Ev = (Triggers, Description, Operations)
Triggers 事件的觸發(fā)者;
Description 對此事件的具體描述,Descrition與Triggers可以一同作為對一個事件的具體標識;
Operations 包含了對這個特定事件所有的操作集合。
定義3:Operation是一個四元組:
Op = (Id, Para, Result, Type, TagetPage)
Id 用于標識當前的操作是唯一存在的,以保證操作的唯一性;
Para 是此操作的輸入?yún)?shù)列表,其中包括用戶的輸入操作和系統(tǒng)必要數(shù)據(jù);
Result 為具體的回傳數(shù)據(jù)的參數(shù)列表;
Type 是用來標識此操作的具體類型;
TagetPage 是頁面變遷的重要組成部分,不同的操作有不同的頁面變遷,當前頁面到目標頁面的變遷可以用SP->SP∪SP來表示。
通過以上的定義可以將文檔結(jié)構(gòu)寫出:如圖3。
xmlns:wbmodel,xmlns:wbforms 和xmlns:wbevents定義了數(shù)據(jù)、視圖和事件的元模型。WADF是WDWAF架構(gòu)中的數(shù)據(jù)文件部分,需要遵循上述定義。
3.3 需求模型到平臺無關(guān)模型的轉(zhuǎn)換
根據(jù)上述MDWAF中需求模型的定義和文檔結(jié)構(gòu)可以提出如下的轉(zhuǎn)換規(guī)則:在狀態(tài)機圖中每個除初始狀態(tài)和結(jié)束狀態(tài)的State可以對應(yīng)生成一個Page,我們可以將規(guī)則表述為:
規(guī)則1:
For State in State Machine Diagram
if(!IntialState && !FinalState)
create Page
Page.Id = Serialize()
狀態(tài)機圖中的變遷在Web App中是有事件觸發(fā)的,所以是由Event表示出來的,我們可以將此規(guī)則表示如下:
規(guī)則2:
For Transation in State Machine Diagram
Create Event where Page.Id = TransationStartId
Event.Triggers = Transation.Event.Triggers
Event.Description = Transation.Event.Description
Event.Operation = Transation.Operation
Operation命名規(guī)則是根據(jù)每個變遷的初始狀態(tài)和目標狀態(tài),來對應(yīng)描述一個ScreenPage內(nèi)的操作。映射規(guī)則如下所示:
規(guī)則3:
For Transation in State Machine Diagram
Create Operation to ScreenPage.Operation where ScreenPage.Id = TransationStartId
Operation.Id = Transation.Operation.Id
Operation.Para = Transation.Operation.Para
Operation.Result = Transation.Operation.Result
Operation.Type = Transation.Operation.Type
Operation.TagetPage = Transation.Operation.Type
在對狀態(tài)機圖進行轉(zhuǎn)換的同時,我們需要對對應(yīng)的類圖進行轉(zhuǎn)換,我們需要根據(jù)類名來對頁面進行配對,將類圖中的所有的組合部分轉(zhuǎn)化到Models表情下的數(shù)據(jù)模型中,將類圖中的屬性分門別類地映射到Model中。規(guī)則如下:
規(guī)則4:
For Class in Class Diagram
If(Class is single)
Create Model to ScreenPage.Models where ScreenPage.Id = Class.Name
For Attribute in Class
Create Attribute to Model
Model.Attribute = Class.Attribute
通過以上的幾個基本轉(zhuǎn)換規(guī)則,可以將需求分析中建立的類圖和狀態(tài)機圖模型轉(zhuǎn)換為PIM的描述文檔WADF。至此關(guān)于PIM的轉(zhuǎn)換就可以基本完成。
4 結(jié)論與未來展望
針對模型驅(qū)動開發(fā)模式中Web App開發(fā)中的平臺無關(guān)模型的建立工程,我們需要注意的技術(shù)細節(jié)還有很多,而且重復性的工作沒有完全地摒除。本文中結(jié)合WDWAF框架提出了基于WDWAF框架的三個定義,并將定義與類圖和狀態(tài)機圖結(jié)合,找出四條轉(zhuǎn)換規(guī)則。
但是現(xiàn)在存在的問題也很明顯:首先是服務(wù)平臺沒有選定,下一步的首要工作是獲得服務(wù)平臺的支持;其次是需要通過XSLT樣表生成XML文件,但是生成工具并不完善,需要進一步編寫;最后在解決以上兩個問題后,將著手進行實例建模。
參考文獻:
[1]Miller J M J.MDA Guide Version 1.0.1[EB/OL].http://www.omg.com/mda.
[2]OMG. Object Management Group, 2010. (retrieved on 22.10.12) http://www.omg.org/>.
[3]Ashbacher C.The Object Constraint Language Second Edition,Getting Your Models Ready for MDA,by Jos Warmer and Anneke Kleppe[J]. The Journal of Object Technology, 2003, 2(6):1-39.
[4]Pandey R.Object constraint language(OCL):past,present and future[J].ACM SIGSOFT Software EngineeringNotes,2011,36(1):1-4.
[5]Grose T J, Doney G C, Brodsky S A. Mastering XMI: Java Programming with XMI, XML and UML [J].Computer Bulletin, 2003,45(2).
[6]Sanchez D,Batet M.Semantic similarity estimation in the biomedical domain:an ontology-based information-theoretic perspective[J].J Biomed Inform, 2011.
[7]蔣楠,丁祥武.基于模型驅(qū)動元數(shù)據(jù)管理策略的研究[J].計算機應(yīng)用與軟件,2012(1):188-190.
[8]Maciel A, Sankaranarayanan G,Halic T,et a1.Surgical model-view-controller simulation software framework for local and collaborative applications[J].Int J ComputAssist Radiol Surg,2011,6(4):457-471.
[9]於良偉,袁泉,霍劍青,等.基于XML和XSLT的模型驅(qū)動構(gòu)架[J].計算機工程,2010(6):49-51.
[10]薛振偉,吳志杰,楊德成.基于模型驅(qū)動架構(gòu)的軟件開發(fā)模式研究[J].兵工自動化,2007(5):92-94.
[11]謝培基,余金山.面向J2EE主流框架的MDA模型轉(zhuǎn)換研究[J].微型機與應(yīng)用,2012(17):11-14.
[12]Peng Xiao,Lv Qianxi, Wu Minghui, Peng Bin, Wang Shuoping.An MDA based modeling and implementation for web app Luo[J]. Journal of Software, v 8, n 8, p 1881-1888, 2013.