电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

构件模型范文

来源:莲生三十二作者:开心麻花2025-11-191

构件模型范文(精选7篇)

构件模型 第1篇

当前社会的信息化过程对软件需求的增长非常迅速, 但目前软件的开发与生产能力却相对不足, 这不仅造成许多急需的软件迟迟不能被开发出来, 而且形成了软件脱节现象。自20世纪60年代人们认识到软件危机并提出软件工程以来, 已经对软件开发问题进行了不懈的研究。近年来人们认识到, 要真正解决软件危机, 实现软件的工业化生产是惟一可行的途径[1]。

从软件工程的角度来看, 基于构件的软件工程CBSE (Component-BasedSoftware Engineering) 正能满足当前软件生产的这种需求。构件是软件系统的一个有用片段, 它可以与其它片段组装在一起形成一个更大的片段, 或是整个的解决方案。构件是可复用的软件组成成分, 可被用来构造其它软件。基于构件的软件工程的基本思想是:将软件分解为各个独立的构件, 这些构件与外部仅通过预先定义的接口进行通信, 这样把应用程序解决方案的很多部分的实现外包出去, 使软件的创建主要是通过构件的选择、评价和组装过程来取得。进而, 软件项目可以从一个以代码编写和错误修正为中心的过程转变为一个更为受控的组装过程[2]。本文以基于构件的软件工程理论为基础, 引入了可复用的软件构件模型, 在将该模型应用于上海市教委机关办公自动化系统的开发中取得了成功。为实现软件工业化生产、软件再工程进行了有益的探索。

1 构件技术

1.1 构 件

对于构件的定义, 目前没有确切统一的定义, 笔者倾向于采用在文献[3]中对构件的描述:构件可以简单地定义为构造块, 不同的软件系统能够由它们组装而成。它们经常设计为插接兼容的, 并且能够以尽可能多的方式进行组合, 使开发者获得最小的代码复制并最大化重用。

由此可见, 一般构件均包括对构件接口和构件实现两方面的描述, 即构件::=<构件接口, 构件实现>[4]。构件强调接口和实现的分离。其实现具有不透明性, 仅仅通过接口见之于其它构件。作为一个可独立发布的软件实体, 构件应具有复用的价值, 这样构件才能成为第三方部署和使用的单元。构件具有独立于第三方应用系统的生命周期, 其自身的演化不应影响使用它的第三方应用系统。最后, 构件模型负责构件之间的交互方式以及全局的或体系结构上的限制[5]。

构件的概念和面向对象中的对象概念有很多相似之处。对象通过将数据和在其上执行的操作进行封装, 以达到一定程度上的复用, 但对象在复用的过程中存在很多问题, 具体体现在:

(1) 由于对象对数据和操作进行了封装, 要对其进行复用, 就必须了解该对象的实现细节。这给对象的复用造成了很大障碍。

(2) 对象之间的集成是通过消息通信。在这种集成方式中, 对象之间的关系分散并固定在对象的实现中, 对象的组装缺乏灵活性。

(3) 由于对象继承关系和行为的重叠, 使得对象的替代性较差。用一个新的对象替代原有对象时可能会影响所有与其有继承关系的对象[6,6]。

而构件可以认为是一种包装对象实现的简便方法, 并且可以使它们组装成一个更大的软件系统。总的来说, 构件和对象的区别主要在于以下三个方面:

(1) 构件担当一个部署单元的作用, 它是基于构件模型的, 这种模型定义了符合这种模型的构件所要遵循的规则。

(2) 构件提供了对一个或多个对象实现的包装。

(3) 构件是一个组装单元, 它用于从很多独立创建的功能部分设计和构建系统, 每一个部分都潜在地使用一种面向对象语言或某种其它技术创建。

1.2 系统构件模型

按照分布计算体系结构的思想, 任何一个应用软件的构架均可划分为三种构造逻辑:一是界面表示逻辑, 用于覆盖与用户直接关联的前端应用;二是事务处理逻辑, 体现软件的核心处理功能;三是数据管理逻辑, 用于解决用户事务的数据交换和后端服务问题。每一种逻辑部件都可用特定功能的物理构件来实现。在系统设计中, 根据软件系统的层次性和功能性, 可以把系统垂直分割为多个子系统, 把每个子系统看作是一个复合构件。这些复合构件负责特定的事务处理, 提供高层次和大粒度的重用支持。每个复合构件由多个具有不同功能和不同抽象水平的构件构成。最终将这些复合构件按照功能层次细化为粒度更小、功能正交的原子构件, 对原子构件进行单独开发。待开发完毕, 将原子构件按照功能组装成需要的复合构件, 进而完成系统的开发。既降低了构件的设计难度和实现代价, 又提高了构件的重用性能和管理水平。

在办公自动化系统中, 根据功能将整个系统划分为收文管理、发文管理、督办管理、公共信息管理、会务管理和日程管理等六个子系统。各个子系统再细分成粒度更小的复合构件。各个复合构件可能由复合构件或位于各层的不同功能的原子构件组装而成。基于上述想法, 可以对复合构件做下面的描述:

Complex Component:=<Specification, Interface Mapping, Component SA>

其中, Specification为构件规范, 是对外可见的部分, 由构件接口描述, 包括构件提供的接口和所需的接口两个方面。Interface mapping为接口映射, 表示复合构件的构件规范, 即接口定义向组成该复合构件的成员构件的接口定义的映射。Component SA即为复合构件的软件体系结构, 表示该复合构件中的成员构件及成员构件间的交互。根据上述描述及D. Garlan和M. Shaw对软件体系结构的定义, 将现有的构件抽象为构件模型, 描述为:

其中, Specification是构件的对外可见的部分, 由构件接口 (Interface) 描述, 包括构件提供的接口 (IP) 和需要的接口 (IR) 两个方面。Interface Mapping表示接口为成员构件的接口定义的映射, 这些成员构件组成该复合构件 (Complex Component) 。连接件 (Connector) 可以看作是一种特殊的构件, 它可以使接口不匹配的两个构件进行连接操作。Component SA表示该复合构件中的成员构件及成员构件间的交互。

2 系统实现

2.1 构件接口的实现

根据构件模型, 构件由构件规范和构件实现两部分组成。构件规范由构件接口描述, 而构件接口包括构件对外提供的接口和构件需要的外部接口。面向对象技术为构件的对外接口提供了很好的支持, 但构件所需的外部接口部分却隐藏在实现细节中, 难以根据接口处的信息定义构件的实现。为了解决构件所需外部接口对外不可见的问题, 采用依赖注入技术。依赖注入技术起源于轻量级构件容器提供的控制反转机制IoC (Inversion of Control) , 即由容器定位插件的具体实现。依赖注入技术用部署描述文件描述构件之间的依赖关系, 在运行时由容器按部署描述文件动态地将被调用构件注入到调用构件之中[7]。所以, 可以利用依赖注入技术在部署描述文件中对构件所需外部接口进行描述, 使其对外可见并与构件实现细节分离, 进一步降低构件之间的耦合性。

2.2 构件模型的应用

在描述构件模型的基础上, 采用JDev框架, 结合J2EE技术实现了一个办公自动化OA系统 (如前文所述) 。下面以其中的领导日程管理模块为例, 介绍构件模型在软件开发中的应用。

