趙晨陽
(華中科技大學(xué) 國家CAD支撐軟件工程技術(shù)研究中心,湖北 武漢 430074)
在仿真組件模型開發(fā)方法上,當(dāng)前主要圍繞基于XML的MDA(Model Driven Architecture)的思想和方法[1,2],然而,基于MDA的模型驅(qū)動開發(fā)方法沒有領(lǐng)域概念支持,通用的UML并不能清楚地表達(dá)建模時需要的一些概念并且對模型的描述不精確。DSM是新一代建模理論[3],其主要思想是針對特定的應(yīng)用領(lǐng)域建立該領(lǐng)域建模語言(DSML,Domain-Specific Modeling Language)或規(guī)則,直接使用問題域的業(yè)務(wù)概念和規(guī)則解決領(lǐng)域問題。這種方法比基于UML的MDA抽象層次更高、效率更高,完全由用戶控制代碼的生成。目前,特定領(lǐng)域建模方法已經(jīng)在軍事、汽車、航空和化工等領(lǐng)域得到廣泛應(yīng)用[4-6],并體現(xiàn)出很大的優(yōu)勢,但在仿真組件建模領(lǐng)域的研究國內(nèi)外還比較少。本文基于特定領(lǐng)域建模技術(shù),構(gòu)建仿真組件領(lǐng)域元模型,實現(xiàn)了面向仿真組件領(lǐng)域的精確建模到模型代碼的自動生成。
仿真組件建模采用DSM理論,可以將過程劃分為兩個階段:仿真組件領(lǐng)域建模環(huán)境構(gòu)建和用戶仿真模型的開發(fā)。仿真組件領(lǐng)域建模過程如圖1所示。
首先要進行領(lǐng)域建模,采用DSM理論,抽象出面向仿真組件模型領(lǐng)域的元模型[7],建立統(tǒng)一的面向該領(lǐng)域的DSML,在元模型的基礎(chǔ)上開發(fā)出模型解釋器。
用戶開發(fā)模型是用面向仿真組件建模領(lǐng)域的DSML構(gòu)建仿真組件模型,因此,仿真組件模型開發(fā)人員不需要跟計算機領(lǐng)域的開發(fā)人員溝通,根據(jù)自身所掌握的領(lǐng)域知識和系統(tǒng)的需求來搭建領(lǐng)域模型,通過模型解釋器實現(xiàn)模型到代碼的轉(zhuǎn)換,生成最終模型代碼。
圖1 仿真組件領(lǐng)域建模過程
隨著基于組件的設(shè)計(Component-based design)理念的提出,SCM成為整個仿真系統(tǒng)的核心部分。SCM是針對仿真領(lǐng)域的基于組件的標(biāo)準(zhǔn)模型,實現(xiàn)仿真功能和行為、仿真集成需求與中間件的分離[8]。采用DSM理論,抽象出仿真組件最小單元共性的基本結(jié)構(gòu),SCM結(jié)構(gòu)表現(xiàn)為組件各模塊組成、組合及相互間的鏈接關(guān)系。SCM組件模塊可分解為模型輸入模塊、模型輸出模塊、模型狀態(tài)模塊、模型數(shù)據(jù)模塊、功能接口模塊、用戶消息模塊和模型調(diào)用接口模塊等,如圖2所示。
基于特定領(lǐng)域建模就是用領(lǐng)域建模語言對領(lǐng)域模型進行描述,建立元模型的過程,即為建立DSML的過程[9]。根據(jù)仿真組件模型的領(lǐng)域概念及其基本結(jié)構(gòu)分析,構(gòu)建仿真組件模型的元模型。仿真組件元模型包括根模塊域類(ModelRoot)、功能模塊域類(Function)和消息模塊域類(Message)。功能模塊域類由ModelRootHasFunctions關(guān)系嵌入到根模塊域類,消息模塊域類由ModelRootHasMessage關(guān)系嵌入到根模塊域類。功能模塊定義輸入域類(InputParam)、輸出域類(OutputParam)、狀態(tài)域類(StateParam)、初始變量域類(InitializeParam)、系統(tǒng)消息域類(RespondMessage)、用戶消息域類(UserMessage)、內(nèi)部變量域類(InsideVariable)和它們的屬性共同嵌入到功能模塊域類。消息參數(shù)域類由MessageHasMessageParam關(guān)系嵌入到消息域類,由此構(gòu)建的SCM元模型如圖3所示。這些模型要素在后臺均以XML格式進行層次化存儲。仿真組件元模型的定義和約束的過程,也是定義SCMML的過程。
圖2 仿真組件基本結(jié)構(gòu)
本文主要由火箭仿真組件領(lǐng)域開發(fā)人員,利用SCMML建模,完成火箭仿真組件領(lǐng)域建模。根據(jù)火箭仿真組件領(lǐng)域建模需求,使用SCMML建立的火箭仿真組件模型如圖4所示,其中定義了功能模塊RunModel及其如下輸入?yún)?shù):地球基本參數(shù)BasicEarthParam、反射點地理參數(shù)LaunchPos、引力加速度VecGravity_g、輸出火箭位置VecPos_g、狀態(tài)參數(shù)StateParam1、初始參數(shù)InitializeParam1、7個固定的系統(tǒng)消息、用戶消息Msg1、內(nèi)部變量k1以及class1和Msg1。
發(fā)出轉(zhuǎn)換模型命令后,通過模型轉(zhuǎn)換器,在Visual Studio的“解決方案資源管理器”代碼框架里自動添加對應(yīng)的模型代碼。本實例添加的模型代碼文件為類定義文件class1.h和class1.cpp、結(jié)構(gòu)體定義文件User_Struct.h、用戶消息定義文件UserMsgDef.h、功能模塊定義文件Runodel.cpp和UserApi_RunModel.cpp以及組件模型接口文件Interface.cpp。
圖3 SCM元模型
圖4 火箭仿真組件領(lǐng)域建模實例
通過和手工編碼建立火箭仿真模型的研究比較,利用特定領(lǐng)域建模的仿真組件建模方法自動生成火箭仿真模型可節(jié)省50%的時間,在模型重用性、快速定制方面有很大的優(yōu)勢。經(jīng)編譯調(diào)試及在第三方仿真平臺調(diào)用測試,表明自動生成的模型具有良好的可靠性。
本文分析確定了仿真組件結(jié)構(gòu)和開發(fā)過程,引入特定領(lǐng)域建模理論建立了仿真組件領(lǐng)域元模型,開發(fā)了仿真組件領(lǐng)域建模語言SCMML,使得該領(lǐng)域模型的開發(fā)工作主要集中在組件的建模、設(shè)計。應(yīng)用此建模語言搭建了火箭仿真組件模型,經(jīng)過模型轉(zhuǎn)換器生成火箭組件模型源程序,比手工編碼建模節(jié)省了50%的時間。因此基于DSM方法開發(fā)仿真組件模型,滿足了領(lǐng)域工程人員對該領(lǐng)域的特定模型進行快速定制,形成了仿真組件開發(fā)方法上的突破,較之傳統(tǒng)的手工編碼,無論是從提高開發(fā)效率方面,還是模型維護和重用方面,都有許多優(yōu)勢。
[1]付佩,谷青范.基于UML的可執(zhí)行模型實現(xiàn)機制研究[J].航空電子技術(shù),2013(1):10-14.
[2]王超.基于MDA的仿真模型開發(fā)與集成框架研究[D].長沙:國防科學(xué)技術(shù)大學(xué)研究生院,2006:25-34.
[3]Karsai G,Sztipanovits J,Ledecai A,et al.Modelintegrated development of embedded software[J].Proceedings of the IEEE,2003,91(1):145-164.
[4]Delaval G,Rutten E.A domain-specific language for multitask systems,applying discrete controller synthesis[J].Eurasip Journal on Embedded Systems,2007(10):17-33.
[5]舒兆港,李迪,胡躍軍,等.基于領(lǐng)域建模的數(shù)控系統(tǒng)代碼生成技術(shù)[J].計算機工程,2009,35(1):7-9.
[6]Oscar G,Rubby C,Dirk D.MMC-BPM:a domainspecific language for business processes analysis[J].Business Information Systems,2009,21:157-168.
[7]肖蘇華,李迪,葉峰,等.基于特定領(lǐng)域建模的數(shù)控系統(tǒng)元模型研究[J].深圳大學(xué)學(xué)報(理工版),2008,25(1):92-96.
[8]燕雪峰,杜慶偉,柴旭東.一種新的仿真組件模型及其實現(xiàn)[J].南京航空航天大學(xué)學(xué)報,2006,38(6):780-785.
[9]崔妍妍.特定領(lǐng)域動態(tài)元建模語言研究[D].昆明:云南大學(xué),2010:78.