APP下载

采用文献比较分析法的软件可靠性影响因素分析

2011-06-05刘俊辉

电子设计工程 2011年21期
关键词:软件可靠性检索软件

刘俊辉,李 娜

(郑州牧业工程高等专科学校 信息工程系,河南 郑州450011)

可靠性作为衡量软件质量的重要特性,其定量评估和预测早已成为人们关注和研究的焦点[1]。针对可靠性模型及其应用所展开的研究主要集中在两个方面:关于软件可靠性早期预测模型的研究和关于软件可靠性预测模型的研究[2]。在目前的研究成果中,主要集中在关于软件可靠性预测模型的研究方面,而对于早期预测模型成果很少,同时,大多数模型没有考虑软件过程特性,模型的应用范围一般只能局限在一定的子空间中,通用性比较差。

现代软件工程认为,软件质量形成于软件过程。过程因素是影响软件可靠性的主要因素。但遗憾的是,直到今天,难以甚至无法确定哪些过程因素对软件可靠性有影响,过程因素与软件可靠性之间定性关系是什么都不是很清楚,就更别提利用其度量去预测软件可靠性了。笔者检索并研读了大量文献,利用文献比较分析法,从软件过程的视角出发去分析讨论影响软件可靠性的因素问题,进而为建立软件可靠性早期预测模型提供分析基础。

1 文献比较分析法过程

1.1 文献检索

为了确定影响软件可靠性的因素,文章首先进行广泛的文献检索。检索的范围包括:书籍、期刊、会议论文、学位论文以及技术报告。检索的介质以电子图书馆为主,主要包括IEEE、ACM、ScienceDirect,CiteSeer、ISI web ofknowledge、Springer、Netlibrary、CNKI、书生之家、超星图书、方正电子图书等。同时,互联网也是检索范围之一。互联网上的检索主要限定在以 .org、.edu、.gov命名的站点搜索,如:http://csse.usc.edu/csse/TECHRPTS/PhD_Dissertations/,是美国南加州大学(USC)系统和软件工程中心(CSSE)多年来的博士论文集。

检索的关键字是能够准确检索的关键。对影响因素的几个文献进行扫描,以寻找合适的检索条件[3-4]。并据此推断,检索条件可分为3类:一般应用领域、特定应用领域以及特定关键字。文中“一般应用领域”是指直接面向本文的研究领域的检索,如:软件可靠性、软件质量等;文中第二类“特定应用领域”是帮助缩小检索范围的术语,例如:缺陷注入、缺陷引入、缺陷预防、成本预测等。通过这一类检索条件,无论什么样的影响因素都会被检索出来;文中第三类“特定关键字”是进一步缩小检索范围的检索条件。特定关键字由一组同义词、可替换的术语或者相关联的概念组成,例如:factors、drivers、variables、causes、contributors、reasons 等。

将这 3类检索条件进行组合(布尔运算,如:and、or),可检索到相关的文献。至此,可以做进一步的检索:通过文献中的参考文献,直接检索相关的书籍、论文以及技术报告等。

软件不可靠的根本原因是软件中存在着错误或缺陷。有研究者认为软件特性、人的因素和软件工程管理是影响软件可靠性的主要因素。这些因素又可具体分为软件的可理解性、软件定义的严密性、软件的复杂性以及软件工程管理、软件测试与排错、人为因素、环境因素以及软件可靠性工程技术的研究水平与应用能力。也有专家认为:错误的引入、错误的清除以及环境是影响软件可靠性的主要因素。错误的引入主要取决于产品特性和开发过程。其中,最重要的产品特性就是程序的规模。开发过程特性包括所使用的软件工程技术和使用的工具、人员的经验水平、需求的变更以及其他的因素。错误的清除依赖于失效的发现和修复活动的质量,而失效的发现又依赖于软件被执行的程度以及操作剖面。下面详细讨论部分研究者们对于影响软件可靠性的因素的观点。