可以把整个领导日程管理模块视为一个复合构件。将该复合构件分为表示层、控制层、业务逻辑层和数据访问层。每一层均为其上一层提供服务并作为其下一层的客户端。表示层包括原子构件LeaderSchedulePage, 控制层包括原子构件LeaderScheduleAction, 业务层包括原子构件LeaderScheduleBean, 数据访问层包括原子构件LeaderScheduleDAO。于是可以用复合构件模型对领导日程管理模块进行描述。其中一部分描述如下:

由此可见, 每个原子构件都为其它原子构件提供接口, 而领导日程管理复合构件对外提供了管理领导日程的接口。

2.3 构件模型的实现

下面基于JDev框架给出上面描述的用户登录模块的实现。其中每一个原子构件均要实现其对外提供的接口并利用IoC模式在配置描述文件中描述其所需的外部接口。以原子构件LeaderScheduleDAO为例。LeaderScheduleDAO的接口如下:

其中:原子构件LeaderScheduleDao所需的外部接口, 即构件SqlMapProgramDao对外提供的接口, 可以在需要时利用IoC模式由容器插入到LeaderScheduleDao中。

在原子构件均已得到实现的条件下, 同样可以利用IoC模式对原子构件进行组装, 组装过程可以在配置描述文件中进行描述如下:

(1) 组装LeaderSchedulePage构件和LeaderScheduleAction构件:

这样, 复合构件LeaderSchedule就组装好了, 只要LeaderSchedule所需的外部接口得到提供, 复合构件LeaderSchedule的功能就可以利用JDev框架实现。

3 结 论

提出了基于可复用软构件的软件生产模型。针对OA系统的软件体系结构, 采用自顶向下的软件设计方法, 将整个软件系统的每个子系统看作是一个复合构件, 该复合构件又由其它的复合构件和原子构件组装而成。进而将软件系统逐步分解, 递归地对其进行描述、开发。采用自底向上的构件组装技术[8], 首先对所有的原子构件进行描述, 之后在软件体系结构的层次上对它们进行组装, 最后构成一个完整的软件系统。构件在接口处进行集成, 并在其内部实现细节不被了解的条件下得到复用, 大大提高了构件的复用程度。为降低软件系统开发的复杂性, 进行并行和分布式开发, 减少维护费用等奠定了技术上的基础。

参考文献

[1]唐勇敏.以构件为核心的软件工业化的生产方式[J].计算机应用, 2006, 26 (8) :225.

[2]ALAN W B.Large-scale, component-based development[M].USA:Prentice Hall PTR, 2000:59。

[3]Krzyszof Czameck, Ulrich Eisenecker.Generative programming:meth-ods, tools, and applications[M].Boston, USA:Addison Wesley, 2000:141。

[6]张世琨, 张文娟, 常欣, 等.基于软件体系结构的可复用构件制作和组装[J].软件学报, 2001, 12 (9) :1351-1359.

[5]宋旭东, 王毅, 刘晓冰, 等.基于构件技术的综合决策支持系统[J].计算机工程, 2008, 34 (14) :269.

[6]吕明琪, 薛锦云, 胡启敏.基于软件体系结构的可复用构件模型[J].计算机应用研究, 2008, 25 (1) :120.

[7]Johnson R, Hoeller J, Arendsen A.Spring:java/j2ee Appli-cationFramework[EB/OL]. (2004) .http://www.springframework.org/.

构件的地震破坏模型分析 第2篇

关键词:地震破坏模型,地震损伤指标,双参数破坏模型

0 引言

近几年来世界各国发生的大地震, 如1994年美国Northridge和1995年日本阪神地震的震害都表明, 按照现行的建筑规范设计的结构总体上保证了“大震不倒”的安全目标, 但地震造成的损伤非常严重, 结构使用功能已经基本丧失。因此, 美国学者Bertero等提出了基于性能的抗震设计思想及方法[1]。

为了灵活、合理地考虑地震设防水准和结构性能水平的要求, 很多文献中提出了钢筋混凝土结构三水准抗震设计的地震损伤性能目标, 并在此基础上提出了相应于小震、中震和大震作用下的结构损伤指数D[2]。为了合理的反映影响结构破坏的因素, 结构损伤模型的选取是关键。目前, 地震工程界较为一致的看法是, 变形与累积耗能的联合效应是引起结构地震破坏的主要原因。其中最具有代表性的是Park模型[3], 以后的许多模型都是在该模型的基础上建立起来的。因此, 合理的地震破坏模型应当是变形与耗能的适当组合。

随着对阻尼耗能问题的深入研究, 人们开始认识到, 输入结构的地震能量是由结构的滞回耗能和结构的阻尼耗能所共同消耗的, 结构的阻尼耗能对结构的破坏也起着不可忽略的影响[4]。从这方面讲, 只考虑了滞回耗能的结构地震破坏模型, 而低估了结构的损伤程度。为此本文将在分析以往各种双参数破坏模型的基础上, 提出一种关于构件的可以考虑到阻尼耗能对结构损伤造成影响的破坏模型。

1 地震破坏模型

1.1 现有的几种双参数破坏模型

Park等[3]基于一大批美国和日本的钢筋混凝土梁柱试验结果, 提出了钢筋混凝土结构的双参数地震破坏模型, 破坏指标为:

D=δmδu+βQyδudE (1)

其中, δm为地震作用下结构的最大变形;δu为单调荷载下的极限变形能力;Qy为屈服强度的计算值;dE为吸收的滞回能增量;β为循环荷载的影响系数, 并根据试验资料确定了其中各参数的计算公式。由于变形和能量双参数破坏准则, 反映了破坏是由大的荷载幅值和循环的重复加载效应联合作用所引起的这一事实, 较好地解释地震波三要素各自对结构破坏的影响, 从而获得了广泛的支持。

Park-Ang双参数地震损伤模型并非很完善, 存在的主要问题是[5]:1) 它不能反映构件极限滞回耗能随累积幅值的变化情况, 即认为构件极限滞回耗能仅与最大位移幅值相关而与加载路径无关, 与试验结果不符;2) 采用线性组合模式虽形式简单, 但缺乏依据, 大多数学者倾向于非线性组合模式;3) 组合参数β不易确定, 尽管Park等给出了估算组合参数β的经验公式, 但其统计离散性较大。组合参数β的非确定性会给构件损伤评估结果带来相当的误差。

国内的学者也做了许多工作, 陈永祁等[6]根据我国的震害资料提出延性比μ和能量指标η的双重准则:

(μ-0.676) (η-0.676) =1.403 (2)

其中, μ=δmδu;η=EyQy (δm-δy) ;δm为最大位移值;δy为屈服位移值;δu为极限位移值;Ey为滞回耗能;Qy为屈服剪力。将结构的μ, η值标在μ—η平面上, 根据点与双曲线的位置来区分结构的破坏情况。

江近仁、孙景江[7]对国内45个砖墙的循环试验结果进行分析, 提出了砖结构的双参数地震破坏模型, 破坏指标为:

[ (XmXy) 2+3.76 (εQXy) 1.12]1/2 (3)

其中, Xm为最大变形;ε为滞回耗能;Q为强度;Xy为名义屈服位移。该破坏指标对应墙体彻底破坏的均值为14.61。

欧进萍[8]在分析钢结构的地震破坏时, 提出如下破坏指标:

D= (XmXu) β+ (εεu) β (4)

