您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页面向对象软件的程序级FMEA方法

面向对象软件的程序级FMEA方法

来源:华拓科技网
2012年第35期SCIENCE&TECHNOLOGYINFORMATION○本刊重稿○科技信息

面向对象软件的程序级FMEA方法

(1.国防科技大学计算机学院

【摘

湖南

舒绍娴1徐小平2

长沙410073;2.国防科技大学科研部

湖南长沙410073)

要】软件失效模式及影响分析(FMEA)是一种提高软件安全性和可靠性的有效方法。本文提出基于程序依赖关系的面向对象软件程

序级FMEA方法,在详细设计及代码实现阶段,通过构造系统依赖图描述代码间存在的复杂的依赖关系,并采用切片技术提高失效原因和影响分析的效率。

【关键词】FMEA;面向对象软件;程序切片

ProgramFMEAforObject-orientedSoftware

SHUShao-xian1XUXiao-ping2

(1.SchoolofComputer,NationalUniversityofDefenseTechnology,ChangshaHunan,410073;2.ResearchSection,NationalUniversityofDefenseTechnology,ChangshaHunan,410073)

【Abstract】Softwarefailuremodelandeffectanalysis(FMEA)isaneffectivemethodforimprovingthesafetyandreliabilityofsoftware.ThepaperproposesanprogramFMEAmethodofobject-orientedsoftwarebasedondependencerelationsusedindetaileddesignandimplementationphases,whichconstructssystemdependencegraphtodescribecomplexdependencerelations,andimprovestheefficiencyofanalysiswithslicingtechniques.

【Keywords】FMEA;Object-orientedsoftware;Programslicing

0引言

失效模式及影响分析(FMEA)方法作为一种传统的可靠性和安全性分析方法已广泛的应用于硬件的可靠性工程中。随着数字化的兴起,软件FMEA方法被提出并逐渐应用于软件产品的设计与实现的过程中,有效地提高了安全关键软件的可靠性[1]。但是传统的软件FMEA方法存在精确性低、客观性差、缺乏自动化分析工具等缺陷。此外,针对已广泛运用的面向对象软件开发方法,寻找一种基于面向对象软件的FMEA方法非常重要。针对以上存在的问题及需求,本文分析面向对象软件的特点,给出一种基于程序依赖关系的面向对象软件FMEA分析方法,通过构造系统依赖图描述代码间存在的复杂的依赖关系,并采用切片技术提高失效原因和影响分析的效率。

本文第1节讨论了程序级FMEA的过程步骤;第2节描述了面向对象软件依赖图的构造;第3节阐述了如何采用切片技术对失效原因和影响进行分析;最后给出小结。

1程序级FMEA的过程

程序级软件FMEA用于验证确认最终的软件编码是否达到了软件安全性的要求。因此主要在软件详细设计以及实现阶段进行,针对的分析对象是由已实现的代码或伪代码描述的软件元素。传统的软件FMEA分析步骤包括建立变量映射表、建立软件线索、确定失效模式、进行失效原因及影响分析、提出改进措施等。目前,变量映射表和软件线索这两类信息的提取主要依赖于大量的人工操作,存在准确性低、难以实现自动化等缺陷。

由于程序级软件FMEA着重对实现进行分析,所以程序级软件FMEA是一项耗时耗力的工作,对每个软件元素中的每一条语句或每一个方法进行分析是不必要的也是不现实的。因此在程序级软件FMEA分析之前,应首先确定分析范围,在此基础上有选择的对相关软件元素进行程序级软件FMEA分析。本文中,我们以面向对象程序语言Java为例,图1给出具体的分析步骤。

图1程序级软件FMEA实施步骤

1.1

选定待分析的软件元素

对于面向对象软件,一般情况下,我们认为应重点针对以下几类

软件元素进行程序级软件FMEA分析:

●会引起关键用例发生失效的类或方法;●实现系统核心功能的类;

●实现的逻辑比较复杂的类或方法;

●与其他类之间有较多消息传递的,需要处理较多输入数据的类或方法;

●抽象类以及接口。

1.2为待分析对象构造系统依赖图

程序级软件FMEA的关键在于分析某软件元素中关心的变量经过了哪些处理过程,对软件元素产生了怎样的影响,并最终对系统输出变量产生了怎样的影响。因此,核心问题是找到,软件输入变量经过了一系列怎样的处理最后到达输出变量。

本方法将构造系统依赖图,通过图中依赖边详尽地描述变量的处理过程,对软件失效的分析提供依据。因此,构建系统依赖图是程序级软件FMEA的关键部分。传统的系统依赖图对结构化程序提供了很好的描述方法,例如。Java系统依赖图通过构建类依赖子图、类层次子图,对多态、继承、动态定连等多种关系和特性进行描述,以全面描述待分析对象[2]。

