维普资讯 http://www.cqvip.com 计算机科学2007Vo1.34No.5 基于构件的软件可靠性分析 ) 樊林波 。吴智 赵明 (贵州大学贵州省可靠性工程研究中心 贵阳550001) (遵义师范学院计算机科学系 遵义563002)。 摘要现代软件工程的一个重要目标是实现聚合性和重用性,构件技术就是以此为目标的。随着该技术的快速发 展,以构件设计复杂软件系统的软件开发方法日趋成熟。但是基于该技术的软件可靠性分析却比较落后。目前,在这 领域的研究中,多数是使用软件可靠性增长模型(SGRM),对于软件系统的可靠性预测研究较少。在已有的文献中, 给出了基于组件的具有层次结构的系统可靠性预测分析,但没有考虑模块之间循环调用的可靠性问题。循环调用在 软件中是经常发生的事件,对软件系统的可靠性具有举足轻重的作用。本文在对已有模型的不足进行分析后,增加了 循环调用的可靠性预测分析,建立了一个较为全面的系统可靠性预测分析模型。 关键词构件,软件可靠性,依赖关系,可靠性预测,循环调用 Software Reliability Analysis of Component Based Software FAN Lin-Bo ' WU Zhi ZHAO Ming (Reliability Engineering Center of Guizhou Province,Guizhou University,Guiyang 550001) (Department of Computer Science,Zhuny/Normal College,Zhunyi 563002) Abstract One of the most important goals of modern software engineering is to realize its aggregation and reusability. Component-based technology is one way tO achieve this.With the rapid development of this technology,the compo- nent-based technology becomes quite mature.However,its reliability analyzing technology drops far behind.At pres— ent,in this research field,the widely used approach iS SGR^,L Little attention iS on the study of software reliability prediction.Literature presents one component-based with hierarchical structure method for system reliability predica- tion analyzing.But it doas not consider the reliability of cycle calls among modules.As we know,cycle calls are preva- lent in software.and it plays a critical role for the reliability of software system.In this paper,we analyze the existent models,augment reliability prediction analyzign for cycle call and build up one fulbscale systematic reliability prediction analyzing mode1. Keywords Component-based technology,Software reliability,Reliability prediction,Dependent relation 1 引言 长情况;其中包括文[5]给出的根据测试覆盖度来评估软件可 靠性增长;文[5,6]给出的通过程序中数据流的正则性进行测 随着软件构件技术的快速发展,以构件设计大型复杂软件 试,并使用该正则性准则来评估软件可靠性。 系统的软件开发方法日趋成熟。但是,目前的工作更多地集中 第二类,有文[4]给出的RBD模型以及其扩展的RBD和 在构件的开发和构件的复用技术等方面,对利用构件组成的软 Criticality模型,该模型研究了层次型软件模块之间的依赖关 件系统的可靠性和质量方面则关注较少l3]。在当前,对软件系 系;文[7]给出的层次型软件系统的可靠性评估模型;文[8]给 统的可靠性评估模型中,要么没有考虑预测,通过测试后进行 出的构件概率迁移图模型,该模型使用了概率转移状态机来 可靠性增长评估;要么是对预测模型约束条件苛刻,与实际工 对软件可靠性进行评估,主要是动态分析;文[3]在文[4,7]的 程技术相差较大。本文在对已有模型的不足进行分析后,增加 基础上进行了改进,定义了一个依赖关系函数,用来对层次结 了循环调用的可靠性预测分析,建立了一个较为全面的系统可 构模型的可靠性进行评估。 靠性预测分析模型。这模型更符合实际工程应用。 2.2 RBD和Criticality模型L4]及其不足 2对已有模型的分析 RBD and Criticality模型定义了一个函数UTILIZES ( ,mj, 一 ),该函数定义为如果鸺调用%时,如果帕 2.1评估模型概述 失效,则m/,以x加一耐的概率失效。该函数描述了一个模块 在已有的软件系统评估模型中,一类是在系统开发完成、 调用另一个模块后,其可靠性预测。该模型是对原有的RBD 经过测试和实际运行之后才进行可靠性评估的模型,称为软 模型的改进,在原有的RBD模型中,定义了USES函数,形 件可靠性增长模型(SGRM)C ;另一类是在软件开发阶段, 如: 或者说是在软件未测试前对软件可靠性的预测,称为软件可 USES(Modules L1,Modules Lo1) 靠性预测模型_4J。 USES(Modules L1,Modules Lo2) 第一类,也是目前使用得较多的软件可靠性增长模型 (SGRM),它是以软件运行和测试期间得到的失效数据为输 USES(Modules L1,Modules Lo )。 入,应用统计和随机过程的理论和方法,对软件中剩余的缺陷 其中L 为父模块,Lo ,Loz,…,L 为L 的子模块。该 数目进行评估,并且预测软件在未来一段时间内的可靠性增 模型是以如下假设为前提: *)国家自然科学基金项目(60473054)。樊林波博士生,讲师,研究方向:软件工程。吴智硕士,研究方向:软件可靠性。赵明教授, 博士生导师,研究方向:软件工程、可靠性工程。 ・266・ 维普资讯 http://www.cqvip.com 1)同层模块是s-independent的,任何模块的失效概率不 受其他模块失效概率影响。即有{V(i, )∈M,P(i l )一P ( )},其中,M为系统所有模块的集合;i和J为系统的2个不 同的模块。 本文中,作者排除了循环调用问题,但在实际软件工程 中,循环调用问题经常出现,本文增加了循环调用的可靠性预 测分析,建立了一个较为全面的系统可靠性预测分析模型。 这样模型更符合实际工程应用。 2)失效(failure)只限于1个模块内部,即当1个模块的子 模块失效时,它不会把失效传给父模块。 3)如果1个父模块不存在fault,那么它调用的所有子模 3基于构件软件的可靠性 构件是指封装了数据和功能、在运行时能够通过参数进 块也都不存在faul。 图1层次型软件结构 但是改进后的RBD和Criticality模型,仍然基于这一假 设,即同层模块是s—independem的,任何模块的失效概率不 受其他模块失效概率影响,表示为{V( , )∈M,P(i l )一P ( )},其中,M为系统所有模块的集合,i和J为系统的2个不 同的模块,结构如图1,这不符合实际的软件系统。 2.3 IIBD和Criticality模型的改进及其不足 文I-8在文I-4]的基础上进行了改进,改进后不要求文 [4]的假设。定义了Depends函数,用以约束层次内部模块之 间的依赖关系。Depends(rr ̄,rn/,P 一 )表示模块rnl以概率 P 一 依赖于模块m 。Depends函数定义在同一层次的模块 之间,当 一 一。时,rni和m 相互独立,即rni不依赖于m,; 当 一蚵一1时,rnl完全依赖于mj,即当且仅当巩正确时, ∞正确;当O< 一 <1时, 一 给出了m 和m 之间的 依赖程度。该模型描述了在同一层次的单向依赖,并在保证 不存在循环依赖的情况下,给出了系统可靠性的计算公式。 该模型如图2,计算公式如下: 假设模块的依赖关系如下, eDp(Lo1)一{L02,…,L0 },蠡≤72 eDp(L0 )一{L0斗l,…,Lok},五≤72 eDp( )一 图2带有依赖的层次图 根据上述依赖关系,有: R(S)一P(L1)[-R(L01)+R(~L01)・P(L1 l~工帕1)]…・ ・[-R(Lo )+R(~Lo )・P(L l~ )] R(Lo )一P(Lo )・[-R(Lo2)+P(L0 l~工帕2)]…・・ [R(工帕 )+P(Lo l~工帕 )] R(L0 )一P(Lof)・ER(L0f+1)+P(L0 l~L蚪1)]…・・ [R(L傩)+P(L。 l~L傩)] R(L )一P(Lo,1) 通过循环迭代解这个概率等式方程组,可计算出系统的 可靠性。 行配置的模块。软件可靠性指的是在一段特定的自然单元或 者时间间隔内,系统无失效运行的概率。 3.1问题的说明 (1)本文是对基于构件的软件系统可靠性预测研究,不是 对组件和模块组成的系统研究,原因有以下几点:1)构件技术 发展较快,开发方法日趋成熟,符合现代软件工程思想。2)本 文的目标是对系统开发完成或者开发中对系统的可靠性预 测,预测的根据是基于该软件所用的基础部件,和部件的组织 结构,要求部件的可靠性是已知的。3)构件通常是由第三方 开发,除具有清晰的接口描述和常见的功能描述外,还应有表 明该构件使用的场合和可靠性等性能指标。这符合2)的部 件选择。同时也是组件和模块一般不具有的。 (2)基于构件的软件系统,选择构件时一般要分析使用构 件的中间件功能和构件使用的环境,本文对系统可靠性的研 究,是基于中间件和使用环境都完全可靠的情况下进行的。 在实际应用中应考虑它们的可靠度。 3.2基本定义 定义1(依赖关系)设A一{Cl,C2,…, }是一个软件 系统中所有构件的集合,C ,C2,…, 是构件。D AXA是 该软件系统中所有具有依赖关系的构件组成的集合,A×A 为A上的笛卡儿积。依赖是指处理事件一构件要完成它的 功能或功能的一部分,必须依靠另一构件的功能或部分功能。 例如,D一{<C1,C2>}表示系统中只有构件C1依赖于C2,注 意,关系{<C ,C2>}和{<C2,C1>}表示不同的依赖。 定义2(依赖程度)如果构件G依赖于构件 ,假设C, 失效,就导致G以P 的概率失效,则我们称P 为构件C 依 赖构件CJ的依赖程度。 定义3(循环依赖) 如果构件G完成其功能,需要借助 构件CJ的功能,而构件Cj的该功能又要依赖于C 的功能, 则称这种依赖为循环依赖。注意:循环不是无限次的,因为构 件功能的完成是基于有限次的循环,否则,系统进入死循环。 符号规定R(S)表示系统可靠性,R表示C 构件的可靠 性, 表示构件C 调用构件CJ后的可靠性,R[{I ]表示G调 用CJ,CJ又调用C 的一次循环调用后的可靠性。 3.3可靠性计算公式 (1)“叶结点,,调用计算,“叶结点”是指它不调用其他构件的 构件或构件的组合。如G调用G,而G不再调其他构件,或它 对其他构件的调用结束。则调用后结点的可靠性计算如下: Rd—R ・(R,+(1一Ri)(1一P| ))。 (2)“带依赖的层次型构件”的调用计算,“带依赖的层次 型构件”是指一个构件调用它“下层”的几个构件,“下层”构件 中又存在调用关系,但不存在循环调用,如图2的情形。 假设G调用Cj,G又调用C ,而CJ又调用C 。 R啦一R ・(R +(1一R )(1一P ))・(Rk+(1一R)(1 P )), 其中,R —R ・(Rk+(1一R)(1一P )) (3)带循环的型调用计算,带循环调用的可靠性计算是将 一次循环的可靠性计算出来, 次循环调用的可靠性是一次 循环的可靠性的 次幂。在一个不可靠的系统里循环调用多 ・267・ 维普资讯 http://www.cqvip.com 次,结论的可靠性将越来越低。 为了计算多次循环调用的可靠性,必须将一次循环调用 的可靠性计算出来。一次循环调用的可靠性可将环撤为线性 处理。如图3,可将图3化为图4处理。 系统的可靠性R(s)是可以计算的,可根据系统中构件组成结 构,运用以上三种运算的组合从“叶结点”一步一步向上计算。 该方法适合静态分析。下面用一个简单例子来说明该方法的 应用。 … 图4将图3转化为线形结构 图3循环调用图 G调用Cj,G调用C ,…, 又调用C 。一次调用后的 可靠性为: R[i, ., =Ri・(R[『,…. ]+(1一RD,…, )(1一P )) 图5综合调用图例 Ru。…, =R,・(REk.…, +(1--REk,…, )(1一 )) R —R ・(R +(1--Rf)(1--P坩))。 4举例 假设图5是一个基于构件的软件结构图,该图中包含了 循环和层次调用,我们假设调用C3,则C3必调用c4,同时 C4必调用C3。并且,每次调用都产生2次循环。这样我们 可按如下顺序计算R(s)。先计算R 。,再计算REa_4.3]'再计 算RE3,4 31的平方,这时就变成层次模型了。数据假设如表1。 如果是n次循环,可靠性是R[ij,i]的n次幂。对于单个 构件的自身调用和超过二个模块的循环调用,可是用该方法 的推广。 (4)一个基于构件组成的软件系统,可把它分解为以上三 种“部件”的组合,每种“部件”的可靠性是可计算的,则组合后 表1基本数据假设表 R3=R・(Ro+(1一Ro)(1一P43)) 一O.9980・(0.9985+(1~0.9985)(1—0.3500)) :0.9979 2003 2 柯尧,赵保华.基于组件系统的可靠性分析D].北京邮电大学学 报,2005,28(6):116~117 3 Goseva-Popst ̄anova K,Trivedi K,Mathur A P.How different architecture based software reliability models are related?In: Proc.of the Fast Abstracts llth IEEE Int’1.Symp.on Software 3,4,31一 ・(R3+(1一R3)(1一P34)) 一O.9985・(O.9979+(1一O.9979)(1一O.5000)) 一0.9974 Reliability Engineering(ISSRE 2000).San Jose,Callfornia, 2000.http .chillarege.com/fastabstracts/issre2000/ (PC3,4,3])。一0.9974・0.9974=0.9948 2000103.pdf 4 Leblanc S P,Roman P A.Reliability estiatimon of hier.archica1 Rz3:R2・((R[3,4,3])。+(1一(RE3,4,31)。)(1一P23)) 一0.9975・(0.9948+(1—0.9948)(1—0.1500)) :0.9967 software system[A].In:Proceedings annual Relia.bility and IVla— intainability Symposium l C】,2002 5 Yashwant K M,Michael N L,JamesM 13.Software reliability growth with test coverage口].IEEE Transactions on Reliability, 2002,51(4):420 ̄426 R(S)一R1・( 3+(1一 。)(1一Pxz))・((1k3.4.3]) + 6 孟洛明,王国伟.面向CHILL数据流测试的研究与试验[J].北京 邮电大学学报,1994,17(3):38 ̄42 (1一(1 ̄3,4,33) )(1一Pj3)) 一0.9980・(0.9967+(1—0.9967)(1—0.2500)) ・7 马敏书,张仲义,吕永波.层次型软件系统可靠性模型及预测I-J]. 中国软科学,2003,12(6):147 ̄150 (0.9948+(1~0.9948)(1—0.3000)) 8 毛晓光,邓勇进.基于构件软件的可靠性通用模型fJ'1.软件学报, 2004,l5(1):28~32 一O.9956 由于每个构件的可靠性较,所以系统可靠性较高。 结束语本文给出了基于构件的软件系统的可靠性预测 方法,通过已知的构件的可靠性和构件之间的依赖关系,就可 计算出该系统的可靠度,是一个可以在一个软件系统未经测 试前,就可对其可靠性预测的模型。但本文是基于连接构件 的中间件(或称为胶合逻辑和代码),构件的使用环境完全可 靠的基础上进行的,在实际软件系统中这是不能忽视的。从 文章可看出系统的可靠性与系统的结构也有很大关系,对要 更多地了解这些信息的读者可参考文E9 ̄12]。 9 Goseva-Popstojanova K,Trivecli K Architecture-Based approach to reliability assessment of software systems.Performance Evalu— ation,2001,45(2—3):179~2O4 l0 Gokhale S,Lyu M,Trivedi K.Reliability simulation of compo— nent based software systems.In:Proc.of the 9th Int1.Symp.on Sftoware Reliability Engineering(ISSRE’98).Paderborn:IEEE Computer Society,1998.192 ̄201 11 Krishnamurthy S.Mathur .On the estimation of reliability of a software system usig relniabilities of its components.In:Proc. of the 8th Int’1.Symp.on Software Reliability Engineerig(IS- nSRE’97).Albuquerque,NM:IEEE Computer Society,1997. 146~l55 12 Gokhale S,Wong W E,Trivedi K,Horgan JR An analytica1 ap- proach to architecture based software reliability prediction.In: Proc.of the 3rd Int’1.Computer Performance{5L Dependability Symp.(IPDS’98).Durham:IEEE Computer Society,1998.13 ~参考文献 1 John D M软件可靠性工程[M].韩柯译.北京:机械工业出版社, ・268・ 22