余俊
摘要: 在互聯(lián)網(wǎng)飛速發(fā)展的今天,一些技術(shù)應(yīng)運(yùn)而生,如HTML5,WEB2.0技術(shù)。這些技術(shù)使得Web App得以出現(xiàn)。Web App不需要下載安裝,是一種生存于瀏覽器中的應(yīng)用。雖然Web App這種輕應(yīng)用使用起來(lái)很方便,但開(kāi)發(fā)過(guò)程中仍有大量的重復(fù)的工作與技術(shù)細(xì)節(jié),而且輕型軟件的開(kāi)發(fā)應(yīng)該著重具體功能的實(shí)現(xiàn)、用戶(hù)的易用性和體驗(yàn)度的設(shè)計(jì)上。解決重復(fù)性工作就是將模型驅(qū)動(dòng)架構(gòu)(Model Driven Architecture, MDA)注入到Web App開(kāi)發(fā)中,將開(kāi)發(fā)工作從以代碼為核心轉(zhuǎn)變?yōu)橐阅P蜑楹诵?。本文借助了一個(gè)基于MDA的Web App開(kāi)發(fā)框架 MDWAF(Model Driven Web App develop Framework)[11],提出了MDWAF中的平臺(tái)無(wú)關(guān)模型的建立過(guò)程的改進(jì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ū)動(dòng)架構(gòu);Web App;平臺(tái)無(wú)關(guān)模型
Key words: model driven architecture;Web App;platform independent model
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2017)06-0205-03
1 緒論
現(xiàn)如今移動(dòng)端智能設(shè)備的使用率越來(lái)越高,且手機(jī)主流系統(tǒng)份額逐步拉近,這使得App制造行業(yè)逐步興起。App又分Native App和Web App,其中Native App就是下載后安裝在系統(tǒng)中的應(yīng)用,而Web App是依賴(lài)瀏覽器生存的。Web App的優(yōu)勢(shì)就在于跨平臺(tái)性好,可以減少開(kāi)發(fā)成本;數(shù)據(jù)存儲(chǔ)在云端,用戶(hù)數(shù)據(jù)一致性好。使用模型驅(qū)動(dòng)的原因就是Web App本身結(jié)構(gòu)簡(jiǎn)單,但是重復(fù)繁瑣的工作比較多。模型驅(qū)動(dòng)正好可以解決此問(wèn)題。
本文所提出的方法就是將模型驅(qū)動(dòng)的思想加入Web App的開(kāi)發(fā)當(dāng)中,主要闡述的是平臺(tái)無(wú)關(guān)模型(PIM)的建立環(huán)節(jié)。此前的使用模型驅(qū)動(dòng)思想的軟件開(kāi)發(fā)工程中的PIM建立使用的一般是類(lèi)圖和時(shí)序圖結(jié)合的方法,但在移動(dòng)端設(shè)備中,這種結(jié)合方法并不理想,本文就應(yīng)用了類(lèi)圖和狀態(tài)機(jī)圖結(jié)合的方法,尋求了PIM的定義和轉(zhuǎn)換規(guī)則。
2 簡(jiǎn)述MDWAF
Model Driven Web App develop Framework(MDWAF)開(kāi)發(fā)框架由三部分組成,如圖1所示。
第一部分,開(kāi)發(fā)者使用的本地開(kāi)發(fā)工具,使開(kāi)發(fā)者通過(guò)MDA實(shí)現(xiàn)Web App的快速開(kāi)發(fā)。
第二部分,云端服務(wù)支持。將Web App存儲(chǔ)在云端,可以實(shí)現(xiàn)Web App的推送功能。
第三部分,運(yùn)行于移動(dòng)終端的Web App引擎,為最終用戶(hù)提供Web App運(yùn)行環(huán)境的本地支持。
3 平臺(tái)無(wú)關(guān)模型的建立
在WDWAF架構(gòu)下,在經(jīng)過(guò)需求分析階段后,開(kāi)發(fā)人員需要建立平臺(tái)無(wú)關(guān)模型(PIM)。這就需要用到UML中的狀態(tài)機(jī)圖和類(lèi)圖。因?yàn)閃eb App是事件驅(qū)動(dòng)的,所以我們需要狀態(tài)機(jī)圖來(lái)表示在運(yùn)行工程中由于事件而產(chǎn)生的狀態(tài)變遷,類(lèi)圖是用來(lái)詳細(xì)描述每個(gè)狀態(tài)的靜態(tài)結(jié)構(gòu)。首先來(lái)看一下需求模型的建立。
3.1 需求模型的建立
本文中的需求模型是通過(guò)EMF技術(shù)實(shí)現(xiàn)的,需要使用元模型的概念Ecore和XMI來(lái)實(shí)現(xiàn)模型的持久化。XMI通過(guò)標(biāo)準(zhǔn)化的XML文檔格式和其他模型定義了一個(gè)數(shù)據(jù)交換模式,通過(guò)樣表的輸入將模型轉(zhuǎn)變?yōu)閄ML文檔,通過(guò)XSLT技術(shù)將UML轉(zhuǎn)換為XML。需要通過(guò)元模型來(lái)看出類(lèi)概念,關(guān)聯(lián)概念,屬性概念,操作概念,狀態(tài)概念,變遷概念,動(dòng)作概念和觸發(fā)事件概念。圖2表示的就是在MDWAF架構(gòu)中UML的模型如何轉(zhuǎn)化的XML的過(guò)程。
根據(jù)整體的轉(zhuǎn)換概念可以從狀態(tài)機(jī)圖和類(lèi)圖模型中,抽取相關(guān)的定義來(lái)加以轉(zhuǎn)換,這一部分將在3.2中進(jìn)行介紹。
3.2 平臺(tái)無(wú)關(guān)模型的定義
在Web App的開(kāi)發(fā)過(guò)程中,我們可以依據(jù)MVC的三層思想,基于HTML和Javescript技術(shù)利用事件驅(qū)動(dòng)的考慮Control層的建立。依據(jù)MDWAF架構(gòu),文中提出了以下幾條改進(jìn)的定義。
定義1:一個(gè)具體的頁(yè)面可以定義成一個(gè)四元組:
SP = (Id, Models, Forms, Events)
Id 用來(lái)標(biāo)識(shí)一個(gè)網(wǎng)頁(yè)頁(yè)面;
Models當(dāng)前狀態(tài)對(duì)應(yīng)的頁(yè)面內(nèi)涉及的數(shù)據(jù)模型;
Forms 頁(yè)面內(nèi)部的頁(yè)面布局和UI;
Events 軟件是由事件驅(qū)動(dòng)的,代表了在此頁(yè)面中所有的能用操作觸發(fā)的事件集合還有觸發(fā)此事件的操作集合。
定義2:Event是個(gè)三元組:
Ev = (Triggers, Description, Operations)
Triggers 事件的觸發(fā)者;
Description 對(duì)此事件的具體描述,Descrition與Triggers可以一同作為對(duì)一個(gè)事件的具體標(biāo)識(shí);
Operations 包含了對(duì)這個(gè)特定事件所有的操作集合。
定義3:Operation是一個(gè)四元組:
Op = (Id, Para, Result, Type, TagetPage)
Id 用于標(biāo)識(shí)當(dāng)前的操作是唯一存在的,以保證操作的唯一性;
Para 是此操作的輸入?yún)?shù)列表,其中包括用戶(hù)的輸入操作和系統(tǒng)必要數(shù)據(jù);
Result 為具體的回傳數(shù)據(jù)的參數(shù)列表;
Type 是用來(lái)標(biāo)識(shí)此操作的具體類(lèi)型;
TagetPage 是頁(yè)面變遷的重要組成部分,不同的操作有不同的頁(yè)面變遷,當(dāng)前頁(yè)面到目標(biāo)頁(yè)面的變遷可以用SP->SP∪SP來(lái)表示。
通過(guò)以上的定義可以將文檔結(jié)構(gòu)寫(xiě)出:如圖3。
xmlns:wbmodel,xmlns:wbforms 和xmlns:wbevents定義了數(shù)據(jù)、視圖和事件的元模型。WADF是WDWAF架構(gòu)中的數(shù)據(jù)文件部分,需要遵循上述定義。
3.3 需求模型到平臺(tái)無(wú)關(guān)模型的轉(zhuǎn)換
根據(jù)上述MDWAF中需求模型的定義和文檔結(jié)構(gòu)可以提出如下的轉(zhuǎn)換規(guī)則:在狀態(tài)機(jī)圖中每個(gè)除初始狀態(tài)和結(jié)束狀態(tài)的State可以對(duì)應(yīng)生成一個(gè)Page,我們可以將規(guī)則表述為:
規(guī)則1:
For State in State Machine Diagram
if(!IntialState && !FinalState)
create Page
Page.Id = Serialize()
狀態(tài)機(jī)圖中的變遷在Web App中是有事件觸發(fā)的,所以是由Event表示出來(lái)的,我們可以將此規(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ù)每個(gè)變遷的初始狀態(tài)和目標(biāo)狀態(tài),來(lái)對(duì)應(yīng)描述一個(gè)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
在對(duì)狀態(tài)機(jī)圖進(jìn)行轉(zhuǎn)換的同時(shí),我們需要對(duì)對(duì)應(yīng)的類(lèi)圖進(jìn)行轉(zhuǎn)換,我們需要根據(jù)類(lèi)名來(lái)對(duì)頁(yè)面進(jìn)行配對(duì),將類(lèi)圖中的所有的組合部分轉(zhuǎn)化到Models表情下的數(shù)據(jù)模型中,將類(lèi)圖中的屬性分門(mén)別類(lèi)地映射到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
通過(guò)以上的幾個(gè)基本轉(zhuǎn)換規(guī)則,可以將需求分析中建立的類(lèi)圖和狀態(tài)機(jī)圖模型轉(zhuǎn)換為PIM的描述文檔WADF。至此關(guān)于PIM的轉(zhuǎn)換就可以基本完成。
4 結(jié)論與未來(lái)展望
針對(duì)模型驅(qū)動(dòng)開(kāi)發(fā)模式中Web App開(kāi)發(fā)中的平臺(tái)無(wú)關(guān)模型的建立工程,我們需要注意的技術(shù)細(xì)節(jié)還有很多,而且重復(fù)性的工作沒(méi)有完全地摒除。本文中結(jié)合WDWAF框架提出了基于WDWAF框架的三個(gè)定義,并將定義與類(lèi)圖和狀態(tài)機(jī)圖結(jié)合,找出四條轉(zhuǎn)換規(guī)則。
但是現(xiàn)在存在的問(wèn)題也很明顯:首先是服務(wù)平臺(tái)沒(méi)有選定,下一步的首要工作是獲得服務(wù)平臺(tái)的支持;其次是需要通過(guò)XSLT樣表生成XML文件,但是生成工具并不完善,需要進(jìn)一步編寫(xiě);最后在解決以上兩個(gè)問(wèn)題后,將著手進(jìn)行實(shí)例建模。
參考文獻(xiàn):
[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ū)動(dòng)元數(shù)據(jù)管理策略的研究[J].計(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ū)動(dòng)構(gòu)架[J].計(jì)算機(jī)工程,2010(6):49-51.
[10]薛振偉,吳志杰,楊德成.基于模型驅(qū)動(dòng)架構(gòu)的軟件開(kāi)發(fā)模式研究[J].兵工自動(dòng)化,2007(5):92-94.
[11]謝培基,余金山.面向J2EE主流框架的MDA模型轉(zhuǎn)換研究[J].微型機(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.