其中, Xm, ε分别为结构最大变形、滞回耗能;Xu, εu分别为结构极限变形、极限滞回耗能。

牛荻涛等[9]对钢筋混凝土结构提出与式 (4) 类似的地震破坏模型:

D=XmXu+0.1378 (εεu) 0.0814 (5)

王东升等[5]基于剩余寿命等效的概念并针对Park模型的不足之处, 提出了钢筋混凝土构件地震损伤改进模型:

D= (1-β) δm-δyδu-δy+βi=1nβiEiQy (δu-δy) (6)

其中, Ei为第i个滞回圈所包围的面积 (即滞回耗能) ;βi为能量项加权因子, 与加载路径有关;β为组合参数, 与式 (1) 相同。给出了能量加权因子βi的计算方法。改进的地震损伤模型规格化最大位移与规格化滞回耗能是非线性组合, 可以近似考虑加载路径对损伤的影响。

上述几种双参数破坏模型大都是以Park模型为基础发展出来的, 式 (1) 的物理意义不够明确, 且不便应用。将式 (4) 变形与耗能以同样的指数进行组合, 不能反映地震作用下结构的最大反应与累积损伤界限相互影响的规律。式 (5) 能够较好地反映结构地震破坏的规律和震害事实, 但变形指标的系数为1, 是不合理的。

1.2 结构地震损伤指标

损伤指标D是描述结构或构件受损程度的变量。一般定义为结构或构件反应历程中某一累积量与相应的指标极限允许量之比[10]。对于不同材料或不同破坏特征的结构, 其损伤累积模型亦不相同。损伤变量具有如下数学性质[11]:1) 损伤变量D的范围应在[0, 1]之间, 当D=0时, 对应无损伤状态;当D=1时, 意味着结构或构件完全破坏。2) 损伤变量D应为单调递增的函数, 即结构损伤向着增大的方向发展, 且损伤补可逆。

2结语

结构构件耐火隔热性计算模型 第3篇

1 建立预测模型

在模型建立过程中进行一定的假设,条件如下:(1)防火门为一维导热;(2)炉内对流和辐射传热系数hr和炉外对流传热系数h0近似等于25 W/(m2K);(3)无内热源;(4)防火门内相同材质是均质的;(5)防火门背火面与环境之间的辐射换热是小表面与无限大腔体之间的换热问题,可忽略;(6)较厚材料由于在升温过程中需要一定的导热过程,所以导热系数通过积分求平均获得;而较薄材料由于导热较快,导热系数采用瞬态值获得。

1.1 物理模型

耐火炉中的防火门受火模型,见图1所示。

1.1.1 标准时间-温度曲线公式

耐火炉中的标准温升曲线符合式(1)。

Tw-T∞=345lg(8t+1) (1)式中:Tw为试验炉内温度平均值,可近似看作防火门受火面温升,℃;T∞为环境温度,取27 ℃;t为试验从开始起进行的时间,min。

1.1.2 导热系数的确定

由于升温过程为非稳态过程,导热系数k随温度变化而变化,因此通过查找手册建立导热系数方程,其中碳-硅钢的导热系数见式(2)。

k(T)=62.475-0.032 25T (2)

防火玻璃的导热系数见式(3)。

k(T)=3.54exp(-T/283.93)+2.82 (3)

膨胀蛭石的导热系数见式(4)。

k(T)=0.001 59+2.073 3910-4T (4)

1.1.3 热阻的确定

从传热学角度讲,当热量在物体内部以热传导的方式传递时,遇到的热阻称为导热热阻。对于热流经过的截面积不变的平板,导热热阻为l/(kA)。其中:l为平板的厚度;A为平板垂直于热流方向的截面积;k为平板材料的导热系数。

能量从炉内经由下列途径传出到环境空气:(1)从炉内空气到防火门受火面的自然对流;(2)从炉壁到防火门受火面的热辐射;(3)从防火门受火面到背火面的热传导;(4)防火门背火面向环境空气的自然对流;(5)防火门背火面向环境空气的热辐射。

由此得到热回路,各项热阻如图2所示。

在图2中,Ta为炉内空气温度;hi为炉内对流传热系数;Ts为防火门背火面温度;q为热传导及传热方向。防火门的热阻计算方法依据其实际构成确定,见式(5)。

Rd=undefinedundefined (5)

式中:m为构成防火门的材料种类。

门扇的热阻计算见式(6)。

undefined

门框的热阻计算见式(7)。

undefined

从试验炉腔体到防火门背火面的总热阻包括受火面并联的对流和辐射的等效热阻以及防火门的传导热阻。因而有式(8)。

undefined (8)

1.2 建立计算模型

根据能量守恒定律,热能和机械能进入一个控制体积的速率减去这些能量离开控制体积的速率一定等于这些能量在控制体积中贮存的速率。对防火门背火面来说,达到稳定的状态时,贮存在控制体积中的能量不变,也就是流入的能量等于流出的能量,建立热平衡公式,见式(9)~式(13)。

undefined (9)

undefined (10)

undefined (11)

undefined

undefined (13)

建立模型如下:门扇的热平衡关系式见式(14)。

undefined

门框的热平衡关系式见式(15)。

undefined

undefined

1.3 模型的计算求解

将各种已知条件带入上述方程中,得到蛭石防火门门扇的热平衡关系式,见式(16)。

undefined

蛭石防火门门框的热平衡关系式,见式(17)。

undefined

利用MATLAB对上述方程进行计算求解,得到结果见图3所示。

防火门、防火窗是进行防火分隔的措施之一,要求能隔绝烟火,对防止火灾蔓延、减少火灾损失关系很大。根据我国实际情况,将隔热防火门定为A0.5(丙级)、A1.0(乙级)、 A1.5(甲级)、 A2.0、 A3.0五级,其对应的耐火隔热性相应为0.5 h、1.00 h、1.50 h、2.0 h、3.50 h。根据模型的计算结果,甲乙丙级相应时刻的背火面温度,见表1所示。

根据测试要求,试件背火面的平均温升超过试件表面初始平均温度140 ℃或背火面任何一点的温升超过该点初始温度180 ℃时,则认为试件失去隔热性。由表1可以看出,蛭石防火门门扇背火面温度在1.50 h时为142 ℃,但计算结果并不是绝对可靠的,还与初始温度有关(该计算模型中采用的是27 ℃)。

2 案例研究和模型验证

图4为某厂家的蛭石防火门在耐火试验炉中的耐火测试图,炉温为标准温升曲线,标有数字的各点为热电偶的温度测点,防火门尺寸为1.4 m2.4 m。

图5为蛭石防火门门扇背火面温度实测点与计算值的比较,从图5看出两者吻合较好。但45 min之后差异变大,这是因为随着温度的升高,防火门中水分不断析出,同时防火门出现变形以及烧蚀等现象,由此产生一定的误差。因此,防火门耐火试验中应同时考虑隔热性和完整性的要求,很多防火门达到了隔热性要求,但变形及烧蚀等情况会导致完整性破坏,笔者仅考虑了隔热性,这还远远不够,需要在今后的研究过程中不断完善。

3 结 论

根据图5中模型计算结果可见,门扇温度与实测值差别不大。说明对于门扇来说,背火面温度的预测结果是比较可靠的。

门上不同点的温度不同,原因之一是接触热阻不同,有时引起的温升差别是很可观的。但这部分的计算过程该模型没有考虑,宜在今后的研究过程中完善。

