一种软件可靠性预测运作模型的实现

时间:2023-06-26

  从20世纪70年代起,软件可靠性预测技术大体上分为静态和动态两种。预测技术(forecasting techniques)指人们运用现代科学技术手段,事先依据一定方法,对自己的活动可能产生的后果及客观事物的发展趋势作出的科学分析。即利用统计资料,借助数学工具,分析因果关系,进行预测。数量分析预测具体方法很多,如趋向外推法和回归分析法等。趋向外推法即时间序列分析法,它是根据历史和现有的资料推测发展趋势,从而分析出事物未来的发展情况的。它把在一定条件下出现的事件按时间顺序加以排列,通过趋势外推的数学模型预测未来。时间序列就是把统计资料按发生的时间先后进行排列所得到的一连串数字。时序分析是研究预测目标与时间过程之间的演变关系。因此它是一种定时的预测技术。回归分析法是从事物变化的因果关系出发来进行预测。回归分析也称相关分析,是研究引起未来变化的各种客观因素的相互作用、指出各种客观因素与未来状态之间统计关系的方法。这些现有的软件可靠性预测模型一般只是对与缺陷有关的度量数据和对软件可靠性测试后的失效数据进行分析,而忽略了软件开发过程中大量有用信息。

  1 软件过程与软件可靠性

软件过程可以定义为人们用来开发和维护软件以及相关产品(如工程计划、设计文档、规章、检测事例及用户手册)的一组活动、方法、实践及转换[7]。软件可靠性是软件系统在规定时间内及规定的环境条件下,完成规定功能的能力。在ISO/IEC 9126的软件质量特性表述中,软件可靠性(Software Reliability)是软件质量的一个重要特性。用软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,在一些关键的应用领域,如航空、航天等,其可靠性要求尤为重要,在银行等服务性行业,其软件系统的可靠性也直接关系到自身的声誉和生存发展竞争能力。 特别是软件可靠性比硬件可靠性更难保证,会严重影响整个系统的可靠性。在许多项目开发过程中,对可靠性没有提出明确的要求,开发商(部门)也不在可靠性方面花更多的精力,往往只注重速度、结果的正确性和用户界面的友好性等,而忽略了可靠性。在投入使用后才发现大量可靠性问题,增加了维护困难和工作量,严重时只有束之高阁,无法投入实际使用。

  2 影响软件可靠性的因素

在对13个公司的调查结果进行分析后,参考文献[9]提出了基于经验数据的影响软件可靠性的32个因素。这32个因素贯穿了软件开发的各个阶段,其中重要的是软件复杂度、程序员的技能、测试工作量、测试覆盖率、测试环境和程序规格说明书的改动频率6个因素[9]。参考文献[10]指出了影响软件可靠性的主要因素包括: 需求的变更、开发团队的经验、设计的变更、编码和测试、新技术、开发语言以及工具的使用、管理经验、高层管理的支持力度、度量和模型的使用情况[10]。参考文献[11]认为开发的复杂程度、代码重用的比率以及软件开发团队的经验和受教育程度是影响软件可靠性的主要因素。参考文献[12]指出影响软件可靠性的因素可分为两大类:缺陷引入和缺陷检测。缺陷引入又由16个因素决定,而缺陷检测由17个因素决定。这些因素中,与过程有关的因素包括开发人员的能力、领域知识、团队协作、团队结构、管理能力、程序复杂度、沟通能力、项目管理、过程管理、变更控制、文档质量、需求质量、开发环境、计划偏移度、开发过程成熟度、产品调研等[12]。软件过程度量的三大类基本内容分别是质量、时间和资源,质量表示在不同的过程运作阶段过程产品和过程执行有关的质量信息(例如软件问题及其生命周期,过程执行的偏离度等),时间表示过程运作中各项活动的计划时间和实际时间,资源表示在过程运作中不同阶段活动消耗的物资资源和人力资源。

  3 软件可靠性预测度量体系

在已有的调查研究基础之上[13-15],笔者构建了基于软件过程的软件可靠性预测度量体系。该体系模型共划分为6个层次:影响软件可靠性因素、影响软件可靠性因子、特性、子特性、度量以及度量元。其中,软件可靠性取决于影响软件可靠性因素的性能如何,而对软件可靠性因素的评价表现在多个可靠性因子,不同的可靠性因子的影响基于不同的性能特性,特性可能有子特性,通过度量来评价可靠性因子的特性和子特性,同时度量又有多种数据表现形式。


对软件可靠性的预测,笔者确定了6个影响软件可靠性的主要因素,分别是:一般性因素、稳定性因素、过程依从性、开发文档、编码和人力资源因素。软件测试因其产生的数据是软件失效后的数据,更多的用于软件可靠性的动态预测,故此处不予以考虑。


  4 基于软件过程的软件可靠性预测

一个过程稳定的软件企业,其软件产品的可靠性也是稳定的。通过对影响软件可靠性的过程因素的分析,笔者确定了上述的度量和度量元。而软件企业若考虑从历史数据中得到关于以前项目的过程等信息,就必须拥有过程数据库。过程数据库的建设需要人员和软件工具的支撑。该过程数据库建设模型结合前述分析,并综合考虑了软件度量技术和CMM/CMMI中的度量技术后抽象而成。


根据企业的测量定义,工作人员可以知道应该采集什么数据,并通过数据采集工具包使测量数据进入过程数据库系统;另外工作人员也可以通过问题跟踪软件包(例如需求跟踪系统)直接使测量数据进入过程数据库。过程数据库中除存储了影响软件可靠性的因素的度量值外,还应包含理解和解释实际度量数据、评价其合理性和适用性所需要的信息和索引,以及可靠性分析的标准、模型和基线值、优先级等。

通过对过程数据库里的基本测量项数据进行分析计算,得到关于以往项目的软件可靠性相关的度量,此度量数据经过评估标准和预测模型分析,形成当前软件产品的可靠性分析预测。

基于知识和数据挖掘的软件可靠性预测是现在和未来几年研究的方向。本文首先分析讨论了软件过程与软件可靠性的关系,然后分析了影响软件可靠性的因素,讨论了建立基于软件过程数据的过程数据库,并抽象出运作模型,为后续的基于知识和数据挖掘的软件可靠性研究奠定数据基础。软件可靠性预测中一些其他重要问题,如软件可靠性预测环境的构建、软件可靠性预测模型的选择以及定量评价数据的验证等问题,还有待进一步探讨。

上一篇:一种通信公共平台的设计与实现
下一篇:复杂背景环境下运动目标的检测算法设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料