模型驱动效能评估软件构建平台
2014-10-15侯志华艾中良
侯志华,艾中良
(华北计算技术研究所总体部,北京 100083)
0 引言
效能评估[1]指对系统执行某一项任务结果、系统完成任务的能力[2]或者系统体系结构效能等指标的量化计算和结论性评价,广泛用于军事、科研、制造行业,也可用于评估某种计划、工程。随着效能评估在各个行业的发展,针对特定领域的效能评估方法被提出,同时效能评估任务也变得越来越复杂。目前相关研究主要集中在效能评估方法的创新上,对效能评估软件的开发方式的研究工作则相对较少。传统软件开发方式[3]中设计阶段的模型与开发阶段的代码呈现分离的状态,因此效能评估任务的复杂化所导致开发人员在软件设计阶段对软件模型巨大的投入不能直接应用于开发阶段,给效能评估软件的开发带来了极大的不便。同时,设计阶段的建模工具不能直接面向效能评估,不能充分利用效能评估活动的特点减少建模工作量,提高建模效率。因此需要一套面向效能评估的软件开发系统,充分利用前期效能评估模型成果,提高效能评估的开发效率。
本文提出一种效能评估软件构建平台(Effectiveness Evaluation Software Development Platform,EESDP),EESDP采用模型驱动[4]的开发方式,通过使用面向效能评估领域的域特定语言(Domain Specific Language,DSL)[5]构建效能评估模型——效能评估计算流程[6],同时定义效能评估软件结构模型,通过模型转换,将效能评估计算流程转换为软件结构模型,作为效能评估软件设计模型,定义代码生成引擎,通过代码生成完成效能评估软件的构建,最大限度利用设计阶段的设计成果,提高效能评估软件开发效率。
1 效能评估计算特点
效能评估需要通过综合运用系统分析、系统建模与仿真等技术,根据评估对象的特点进行指标构建并通过计算对评估对象进行综合评价和对比分析,为将来的使用和决策提供科学依据。效能评估的过程是对评估数据的处理、计算和综合过程,属于一种“纯计算”活动,具有计算步骤复杂、计算之间结构关系多样等特点。评估的一般过程包括指标构建、指标数据预处理、指标解算和指标综合等步骤[7]。每一个步骤又由若干的计算步骤按照一定的过程组织而成,因此,效能评估可以看作是计算步组合而成的流程,称为效能评估计算流程。
根据效能评估特点研究,效能评估计算流程是由一系列计算步组合而成。由于若干计算步组合在一起仍然是一个计算步,为了区分,将计算步分为原子计算步和复合计算步两种。原子计算步、复合计算步和效能评估流程之间的关系如图1所示。
图1 效能评估计算步类结构示意图
由图1可知,原子计算步、复合计算步和效能评估流程之间的关系可以概括为以下3点:
(1)原子可计算步与复合可计算步均属于可计算步;
(2)效能评估流程属于计算步,是与之相关的计算步按照特定的组合关系形成的更复杂的计算步;
(3)复合可计算步由原子可计算步和复合可计算步组成。
2 EESDP体系结构
EESDP是一个集多种模型于一体,由多个功能组件协同处理,共同完成效能评估软件构建的平台,其体系结构如图2所示。
图2 EESDP体系结构
由图2可知,EESDP组件结构主要包括:计算流程编辑器、软件结构模型生成器、软件生成引擎和算子库;EESDP中间制品包括效能评估计算流程和效能评估软件结构模型。
(1)计算流程编辑器的主要功能是为用户提供用于定义和修改计算流程的工具。计算流程编辑器采用可视化拖拽的建模方式描述效能评估过程,建立平台无关模型,并生成效能评估计算流程文件,保存效能评估计算流程。
(2)软件结构模型生成器以效能评估计算流程脚本文件为输入,通过模型转换将效能评估计算流程模型转换为效能评估软件结构模型的逻辑单元。
(3)软件生成引擎以效能评估软件结构模型作为输入,通过解析该模型,指导算子库中的算子进行组合[8],生成与效能评估计算流程对应的效能评估软件。
(4)算子库是存储和管理效能评估算子的逻辑单元,算子库为软件生成引擎提供提交算子库实时的结构信息以及算子调用等服务接口。
(5)效能评估计算流程是由用户使用面向效能评估的领域特定语言手动构建的流程,描述了效能评估任务。
(6)效能评估软件结构模型由效能评估计算流程经过模型转换[9]而来,描述效能评估软件结构,驱动效能评估软件生成。
通过分析EESDP的体系结构可知,EESDP将效能评估软件的构建过程分为2个阶段:(1)模型转换阶段。该阶段构造效能评估计算流程,经模型转换产生效能评估软件结构模型。(2)软件生成阶段。该阶段在软件生成引擎的驱动下,基于效能评估软件结构模型生成效能评估软件。
3 模型转换
3.1 模型转换框架
模型转换是EESDP的核心,基于OMG(Object Management Group)提出的模型驱动框架以及EESDP所面临的模型转换任务,提出模型转换框架如图3所示。
图3 模型转换框架
分析图3模型转换过程可知,模型转换的关键是基于计算流程元模型和算子组合元模型完成转换规则的构建,该转换规则转换引擎上完成计算流程模型到算子组合模型的自动转换,因此,模型转换的关键是效能评估计算流程元模型、效能评估软件结构元模型和转换规则。
3.2 效能评估计算流程元模型
效能评估计算流程元模型是基于效能评估计算特点而定义的,是EESDP模型转换的源模型的元模型,为清楚描述模型转换过程,以下为元模型[10]主要对象的形式化描述和定义[11],元模型各元素的静态语义使用 OCL[12]表达式描述。
定义1 Process表示效能评估计算流程,该流程可以定义为一个五元组:
其中,Inputs表示流程的输入数据集合,是参与效能评估计算的数据集合;Calculates表示流程中所包含的计算步的集合,完成效能评估计算;Relations表示流程中的连接关系;Output是计算流程的计算结果;DataTypes是效能评估计算的数据类型集合。
Calculate是计算流程中的主体,它可以分原子步(Atom_step)以及复合步(Comp_step)。原子步是构建计算流程时已经加载到编辑环境中的计算步,相当于C语言中的函数库;复合步是构建计算流程时的自定义计算步,用于组织粒度上更小的计算步。
定义2 Atom_step=operator|white_box
原子步包括算子(operator)和白盒(white_box)两种,operator就是经典效能评估计算逻辑,white_box是用于通过代码编写,用于自定义内部功能的计算逻辑。
定义3 计算流程中的关系(Relations)是计算流程中输入、输出和计算步与计算步之间的关系:
定义4 DataTypes=Float|Vector|Matrix|Index
计算流程中每一个关系都需要指定一个数据类型,经分析,效能评估计算流程中的数据类型包括浮点型(Float)、浮点型向量(Vector)、浮点型矩阵(Matrix)以及指标结构(Index)。其中Index是一个树形结构,每一个节点(Node)是一个结构体,包含Index-Value和IndexWeight两个属性。
3.3 效能评估软件结构元模型
效能评估软件结构元模型是基于算子库中算子特点而定义的,是EESDP模型转换的目标模型的元模型。以下为元模型主要对象的形式化描述和定义。
定义5 Soft_Struct表示效能评估软件结构,该结构可以定义为一个二元组:
其中,赋值算子(Assign_Oper)是指将数据传递给同类型的变量中;效能评估算子(Eva_Oper)是指用于组成效能评估计算的逻辑实体,包括预处理、层次分析算子、加权求和算子等;Con_Oper是指控制结构算子,用于控制Eva_Oper的计算顺序和组合关系。经分析,效能评估软件结构模型中Con_Oper包括两种:顺序(Sequence)和并发(Parallel)。
定义6 Eva_Oper作为效能评估计算实体,可以定义为一个三元组:
其中,InputTypes指Eva_Oper的输入数据的数据类型的集合;func_Name指Eva_Oper的功能名称,用于算子库中对应算子的搜索;OutputType指Eva_Oper的输出结果的数据类型。InputTypes和OutputType对应的数据类型一共有3种:浮点型(Float)、浮点型向量(Vector<Float>)、浮点型矩阵(Matrix<Float>)。
3.4 转换规则
基于效能评估计算流程元模型和效能评估软件结构元模型,定义两模型之间的转换规则如表1所示。
表1 转换规则
由表1中转换规则可知,效能评估计算流程元模型中 Inputs、operator、Float、Vector、Matrix 和 Output六个元素可以直接在效能评估软件结构模型中找到对应的元素直接映射,而comp_step、white_box、Relation和Index四个元素不能直接映射,需要额外添加规则来辅助模型转换,以下是4个规则的定义。
规则1 模型转换遇到Relation时,如图4所示:显式 Relation如①、②、③所示,描述 step1、step2和step3的计算结果作为high_level_step的输入;隐式Relation如④和⑤所示,描述step1、step2和step3互补干扰的进行,由OCL表达式进行描述。
图4 Relation示意图
对Relation进行转换需要分2种情况考虑:隐式Relation转换为 Parallel,显式 Relation转换为 Sequence。图 4转换的示意为:Sequence(Parallel(step1,step2,step3),high_level_step)[13]。
规则2 模型转换遇到white_box时,将white_box中的代码部分交由对应代码的执行引擎执行,white_box由效能评估计算流程中的Inputs替换,并将引擎执行的结果和Input绑定,之后的转换就可以参照Inputs的转换规则。
规则3 模型转换遇到comp_step时,根据效能评估计算流程,将comp_step递归替换为Atom_step的集合以及之间的Relations,之后的转换就可以参照operator、white_box和Relations的转换规则。
规则4 模型转换遇到Index时,如图5所示,1~7组成的树形结构是左右2个计算步之间传递的Index,右边的计算步一般为经典效能评估方法。
图5 Index示意图
对Index的转换要与右端经典效能评估方法配合进行:右端评估方法的计算分摊到1~7的节点上并将Index的1~7的节点替换为分解的Atom_step,节点间的关系替换为Relation,节点1~7内部的Index-Value和IndexWeight替换为Inputs,之后的转换可以参照Atom_step、Relation和Inputs的转换规则进行。
4 软件生成
4.1 软件生成引擎
软件生成引擎的体系结构如图6所示,软件生成引擎是由引擎核心与外围支持两个部分组成,外围支持部件包括4个部分:监控平台、持久化管理器、算子库交互接口以及运行平台。外围支持部件不是软件生成的核心,这里不作具体介绍,下面就引擎核心进行详细介绍。
图6 软件生成引擎的体系结构
引擎核心由输入模型解释器、软件生成过程管理、软件生成规则、软件生成调度器以及目标软件生成器组成。
(1)输入模型解释器:读取计算流程模型,解析计算流程语义,并将该语义关系传递给软件生成调度器。
(2)软件生成过程管理:管理软件生成过程中有关中间过程保存、软件生成状态以及资源调度等管理的模块。
(3)软件生成规则:为软件生成调度器提供软件生成的方法规则,使得软件生成调度器根据输入模型解释器的语义输入进行相关的软件生成动作。
(4)软件生成调度器:软件生成功能的载体,根据输入模型解释器的输入、软件生成过程管理的辅助信息以及软件生成规则的相关规则,通过合理的调度策略对目标软件生成器发出软件生成指令。
(5)目标软件生成器:根据软件生成调度器的软件生成指令,通过与算子库交互完成效能评估软件的生成。
4.2 算子库
算子库是存储与效能评估相关算子[14]的单元,在效能评估软件构建过程中包括2个主要内容。
(1)提供算子查询、匹配和调用功能。
算子库的查询、匹配和读取功能是算子库的主要功能,也是效能评估软件生成的基础。查询、匹配和读取指令由软件生成引擎发出,算子库的主要功能就是辅助算子生成引擎生成效能评估软件。
(2)提供算子扩展功能。
效能评估方法的扩展才能够支持效能评估流程的完备性。效能评估方法的扩展方式有以下2种。
①自足型:自足型的效能评估方法扩展方式是指新的效能评估方法完全依靠当前算子库中已有的算子组合而成。
②引入型:引入型的效能评估方法扩展方式是指新的效能评估方法在EESDP外部编译和测试,并按照算子库中算子的标准进行封装入库的方式引入。
5 结束语
本文主要讨论了面向效能评估的计算流程的特点,提出一种模型驱动效能评估软件构建平台,并详细介绍效能评估软件构建平台组件的设计。
EESDP有以下优点:(1)采用模型驱动的开发方式,将效能评估计算流程模型进行模型转换和代码生成完成效能评估软件的构建,充分利用效能评估“纯计算”的特点,最大限度地利用设计阶段的建模成果,提高效能评估开发质量;(2)EESDP面向效能评估,定义专属的语言结构,通过可视化的方式进行效能评估计算流程的构建,具有便捷、高效的特点;(3)EESDP支持效能评估方法扩展,能够更加灵活地面向各个领域的需求,扩展对应的效能评估方法。
[1]杨峰,王维平,等.武器装备作战效能仿真与评估[M].北京:电子工业出版社,2010:21-33.
[2]杨峰.面向效能评估的平台级体系对抗仿真跨层次建模方法研究[D].长沙:国防科学技术大学,2003.
[3]陈明.软件工程导论[M].北京:机械工业出版社,2010:5-33.
[4]张小华,韩永生,余军合.模型驱动体系综述[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].北京:国防工业出版社,2009:5-22.
[8]赵晨婷.基于模型驱动的动态Web服务组合方法[D].西安:西安电子科技大学,2009.
[9]朱彬,欧阳松.模型驱动架构中模型转换技术的研究[J].微机发展,2005,15(7):54-56,59.
[10]潘翔,张三元,叶修梓.三维模型语义检索研究进展[J].计算机学报,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]高仲仪,金茂忠.编译原理及编译程序构造[M].北京:北京航空航天大学出版社,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.