1)孙志安等在其著述[6]中指出:影响软件可靠性的因素包括运行剖面、软件规模、软件结构、软件可靠性设计、软件测试、软件工程化管理与软件可靠性工程管理、软件开发技术、方法和工具以及人员等因素。

2)中国软件测评中心认为,影响软件可靠性的因素主要有:①软件规模②软件对实际需求的表述上的符合度,③软件的运行剖面,④软件的内部结构,即软件复杂度,⑤软件的开发方法,⑥软件开发人员的能力和经验,⑦软件开发的支持环境,⑧软件可靠性设计技术,⑨软件的测试与投放方式[7]。

3)Zhang在其文献[4]中对13个公司的调查结果分析后,提出了基于经验数据的影响软件可靠性的32个因素,并分析了这些因素对软件可靠性影响的相对权重以及相互关系。这32个因素贯穿了软件开发的各个阶段。其中最重要的是软件复杂度、程序员的技能、测试工作量、测试覆盖率、测试环境和程序规格说明书的改动频率6个因素。

4)谢瑞生在其文献[8]中指出引起软件缺陷的原因有内在原因、外在原因以及主观原因。内在的原因包括:①软件生命周期各阶段可能产生的错误,包括需求差错、设计差错、编码差错、测试差错以及文档差错;②软件开发工具对可靠性的影响。外在原因包括安装培训、运行环境、软件使用以及软件维护管理等。主观原因主要是指软件开发过程、使用过程以及维护过程中人员的原因所引起的失效,包括在软件生命周期中,涉及到的需求人员、设计人员、编程人员、测试人员、维护人员以及使用人员等。文献[8]同时认为还有一些客观原因会引起软件的失效,比如时间进度问题、开发费用问题,而软件本身的复杂度也是引起软件失效的一个很重要的原因。

5)Jacobs在其文献[3]指出影响软件可靠性的因素可分为两大类:缺陷引入和缺陷检测。缺陷引入又由16个因素决定,而缺陷检测由17个因素决定。这些因素中,和过程有关的因素包括开发人员的能力、领域知识、团队协作、团队结构、管理能力、程序复杂度、沟通能力、项目管理、过程管理、变更控制、文档质量、需求质量、开发环境、计划偏移度、开发过程成熟度、产品调研等。

6)Nikora[9]指出影响缺陷引入的因素很多,主要有开发环境(比如使用的开发方法、开发语言以及CASE工具等)、产品特征(比如软件复杂度)以及系统中已经存在的缺陷数。

还有很多文献从不同角度综合讨论了影响软件可靠性的因素[10]。站在不同的角度去分析,得到的影响软件可靠性的原因也是多方面的。从软件开发的角度而言,影响软件可靠性的主要因素包括:软件规模、运行剖面、软件内部结构、软件可靠性管理、软件可靠性测试与投入、软件可靠性设计技术、软件开发方法和软件开发环境等。就软件规模而言,规模越大,其可靠性问题就越多。简单软件,可靠性问题很容易通过较为全面的测试而解决,所以软件可靠性主要是针对于中型以上的软件而言。

1.2 文献比较分析

文献研究的过程首先应对文献内容进行定性研究。本文将影响因素分为了两类:正向(积极)的影响、反向(消极)的影响。所谓正向的影响是指,随着影响因素的影响增大,软件可靠性也随之改善。反向影响是指:随着影响因素的影响增大,软件可靠性降低。正向的影响,其定义中,会有肯定性的词汇,如:“有效”、“use of”、“availability of” 以及“mature”。 而对于反向的影响,其定义中,会有诸如:“缺乏”、“lack of”、“missing”或者“availability”等否定意义的词汇存在。其定性分析,可由影响因素的定义并结合专家的意见来确定。由于本文的研究目的是为提出可用于软件测试之前的早期可靠性预测模型,故:对于软件测试阶段中存在的影响软件可靠性的因素也不予考虑。分析依如下过程进行:

1)摒弃和测试有关的因素。如:Zhang在其文献[4]中提出的:测试环境、测试努力程度、测试资源的配置、测试工具、测试方法、测试覆盖率、测试文档化7个与测试过程有关的因素。Schulmeyer提到的:测试覆盖率、缺陷检测率等和测试有关的因素。