1.3提取失效模式

失效模式提取是分析的基础,在系统级我们基于启发式规则对失效模式进行总结与提炼,程序级同样提取通用的失效模式。传统的软件FMEA失效模式分为两类:变量的失效模式和算法的失效模式。针对面向对象软件以及Java语法的特点,我们认为类中属性的失效即为传统意义上的变量的失效,类中方法的失效即为传统意义上的算法的失效。以此为基础,提取对应的失效模式。1.4失效原因分析

失效模式原因分析的目的是要找出每个失效模式产生的原因,进而采取针对性的改进措施,防止或减少失效发生的概率。在程序级软件FMEA分析中,针对具体的代码,可以准确的定位失效原因所在的位置,即具体的语句或变量。这里我们在系统依赖图的基础上,结合后向切片的思想进行原因分析,通过由后向前查找系统依赖图中与失效变量相关的依赖边,查找引起失效发生的根源位置以及相关变量,进而采取相应的改进措施。1.5失效影响分析

失效模式影响分析的目的是要分析每个失效模式对当前软件元素输出的影响,这里着重关心的是每个输入变量的失效对当前软件元素输出的影响,同样,失效影响分析基于系统依赖图及前向切片的思想,可将问题转化为系统依赖图中查找某个结点的所有可达结点的问题,最后将计算结果中的输出变量提取,即为我们关心的失效影响。1.6提出改进措施

对于失效模式,经过程序级软件FMEA分析,可以给出具体到语句或变量的改进措施;而对于程序级软件FMEA中分析的系统核心功能模块的失效模式,针对其失效影响,判断危害程度,对危害等级高的失效模式首先给出改进措施,即通过失效原因的分析结果对算法设计、变量范围等实现细节给出改进措施。

520

科技信息○本刊重稿○SCIENCE&TECHNOLOGYINFORMATION2012年第35期

下面针对上述步骤中依赖图构造、失效原因和影响分析这两个关键步骤采用的方法进行描述。

3基于切片的失效原因和影响分析

2面向对象软件依赖图的构造

针对面向对象软件特点,程序的系统依赖图构造方法如图2所示。其中,过程依赖子图类似于传统的系统依赖图中的过程依赖图。控制依赖子图描述了面向对象程序中的方法的实现,是一种静态的表示。数据依赖子图在传统的数据依赖子图基础上,增加了对象。类依赖子图、类层次子图描述了继承性,并增加了Java特性的描述,对Java语法中的抽象类、抽象方法及接口的概念,通过定义抽象类与接口实现子图进行描述。

图2面向对象程序系统依赖图结构

面向对象程序的系统依赖图中保留了传统的系统依赖图中描述的结点,包括语句结点和谓词结点,具体包含基本语句结点、过程调用结点、调用返回结点、退出结点、谓词结点、域结点和参数结点等等。除此之外,定义了用于描述面向对象程序特征的结点:包括类首部结点、方法首部结点、抽象方法首部结点、接口首部结点,具体定义如下:

●类首部结点:对应程序片断中的一个类的描述,表示了类中方法和属性的集合。

●方法首部结点:描述了一个方法的入口结点,对应程序片断中的一个方法的描述,同时方法属于一个类,与类之间属于从属关系。

●抽象方法首部结点:抽象方法在抽象类中定义,描述了一个抽象方法的声明,并与子类中具体的方法实现相联系。

●接口首部结点:Java中定义了“interface(接口)”关键字使抽象的概念更加深入,接口首部结点对应了程序中一个接口的定义。

系统依赖图使用边描述各个结点之间的关系,包括调用关系、继承关系、以及多态选择。

●调用边:包括三类,简单调用边、实例化调用边、多态调用边。简单调用边描述标准的调用过程;实例化调用边,表示创建了一个类的实例———对象;多态调用边用于表示动态定连,多态表现为编译时多态与运行时多态,在调用位置和类首部结点之间连接一条边。

●方法重写边:方法的重写引起运行时的多态,方法重写边描述多态的所有可能路径。这类边通过连接抽象方法首部结点与其所有实现的方法体的首部结点得到。

●继承边:描述类之间的继承关系,连接父类与子类的类首部结点而得。Java中的继承为单继承。

●类成员边:连接方法首部结点和定义该方法的类首部结点,描述了类与类中的方法之间的从属关系。

●表示继承的方法边:当超类中定义的方法被继承到子类中,通过连接调用方法语句与子类的首部结点来表示。