摘要:根据传热学理论,在标准温升曲线条件下,以蛭石防火门为例,建立了防火门背火面温升简化预测模型。将防火门分为门扇和门框两部分,分别确定各部分的导热系数、热阻,通过对防火门背火面建立热平衡公式,建立温升预测模型。与实际测试结果的对比分析表明,预测模型结果误差较小。

关键词:结构构件,耐火性能,传热学

参考文献

[1]李国强,蒋首超,林桂祥.钢结构抗火计算与设计[M].北京:中国建筑工业出版社,1999.

[2]GB/T9978-2008,建筑构件耐火试验方法[S].

[3]ISO 834-1-1999(E),Fire-resistance tests-Elements of buildingconstruction-Part 1:General requirements[S].

[4]CEN(European Committee for Standardization).Eurocode 3:De-sign of steel structures.Part1.2:General rules structural fire de-sign(2001)[S].

[5]ACI 216R-89,Guide for determining the fire endurance of concreteelements[S].

[6]杨世铭,陶文铨.传热学[M].北京:高等教育出版社,2006.

构件模型 第4篇

1 模型检验在变异测试中的应用

1.1 模型检验

模型检验[1]技术中用状态迁移系统(S)表示系统的行为,用模态/时序逻辑公式(F)描述系统的性质,这样“系统是否具有所期望的性质”就转化为数学问题“状态迁移系统S是否是公式F的一个模型”,用公式表示为“S|=F”。当系统不满足所要求的性质时,模型检验工具就会依据检验算法自动生成一个反例(一条执行路径)来说明系统不满足性质的原因所在。模型检验的流程如图1所示。

1.2 基于模型检验的变异测试方法

由于模型检验工具以有限状态机所描述的系统和时序逻辑公式所描述的系统性质作为输入,因此,基于模型检验的变异测试方法通常包括对有限状态机迁移描述进行改变和对施加于系统模型的时序逻辑约束进行改变两种变异算子[2]。

首先,对有限状态机迁移描述进行改变与程序变异的思想类似,对系统模型的变异可能会引入一些错误的行为。如果这个错误行为与原有规约所定义的行为不一致,那么可以通过使用模型检验器验证模型的变异体和规约来发现这一错误,并生成一个反例路径。该反例分析了一个错误行为的执行过程,因此正确的被测系统在执行该反例时应该表现出不同的系统行为,这样的轨迹被称为否定性测试用例[2](negative test-case)

其次,通过对施加于系统模型的时序逻辑约束进行改变就可以迫使原始系统模型不能实现相应的行为,并且生成反例路径。将描述系统性质的规约表达式的变异体和原始系统模型输入模型检验工具进行验证,通过这种方法所生成的反例路径(测试用例)就分析了一个正确系统应该表现出来的行为。当在实际被测系统上执行所生成的测试用例的时候,系统希望能够表现出与轨迹所描述的一样的行为,因此这种测试用例被称为肯定性测试用例[2](positive test-case)。图2即为该方法的流程图。

由于等价变异体与原系统具有相同的性质,因此模型检验工具就不会产生反例,从而可以自动的区分等价变异体,提高变异测试的效率,也使得测试用例可以自动生成。

2 基于模型检验的接口变异测

2.1 构件之间接口的交互关系

对于构件在集成时的接口测试而言,如果要正确的建立由被测构件所组成的系统的模型,就必须对系统中构件之间接口的交互关系进行正确的描述,从而合理的构造构件之间接口的交互关系模型。文献[3]和文献[4]在通过对构件之间的交互关系进行分析后,认为在对构件化软件进行测试时,应该考虑如下三个与交互特性相关的主要因素:1)接口,它对构件所提供服务的一个或者多个方法函数进行了封装,描述了在特定环境中,构件应该具备的功能以及应该产生的相应的行为;对于接口的使用者来说,接口内部的具体细节通常都被隐藏了起来;2)事件,对一个接口的调用产生一个接口事件,同时,事件通常还会包括异常处理事件和用户行为事件;3)依赖关系,文献[4]中提出了数据依赖和控制依赖两种依赖关系,但是由于本文所研究的是在源代码未知情况下构件集成时的接口测试,因此本文主要考虑的是接口函数之间在调用时的控制依赖关系。如果接口I1和I2之间存在控制依赖关系,那么存在一条执行路径当触发I1的时候将直接或间地接触发I2;另外控制依赖还存在于事件和事件、接口和事件的关系中。

对于构件化软件系统的结构,我们可以将其抽象的用框图集合的形式进行描述,该集合包含了表示构件系统中实体的框图以及框图之间的连接,而这种连接代表了系统中实体之间的交互关系[5]。构件的使用者(包括构件的测试人员)可以根据构件开发人员所提供的构件接口规约说明和文档信息得出与构件接口交互相关的信息,以此对构件系统,特别是构件中接口函数的交互关系进行分析,通过分析并构造构件系统中被测试构件的接口交互图来体现构件之间接口的交互关系。对于本文的研究而言,构件的接口交互图可以用G=(V,E)来表示,其中V表示系统中的构件节点E表示构件节点之间交互的边的集合。在这里以描述三角形问题[6]的构件为例进行相关说明,该构件包括三个接口函数,具体如表1所示。

为了对三角形问题构件进行接口测试,需要通过上述信息为被测试构件提供一个能够正常工作的外部系统环境,实际上这个外部环境是通过一个测试驱动程序对三角形问题构件的接口函数进行调用,我们将这个测试驱动程序视为一个构件,并将其称之为测试驱动构件。图3给出了三角形问题构件的接口交互图。其中,C1代表三角形问题构件,C2代表测试驱动构件。

2.2 接口变异算子

本文是针对在构件源码信息未知情况下对构件的接口进行测试,因此,对于文献[7]提出的作用于被调用函数内部的变异算子和作用于调用函数内部的变异算子两种变异算子而言,只有后者适合于本文后续的研究工作。在分析了“作用于调用函数中的接口变异算子”和文献[8]提出的面向IDL描述语言的接口变异算子后,本文根据Java语言的基本特性和JavaBean构件在集成时的特点,在表2中给出了所选择的适用于JavaBean构件在集成时的接口变异算子。

2.3 测试用例生成框架

图4所示为基于模型检验技术的接口变异测试方法的基本框架,该方法以Java PathFinder作为模型检验工具。

2.3.1“建模与变异”阶段

首先需要通过被测试构件的接口交互图来建立被测试构件在集成时的接口调用关系模型,建立模型的过程就是利用构件的接口交互图来开发被测试构件的测试驱动程序的过程。运用模型检验技术对构件的接口进行测试,一方面除了要通过接口规约说明保证所建立的构件系统模型能够正常运行以外,另一方面,也是更为重要的一个方面就是所建立的模型能够在验证过成中对被测试构件中所有的接口函数进行全面的、任意的测试。

基于上述两个方面的考虑,在建立被测试构件的接口调用关系模型的时候,首先需要依据被测试构件的接口规约说明对具有控制依赖关系的接口函数确定它们之间的控制依赖关系。其次,通过JPF提供的非确定性选择机制[9],利用“switch-case”语句对被测试构件中的接口函数进行建模,这样,当被验证的系统模型在模型检验工具JPF中进行验证的时候,JPF在提供了对系统模型进行反复执行的同时,也实现了对系统模型进行穷尽的搜索。通过上述方法建立接口调用关系模型之后,就可以利用接口变异算子对该模型中的接口函数进行变异,生成原始系统模型的变异体。

