基于可达矩阵的组件化空间任务仿真系统体系结构优化问题研究
2011-12-15南松辉关永姜楠李伟
南松辉,关永,姜楠,李伟
(1.装备指挥技术学院,北京101416;2.军事科学院 军事运筹分析研究所,北京100091;3.南京政治学院,江苏 南京210003)
1 引 言
变化是自然界的客观规律,软件作为客观事物也在进行持续的变化活动,尤其是随着空间任务在军事领域的应用日益广泛,军事活动对空间力量的支援需求也越来越紧迫,军事活动的多样性导致了空间任务的多样性,再加上计算环境的快速发展,迫切需要空间任务仿真能够适应各类军事任务需求,在空间任务仿真系统(Space Operation Simulation System,SOSS)的生命周期内,不断进行软件维护与更新。
体系结构作为空间任务仿真系统的高层描述,摈弃了繁琐的细节,为人们宏观把握空间任务仿真的整体结构提供了有效途径,空间任务仿真系统的维护与更新主要是增添空间任务仿真组件、对原有组件的修改、对组件关系的重设等方面,如何优化其体系结构层次,是提高空间任务仿真软件质量与适应性、有效实施软件快速重组的关键。
本文在提出空间任务仿真体系结构模型的基础上,将空间任务仿真体系结构看作是其组件间的拓扑结构,并以此为基础研究一种组件化软件体系结构重组策略,将体系结构用关系矩阵表示,通过聚类的方法优化体系结构,从而达到提高系统易适应性的目的。
2 SOSS体系结构模型及其概念
空间任务仿真系统作为一类应用于空间任务分析的软件,符合所有软件的规律和特征,目前对软件体系结构的定义形式多样,对空间任务仿真系统软件体系结构没有一个公认的定义,本文参照多数文献公认的软件体系结构定义,将SOSS体系结构定义为:空间任务仿真系统体系结构是对组成空间任务仿真系统的领域组件,以及组件与组件之间交互作用关系的高层抽象。
2.1 组件
SOSS中的组件Component是构成仿真系统的基本要素和结构单元,是实现软件功能的承载体。从系统的构成上看,任何在系统运行中承担一定功能、发挥一定作用的单元体都可看成组件。作为软件体系结构的组成块,组件不是独立存在的,各组件之间具有一定的关联关系。在系统构造过程中,由于抽象层次和构造逻辑的不同划分,会生成不同粒度的组件元素,尤其是空间任务仿真系统,涉及的成员组件数量和组件之间的相互关系相当复杂,一些组件还有可能是从简单的底层组件组合集成而来,因此空间任务仿真系统的体系结构可以看作是由不同粒度组件按照一定的功能及层次划分组成的。
组件的模型为Component={Interfaces,Methods}。其中,Interfaces是组件的接口集合,Methods是组件的方法实现。Interfaces={Interface1,Interface2,…,Interfacen},Interfacei={ID,Funci,Attri},ID为组件标识,Funci是接口所有的功能(函数)集合,Attri是组件对象的属性与行为集合。组件模型是对组件本质特征的抽象描述,使关心和使用组件的外部环境(如使用组件组装出的应用系统、组件复用者等)能够在一致的概念模型下观察和使用组件。
由组件模型可以看出,组件的关键就是组件提供的外部接口,组件接口是组件为完成系统任务与其他组件进行交互的唯一通道,代表了组件在不同环境下的交互内容和交互机制,组件通过接口完成与外部信息的连接与传递,对组件内部实现细节则可以不加考虑,可以看作“黑盒”。
2.2 SOSS体系结构模型
基于组件的空间任务仿真系统体系结构模型是描述空间任务仿真领域内的组件及组件之间关系的拓扑网络。模型表述为SA=
该SOSS体系结构模型将组件间的交互作为建模的概念,形象化的描述了组件间的关系,为软件开发者在宏观层面上分析系统构成提供了可视化手段。通过组件间的交互作用,实现组件的功能,交互作用的两个组件间有主动与被动、影响与被影响的不同,如果将图1中组件之间的连接方向标示出,则得到图2所示的有向图,其中,箭头方向代表交互方向。
3 SOSS体系结构优化
目前对于空间任务仿真均是针对特定需求建立的仿真系统,软件复用性差。由于用户需求、技术和环境等因素的变化,必将导致系统设计更改所引起的目标系统的变动,为了建立一个真正能够满足各方需求、可以随意组装的“软件工厂”,需要对空间任务仿真系统进行体系结构优化设计,发现系统开发过程中的关键组件,梳理组件关系与结构,解决军事需求向软件实现平坦过渡的问题。对于体系结构的优化还没有明确的规范,借鉴软件体系结构演化开发中波及效应的观点,采用矩阵分析的原理,优化空间任务仿真系统的体系结构。
3.1 SOSS体系结构可达矩阵描述
如果用C1到C10表示图2中的10个组件,设SOSS体系结构的可达矩阵MR=(Cij),其中Cij表示组件Ci与Cj之间的有向连接关系(其中i,j=1,2…,10),且:
由可达矩阵可以直接得出组件之间的可达关系:组件C1可到达C2、C3组件,C2与其他组件均不可达,其他组件的连接情况也能从可达矩阵中读出。由此可见,通过可达矩阵很容易界定某一组件变化所影响的其他组件,当某一组件发生变化时,可以找到受影响的其他组件。为了更加具体的描述各个组件在整个系统体系结构中的作用,定义如下:
定义1:将组件能为系统中其他组件提供服务的次数称为该组件的贡献度(Component Contribution Degree,CCD),对应到可达矩阵中就是每列数值之和即为该组件的贡献度。该组件的贡献度越大,说明该组件在整个体系结构中的作用越大,相反,作用越小。图2对应的各组件的贡献度为:
定义2:将组件在体系结构中所需其他组件提供服务的个数为该组件的依赖度(Component Reliant Degree,CRD),对应到可达矩阵中就是每行数值之和即为该组件的依赖度。该组件的依赖度越高,说明该组件处于体系结构的顶层,对该组件的删除操作对该系统的体系结构影响也最大。图2对应的各组件的依赖度为:
贡献度和依赖度分别描述了SOSS体系结构的功能和范围,通过可达矩阵可以将体系结构的优化问题转换为定量分析的问题,据此可以对软件系统体系结构的开发活动进行定量分析。
3.2 SOSS体系结构优化方法
对于SOSS体系结构的设计优化主要包括三方面的活动。
3.2.1 删除一个组件Ci
如果一个组件Ci的CCD=0,即该组件在可达矩阵中该列全部为0,则可以直接删除该组件,而不会对其他组件产生影响。同时该组件Ci的CRD不为0,则说明删除该组件会引起SOSS体系结构的变化。
如果组件Ci的CCD不为0,则删除该组件对与之关联的其他组件都会产生影响,影响组件的个数即为CCD的值。同时该组件的CRD不为0,则说明删除该组件会引起体系结构的变化,如果CRD为0,则删除该组件对体系结构无影响。
例如,删除图2中C2组件,不会影响其他组件,但会引起体系结构的变化。删除C1组件,会引起与之关联的C2、C3两个组件的修改,
3.2.2 增加(分解)、修改一个组件Ci
增加一个组件时,首先确定该组件与系统中其他组件的交互关系,然后据此建立新的可达矩阵,计算该组件的贡献度和依赖度,形成新的体系结构。分解组件同增加组件情况相类似,组件拆分后,可以形成新的可达矩阵,得到新的贡献度和依赖度。
组件的修改包括功能的修改和关系的修改。自身功能的修改在没有影响外部接口的情况下,其贡献度和依赖度不变,因此其体系结构也没有任何变化。当外部接口发生修改时,此时应当分析与其接口相连的其他组件的变化情况,此时系统的可达矩阵可能会发生改变,此种变化也应是组件开发人员实施前所能掌握的,因此可达矩阵可以被唯一确定。
3.2.3 合并组件
组件的合并是优化软件体系结构时最常遇到的情况,如功能的合并、小规模的组件组装成更大的组件等都会引起组件的合并。组件的合并可以通过对可达矩阵的划分合并来完成。其规则是:①合并应采取依赖度相等或相近的原则;②可达矩阵的分块划分必须保证与组件的一致性;③可达矩阵的合并包括行的合并和列的合并;④合并采用布尔和的运算。
例如,对上例将C4与C7、C8合并,C5与C9合并,C6与C10合并,矩阵变化后分块划分如下:
合并后如下可达矩阵:
由此可得新系统的体系结构如图3所示。
图3中C4.7.8是新组件,具有原来C4、C7、C8三个组件的功能;而虚线代表了新组件具有内部可达性。通过组件合并,简化了系统的体系结构。
4 结束语
本文构建了基于组件的SOSS的体系结构概念模型,并采用建立可达矩阵的方法定量描述系统的体系结构;定义了组件贡献度和组件依赖度的概念,并通过计算其大小来选择需要优化的组件结构;使用简单的矩阵变换和运算,对SOSS构建系统时遇到的三种情况给出了优化设计算法。这些为研究复杂的空间任务仿真体系结构提供了定量的研究方法。
1 杨芙清,梅宏.构件化软件设计与实现[M].北京:清华大学出版社,2008.
2 HERZUM PETER,SIMS OLIVER.基于组件的企业级开发[M].韩柯,等译.北京:机械工业出版社,2005.
3 王映辉.软件构件与体系结构——原理、方法与技术[M].北京:机械工业出版社,2009.
4 王映辉,张世琨.基于可达矩阵的软件体系结构演化波及效应分析[J].软件学报,2004,15(8):1364—1370.
5 钟林辉,姚昕凡,徐静.基于扩展的构件依赖关系图聚类的体系结构重构策略研究[J].计算机应用研究,2010,8(8):2987—2990.
6 杨秀文,严尚安,张洁.可达矩阵的新求法[J].电子科技大学学报,2000,12(6):666—669.