●接口实现边:描述了类对接口的“implements(实现)”,通过连接类首部结点与接口首部结点来实现。

通过构造Java系统依赖图,准确刻画了程序中的依赖关系,因此我们提出采用切片技术分析变量的失效原因及影响。其中失效原因查找采用后向切片算法,失效影响分析采用前向切片算法。假定在某个程序段P中,变量i在某语句处发生失效或存在潜在失效可能。对变量i分析,首先,将变量失效映射到系统依赖图中,既在系统依赖图G中,i所在语句对应的语句结点N处发生失效。

其次,确定切片准则。切片方法包括静态切片和动态切片,考虑面向对象软件特性,存在复杂的动态定连、运行时多态等特征,若使用静态切片,会导致分析过程复杂、分析结果庞大、不易理解等缺陷,因此,我们选择利用动态切片技术进行分析。动态切片考虑输入信息,假设输入信息为input,则针对变量i失效作切片算法的切片准则为(N,i,input)。动态切片通过在程序运行中捕获程序运行轨迹,并在执行轨迹上进行切片。

最后,进行失效原因及影响分析,即对切片准则实施切片过程。失效原因为语句N之前影响了变量i的语句或断言;失效影响为语句N之后,所有受变量i影响的语句或断言。

失效原因及影响分析的结果由两部分组成:一是切片过程中提取的语句结点或断言,二是分析过程中产生的活跃变量集。在对语句结点遍历的过程中,需对变量的变化,即软件线索记录,活跃变量集描述了在每个语句结点与失效变量相关的变量集合。例如变量i在语句结点N处失效,则N处的活跃变量集为{i};查找其失效影响,到某语句结点N1处i被引用,并定义了变量j,则变量i的影响由j来传递,N1处的活跃变量集更新为{j},对没有引用i的结点,直接获取其前驱的活跃变量集。

对程序的每一条语句都对应一个活跃变量集,在程序级软件FMEA分析中,变量失效对某一软件元素的影响表示为该软件元素出口语句的活跃变量集。而失效原因可能有很多,包括由控制引起的失效,以及由数据引起的失效,最终的失效原因是一个语句结点的集合{n1,n2,n3,……},其中的语句结点为切片得到的结果,并且对每个语句结点对应唯一的活跃变量集:ni→{i1,i2,i3,……}。程序级软件FMEA失效原因及影响分析的结果以集合的形式提交,明确了范围,为后续进一步分析和改进提供依据。

4小结

软件失效模式原因和影响分析已经越来越受到工业界重视,而面向对象方法是目前的主流软件开发方法。本文提出面向对象软件的程序级失效模式原因和影响分析,对提高面向对象软件的安全性和可靠性具有重要意义,并能提高失效分析的自动化程度和效率。科●

【参考文献】

[1]Goddard,P.L.SoftwareFMEAtechniques.ProceedingsofAnnualReliability

andMaintainabilitySymposium,2000:118-123.

[2]李必信,李宣东,郑国梁.一种系统依赖图的面向对象扩充方案[J].软件学报,2001,12(02):241-248.

[3]WeiDong,JiWang,etal.AutomatingSoftwareFMEAviaFormalAnalysisofDependenceRelations.Proceedingsofthe32ndAnnualIEEEInternationalComputerSoftwareandApplicationsConference(COMPSAC'08),2008:490-491.

作者简介:舒绍娴,硕士,助理研究员,研究方向为软件工程。

※基金项目:本文由国家自然基金项目(编号60970035、91018013)资助。

[责任编辑:汤静]

(上接第509页)科研管理,2010(1):170-176.

[2]杨志兵,喻金田,贺莉.创新型城市评价指标体系设计探讨[J].理论月刊,2009

[6]王立岩,左翠翠.基于主成分分析的医药类上市公司理财能力评价[J].科技与管理,2010(3):59-62.

作者简介:高晓亚(1991.4—),女,河北石家人,本科在读,专业为会计学。

(5):151-153.

[3]魏江,刘怡,胡胜蓉.基于主成分分析法的创新型城市评价研究[J].湖南大学学报:社会科学版,2009(3):53-58.

[4]朱凌,陈劲,王飞绒.创新型城市发展状况评测体系研究[J].科学学研究,2008(1):215-222.

[5]石忆邵,汪伟.上海市技术创新能力评价方法探讨[J].同济大学学报:自然科学版,2007,35(2):287.

※基金项目:本研究为全国大学生创新性实验计划项目的阶段性研究成果(CXSYD1102)。

[责任编辑:王静]

521

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务