2.3.2“搜索与检验”阶段

在第一阶段中,分别得到了原始的被测试构件在集成时的接口调用关系模型及其变异体模型,此时,就需要将两个模型作为模型检验工具JPF的输入进行验证。为了能够生成测试用例,就需要通过“assert”断言违背机制对两个模型的状态进行比较和判断,并以此作为模型检验工具JPF在验证过程中判断的入口,从而达到触发错误产生的目的,实现反例路径的生成。

如果在验证过中模型检验工具JPF没有检查出原始系统模型和变异体模型中性质违背的地方,则说明这一个变异体模型是一个无效的变异体,该变异体模型等价于原有模型。反之,如果模型检验工具检查出错误,则说明这一个变异体模型是一个有效的变异体,同时模型检验工具会给出一条导致发生这个错误的执行路径,这条路径包含了导致发生这个错误的接口调用信息,并且该路径是一个可以将所生成的变异体“杀死”的路径,实际上这也就是期望得到的能够满足变异测试覆盖准则的一个测试用例。

3 实例分析

为了进一步分析输出结果,本节以三角形构件的接口函数TriType(int a,int b,int c)为例加以说明。在正确情况下,该构件接口函数可以对输入的任意三边进行判断并给出判断结果(一般三角形、等腰三角形和等边三角形)。假设在构件开发中随机为该接口函数注入一个错误,使其在判断输入能否构成一个等腰三角形时只能够判断a等于b和b等于c的情况,而当a等于c的情况发生时,该接口函数并不能够判断出输入参数可以构成一个等腰三角形。建立模型后,利用接口变异算子ArgLocChg对模型进行变异,产生的变异体如表3所示。

由于在调用接口函数TriType后可以改变三角形构件的状态属性,因此,通过断言违背机制对原有三角形构件模型和变异后的三个三角形构件模型分别进行比较,这样就会触发产生错误。第三个变异体是对输入参数a和c互换位置,使函数输入的参数由(a,b,c)变换为(c,b,a)。事实上,在已知导致构件错误存在原因的情况下进行分析可以知道,这个变异体是一个等价变异体,当a等于c的情况发生时,这个变异体并不能够发现该接口函数中所隐藏的错误。

在实际应用中,特别是对于在源码未知情况下的构件接口变异测试而言,如果要判断出上述等价变异体,就必须以人工的方式穷尽地搜索整个输入空间构造相应的测试用例并进行执行对比以后才能够做出相应的结论,而这个过程却是一个相当复杂繁琐的过程。但是,对于模型检验而言,模型检验工具JPF通过自动的搜索整个状态空间来检验原有模型和变异体模型,由于原有模型与变异体模型的行为是一致的,因此在整个搜索过程中不会产生任何错误,因此会在验证结束的时候给出“no errors detected”的验证结果。这样,就能够有效的判断等价变异体,减少测试的成本。

第二个变异体是对输入参数b和c互换位置,使函数输入的参数由(a,b,c)变换为(a,c,b)。该变异体是一个非等价变异体,其模型与原有模型的行为并不一致,因此模型检验工具JPF在搜索状态空间时会在发现状态不一致的时候停止搜索并给出导致该不一致状态的完整的反例路径。

该接口变异算子所产生的上述有效变异体为原有模型引入了一些不一致的行为,模型检验工具JPF将给出了导致发生这个不一致行为的输入参数(1,2,1),而反例路径则描述了导致这个错误的整个过程,如果将测试用例t(1,2,1)输入原系统执行后,由于系统本身存在该错误,因此系统在执行时将表现出与反例路径相同的输出结果。这也就是我们需要的一个完整的测试用例。

4 结束语

本章在深入讨论了基于模型检验的变异测试方法后,通过分析构件接口函数的交互关系,以构件的接口交互图为基础对被测试构件进行系统建模,并在此基础之上提出了基于模型检验的接口变异测试方法的测试用例生成框架。

本章最后以三角形问题的JavaBean构件为例,通过分析其接口函数的交互关系建立了被测试构件系统的接口交互模型并对其进行变异,随后利用程序模型检验工具Java PathFinder对变异前后的模型进行验证并生成测试用例,通过实验表明该方法能够在很好的处理等价变异体判定问题的同时自动的生成测试用例。但是,由于模型检验中固有的“状态空间”爆炸的问题[1]使得JPF在验证过程中效率较低,如何通过对系统模型的状态空间进行压缩也是下一步研究的重点。

参考文献

[1]林惠民,张文辉.模型检测:理论、方法与应用[J].电子学报,2002,30(12A):1907-1912.

[2]Fraser G,Wotawa F.Using Model-Checkers for Mutation-Based Test-Case Generation,Coverage Analysis and Specification Analysis[C].ICSEA,2006:16.

[3]WU Y,PAN D,CHEN M-H.Techniques for Testing Component-Based Software[A].7th IEEE International Conference on Engineering of Complex Computer Systems[C].2001:222-232.

[4]曹严元,张为群.一种基于CBD的软件测试方法[J].计算机科学,2005,32(2):156-158.

[5]胡军.构件化嵌入式软件设计的分析与验证[D].南京:南京大学,2005.

[6]Paul C.Jorgensen.软件测试[M].韩柯,杜旭涛,译.2版.北京:机械工业出版社,2003.

[7]Delamaro M E,Maidonado J C,Mathur A P.Interface mutation:An approach for integration testing[J].IEEE Trans.on Software Engineer-ing,2001,27(3):228-247.

[8]杨建军,陈卫东,叶澄清,等.面向组件的接口变异测试方法[J].浙江大学学报:工学版,2003,37(2):129-133.

构件模型 第5篇

软构件库管理系统是使软件复用实践真正系统化、工程化的、支持基于构件的软件开发的基础设施。软构件库是开发可重用软构件和基于软构件开发两个生命周期的联系中介。

现有的大型通用构件库管理系统都是面向软件开发人员的,目的是为了减少程序员的重复劳动,提高软件开发的效率和质量。随着软件工程相关理论的日益发展,软件开发过程也越来越规范。目前软件开发人员大多遵循的开发过程是:需求分析、系统分析与设计、系统实现和测试,在这个过程中需求分析、系统分析与设计都离不开系统建模。鉴于系统建模在软件系统开发过程中的重要地位,将系统建模与软构件的分类入库与检索有机地衔接起来,即将系统建模嵌入到软件构件库管理系统当中,以软件框架模型来描述软构件之间的连接关系,以便在分类过程中不仅考虑单个软构件的描述信息而且考虑软构件之间的连接关系,以基于构件的软件系统模型来描述需要用软件搭建的软件系统的设计模型以此作为抽象和提取构件、分析系统性能的工具。

1 基于模型驱动的软构件库系统

1.1 模型驱动的软构件库系统结构

模型驱动是本文提出的软构件库系统的基本思想。所谓模型驱动是指,构件不是作为没有联系的个体在库中存放的,构件库中存放的是可以应用在若干框架下的、彼此存在着连接关系的构件实体。因此作为模型驱动的软构件库系统无论是在构件的入库分类事还是在软件检索是都要为构件所应用的环境建模。模型驱动的软构件库系统除一般的软构件库系统具有的功能外,主要包括三个组成部分,系统建模部分、构件分类部分和构件检索部分。模型驱动的软构件库系统的组成结构如图1所示。

