APP下载

基于软件过程的软件可靠性预测运作模型*

2010-05-14蒋永辉吴洪丽王政霞

网络安全与数据管理 2010年6期
关键词:软件可靠性度量可靠性

蒋永辉 , 吴洪丽 , 王政霞

(1.海南大学 信息科学技术学院,海南 海口570228;2.海南师范大学 信息科学技术学院,海南 海口 571158;3.中国科学院 成都计算机应用研究所,四川 成都 610041;4.重庆交通大学 信息与计算科学系,重庆400074)

从20世纪70年代起,软件可靠性预测技术大体上分为静态和动态两种。早期的静态预测主要研究可靠性和软件规模、程序复杂度等基本属性之间的关系,以此预测软件的可靠性。20世纪90年代初,人们发现缺陷在软件中是随机分布的,既而出现了针对缺陷分布的预测技术,也有一些取得了比较好的成果和应用。例如基于软件规模的Halstead模型以及Lipow在此模型机上改进所得到的软件缺陷与可执行代码行之间的关系模型;Takahashi将代码与具体的文档数量对应起来,给出了缺陷密度的估计;Malaiya等在假设模块规模符合指数分布的情况下,提出了缺陷估算的公式:缺陷密度D(s)=a/s+b+cs,指出软件缺陷取决于程序员能力、过程成熟度以及测试程度等。20世纪90年代,随着软件规模和复杂度的不断增长,同时由于面向对象技术的出现,许多基于面向对象度量元的缺陷预测技术涌现出来。而随着软件过程技术的发展,人们逐渐认识到了软件过程对于软件可靠性的影响[1-6]。不难发现,静态预测主要是基于缺陷相关的度量数据,对缺陷的数量或者分布进行预测的技术;而动态预测则是基于缺陷或者失效产生的时间,对系统缺陷随时间的分布进行预测的技术。这些现有的软件可靠性预测模型一般只是对与缺陷有关的度量数据和对软件可靠性测试后的失效数据进行分析,而忽略了软件开发过程中大量有用信息。因此,笔者提出了基于软件过程数据,构造用于可靠性预测的过程数据库,并分析了此数据库的内容与运作模型,以期得到更加可信、准确的软件可靠性预测结果,为后续的研究奠定数据基础。

1 软件过程与软件可靠性

软件过程可以定义为人们用来开发和维护软件以及相关产品(如工程计划、设计文档、规章、检测事例及用户手册)的一组活动、方法、实践及转换[7]。软件可靠性是软件系统在规定时间内及规定的环境条件下,完成规定功能的能力。在ISO/IEC 9126的软件质量特性表述中,软件可靠性(Software Reliability)是软件质量的一个重要特性。而软件产品是软件过程的产物,软件过程的好坏决定了软件产品的好坏,软件过程的稳定也决定了软件产品质量的稳定。软件产品质量的稳定直接反映了软件可靠性的稳定。SEI提出的CMM以及CMMI里也指出,软件过程能力成熟度反映了一个软件企业的过程能力以及开发能力,过程稳定的企业或者团队,其软件产品的质量也是相对稳定的。据此,不难得到这样的结论:稳定的软件过程,其软件产品的可靠性也是稳定的[8]。

2 影响软件可靠性的因素

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

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

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

图1 模型层次结构

对软件可靠性的预测,笔者确定了6个影响软件可靠性的主要因素,分别是:一般性因素、稳定性因素、过程依从性、开发文档、编码和人力资源因素。软件测试因其产生的数据是软件失效后的数据,更多的用于软件可靠性的动态预测,故此处不予以考虑。对这6个可靠性因素的评价,笔者建立了如表1所示的度量和度量元,并据此来构建基于软件过程的软件可靠性预测度量体系。

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

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

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

表1 基于软件过程的软件可靠性度量体系

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

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

[1]HALSTEAD M H.Elements of software science.New York∶Elsevier,North-Holland,1977.

[2]OTTENSTEIN L.Predicting numbers of errors using software science.ACM SIGMETRICS Performance Evaluation Review,1981,10(1)∶157-167.

[3]OTTENSTEIN L.Quantitative estimates of debugging requirements.IEEE Trans.on Software Engineering,1979,SE-5(5)∶504-514.

[4]LIPOW M.Number of faults per line of code.IEEE Trans.on Software Engineering,1982,8(4)∶437-439.

[5]TAKAHASHI M,KAMAYACHI Y.An empirical study of a model for program error prediction.IEEE Trans.on Software Engineering,1989,15(1)∶82-86.

[6]MALAYIA Y,DENTON J.Module size distribution and defect density.In∶Proc.of the 11th Int’l Symp.on Software Reliability Engineering.New York∶IEEE Computer Society Press,2000.62-71.

[7]ZAHRAN S著.软件过程改进[M].陈新,译.北京∶中信出版社,2002.

[8]吴洪丽.支持软件过程改进的软件过程度量研究[D].重庆:重庆大学计算机学院,2004.

[9]ZHANG X,PHAM H.An analysis of factors affecting software reliability.The Journal of Systems&Software,2000,50(1)∶43-56.

[10]SCHNEBERGER S L.Distributed computing environments∶effects on software maintenance difficulty.Journal of Sys-tems and Software,1997,37(2)∶101-116.

[11]EVANCO W M,LACOVARA R.A model-based framework for the integration of software metrics.Journal of Systems and Software,1994,26(1)∶77-86.

[12]JACOBS J J.MOLL V.Identification of factors that influence defect injection and detection in development of software intensive products.Information and Software Technology,2007,49(7)∶774-789.

[13]王铁江,郦萌.软件可靠性的模糊综合评估模型[J].计算机工程与应用,2002,38(20)∶23-26.

[14]田涛,王昕.一种基于模糊综合评判的软件可靠性模型选择方法[J].空军工程大学学报∶自然科学版,2002,3(2)∶56-59.

[15]马飒飒,陈自力.软件可靠性定量评估过程研究[J].计 算 机 测 量 与 控 制,2005,13(5)∶503-505.

猜你喜欢

软件可靠性度量可靠性
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
可靠性管理体系创建与实践
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
合理使用及正确测试以提升DC/DC变换器可靠性
软件可靠性工程综合应用建模技术研究
GO-FLOW法在飞机EHA可靠性分析中的应用
5G通信中数据传输的可靠性分析
数控系统软件可靠性设计与故障分析技术
地质异常的奇异性度量与隐伏源致矿异常识别