2)剔除非过程因素。如谢瑞生提出的开发费用。Musa指出的软件的运行剖面等因素。

3)合并相同因素。如 Evanco、LLNL、Nikora以及徐仁佐等都认为软件复杂度是影响软件可靠性的一个很重要的因素。Li Ming、Boehm、Schneberger等都认为开发团队的经验、度量和模型的使用等都会影响软件可靠性。

4)重新定义相近因素。例如表1为相关机构和学者定义的软件开发环境中对软件可靠性建模的影响因素,这些因素是相近的。

表1 软件开发环境中的影响因素Tab.1 Influencing factors in software development environment

对这些相近的影响因素进行重新定义,具体见表2所示:

表2 重新定义的软件开发环境中的影响因素Tab.2 Redefined influencing factors in software development environment

2 文献比较分析法预测实验

利用对软件过程的度量,可以预测软件产品的质量,进而预测软件可靠性。在1.2的基础上,以软件过程为线索,摒弃非过程因素,预测实验得到软件可靠性影响因素。由于篇幅有限,下面仅列出部分比较重要的影响因素,如表3所示。

从表3所标明的部分影响因素来看,所获结果能够对早期软件质量进行有效地预测。

表3 软件可靠性部分影响因素Tab.3 Part of influencing factors of software reliability

3 结束语

本研究是软件可靠性早期预测模型研究的基础研究部分。对软件可靠性早期预测模型的研究,首先必须考虑影响软件可靠性的主要因素。而软件过程是人们用来开发和维护软件意见相关产品的一组活动、方法、实践以及转换。过程的因素是影响软件可靠性的主要因素。文中分析总结了影响软件可靠性的过程因素,以期改进软件可靠性早期预测模型的中鲜有模型考虑软件过程特性的现状,并建立基于过程特性的软件可靠性早期模型。

[1]Fenton,N.E.and S.L.Pfleeger.Software metrics:a rigorous and practical approach [M].USA:PWS Publishing Co.Boston, MA,1998.

[2]Ming,L.On the nature of relationships between measures and reliability[D].University of Maryland College Park,2002.

[3]Jacobs, J.J.van Moll, R.Kusters, J.Trienekens, and A.Brombacher.Identification of factors that influence defect injection and detection in development of software intensive products[J].Information and Software Technology,2007,49(7):774-789.

[4]Zhang,X.and H.Pham.An analysis of factors affecting software reliability[J].The Journal of Systems&Software,2000,50(1):43-56.

[5]孙志安,裴晓黎,宋昕,等.软件可靠性工程[M].北京:北京航空航天大学出版社,2009.

[6]中国软件评测中心.软件可靠性工程述评 [EB/OL].http://www.uml.org.cn/test/200712142.asp.

[7]谢瑞生.软件失效原因分析[J].电子产品可靠性与环境试验,2009,27(3):127-132.XIE Rui-sheng.Analysis of software failure cause[J].Electronic Product Reliability and Environmental Testing,2009,27(3):127-132.

[8]Ming L,Smidts C S.A ranking of software engineering measures based on expert opinion.Software Engineering[J].IEEE Transactions on,2003,29(9):811-824.

[9]Nikora,A P.Software system defect content predition from development process and product characteristic[D].University of Southern California,1998.

[10]张力.软件公司经营效率—组织特性与市场价值之研究[D].大连:东北财经大学,2006.

[11]Mendling J.Metrics for process models-empirical foundations of verification,error prediction and guidelines for correctnes[M].Artech House Publishers,2009.

猜你喜欢

软件可靠性检索软件
禅宗软件
软件对对碰
软件可靠性工程综合应用建模技术研究
专利检索中“语义”的表现
数控系统软件可靠性设计与故障分析技术
即时通讯软件WhatsApp
简谈使用BoundsChecker进行计算机联锁系统人机界面软件可靠性测试
IEEE软件可靠性系列标准分析*
国际标准检索
国际标准检索