系统建模部分:这部分主要作用是将构件间的连接关系表示出来以便在构件入库和检索时作为考虑因素。这样标识了连接关系的构件不再是孤立的个体,而是能够完成一定功能又存在相互联系的有机系统。这部分主要建立两种模型,一是基于构件的软件系统模型;二是软件框架模型。基于构件的软件系统模型主要描述软件系统的业务功能,组成软件系统的软构件的各方面信息和软构件之间的连接关系。在基于构件的软件系统模型中包含了以petri网的行为相关性原理为基础的构件提取规则以及借助于petri的可达树分析方法对软件系统的非功能特性进行分析的方法,以这种手段来实现从业务需求中自动抽象提取出系统中的构件和构件之间的连接关系,以及对系统的非功能特性进行评价。基于构件的软件系统模型是构件检索的基础。框架模型主要是为需要入库的软构件建立其所能够应用的框架模型。这个模型主要针对在从同一个应用系统中抽象出来的一批软构件入库时,以框架模型来描述它们之间的连接关系,以便在入库时将这些联系记录下来。框架模型是构件分类入库的基础。

构件分类部分:这部分通过框架模型提取出构件的各种描述信息和构件之间的连接关系,根据软构件的描述信息和构件之间的连接关系利用聚类分析技术确定每个刻面下构件的分类,实现术语空间的自动建立。

构件查询部分:这部分需要在系统建模部分为实际应用系统建立的系统模型的基础上,提取构件的查询条件,为构件建立后缀索引以提高检索效率,并在查询结果集中根据不同构件能够应用在同一个框架中的可能性选择最合适的构件。

2 模型驱动的软构件库的工作流程

模型驱动的软构件库的工作流程分为软构件分类入库和软构件检索两个工作流程。

2.1 软构件分类入库的工作流程

模型驱动的构件库适用于对可以应用在同一软件系统中或同一框架中的构件成批的入库和检索。这样是便于在构件入库时保存构件之间的连接关系,在查询构件时使查询到的构件更适于部署在同一框架中。对于一个已开发的基于构件的软件系统中的若干构件入库的过程是:首先从已开发的软件系统中抽象出软构件,并为这些构件建立所属的框架模型,通过框架模型提取需要入库的构件之间的连接关系,然后用基于关系的构建表示法表示要入库的构件。表示出来的构件就可以进行入库了,在构件的入库过程中,首先在每个刻面下以构件的描述信息作为样本应用SOM聚类算法生成构件的刻面值,然后根据聚类的结果将其加入到刻面分类树中,接着根据框架模型计算出构件在框架中的距离以此确定不同构件应用在同一框架中的可能性,最后为每一刻面分类树建立一棵引入框架距离的后缀索引树,为提高检索效率服务。模型驱动的软构件库中软构件分类入库的工作流程如图2所示。

2.2 软构件检索的工作流程

在模型驱动的软构件库中检索构件时,可以将部署一个应用系统所需的全部构件同时检索出来,并且保证检索到的构件能够最大的可能性最小的修改量部署在同一个应用系统中。检索构件时首先为基于构件的应用系统建立应用处理层模型,主要描述需要用库中的软构件来搭建的软件系统的功能需求。在此基础上通过模型转换规则得到构件提取层模型,在这一层中利用petri网的行为相关性原理提取归纳出系统所需的构件。将构件提取层模型中的对象信息去除掉得到性能分析层模型,在这一层中对系统的非功能特性进行检验,保证系统的合理性和可行性。最后在刻面分类树的后缀索引树种搜索满足条件的构件,并且计算满足条件的构件集中每个构件与前一次查询的构件之间的框架距离,选择框架距离最小的构件作为查询结果。构件查询的流程如图3所示。

3 结论

同传统的构件库管理系统相比,本文中的软构件库系统加入了建模部分。这部分主要来描述应用系统的需求,并从中提取出构件的查询条件和构件之间的连接关系,从而方便我们队对软构件库的建设与管理。

参考文献

[1]常继传,郭立峰.可复用软件构件的表示与检索[J].计算机科学,1999,26(5):45-49.

[2]Wu X P,Woodside M.Performance modeling from software components[C].Redwood Shores,California:Proceedings of the Fourth International Workshop on software and Per-formance,2004:290-301.

[3]Baresi L,Heckel R,Thone S,et al.Modeling and validation of service-oriented architectures:application vs.style[C].Helsinki,Finland:Proceedings of the9th European Software Engineering Conference Held Jointly with11th ACM SIGSOFT International Symposium on Foundations of Software Engineering,2003:68-77.

[4]王渊峰.基于刻面描述的构件检索算法研究[D].复旦大学博士学位论文,2002.

钢筋混凝土受弯构件恢复力模型研究 第6篇

关键词:钢筋混凝土,抗震,恢复力模型,本构关系

0 引言

在抗震设计中, 对于预应力混凝土构件的塑性铰截面是否具有足够的能量耗散能力是备受关注的问题。结构或构件在荷载循环往复作用下得到的荷载—变形曲线叫做滞回曲线, 滞回曲线的外包络线称为骨架曲线。滞回曲线与骨架曲线合称恢复力曲线, 它表示结构或构件的变形履历过程[1]。实际的恢复力特性需简化成一定的恢复力模型才能用于结构分析与计算。恢复力模型是描述结构所受外力与仅由此外力引起的位移之间的函数关系的数学模型。

1 钢筋的应力—应变滞回关系研究

早在1887年, 德国J, Bauschinger通过对钢材的拉压试验, 指出当钢材在一个方向加载屈服后, 反向加载屈服应力显著降低。此后这种现象就被称作“包辛格效应”。钢筋的滞回特性常通过应力、应变的隐式函数来描述, 主要有两种方法:1) 基于钢筋的应力—应变本构关系;2) 基于几何近似的有限单元表达式, 如基于位移的考虑几何约束的有限单元和截面模型。钢筋混凝土构件中考虑钢筋的包辛格效应对构件滞回性能影响的研究始于20世纪60年代。Singh等于1965年指出钢筋的包辛格效应会影响钢筋混凝土构件塑性阶段的滞回性能。此后, Agrawl, Brown以及Kent等开展了钢筋应力—应变滞回特性的研究, 提出了许多考虑钢筋硬化和包辛格效应的应力—应变滞回模型。

2 混凝土的应力—应变滞回关系研究

钢筋混凝土结构在反复荷载作用下, 混凝土主要承受压力, 因此, 混凝土的应力—应变滞回关系研究主要针对混凝土在重复压力作用下的性能。1964年, Sinha等通过对素混凝土材料的低应变速率重复加载全过程试验, 首先提出了单轴压力下素混凝土的应力—应变滞回关系数学模型。由于实际工程中混凝土受横向钢筋的约束, 许多学者提出了约束混凝土的应力—应变关系曲线。考虑到地震作用下混凝土受到较高应变速率的影响, 各国学者建立了一系列考虑应变速率影响的约束混凝土应力—应变关系的数学模型。

此外, Yankelevsky和Reinhardt对单轴反复拉压加载的混凝土σε滞回曲线进行了研究, 根据卸载、再加载曲线的某些集合性质, 提出了确定反复荷载下σε关系的“焦点模型”。这个模型考虑了应变软化及开裂后再受压时的裂面接触效应。

