侯志華,艾中良
(華北計算技術(shù)研究所總體部,北京 100083)
效能評估[1]指對系統(tǒng)執(zhí)行某一項任務(wù)結(jié)果、系統(tǒng)完成任務(wù)的能力[2]或者系統(tǒng)體系結(jié)構(gòu)效能等指標(biāo)的量化計算和結(jié)論性評價,廣泛用于軍事、科研、制造行業(yè),也可用于評估某種計劃、工程。隨著效能評估在各個行業(yè)的發(fā)展,針對特定領(lǐng)域的效能評估方法被提出,同時效能評估任務(wù)也變得越來越復(fù)雜。目前相關(guān)研究主要集中在效能評估方法的創(chuàng)新上,對效能評估軟件的開發(fā)方式的研究工作則相對較少。傳統(tǒng)軟件開發(fā)方式[3]中設(shè)計階段的模型與開發(fā)階段的代碼呈現(xiàn)分離的狀態(tài),因此效能評估任務(wù)的復(fù)雜化所導(dǎo)致開發(fā)人員在軟件設(shè)計階段對軟件模型巨大的投入不能直接應(yīng)用于開發(fā)階段,給效能評估軟件的開發(fā)帶來了極大的不便。同時,設(shè)計階段的建模工具不能直接面向效能評估,不能充分利用效能評估活動的特點減少建模工作量,提高建模效率。因此需要一套面向效能評估的軟件開發(fā)系統(tǒng),充分利用前期效能評估模型成果,提高效能評估的開發(fā)效率。
本文提出一種效能評估軟件構(gòu)建平臺(Effectiveness Evaluation Software Development Platform,EESDP),EESDP采用模型驅(qū)動[4]的開發(fā)方式,通過使用面向效能評估領(lǐng)域的域特定語言(Domain Specific Language,DSL)[5]構(gòu)建效能評估模型——效能評估計算流程[6],同時定義效能評估軟件結(jié)構(gòu)模型,通過模型轉(zhuǎn)換,將效能評估計算流程轉(zhuǎn)換為軟件結(jié)構(gòu)模型,作為效能評估軟件設(shè)計模型,定義代碼生成引擎,通過代碼生成完成效能評估軟件的構(gòu)建,最大限度利用設(shè)計階段的設(shè)計成果,提高效能評估軟件開發(fā)效率。
效能評估需要通過綜合運用系統(tǒng)分析、系統(tǒng)建模與仿真等技術(shù),根據(jù)評估對象的特點進(jìn)行指標(biāo)構(gòu)建并通過計算對評估對象進(jìn)行綜合評價和對比分析,為將來的使用和決策提供科學(xué)依據(jù)。效能評估的過程是對評估數(shù)據(jù)的處理、計算和綜合過程,屬于一種“純計算”活動,具有計算步驟復(fù)雜、計算之間結(jié)構(gòu)關(guān)系多樣等特點。評估的一般過程包括指標(biāo)構(gòu)建、指標(biāo)數(shù)據(jù)預(yù)處理、指標(biāo)解算和指標(biāo)綜合等步驟[7]。每一個步驟又由若干的計算步驟按照一定的過程組織而成,因此,效能評估可以看作是計算步組合而成的流程,稱為效能評估計算流程。
根據(jù)效能評估特點研究,效能評估計算流程是由一系列計算步組合而成。由于若干計算步組合在一起仍然是一個計算步,為了區(qū)分,將計算步分為原子計算步和復(fù)合計算步兩種。原子計算步、復(fù)合計算步和效能評估流程之間的關(guān)系如圖1所示。
圖1 效能評估計算步類結(jié)構(gòu)示意圖
由圖1可知,原子計算步、復(fù)合計算步和效能評估流程之間的關(guān)系可以概括為以下3點:
(1)原子可計算步與復(fù)合可計算步均屬于可計算步;
(2)效能評估流程屬于計算步,是與之相關(guān)的計算步按照特定的組合關(guān)系形成的更復(fù)雜的計算步;
(3)復(fù)合可計算步由原子可計算步和復(fù)合可計算步組成。
EESDP是一個集多種模型于一體,由多個功能組件協(xié)同處理,共同完成效能評估軟件構(gòu)建的平臺,其體系結(jié)構(gòu)如圖2所示。
圖2 EESDP體系結(jié)構(gòu)
由圖2可知,EESDP組件結(jié)構(gòu)主要包括:計算流程編輯器、軟件結(jié)構(gòu)模型生成器、軟件生成引擎和算子庫;EESDP中間制品包括效能評估計算流程和效能評估軟件結(jié)構(gòu)模型。
(1)計算流程編輯器的主要功能是為用戶提供用于定義和修改計算流程的工具。計算流程編輯器采用可視化拖拽的建模方式描述效能評估過程,建立平臺無關(guān)模型,并生成效能評估計算流程文件,保存效能評估計算流程。
(2)軟件結(jié)構(gòu)模型生成器以效能評估計算流程腳本文件為輸入,通過模型轉(zhuǎn)換將效能評估計算流程模型轉(zhuǎn)換為效能評估軟件結(jié)構(gòu)模型的邏輯單元。
(3)軟件生成引擎以效能評估軟件結(jié)構(gòu)模型作為輸入,通過解析該模型,指導(dǎo)算子庫中的算子進(jìn)行組合[8],生成與效能評估計算流程對應(yīng)的效能評估軟件。
(4)算子庫是存儲和管理效能評估算子的邏輯單元,算子庫為軟件生成引擎提供提交算子庫實時的結(jié)構(gòu)信息以及算子調(diào)用等服務(wù)接口。
(5)效能評估計算流程是由用戶使用面向效能評估的領(lǐng)域特定語言手動構(gòu)建的流程,描述了效能評估任務(wù)。
(6)效能評估軟件結(jié)構(gòu)模型由效能評估計算流程經(jīng)過模型轉(zhuǎn)換[9]而來,描述效能評估軟件結(jié)構(gòu),驅(qū)動效能評估軟件生成。
通過分析EESDP的體系結(jié)構(gòu)可知,EESDP將效能評估軟件的構(gòu)建過程分為2個階段:(1)模型轉(zhuǎn)換階段。該階段構(gòu)造效能評估計算流程,經(jīng)模型轉(zhuǎn)換產(chǎn)生效能評估軟件結(jié)構(gòu)模型。(2)軟件生成階段。該階段在軟件生成引擎的驅(qū)動下,基于效能評估軟件結(jié)構(gòu)模型生成效能評估軟件。
模型轉(zhuǎn)換是EESDP的核心,基于OMG(Object Management Group)提出的模型驅(qū)動框架以及EESDP所面臨的模型轉(zhuǎn)換任務(wù),提出模型轉(zhuǎn)換框架如圖3所示。
圖3 模型轉(zhuǎn)換框架
分析圖3模型轉(zhuǎn)換過程可知,模型轉(zhuǎn)換的關(guān)鍵是基于計算流程元模型和算子組合元模型完成轉(zhuǎn)換規(guī)則的構(gòu)建,該轉(zhuǎn)換規(guī)則轉(zhuǎn)換引擎上完成計算流程模型到算子組合模型的自動轉(zhuǎn)換,因此,模型轉(zhuǎn)換的關(guān)鍵是效能評估計算流程元模型、效能評估軟件結(jié)構(gòu)元模型和轉(zhuǎn)換規(guī)則。
效能評估計算流程元模型是基于效能評估計算特點而定義的,是EESDP模型轉(zhuǎn)換的源模型的元模型,為清楚描述模型轉(zhuǎn)換過程,以下為元模型[10]主要對象的形式化描述和定義[11],元模型各元素的靜態(tài)語義使用 OCL[12]表達(dá)式描述。
定義1 Process表示效能評估計算流程,該流程可以定義為一個五元組:
其中,Inputs表示流程的輸入數(shù)據(jù)集合,是參與效能評估計算的數(shù)據(jù)集合;Calculates表示流程中所包含的計算步的集合,完成效能評估計算;Relations表示流程中的連接關(guān)系;Output是計算流程的計算結(jié)果;DataTypes是效能評估計算的數(shù)據(jù)類型集合。
Calculate是計算流程中的主體,它可以分原子步(Atom_step)以及復(fù)合步(Comp_step)。原子步是構(gòu)建計算流程時已經(jīng)加載到編輯環(huán)境中的計算步,相當(dāng)于C語言中的函數(shù)庫;復(fù)合步是構(gòu)建計算流程時的自定義計算步,用于組織粒度上更小的計算步。
定義2 Atom_step=operator|white_box
原子步包括算子(operator)和白盒(white_box)兩種,operator就是經(jīng)典效能評估計算邏輯,white_box是用于通過代碼編寫,用于自定義內(nèi)部功能的計算邏輯。
定義3 計算流程中的關(guān)系(Relations)是計算流程中輸入、輸出和計算步與計算步之間的關(guān)系:
定義4 DataTypes=Float|Vector|Matrix|Index
計算流程中每一個關(guān)系都需要指定一個數(shù)據(jù)類型,經(jīng)分析,效能評估計算流程中的數(shù)據(jù)類型包括浮點型(Float)、浮點型向量(Vector)、浮點型矩陣(Matrix)以及指標(biāo)結(jié)構(gòu)(Index)。其中Index是一個樹形結(jié)構(gòu),每一個節(jié)點(Node)是一個結(jié)構(gòu)體,包含Index-Value和IndexWeight兩個屬性。
效能評估軟件結(jié)構(gòu)元模型是基于算子庫中算子特點而定義的,是EESDP模型轉(zhuǎn)換的目標(biāo)模型的元模型。以下為元模型主要對象的形式化描述和定義。
定義5 Soft_Struct表示效能評估軟件結(jié)構(gòu),該結(jié)構(gòu)可以定義為一個二元組:
其中,賦值算子(Assign_Oper)是指將數(shù)據(jù)傳遞給同類型的變量中;效能評估算子(Eva_Oper)是指用于組成效能評估計算的邏輯實體,包括預(yù)處理、層次分析算子、加權(quán)求和算子等;Con_Oper是指控制結(jié)構(gòu)算子,用于控制Eva_Oper的計算順序和組合關(guān)系。經(jīng)分析,效能評估軟件結(jié)構(gòu)模型中Con_Oper包括兩種:順序(Sequence)和并發(fā)(Parallel)。
定義6 Eva_Oper作為效能評估計算實體,可以定義為一個三元組:
其中,InputTypes指Eva_Oper的輸入數(shù)據(jù)的數(shù)據(jù)類型的集合;func_Name指Eva_Oper的功能名稱,用于算子庫中對應(yīng)算子的搜索;OutputType指Eva_Oper的輸出結(jié)果的數(shù)據(jù)類型。InputTypes和OutputType對應(yīng)的數(shù)據(jù)類型一共有3種:浮點型(Float)、浮點型向量(Vector<Float>)、浮點型矩陣(Matrix<Float>)。
基于效能評估計算流程元模型和效能評估軟件結(jié)構(gòu)元模型,定義兩模型之間的轉(zhuǎn)換規(guī)則如表1所示。
表1 轉(zhuǎn)換規(guī)則
由表1中轉(zhuǎn)換規(guī)則可知,效能評估計算流程元模型中 Inputs、operator、Float、Vector、Matrix 和 Output六個元素可以直接在效能評估軟件結(jié)構(gòu)模型中找到對應(yīng)的元素直接映射,而comp_step、white_box、Relation和Index四個元素不能直接映射,需要額外添加規(guī)則來輔助模型轉(zhuǎn)換,以下是4個規(guī)則的定義。
規(guī)則1 模型轉(zhuǎn)換遇到Relation時,如圖4所示:顯式 Relation如①、②、③所示,描述 step1、step2和step3的計算結(jié)果作為high_level_step的輸入;隱式Relation如④和⑤所示,描述step1、step2和step3互補干擾的進(jìn)行,由OCL表達(dá)式進(jìn)行描述。
圖4 Relation示意圖
對Relation進(jìn)行轉(zhuǎn)換需要分2種情況考慮:隱式Relation轉(zhuǎn)換為 Parallel,顯式 Relation轉(zhuǎn)換為 Sequence。圖 4轉(zhuǎn)換的示意為:Sequence(Parallel(step1,step2,step3),high_level_step)[13]。
規(guī)則2 模型轉(zhuǎn)換遇到white_box時,將white_box中的代碼部分交由對應(yīng)代碼的執(zhí)行引擎執(zhí)行,white_box由效能評估計算流程中的Inputs替換,并將引擎執(zhí)行的結(jié)果和Input綁定,之后的轉(zhuǎn)換就可以參照Inputs的轉(zhuǎn)換規(guī)則。
規(guī)則3 模型轉(zhuǎn)換遇到comp_step時,根據(jù)效能評估計算流程,將comp_step遞歸替換為Atom_step的集合以及之間的Relations,之后的轉(zhuǎn)換就可以參照operator、white_box和Relations的轉(zhuǎn)換規(guī)則。
規(guī)則4 模型轉(zhuǎn)換遇到Index時,如圖5所示,1~7組成的樹形結(jié)構(gòu)是左右2個計算步之間傳遞的Index,右邊的計算步一般為經(jīng)典效能評估方法。
圖5 Index示意圖
對Index的轉(zhuǎn)換要與右端經(jīng)典效能評估方法配合進(jìn)行:右端評估方法的計算分?jǐn)偟?~7的節(jié)點上并將Index的1~7的節(jié)點替換為分解的Atom_step,節(jié)點間的關(guān)系替換為Relation,節(jié)點1~7內(nèi)部的Index-Value和IndexWeight替換為Inputs,之后的轉(zhuǎn)換可以參照Atom_step、Relation和Inputs的轉(zhuǎn)換規(guī)則進(jìn)行。
軟件生成引擎的體系結(jié)構(gòu)如圖6所示,軟件生成引擎是由引擎核心與外圍支持兩個部分組成,外圍支持部件包括4個部分:監(jiān)控平臺、持久化管理器、算子庫交互接口以及運行平臺。外圍支持部件不是軟件生成的核心,這里不作具體介紹,下面就引擎核心進(jìn)行詳細(xì)介紹。
圖6 軟件生成引擎的體系結(jié)構(gòu)
引擎核心由輸入模型解釋器、軟件生成過程管理、軟件生成規(guī)則、軟件生成調(diào)度器以及目標(biāo)軟件生成器組成。
(1)輸入模型解釋器:讀取計算流程模型,解析計算流程語義,并將該語義關(guān)系傳遞給軟件生成調(diào)度器。
(2)軟件生成過程管理:管理軟件生成過程中有關(guān)中間過程保存、軟件生成狀態(tài)以及資源調(diào)度等管理的模塊。
(3)軟件生成規(guī)則:為軟件生成調(diào)度器提供軟件生成的方法規(guī)則,使得軟件生成調(diào)度器根據(jù)輸入模型解釋器的語義輸入進(jìn)行相關(guān)的軟件生成動作。
(4)軟件生成調(diào)度器:軟件生成功能的載體,根據(jù)輸入模型解釋器的輸入、軟件生成過程管理的輔助信息以及軟件生成規(guī)則的相關(guān)規(guī)則,通過合理的調(diào)度策略對目標(biāo)軟件生成器發(fā)出軟件生成指令。
(5)目標(biāo)軟件生成器:根據(jù)軟件生成調(diào)度器的軟件生成指令,通過與算子庫交互完成效能評估軟件的生成。
算子庫是存儲與效能評估相關(guān)算子[14]的單元,在效能評估軟件構(gòu)建過程中包括2個主要內(nèi)容。
(1)提供算子查詢、匹配和調(diào)用功能。
算子庫的查詢、匹配和讀取功能是算子庫的主要功能,也是效能評估軟件生成的基礎(chǔ)。查詢、匹配和讀取指令由軟件生成引擎發(fā)出,算子庫的主要功能就是輔助算子生成引擎生成效能評估軟件。
(2)提供算子擴(kuò)展功能。
效能評估方法的擴(kuò)展才能夠支持效能評估流程的完備性。效能評估方法的擴(kuò)展方式有以下2種。
①自足型:自足型的效能評估方法擴(kuò)展方式是指新的效能評估方法完全依靠當(dāng)前算子庫中已有的算子組合而成。
②引入型:引入型的效能評估方法擴(kuò)展方式是指新的效能評估方法在EESDP外部編譯和測試,并按照算子庫中算子的標(biāo)準(zhǔn)進(jìn)行封裝入庫的方式引入。
本文主要討論了面向效能評估的計算流程的特點,提出一種模型驅(qū)動效能評估軟件構(gòu)建平臺,并詳細(xì)介紹效能評估軟件構(gòu)建平臺組件的設(shè)計。
EESDP有以下優(yōu)點:(1)采用模型驅(qū)動的開發(fā)方式,將效能評估計算流程模型進(jìn)行模型轉(zhuǎn)換和代碼生成完成效能評估軟件的構(gòu)建,充分利用效能評估“純計算”的特點,最大限度地利用設(shè)計階段的建模成果,提高效能評估開發(fā)質(zhì)量;(2)EESDP面向效能評估,定義專屬的語言結(jié)構(gòu),通過可視化的方式進(jìn)行效能評估計算流程的構(gòu)建,具有便捷、高效的特點;(3)EESDP支持效能評估方法擴(kuò)展,能夠更加靈活地面向各個領(lǐng)域的需求,擴(kuò)展對應(yīng)的效能評估方法。
[1]楊峰,王維平,等.武器裝備作戰(zhàn)效能仿真與評估[M].北京:電子工業(yè)出版社,2010:21-33.
[2]楊峰.面向效能評估的平臺級體系對抗仿真跨層次建模方法研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2003.
[3]陳明.軟件工程導(dǎo)論[M].北京:機(jī)械工業(yè)出版社,2010:5-33.
[4]張小華,韓永生,余軍合.模型驅(qū)動體系綜述[J].計算機(jī)工程,2004,30(2):111-112,173.
[5]Gil J Y,Tsoglin Y.JAMOOS:A domain-specific language for language processing[J].Journal of Computing and Information Technology,2001,9(4):305-321.
[6]Howard Smith.Business process management:The third wave:Business process modeling language(BPML)and its pi-calculus foundations[J].Information and Software Technology,2003,45(15):1065-1069.
[7]張杰,唐宏,蘇凱,等.效能評估方法研究[M].北京:國防工業(yè)出版社,2009:5-22.
[8]趙晨婷.基于模型驅(qū)動的動態(tài)Web服務(wù)組合方法[D].西安:西安電子科技大學(xué),2009.
[9]朱彬,歐陽松.模型驅(qū)動架構(gòu)中模型轉(zhuǎn)換技術(shù)的研究[J].微機(jī)發(fā)展,2005,15(7):54-56,59.
[10]潘翔,張三元,葉修梓.三維模型語義檢索研究進(jìn)展[J].計算機(jī)學(xué)報,2009,32(6):1069-1079.
[11]Lan Qingguo,Liu Shufen,Li Bing,et al.Study on unified metamodeling framework based on down-up mechanism[C]//Proceedings of the 9th International Conference on Computer Supported Cooperative Work in Design II.2006:596-605.
[12]Jos Warmer,Anneke Kleppe.The Object Constraint Language:Getting Your Models Ready for MDA(2nd Edition)[M].Addison-Wesley,2003:43-99.
[13]高仲儀,金茂忠.編譯原理及編譯程序構(gòu)造[M].北京:北京航空航天大學(xué)出版社,1990:219-250.
[14]Yager R R,Kacprzyk J.The Ordered Weighted Averaging Operator:Theory and Applications[M].Boston:Kluwer Academic Publishers,1997:10-50.