本发明涉及软件可靠性
技术领域:
:,更具体的说是涉及一种复杂软件系统失效预测方法。
背景技术:
::随着计算机软件技术的高速发展,各类软件系统层出不穷,系统完成的功能呈日渐增长的趋势,系统与其它系统、设备、传感器、人的交互日益密切,因此形成了复杂软件系统的概念。这些复杂软件系统一旦发生失效,将会造成巨大的损失。在传统的软件工程和系统工程中,主要通过验证和确认(v&v)来确保复杂软件系统在部署前达到近似零失效并且严格遵从了需求的状态,从而保证系统的可信运行。然而经验表明,在实践中,系统根本无法达到这种近似无失效的状态。要预测并防止复杂软件系统发生失效,首先要明白什么是失效,为什么会发生失效,系统发生失效前是什么样的状态和行为,是系统的哪些行为在什么环境下、触发了什么样的条件才导致了失效。只有解决软件失效表征规律和失效机理问题,才能准确、有效的对复杂软件系统失效进行预测。失效表征是指与失效有关联的一些状态和行为特征的表述,它是反应系统是否发生失效的一类度量元。失效表征规律是指失效表征度量元与失效类型间的相关性。失效机理是指由于人为错误在代码中引入缺陷,缺陷在一定条件下成为故障,故障在运行状态下被激活成为失效的机理过程。关于失效表征,现有技术主要集中在代码和开发过程上,对于系统在时间/空间、整体/局部、软件/硬件等维度的状态和行为特征分析还比较欠缺。在失效机理的研究中,现有技术未能考虑软硬件交互行为、动态的运行时信息,未针对复杂软件系统新特征导致的失效进行全面的机理分析,导致失效机理分析不合理、不充分,进一步影响复杂软件系统失效预测的准确性。因此,如何利用失效表征规律对复杂软件系统中即将发生的失效进行准确的失效预测是本领域技术人员亟需解决的问题。技术实现要素:有鉴于此,本发明提供了一种复杂软件系统失效预测方法,从复杂软件系统的状态和行为特征出发,分析并提取复杂软件系统失效表征度量元,寻找复杂软件系统发生失效前系统内部和外部所表现出来的表征规律,获得表征规律产生的根本原因,建立失效预测模型,实现复杂软件系统的失效预测,从而为系统运行时健康管理提供基础,避免系统失效行为的发生,保证系统的可信运行。为了实现上述目的,本发明采用如下技术方案:一种复杂软件系统失效预测方法,包括以下具体步骤:步骤1:多维度分析复杂软件系统的状态和行为特征,提取失效度量元信息;步骤2:根据所述失效度量元信息构建失效表征知识库;步骤3:基于所述失效表征知识库构建所述复杂软件系统的失效表征规律集合,通过多远回归模型定量分析和失效原因定性分析获得所述复杂软件系统的失效机理;步骤4:基于所述失效表征规律集合和所述失效表征知识库构建所述复杂软件系统的失效预测模型;步骤5:将待检测复杂软件系统的软件缺陷数据输入所述失效预测模型获得预测结果。优选的,软件失效类型主要分为功能失效和性能失效,所述多维度分析包括内部/外部、时间/空间、整体/局部和软件/硬件四个维度。优选的,所述步骤2中根据所述失效度量元信息,从国际通用的公开数据集(uci、weka、aws、mlc、promise、ibm、nasa等),收集相应的失效数据,如果在开源网站中获取的数据无法满足要求,无法得到能够准确覆盖内部/外部、时间/空间、整体/局部、软件/硬件各维度的失效数据时,则考虑采取与企业合作的方式,分析各个所述失效表征度量元的度量目的、度量方法、度量元解释、度量标度类型、度量数据来源等方面的信息,针对不同的所述复杂软件系统,设计相应的测试用例,通过测试等方式获取所述失效数据,然后通过将失效数据层次化、结构化、组织化处理后,构建所述失效表征知识库。优选的,所述步骤3中基于所述复杂软件系统的所述失效表征数据库,构建所述失效表征规律集合,根据所述失效表征规律集合中失效表征规律之间的关联关系,获得所述失效表征规律产生的根本原因,通过所述多元回归模型定量分析和失效原因定性分析相结合的方法,获得所述复杂软件系统的所述失效机理。优选的,根据所述失效表征规律和所述失效表征知识库,采用knn、svm、神经网络和softmax等算法构建所述失效预测模型;并对所述失效预测模型进行选择与优化,采用机器学习算法进行对比实现选择,通过类不平衡、交叉验证、误差分析等实现优化;对所述失效表征知识库里面的数据进行预处理,包括数据清洗、数据标准化、数据集成和数据离散化等。优选的,在所述步骤5中通过所述失效表征规律集合结合所述失效预测模型进行预测,向所述失效预测模型中输入所述复杂软件系统的带度量元的所述软件缺陷数据,输出数据包括准确率、召回率和误报率,最后输出所述预测结果包括未失效、功能失效、性能失效和均失效。经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种复杂软件系统失效预测方法,针对典型复杂软件系统失效预测的需求,获得失效表征规律,利用失效表征规律对复杂软件系统运行中即将发生的失效进行失效预测。从而实现针对复杂软件失效机理的差异化失效预测,提高了软件失效预测的效率和准确率,有效地避免软件失效的发生。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1附图为本发明提供的结构示意图;图2附图为本发明提供的本发明复杂软件系统失效预测方法与普通方法准确度箱图对比示意图;图3附图为本发明提供的本发明复杂软件系统失效预测方法与普通方法召回率箱图对比示意图;图4附图为本发明提供的本发明复杂软件系统失效预测方法与普通方法误报率箱图对比示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例公开了一种复杂软件系统失效预测方法,包括以下具体步骤:s1:多维度分析复杂软件系统的状态和行为特征,提取失效度量元信息;软件失效类型主要分为功能失效和性能失效,从包括内部/外部、时间/空间、整体/局部和软件/硬件的四个维度分析进行失效表征获得失效表征度量元,从失效表征度量元中提取失效表征度量元信息;其中失效表征为对复杂软件系统即将发生失效或已经发生失效时,存在的能够被察觉的一些表象属性和参数;s2:根据失效度量元信息构建失效表征知识库;s21:根据失效度量元信息,从国际通用的公开数据集(uci、weka、aws、mlc、promise、ibm、nasa等),收集相应的失效数据;s22:判断失效数据是否达到覆盖标准,如果在公开数据集中获取的数据无法准确覆盖内部/外部、时间/空间、整体/局部、软件/硬件各维度的失效数据时,则考虑采取与企业合作的方式,分析各个失效表征度量元的度量目的、度量方法、度量元解释、度量标度类型、度量数据来源等方面的信息,针对不同的复杂软件系统,设定相应的测试用例,通过测试等方式获取失效数据,构建失效数据集;否则,直接构建失效数据集;s23:对失效数据集进行层次化、结构化和组织化后,进行知识提取和知识表示,从而构建失效表征知识库;s3:基于失效表征知识库构建复杂软件系统的失效表征规律集合,通过多远回归模型定量分析和失效原因定性分析获得复杂软件系统的失效机理;s31:基于复杂软件系统的失效表征数据库,进行功能失效和性能失效分类,从软件失效行为和状态特性中挖掘出失效表征规律;s32:判断失效表征规律是否有效,如果有效则构建失效表征规律集合;否则进行信息反馈知识迭代,更新失效表征知识库;s33:对失效表征规律集合进行相关性分析和主成分分析,通过多元回归分析模型和失效表征映射函数,结合失效原因定性分析获得失效机理;失效机理进行信息反馈知识迭代,更新失效表征知识库s4:基于失效表征规律集合和失效表征知识库构建复杂软件系统的失效预测模型;s41:对失效表征知识库中的数据进行预处理,失效表征知识库数据包括失效数据、失效度量元、失效表征规律集和失效机理等,数据预处理包括数据清洗、数据标准化、数据集成和数据离散化等;s42:根据预处理后的数据采用knn、svm、神经网络和softmax等算法构建失效预测模型;并对失效预测模型进行选择与优化,采用机器学习算法svm,logistic,bn,ibk,adaboost,bagging,part,j48和rf算法等进行对比实现选择,通过类不平衡、交叉验证、误差分析等实现优化;s5:将待检测复杂软件系统的软件缺陷数据输入失效预测模型获得预测结果;通过失效表征规律集合结合失效预测模型进行预测,向失效预测模型中输入复杂软件系统的带度量元的软件缺陷数据,输出数据包括准确率、召回率和误报率,最后输出所述预测结果包括未失效、功能失效、性能失效和均失效。实施例选用某型号无人机控制系统,利用软件静态分析工具testbed进行静态分析,根据其软件静态测试报告提取软件失效表征度量元以及软件缺陷数据,再根据被测软件缺陷数据收集清单中的“缺陷类型”和“缺陷描述”将失效数据标签分成功能失效和性能失效。其中,常见的“缺陷类型”分为功能实现类,逻辑,程序,算法,数据,文档和其他,具体将某条缺陷数据分为功能失效还是性能失效,要详细参照“缺陷描述”。在本实例验证中,共提取9414条缺陷数据,其中有缺陷数据826条,无缺陷数据8588条,有缺陷数据中功能失效数据604条,性能失效数据401条。共提取失效表征度量元30个:executablereformattedlinesnumeric;numberofbasicblocksnumeric;averagelengthofbasicblocksnumeric;procedureentrypointsnumeric;procedureexitpointsnumeric;totalcommentsnumeric;commentsinheadersnumeric;commentsindeclarationsnumeric;commentsinexecutablecodenumeric;blanklinesnumeric;totalcomments/exe.linesnumeric;headercomments/exe.linesnumeric;declarationcomments/exe.linesnumeric;codecomments/exe.linesnumeric;knotsnumeric;cyclomaticcomplexitynumeric;essentialknotsnumeric;essentialcyclomaticcomplexitynumeric;procedurestructured(spv)numeric;numberofloopsnumeric;depthofloopnestingnumeric;numberoforder1intervalsnumeric;maximumintervalnestingnumeric;reducible(intervals)numeric;globalsinprocedurenumeric;filefaninstring;fanoutstring;失效类型3个:defect_gnnumeric;defect_xnnumeric;defect_finalnumeric。其中,“defect_gn”表示功能失效,“defect_xn”表示性能失效。选取其中15条数据作为展示,如表1所示,最后一列“defect_final”为缺陷类型标签,有缺陷则为“buggy”,对应的数字类型为1,无缺陷则为“clean”,对应的数字类型为0。表1实例验证数据示例收集并进行数据清洗,数据标准化等预处理缺陷数据后,进行基于数据驱动的失效表征规律验证,采用fecar特征选择方法进行特征聚类和特征排序,之后采用pca和回归分析进行基于数据挖掘的失效机理验证,结果如表2所示:表2实验例证失效表征规律及机理在失效表征规律和失效机理的基础上,构建复杂软件系统失效预测模型,选取九种常用的机器学习分类方法,分别是svm,logistic,bn,ibk,adaboost,bagging,part,j48和rf,对有无进行软件失效表征规律和失效机理模型进行验证,在实验过程中,均采用10折交叉验证,无其他过多数据预处理。其中,“n”表示未经过失效表征规律和失效机理算法检验,“y”表示经过经过失效表征规律和失效机理算法检验,实验结果如表3所示。表3实验例证结果从表3可以看出,无论是从功能失效,性能失效还是总体失效的角度,经过失效表征规律和失效机理模型的预测结果要明显提升,对于准确度(pre),召回率(recall),误报率(pf),不同的分类器之间的均值和误差等详细信息如图2-图4所示,其中y代表采用本发明方法获得的预测结果,n代表采用未进行失效表征规律和失效机理算法的预测模型获得的预测结果。从图中亦可以看出,经过失效表征规律和失效机理的预测模型,无论是从不同的失效类型角度来看,还是从不同的预测指标(pre,recall和pf)度量,结果都要优于未进行失效表征规律和失效机理算法的预测模型。根据目前的常用软件失效预测评估指标,应能够利用所提出的失效表征规律,对实际应用的典型产品进行失效预测,预测的准确率不低于85%;对失效预测模型进行优化后,预测模型的召回率不低于80%,误报率不高于20%,提高了模型预测的精准程度。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12