3 钢筋混凝土构件恢复力模型研究现状

国外对普通钢筋混凝土构件滞回特性的研究始于20世纪60年代。首次由Penizen (1962年) 根据钢材试验提出的双线性模型 (Bi-linear) , 由于其简单在钢筋混凝土结构的弹塑性分析中得到广泛应用。根据曲线的形状, 恢复型的简化可分为曲线型和折线型两种。1964年Jennings首次采用对称的Ramberg-Osgood曲线构造了一个曲线型的恢复力模型, 并把它用于一般屈服结构的弹塑性反应分析中。曲线型恢复力模型给定的刚度是连续变化的, 与工程实际较为接近, 具有模拟精度高的特点, 但公式复杂, 计算量大。在非线性地震反应分析中, 曲线型恢复力模型在刚度确定和计算方法的选择上有诸多不便, 故实际应用时通常选用折线型恢复力模型。

国内对钢筋混凝土恢复力模型的研究始于唐山大地震之后。1978年, 朱伯龙率先对国外钢筋混凝土构件恢复力特性的试验研究进行了评述。此后国内对钢筋混凝土构件的恢复力模型进行了一系列研究。潘士劫, 许哲明提出一种可适用于多种不同类型构件的四线型、刚度退化、超前指向的恢复力模型。卫云亭、李德成 (1980年) 认为压—弯构件的恢复力骨架曲线选用型模式比较符合实际试验结果。朱伯龙, 张琨联 (1981年) 提出了考虑混凝土裂面效应和钢筋Baushinger效应的恢复力模型。程翔云, 邹银生 (1981年) 注意到骨架曲线上存在有下降段和循环荷载下卸载刚度退化的特点, 提出了钢筋混凝土压弯构件的两个滞回模型方案。方案一为定点指向型, 方案二为等效环型。

4 既有恢复力模型存在的问题

20世纪90年代至今, 恢复力模型的研究主要是针对于新的结构形式在低周反复荷载下的滞回特性的研究[2,3,4]。随着建筑业的发展, 结构中采用的混凝土强度不断提高 (高强、高性能混凝土的应用) 、建筑层数的不断增加 (使结构承重墙、柱具有更高的轴压比) 以及新材料 (纤维混凝土、FRP筋等等) 、新型结构 (钢骨混凝土、组合结构) 的出现, 采用以往的恢复力模型显然不能适应这些结构的弹塑性地震反应分析。已有的恢复力模型一般针对某种特定受力状态和特定结构, 存在的问题主要有:

1) 上述大部分恢复力模型只适用于以弯曲变形为主的结构或构件, 而无法考虑钢筋混凝土构件滞回环由剪切引起的捏拢特征。

2) 大部分模型虽考虑了加、卸载过程中的刚度退化, 但没有考虑反复加载过程中的强度退化和裂缝张合造成的滞回环捏缩, 因而不适合于那些轴压比较大、滑移变形成分较大或剪切变形成分较大的构件。

3) 框架柱的轴力在地震反应过程中是持续变化的, 从国内外已有的少有变轴力柱低周反复交变加载试验结果来看, 变轴力及轴力变化方式对柱恢复力滞回规律有明显的影响。如何模拟变轴力柱的恢复力特征, 仍是一个尚未有效解决的问题。

4) 现有的恢复力模型研究主要针对钢筋混凝土结构或构件, 而这些结构构件所采用的混凝土大多是普通混凝土, 而对高强、高性能混凝土结构或构件的研究则比较少, 对于预应力高性能混凝土梁和框架、预应力组合结构则研究得更少。

5) 大多数模型没有考虑结构大变形过程中可能出现的负刚度现象;同时特征点及模型参数较多, 迄今为止还没有很好的理论方法来确定这些模型参数。

由于这些恢复力模型是进行有限元计算及理论分析的基础, 抗震设计又是在此基础之上进行的, 为了更好地使抗震设计具有足够的安全储备, 作为设计人员应当对现有恢复力模型中存在的问题有一个较为全面的认识, 至少能对基于现有恢复力模型进行的抗震设计有一个定性的认识, 哪些设计是偏于安全的, 哪些又是偏于危险的。

参考文献

[1]李杰, 李国强.地震工程学导论[M].北京:地震出版社, 1992.

[2]聂建国, 余洲亮, 袁彦声.钢—混凝土组合梁恢复力模型的研究[J].清华大学学报 (自然科学版) , 1999 (2) :37-38.

[3]石晶, 自国良.空腹式型钢混凝土框架柱的恢复力特性[J].西安公路交通大学学报, 2000 (6) :89-90.

构件模型 第7篇

基于网格构件的软件体系结构是以网格构件的结构来解决问题的一种开放网格服务架构模型,与传统软件体系结构的不同主要在于它的分布式构件架构,以及网格系统中各个计算单元功能调用的组织方式。基于网格构件的软件体系结构已成为软件领域研究的热点。

目前流行的两种分布式软件体系结构:①AT-EJB体系结构:它从系统事务方面来优化系统的性能,主要通过共享对象,委托对象,事务处理属性来优化构件事务之间的共享数据接口函数。②HA-EJB体系结构:它采用复制组的概念,将远程构件的状态从主服务器备份到副本服务器上,并且通过消息机制实现高可靠性的网格构件的复制,例如主服务器A崩溃时由备份服务器B升级成为主服务器来提供网格构件服务。

参考AT-EJB和HA-EJB模式,我们从形式化方法提出了网格构件、构件代理、连接器、构件Cache和网格构件式的软件体系结构,吸取AT-EJB和HA-EJB模式的优点,既采用服务器端优化,同时提出客户端的网格构件调用算法以及构件Cache,实现高性能、高可靠性的网格构件的软件系统。

1.1 网格构件

构件的定义在不同的讨论域中有不同的理解,本文将构件作为数据功能的结点,由接口和功能函数组成。构件的接口是构件与外界交互的唯一通道。根据构件是否为一个网格构件,将构件分为本地构件和网格构件。本地构件是系统中的一组静态功能结点,可以直接通过它的接口调用它进行计算。网格构件是一组虚拟的构件集合,是分布在网格系统资源中的计算结点。调用网格构件必须先使用系统逻辑单元建立本地的构件代理,再通过构件代理映射到系统中调用网格构件的接口进行计算。网格构件是一个功能的独立单元,不存在网格构件对本地构件的依赖性,只有网格构件之间才有依赖关系。

1.2 构件代理

构件代理是一个网格构件的映射机制,不仅通过建立远程构件映象将服务器上的网格构件映射到本地系统,而且当一个构件服务器崩溃时,它能够搜索服务器队列,将本地虚拟构件映射到另外一个服务器的构件上。常见的构件代理比如Java中的Factory对象,可以建立类Stub和类Skeleton来建立与EJB对象的连接。

构件代理的非形式化功能可以描述如下:当系统发出一个网格构件调用时,若该构件的本地映象不存在,则从服务器队列中取出排在队头的服务器,试图建立本地的虚拟构件与服务器上的构件相映射;若不能完成映射,则将其插入队尾,并且试图取出下个队头进行映射,直到映射成功为止;若映射成功,则将该服务器仍然列在队头。

1.3 基于XML标准的构件库

构件库是支持基于构件的软件开发(CBSD)的基础设施,在构件复用的过程中作为一个实用有效的工具来支持构件的管理、存储和检索。目前网格构件以服务的方式已经逐渐代替传统本地构件,分布式的软件体系结构也成为主流的软件构架方式,因此可以制定出基于XML表达规范的网络化的构件库存储库结构。该构件库与传统构件库相比,有以下两个特点:①在构件类型的定义上增加了网络构件的概念,支持网络化的构件调用方式在构件库中的表达;②对网络构件的生产、考查、分类、选择、评估和适配进行了特定的支持,从service,performance,component_alias,server_adr,server_driver 等刻面来描述网络构件的特点。

采用XML结构化的语义模式,可以支持一切符合该结构标准的构件的导入、导出以及构件形式化表达的规范性。

1.4 连接器

从传统系统的角度理解,连接器的定义仅限于构件在系统内部的交互规则模型;而网格构件系统的连接器是广义上的概念:连接器是一切能够为构件交互来传递语义的抽象载体,它通过定制构件之间的交互规则来实现构件耦合。一般可以根据连接对象类别的不同,将连接器分为三种:LtL Conn(本地构件之间),RtRConn(网格构件之间),L tRConn(本地构件和网格构件之间)。目前常见的连接器有函数调用(LtL Conn),Weblogic的EJB构件之间的T3通信协议(RtRConn),远程接口访问协议RMI(L tRConn)。

1.5 构件CACHE

使用构件代理将服务器上的构件映射到本地后调用,如果调用后在一段时间内不使用,就将其关闭以释放它占用的内存。当系统进行频繁的网格构件交替访问或者网格构件在系统中调用比较频繁,尤其是出现循环调用,系统的效率就会非常低,而且频繁的网络映射往往造成较大的系统开销。系统采用构件Cache后,构件代理就在从服务器映射构件之前,首先从构件Cache中找相应的网格构件,调用其映象;没有找到相应的网格构件,再从服务器上映射。作为系统缓存结构逻辑,构件Cache减少了构件映射,大幅度地提高系统的性能。

Cache中的网格构件的映射队列按照一定的算法进行排序,系统通过当前构件的调用情况来动态调整构件Cache中的网格构件映射集合,以便提高调用的命中预测率。一种构件最近最少使用的队列算法描述如下:系统初始化时,将构件Cache清空,每当调用完一个网格构件后,若Cache未满并且该构件在Cache中没有副本,则将该构件直接放入Cache中,并将Cache中的构件访问位置1;若Cache已经满并且该构件在Cache中没有副本,则将Cache队列中队尾的构件替换成新访问的构件,并将Cache中的构件访问位置1;若构件在Cache中已经有副本,则将其访问位加1,并且按照访问位的大小重排构件的序列(从大到小)。系统周期性(设周期为N)地将所有访问位减1。

2 网格构件的优化平台

在上述基于网格构件的软件体系结构模型的基础上,我们以J2EE平台为标准开发了一个基于网格构件的优化平台的应用系统。该系统针对传统分布式软件体系结构的低效问题,提出了一个基于网格构件的软件体系结构解决方案,即在传统的软件体系结构上添加了三个层次结构:网格构件软件体系结构、优化算法结构和动态发布配置策略。如图1所示。

该系统从软件开发技术层面解决了大规模的系统构件化开发中的工作协同和协同开发环境下网络构件在构件库中的发布、注册和发现的问题;从网格软件系统技术层面解决了网络环境中大规模分布式网格构件的调用优化效率问题。

2.1 网格构件动态缓冲调用的实现

系统的设计中,采用Hash表作为内存缓冲来保存EJB构件的连接实体,分别调用Hashtable类的put和remove方法来实现内存实体的替换。用户进行一个EJB调用时,首先用到EEJBM(Efficiency EJB Model)中的invokeEJB函数,把原本复杂的EJB调用过程简化成一个函数。接着,程序先去Hash表中查找,如果有相同的EJB Home实例就直接使用,无需再次连接远程服务器。如果没有发现相同的实例,就建立新的连接。建立新连接后,如果Hash表的容量还有空余,就直接将此实例插入Hash表中备用。如果Hash表已满,就根据当前的调度策略把最不合适的实例替换掉。同时,程序还有一个计时器,对于长期在表中没有被再次调用的实例,进行垃圾收集,使得Hash表保持较高的命中率。

EEJBM是一种两层结构的EJB系统模型,包括构件管理、动态调度、策略管理三个部分,应用Register-Provide、EJBPOOL、Invoke-Forecast算法来保证系统中的每个应用能够高速的调用远程服务器的EJB构件。EEJBM由EEJBM Server、EEJBM Client、EEJBM Manager组成,它的远程构件服务概念和经典的Request-Response模式、JINI的Lookup-Service模式和Plug-and-Play模式都不同,是以RP(Register-Provide)方式来运行的。在RP模式下,EEJBM的每个客户应用在初始化时都必须在EEJBM的服务器上进行构件服务的注册,注册的信息包括客户应用的唯一标识、客户所需要服务的类型、提供服务的服务器地址;一旦该客户进行注册后,EEJBM服务器就能根据它的注册信息,搜索最佳的EJB服务器,从该服务器上将它所需的构件信息集合返回给客户应用;而EEJBM Manager作为构件调度预测系统,动态地预测系统将调用的EJB构件,提前初始化EJB连接。

在系统中,通过配置文件调整网格构件和实时调度策略。配置文件是一个名为config.xml的XML文件,包括EJB服务器和调度策略信息,保存在当前工程目录下,使得启动时可以自动获得其信息。用户可以通过监控界面上的“配置文件”按钮选择不同的配置文件。

2.2 自恢复进化的实现

自恢复系统就是软件系统根据运行场景环境的变化,自动地调整系统结构和算法以适应当前情况,并且系统构件能够采用进化的方式来平衡环境变化和系统运行的矛盾。EJB的体系模型就是一种自恢复理论的初期模型结构:EJB构件是由EJB-Container所包容,内部对象运行环境的变化所产生的事件,如异常处理、网络连接会话全部由Container处理。

在本设计中,通过java.nio.channels建立JAVA应用的内存共享空间,实时读写内存数据来跟踪网格构件的运行状态。其监控传感器采用JVMPI_Interface来实现,即通过DLL建立接口来跟踪JAVA虚拟机的实时数据,如占用CPU周期、使用内存数、线程数量等信息。自恢复进化内核算法模块通过分析网格构件的运行信息以及构件进化序列的XML表,来决定构件进化的方式,即找出最优的后代构件。

3 结束语

基于网格构件的软件体系结构是计算机软件体系结构模型的新领域,我们提出的模型在某些方面还不全面和系统化,比如网格安全接口的调用效率和安全性没有更多涉及。下一步的工作可以将安全协议结合网格服务建模,比如SSH、SSL协议化服务做深入探析。

参考文献

[1]Li Yang,Wu Zhaohu.Research on formal semanties of component inte-gration[J].Journal of Zhejiang University Engineer Science,2004,38(2):135-140.

[2] David G,Bradley S.Model-based Adaptation for Self-Healing Systems.Proceedings of the first workshop on Self-Healing Systems,2002:27-32

构件模型范文

构件模型范文(精选7篇)构件模型 第1篇 当前社会的信息化过程对软件需求的增长非常迅速, 但目前软件的开发与生产能力却相对不足, 这不...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部