软件可靠性模型综述
- 格式:doc
- 大小:85.84 KB
- 文档页数:7
软件可靠性模型与评估方法软件可靠性是指在特定环境中,系统在规定时间内以满足用户需求的准确性、稳定性和可用性的概率。
在软件开发过程中,确保软件的可靠性是至关重要的。
本文将介绍软件可靠性模型与评估方法,以帮助开发人员提高软件的可靠性。
一、可靠性定义与重要性软件可靠性是指在特定条件下,软件系统在规定时间内以满足用户需求的准确性、稳定性和可用性的概率。
软件可靠性评估的主要目的是为了确定软件在特定条件下的可靠性水平,以评估软件系统的可信度和稳定性。
软件可靠性的提高将直接影响到用户对软件系统的满意度和信任度。
二、软件可靠性模型1. 静态模型静态模型是通过对软件设计和代码进行分析,检测潜在的软件错误,以预测软件系统的可靠性。
静态模型主要包括代码静态分析、软件结构分析和软件测试。
1.1 代码静态分析代码静态分析通过对源代码的分析,发现代码中的潜在错误和缺陷。
常用的代码静态分析工具包括Lint、FindBugs等,可以帮助开发人员提前发现代码中的潜在问题,从而减少软件系统的错误率。
1.2 软件结构分析软件结构分析主要是通过对软件系统的结构进行分析,检测系统的层次结构、调用关系、模块依赖等,以评估软件系统的可靠性。
软件结构分析常用的方法有层次分析法、结构方程模型等。
1.3 软件测试软件测试是通过执行一系列测试用例,检查软件系统的功能是否正常,以及是否存在潜在的错误和缺陷。
软件测试主要包括单元测试、集成测试、系统测试和验收测试等。
通过全面的软件测试,可以提高软件系统的可靠性和稳定性。
2. 动态模型动态模型是通过对软件系统运行状态进行监测和分析,以评估软件系统的可靠性。
常用的动态模型包括故障树分析、可靠性块图和Markov模型等。
2.1 故障树分析故障树分析通过将软件故障转化为逻辑关系,来描述故障的发生和传播过程。
故障树分析可以帮助开发人员识别和定位软件系统中的关键故障点,从而制定相应的改进和优化方案。
2.2 可靠性块图可靠性块图是通过将系统的可靠性表示为块和连接线的图形化表示方法,来描述系统的可靠性。
考虑软件可靠性的软件工程模型在今天的信息时代,社会上各种各样的软件层出不穷,涉及的场景愈发广泛,从轻量级的手机应用到重量级的企业级软件,从运营商级的平台系统到联邦级的政府软件,很多这些软件都在不同的程度上关乎到应用的可靠性和稳定性。
在这样的背景下,软件工程模型中考虑软件可靠性问题也变得越来越重要。
在本篇文章中,我们将探讨“考虑软件可靠性的软件工程模型”这一主题,探讨软件工程模型中如何考虑和实现软件的可靠性。
一、什么是软件可靠性首先,我们要先明确什么是软件可靠性,软件可靠性是指软件在给定的条件下能够正确地运行,并能在限定时间内提供正确的结果,具有适应性和容错性,能够满足用户的要求,同时能够在不断变化的环境中保持稳定。
软件可靠性是软件工程中非常重要的一个概念,在软件设计、开发、测试和维护的全过程中都会涉及到。
要实现软件可靠性,需要考虑多个因素,包括软件的质量、安全、可靠性、易用性、性能、可维护性等各方面的问题。
二、软件工程模型中考虑软件可靠性的方法随着软件行业的迅猛发展,软件工程模型也在不断的发展和改进,以更好地满足软件开发的需求。
在软件工程中考虑软件可靠性的方法也有多种。
下面我们具体来看几种常见的软件工程模型。
1. 敏捷软件开发模型敏捷软件开发模型是目前最流行的软件开发模型之一,它强调团队协作,快速迭代,以最快的速度交付可行的产品和服务。
在敏捷模型中,软件可靠性也是非常重要的,团队成员会在开发过程中经常进行回顾和检查,以确保软件的质量和可靠性。
此外,在敏捷开发中,会运用各种自动化测试和集成工具,来确保每个迭代阶段中的代码通过了各种测试,并尽可能解决每个迭代阶段中发现的问题,以保证软件的可靠性。
2. 瀑布模型瀑布模型是一种传统的软件开发模型,该模型基于严格的阶段化开发流程,从需求分析、设计、编码、测试、维护等方面全面考虑软件开发的过程,其中软件可靠性是其中重要的一环。
在瀑布模型中,每个阶段都有严格的测试和验证流程,以确保软件的质量和可靠性。
软件测试中的可靠性建模与分析软件测试是确保软件质量的重要步骤,而软件的可靠性作为软件质量的一个主要属性,对于软件开发和维护至关重要。
因此,在软件测试中,可靠性建模与分析是一项重要的任务。
本文将探讨软件测试中的可靠性建模与分析方法,并介绍一些常用的技术和工具。
一、可靠性建模可靠性建模是通过建立数学模型来描述软件的可靠性。
可靠性建模的目的是定量地评估软件系统的可靠性,以便为软件测试提供指导。
常用的可靠性建模方法包括可靠性块图法、可靠性状态模型法和可靠性预测法。
1. 可靠性块图法可靠性块图法通过组合各个系统组成部分的可靠性来评估整个系统的可靠性。
在可靠性块图中,不同的组件和组成部分通过块表示,并通过连接线表示它们之间的依赖关系。
通过计算各个模块的可靠性指标,可以得到系统的整体可靠性。
2. 可靠性状态模型法可靠性状态模型法将软件系统的可靠性表示为一系列状态的转移过程。
通过定义系统的状态和状态转移概率,可以评估系统在不同状态下的可靠性指标。
这种建模方法可以帮助测试人员分析系统的故障传播路径,从而确定关键的故障点和测试策略。
3. 可靠性预测法可靠性预测法通过基于历史数据或专家经验建立数学模型,以预测系统未来的可靠性。
这种方法可以帮助测试人员评估系统在特定条件下的可靠性表现,并帮助指导测试策略的制定。
二、可靠性分析可靠性分析是指对软件系统进行定量或定性评估,以确定其是否满足可靠性要求,并为软件测试提供依据。
常用的可靠性分析技术包括故障模式与效应分析(FMEA)、故障树分析(FTA)和可靠性增长分析。
1. 故障模式与效应分析(FMEA)故障模式与效应分析通过识别系统的故障模式和评估这些故障对系统功能的影响来评估系统的可靠性。
FMEA将系统的每个组件和功能进行分析,并通过定义故障模式和效应来评估系统的可靠性。
这种方法可以帮助测试人员确定系统的潜在故障和风险,并优化测试资源的分配。
2. 故障树分析(FTA)故障树分析是基于逻辑关系的可靠性分析方法,旨在识别引起系统故障的根本原因。
基于神经网络的软件可靠性模型共3篇基于神经网络的软件可靠性模型1基于神经网络的软件可靠性模型随着计算机技术的发展,软件已经成为了人们生活中不可或缺的一部分。
然而,由于软件开发者可能会疏忽或者存在代码漏洞,软件出现故障的情况时有发生。
软件的故障不仅会给用户带来不便,还可能导致巨大的经济损失,因此如何提升软件的可靠性成为了大家的关注点。
近年来,基于神经网络的软件可靠性模型逐渐成为了研究的热点。
神经网络是一种模拟人脑神经元的计算模型,它由大量的节点和连接线组成,并采用反向传播算法进行训练,以实现对数据的自主分类和预测。
基于神经网络的软件可靠性模型使用神经网络来建模,将软件运行中的数据作为输入,通过训练使其能够准确地预测软件的可靠性。
为了准确预测软件的可靠性,需要选取合适的输入数据。
一般来说,可以从软件的运行日志、编译代码、测试集等方面获得数据。
在选择输入数据之后,需要对数据进行预处理,比如去除异常值、归一化等,以便神经网络更好地学习和预测。
接下来,需要设计神经网络的结构和参数,通常包括输入层、隐藏层和输出层。
其中,输入层的节点数为软件的特征数目;输出层的节点数为软件可靠性的类别数目;隐藏层的节点数根据数据的复杂程度和预测目标而定。
在设计神经网络的结构和参数时,需要使用交叉验证、过拟合检测等方法来评估模型的性能,以确保模型具有较好的泛化能力。
建立基于神经网络的软件可靠性模型的过程需要注意以下几个问题。
首先,需要确保选择的数据质量高,能够反映出软件实际运行中的情况。
其次,需要合理选择神经网络的结构和参数,以确保模型具有较好的性能和泛化能力。
此外,需要合理选择训练方法和评估方法,以确保模型的收敛性和可靠性。
基于神经网络的软件可靠性模型具有许多优点。
首先,它能够自动学习和调整模型参数,使得模型的预测结果更加准确。
其次,它能够应对复杂的软件环境和多变的运行数据,减少人工干预的成本。
同时,基于神经网络的软件可靠性模型具有一定的扩展性,可以通过增加节点或层数等方式进行扩展,以适应更多的软件应用场景。
软件可靠性模型综述可靠性是衡量所有软件系统最重要的特征之一。
不可靠的软件会让用户付出更多的时间和金钱, 也会使开发人员名誉扫地。
IEEE 把软件可靠性定义为在规定条件下, 在规定时间内, 软件不发生失效的概率。
该概率是软件输入和系统输出的函数, 也是软件中存在故障的函数, 输入将确定是否会遇到所存在的故障。
软件可靠性模型,对于软件可靠性的评估起着核心作用,从而对软件质量的保证有着重要的意义。
一般说来,一个好的软件可靠性模型可以增加关于开发项目的效率,并对了解软件开发过程提供了一个共同的工作基础,同时也增加了管理的透明度。
因此,对于如今发展迅速的软件产业,在开发项目中应用一个好的软件可靠性模型作出必要的预测,花费极少的项目资源产生好的效益,对于企业的发展有一定的意义。
1软件失效过程1.1软件失效的定义及机理当软件发生失效时,说明该软件不可靠,发生的失效数越多,发生失效的时间间隔越短,则该软件越不可靠。
软件失效的机理如下图所示:1)软件错误(Software error):指在开发人员在软件开发过程中出现的失误,疏忽和错误,包括启动错、输入范围错、算法错和边界错等。
2)软件缺陷(Software defect):指代码中存在能引起软件故障的编码,软件缺陷是静态存在的,只要不修改程序就一直留在程序当中。
如不正确的功能需求,遗漏的性能需求等。
3)软件故障(Software fault):指软件在运行期间发生的一种不可接受的内部状态,是软件缺陷被激活后的动态表现形式。
4)软件失效(Software failure):指程序的运行偏离了需求,软件执行遇到软件中缺陷可能导致软件的失效。
如死机、错误的输出结果、没有在规定的时间内响应等。
从软件可靠性的定义可以知道,软件可靠性是用概率度量的,那么软件失效的发生是一个随机的过程。
在使用一个程序时,在其他条件保持一致的前提下,有时候相同的输入数据会得到不同的输出结果。
软件质量评估模型综述及其应用研究随着信息时代的到来,软件应用领域越来越广泛,而软件的质量成为人们关注的焦点之一。
通过软件质量评估,可以衡量软件产品的质量,从而指导软件开发过程中的改进和优化。
本文将对软件质量评估模型进行综述,并探讨其在实际应用中的研究进展。
一、软件质量评估模型概述软件质量评估模型指对软件进行质量评价的方法论,是对软件质量的量化分析和评价。
根据评估模型的不同,软件质量可以从不同角度来进行评估。
常用的软件质量评估模型包括CMMI、ISO9001、ISO15504、ISO9126等。
1.1 CMMICMMI级别划分了软件过程改进的五个级别:初始级、管理级、定量级、优化级和最高级别。
CMMI可以对软件开发过程进行评估和监控,从而提高软件开发的效率。
1.2 ISO9001ISO9001是国际标准化组织制定的一种质量管理体系标准。
ISO9001可以对软件产品质量进行评估,同时也可以提高软件开发过程的效率,确保软件产品的质量。
1.3 ISO15504SPICE(软件过程改进和能力确定)定位于ISO/IEC 15504是一套包含多个模型的软件过程能力评估(PA)框架。
通过评估软件过程的能力水平,提高软件产品的质量。
1.4 ISO9126ISO9126定义了软件产品质量的六个维度:功能性、可靠性、可用性、可维护性、可移植性和效率。
这些维度可以用于量化和评估软件产品的质量。
二、软件质量评估模型的应用研究软件质量评估模型在实际应用中有着广泛的研究和应用。
下面就结合实际应用来探讨其中的研究进展。
2.1 软件缺陷预测软件缺陷预测是软件质量评估的一个重要研究方向。
通过对软件质量的评估,可以预测软件缺陷的发生,从而提前发现并解决问题。
目前,有很多基于机器学习的软件缺陷预测模型被提出。
例如,支持向量机、人工神经网络和决策树等。
这些模型通过对软件质量数据的训练,可以识别软件缺陷的出现概率,从而提高软件质量。
2.2 软件功能测试软件功能测试是软件质量评估的另一个重要研究方向。
收稿日期:2004207214;修回日期:2005202205.作者简介:党涛立(1976-),男,主要从事鱼雷总体技术研究.软件可靠性工程综述党涛立1,潘新祥2,赵海涛2(1.西安鱼雷工程办公室,陕西西安710075;2.江苏自动化研究所军代室,江苏连云港222006)摘 要:综述了软件可靠性工程研究和实践的内容和国内外现状,从软件可靠性模型、软件可靠性设计、软件可靠性测试几个方面进行了论述,指出了软件可靠性的重要性,并从工作实践出发阐述了软件可靠性测试过程和特点,最后对软件可靠性工程研究和实践进行了展望。
关键词:可靠性工程;模型;可靠性设计;软件可靠性测试中图分类号:TP311.5 文献标识码:A 文章编号:167321948(2005)022*******A Su mmary of Software Reli a b ility Eng i n eer i n gDAN G Tao 2li ;PAN X in 2xiang;ZHAO Hai 2tao (1.Xi ′an T or pedo Engineering Office,Xi ′an 710075,China;2.Rep resentative Office,J iang Su Aut omati on ResearchI nstitute ,L ianyungang 222006,China )Abstract:This paper intr oduces the s oft w are reliability engineering and its current situati on .It addresses the models,design,test p r ocess and feature of s oft w are reliability and points out its i m portance based on p ractical engineering devel opment .It als op resents the advances in engineering research and p ractice of this domain .Key words:s oft w are reliability engineering;s oft w are reliability models;s oft w are reliability design;s oft w are reliability testing0 引言目前,大多数设备和系统的主要功能都是由软件规定的,技术与信息社会正越来越依赖于软件。
软件可靠性模型研究综述作者:王二威来源:《软件工程》2016年第02期摘要:本文对软件可靠性经典模型、模型选择、普适模型的研究进行了归纳和述评,提出了软件可靠性综合预测框架,给出了软件可靠性综合预测进一步的研究方向。
关键词:软件可靠性;经典模型;综合预测;框架研究中图分类号:TP311 文献标识码:A1 引言(Introduction)软件已经成为影响国民经济、军事、政治乃至社会生活的重要因素。
自20世纪60年代“软件危机”出现之后,越来越多的学者开始关注软件可靠性的定量评估和预测。
软件可靠性覆盖整个软件开发过程,与软件工程密切相关,它源于工程,又服务于工程。
在新技术、新应用(如web软件、移动APP等等)不断涌现的当前,重新审视软件开发和应用环境,开展软件可靠性预测研究,有助于推动软件工程项目的实践,降低软件错误率,提升软件质量,从而保障软件所支撑的工程项目的高效完成,推动我国软件产业的持续发展。
本文对软件可靠性模型研究的相关文献进行了梳理,对前人的研究成果进行了归纳,构建了新计算范式下软件可靠性综合预测框架,提出了软件可靠性综合预测的研究方向。
2 经典软件可靠性模型(Classical software reliabilitymodel)软件可靠性建模的基本方法是:以历史失效数据为基础,对软件失效规律进行趋势拟合,进而预测未来的失效可能。
早期软件可靠性的研究是基于概率统计的思想,将软件失效过程看作一个随机过程,从Hudson的工作开始,到1971年J-M模型的发表,再到今天,已公开发表了几百种模型[1](此类模型称之为“经典模型”)。
经典模型存在两个明显的缺陷:第一,在对软件可靠性进行评估预测时都有些固定不变的假设,而这些假设无从证明;第二,模型只考虑输入的随机性,而软件在实际运行时却可能受到各种随机因素影响,使得软件失效出现的情况比较复杂多变。
而用某一个固定的失效模式去解释复杂多变的情况,显然是不合适的。
139软件可靠性模型算法分析与评价尹晶杰摘要:本文首先对三个经典的软件可靠性模型(J-M 、G-O 、S-W)进行参数计算的数值算法设计,在此基础上通过可靠性数学关系得到失效间隔时间的密度函数、分布函数、可靠性函数以及失效率函数。
其次,分别采用未确知模型、J-M 模型、G-O 模型、S-W 模型针对具体实例的失效时间进行预测评估,并对各模型的可靠性评估曲线进行描绘。
第三,利用Delphi 开发软件设计并开发完成了一个简易的软件可靠性评估工具。
该工具嵌入了包括未确知模型在内的四个软件可靠性模型(J-M 模型、G-O 模型、S-W 模型),能够输出模型评估结果和评估曲线,并具有计算各模型评价准则值(KS 值、PL 值、模型噪声)和绘制用于模型评价的PLR 图、-u 结构图、-y 结构图的功能。
关键词:软件可靠性;软件可靠性模型Abstract: Here originally in the paper, model in three software reliability model (J-M, G-O , S-W ) at first ask the parameter algorithm to be designed , draw the parameter of each model, receive invalid density function of spacing interval , distribut e function , reliability function and software failure rate function through dependability mathematics relation on this basis.Secondly, on the basis of the above function, including software reliability based on unascertained theory model , J-M model , G-O model , S-W model predict the assessment to the failure time of the concrete instance separately, design through Delphi one simple interface describe to every reliability assessment curve of model.Moreover , utilize Delphi to designed and development a simple software reliability estimation tool. This tool inlayed three traditional software reliability models: J-M model, G-O model, S-W model and the new model put forward in this paper. It is not only can exports the estimation results but also can provides assessment curve , including calculating every model appraise criterion value (KS value , PL value , model noise ) and PLR chart that is used to model comparison, u-plot and the y- plot. Keywords: Software reliability Software reliability model1. 基本概念1.1 软件可靠性的定义关于软件可靠性的确切含义,学术界有过长期的争论,经过长期的争论和研究,1983年美国IEEE 计算机学会对 “软件可靠性”一次正式做出如下定义:(1) 在规定条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确定是否会遇到已存在的错误(如果错误存在的话);(2) 在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。
软件可靠性工程评述第一篇:软件可靠性工程评述软件可靠性工程述评摘要:本文介绍了软件可靠性技术的发展情况,对各种软件可靠性分析模型进行了分类评述,分析了软件可靠性工程的发展趋势。
关键词:软件工程可靠性模型趋势分析1.软件危机随着计算机技术迅猛发展,软件的销售量和使用量呈几何级数增长,软件的规模也越来越大,复杂性急剧提高。
例如,航天飞机的飞行软件达50万行源代码,F-22战斗机更达150多万行源代码,软件失效已成为系统瘫痪的主要原因。
根据美国国防部和NASA的统计,当今武器系统和航天项目中的软件可靠性比硬件系统大约低一个数量级。
因软件故障而造成的重大事故也不乏其例,如F-18战斗机在海湾战争中,飞行控制软件共发生了500多次故障,爱国者导弹因软件问题误伤了28名美国士兵;阿里安5型火箭的发动机控制系统软件的错误导致飞行试验失败等。
软件危机使得软件可靠性研究在国际上十分活跃。
2.影响软件可靠性的主要因素软件产品是由某一计算机语言写成的语句有序集合,也就是计算机程序。
它的作用是将输入转换成相应的输出,可以用一映射函数f表示。
软件可靠性是指在给定时间内,特定环境下软件无错运行的概率。
影响软件可靠性的因素主要包括:1)软件规模;2)软件对实际需求的表述上的符合度;3)软件的运行剖面;4)软件的内部结构,即软件复杂度;5)软件的开发方法;6)软件开发人员的能力和经验;7)软件开发的支持环境;8)软件可靠性设计技术;9)软件的测试与投放方式等。
如何准确评价/预计软件的使用可靠性是软件工程的重大问题之一。
3.软件可靠性模型及其分类一个有效的软件可靠性模型应尽可能地将上面所述的因素在软件可靠性建模时加以考虑,尽可能简明地反映出来。
自1972年第一个软件可靠性分析模型发表的二十多年来,见之于文献的软件可靠性统计分析模型将近百种。
这些可靠性模型大致可分为10类[1]:1)种子法;2)失效率类;3)曲线拟合类;4)可靠性增长模型;5)程序结构分析模型;6)输入域分类模型;7)执行路径分析方法模型;8)非齐次Poisson过程模型;9)马尔可夫过程模型;10)贝叶斯模型类。
软件可靠性质量评估模型的研究与应用一、引言随着计算机技术的飞速发展,在软件应用领域中,软件可靠性已成为一个至关重要的问题。
本文旨在探讨软件可靠性质量评估模型的研究与应用。
二、软件可靠性概述软件可靠性是指一个软件在一定条件下的正常运行能力,并且能够满足用户需求的程度。
它直接关系到软件系统的稳定性、可用性以及其安全性。
三、现有的软件可靠性评估方法1. 度量法度量法是软件可靠性评估方法中最常用的一种方法,它通过统计实验的方法来评估一个软件系统的可靠性,并将结果转化为可视化的图表。
2. 非参数法非参数法指的是通过搜集大量的数据信息,然后通过数据分析来评估软件系统的可靠性。
这种方法常用于对软件系统的有效性进行评估,或是在测试环节中对软件系统的质量进行检测。
3. 统计方法统计方法是指通过统计分析对软件系统的各种指标进行分析评估。
这种方法通过挖掘数据的信息,帮助评估员对软件系统可能存在的问题进行发现,并进行修复。
四、软件可靠性质量评估模型的研究当前,开发一种完整的软件可靠性质量评估模型,不仅需要认真分析相关软件评估指标,还需要依据大量实验数据来确定各种参数,这其中包括一些常用的评估指标,例如:理论模型、效果方差和阈值等。
五、软件可靠性质量评估模型的应用1. 软件开发过程中在软件开发阶段中,开发人员可以通过软件可靠性质量评估模型,评估其开发的软件系统质量,并及时进行调整或修复,以保证软件系统的可靠性和稳定性。
2. 软件测试过程中在软件测试过程中,通过软件可靠性质量评估模型,可以对测试过程中的缺陷进行有效的分析和识别,并做出相应的调整。
3. 维护过程中在软件维护过程中,通过软件可靠性质量评估模型,可以对维护过程中存在的问题进行评估,并及时处理。
六、结论软件可靠性是整个软件开发过程中必须注意的问题,需要开发人员、评估员和用户共同配合解决。
软件可靠性质量评估模型可以帮助我们评估软件系统的质量,并提供一些有价值的参考。
软件可靠性模型综述
章远琳
【期刊名称】《计算机科学》
【年(卷),期】1993(20)6
【摘要】一、引言随着软件开发与研究的发展,软件产品的质量已成为一个不可忽视的问题,并由此推动了软件可靠性研究与应用。
软件可靠性不仅是软件质量中最重要的定量描述指标,而且是面向用户的视图。
从软件可靠性概念出发,人们已先后建立起若干软件可靠性模型,并提供了一些评估软件可靠性的有效方法。
软件可靠性的研究可追溯到六十年代。
【总页数】6页(P42-47)
【作者】章远琳
【作者单位】无
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.国外软件可靠性模型研究与发展综述 [J], 邱邦清
2.软件可靠性模型研究综述 [J], 王二威;
3.基于体系结构的软件可靠性模型综述 [J], 普杰;罗云锋;贲可荣
4.不完美排错下测试覆盖相关的软件可靠性模型 [J], 张策;吕为工;邱忠银;高天翼;江文倩;孟凡超
5.基于狼群算法的软件可靠性模型参数估计研究 [J], 于苗苗;朱兵;李震;王东升;魏海峰
因版权原因,仅展示原文概要,查看原文内容请购买。
软件可靠性模型综述可靠性是衡量所有软件系统最重要的特征之一。
不可靠的软件会让用户付出更多的时间和金钱, 也会使开发人员名誉扫地。
IEEE 把软件可靠性定义为在规定条件下, 在规定时间, 软件不发生失效的概率。
该概率是软件输入和系统输出的函数, 也是软件中存在故障的函数, 输入将确定是否会遇到所存在的故障。
软件可靠性模型,对于软件可靠性的评估起着核心作用,从而对软件质量的保证有着重要的意义。
一般说来,一个好的软件可靠性模型可以增加关于开发项目的效率,并对了解软件开发过程提供了一个共同的工作基础,同时也增加了管理的透明度。
因此,对于如今发展迅速的软件产业,在开发项目中应用一个好的软件可靠性模型作出必要的预测,花费极少的项目资源产生好的效益,对于企业的发展有一定的意义。
1软件失效过程1.1软件失效的定义及机理当软件发生失效时,说明该软件不可靠,发生的失效数越多,发生失效的时间间隔越短,则该软件越不可靠。
软件失效的机理如下图所示:1)软件错误(Software error):指在开发人员在软件开发过程中出现的失误,疏忽和错误,包括启动错、输入围错、算法错和边界错等。
2)软件缺陷(Software defect):指代码中存在能引起软件故障的编码,软件缺陷是静态存在的,只要不修改程序就一直留在程序当中。
如不正确的功能需求,遗漏的性能需求等。
3)软件故障(Software fault):指软件在运行期间发生的一种不可接受的部状态,是软件缺陷被激活后的动态表现形式。
4)软件失效(Software failure):指程序的运行偏离了需求,软件执行遇到软件中缺陷可能导致软件的失效。
如死机、错误的输出结果、没有在规定的时间响应等。
从软件可靠性的定义可以知道,软件可靠性是用概率度量的,那么软件失效的发生是一个随机的过程。
在使用一个程序时,在其他条件保持一致的前提下,有时候相同的输入数据会得到不同的输出结果。
因此,在实际运行软件时,何时遇到程序中的缺陷导致软件失效呈现出随机性和不稳定性。
所有的软件失效都是由于软件中的故障引起的,而软件故障是一种人为的错误,是软件缺陷在不断的测试和使用后才表现出来的,如果这些故障不能得到及时有效的处理,便不可避免的会造成软件失效。
而一个软件中存在的软件错误和缺陷总数是无法确定的,也不可能被完全排除掉,有时候排除掉一个故障甚至会引起更多的故障。
所以在软件开发周期中,软件错误是不可避免的,但可以通过学习改进,不断吸取经验教训,尽量减少程序中的错误特别是重大错误的数量。
在测试阶段,测试人员应尽可能多的检测并排除掉软件中的故障,从而减少软件失效强度,提高软件的可靠性和质量。
1.2提高软件可靠性的途径软件中的故障会导致软件功能不能正常实现,降低了软件的可靠度。
软件故障一般是软件开发各阶段人为造成的,大概包括需求分析定义错误、设计错误、编码错误、测试错误和文档错误等。
因此要想获得高可靠性的软件,就要和软件中的故障做斗争。
有以下三种直接的方式来减少软件故障,提高软件可靠性:1)软件故障预防软件故障预防是指预防或者避免错误的发生或引入,从而减少故障检测和排除造成的花费。
加强软件开发员的教育和培训可以对减少故障起到一定的作用,另外在软件开发中可以利用下面几个故障预防技术:软件开发方法,软件配置管理,软件可靠性安全性设计和自动化故障预防等。
2)软件故障的检测和排除故障检测和故障排除是指从数量上和严重程度上减少软件中的故障。
这在软件测试中用得最多,测试人员要在限定的时间和费用发现并排除掉尽可能多的故障,这是提高软件可靠性的主要途径。
故障检测和排除技术可以分为静态方法和动态方法。
静态方法是在不实际运行软件的条件下检测软件的故障并进行排除,包括软件人工审查技术,软件静态分析技术和软件可靠性分析技术。
动态方法主要是通过运行软件来观测软件的失效,从而消除故障。
动态测试技术主要包括:白盒测试技术,黑盒测试技术与软件可靠性测试技术。
3)软件故障的遏制软件故障遏制也称容错技术,是指在错误存在的情况下,不导致软件失效,并仍能完成系统功能的能力。
主要的软件容错技术主要包括恢复块技术和 N 版本编程技术。
2 软件可靠性模型的概述软件可靠性工程使用的模型有两大类型:2.1可靠性结构模型靠性结构模型是指用于反映系统结构逻辑关系的数学方程。
借助这类模型,在掌握软件单元可靠性特征的基础上,可以对系统的可靠性特征及其发展变化规律做出评价。
软件可靠性结构模型包括串联系统模型、并联系统模型,以及硬-软件复合系统模型等。
软件可靠性结构模型是软件系统可靠性分析的重要工具,既可以用于软件系统的可靠性综合,也可用于软件系统的可靠性分解。
2.2可靠性预计模型可靠性预计模型本质上是一些描述软件失效与软件错误的关系,描述软件失效与运行剖面的关系的数学方程。
借助这类模型,可以对软件的可靠性特征做出定量的预计或评估。
例如,可以预计开发过程中的可靠性增长,预计或评估软件在预定工作时间的可靠度,预计软件在任意时刻发生的失效数的平均值、软件在规定的时间间隔发生失效次数的平均值、软件在任意时刻的失效率、软件失效时间间隔的概率分布和软件预期的交付时间等。
评估和预计是两个有区别又有联系的概念。
评估是指对软件现有的可靠性水平做出评价。
预计是指对软件未来的可靠性特征进行预计。
必须指出,在使用数学模型进行预计时,蕴含的假定是,事物发展规律在未来的一段时间保持不变。
对于短期预测这个假设是合理的。
但是,随着预测期的延长,其近似性减弱。
用可靠性模型进行预计时,为了得到较准确的结果,如果发现软件的失效规律有明显改变,应该对参数加以修正或重新收集失效数据,重新确定模型参数。
一般所说的软件可靠性模型均指软件可靠性预计模型。
本文中,软件可靠性模型均是指软件可靠性预计模型。
3 软件可靠性模型的特点(1)与使用的程序设计语言无关。
软件可靠性的应用与选用什么程序设计语言来编写软件之间没有什么直接关系。
但对于根据同一个规格说明书,不管你用什么程序设计语言软件来编写软件,同一个软件可靠性模型应给出同样的估测结果。
(2)与具体用到的软件开发方法无关。
软件开发是一个十分复杂的过程,涉及到许多的人为因素,从而使得对软件的质量难以进行预测。
为了保证预测的精度,不妨假设待估测的软件系统是用最坏的软件开发方法开发出来的。
(3)测试方法的选择问题。
实际上是无法通过彻底的测试来获得完全可靠的软件,所以不得不采用有限的测试,那么目标就是用最少的测试以求最大限度的软件可靠性。
可以用例如边界值测试法、分类测试法、路径测试法等方法来达到。
几乎所有的软件可靠性模型都假定测试环境就是将来软件的运行环境,这限制了高可靠性估计情况下的这些模型的可用性。
(4)改错过程。
实际上改正老的错误时往往会引人新的错误。
(5)模型要表述的容。
模型应该指出测试的输入是否已足够地覆盖了输入域,测试的条件和数据是否已准确地模拟了操作系统、是否已足以查出那些类似的错误等。
软件可靠性模型假定测试的条件和数据与操作环境有着同样的分布,也就简捷地假设了上述要表述的容。
(6)输入的分布问题。
可靠性估计紧密地依赖于模型假设的输入分布。
作为一个极端的情况,如果输入是一个常数(比如说只用到一个输入),软件将或者出错或者成功的执行,于是就给出可靠性相应地为 0 或为 1。
(7)关于软件复杂性问题。
大多数现有的软件可靠性模型都没有考虑这个问题。
实际上,复杂的软件应该比简单的软件要求更多的测试。
(8)模型的验证问题。
常常由于缺乏实际可用的足够数据,使得对模型的验证无法进行,且在整个软件寿命周期,软件几乎呈常数倍数地增加,导致可靠性也相应地变化,软件可靠性的验证工作也就更加复杂化。
(9)关于时间问题。
在软件可靠性量测与硬件可靠性量测综合起来对一定的系统环境进行考核时,将 CPU 时间作为时间单位是必要的。
(10)考虑模型所要求的数据是否容易收集。
否则,由于数据问题,将会限制软件可靠性的应用围。
4 软件可靠性模型的分类到目前为止,软件可靠性模型的研究已有 40 多年的历史,国外已发表的软件可靠性模型有近百种,但由于对软件可靠性模型的研究还处在一个初步阶段,目前并没有一个完整、系统的科学分类方法。
但是为了研究这些模型,又需要作些必要的分类。
所以,不少专家学者提出了许多不同的分类。
总的来说,模型可以按照它们的假设、测试空间、软件结构、处理的方式方法等进行分类,或者根据模型本身的数学结构及使用的参数估计方法进行分类。
一些常见的分类方法有:●按随机分类法:根据随机过程的假设,如过程的确定性和非确定性、马氏过程、泊松过程等进行分类。
●按软件出现的故障数进行分类:主要有错误计数模型和非计数模型,可数性或不可数(无穷)模型。
●按模型参数的估计方法进行分类:主要有 Bayes 方法或非 Bayes 方法,最大似然估计或最小二乘法,另外还有线性模型等。
●按模型使用的时间方式分类:主要有日历时间和执行时间模型。
●按修复过程分类:主要指对软件系统修复过程的一类模型,如完全修复型和不完全修复型,完全排错型和不完全排错型。
●按对软件的部结构是否了解进行分类:可分为黑箱模型和白箱模型。
对它们的分类主要根据对软件的部结构的了解程度以及对它们的结构能加以利用的程度来区分。
根据 Shanthikumar 的观点,与软件可靠性有关的模型可分为四类:第一类是软件可靠性模型。
第二类是软件释放时间模型。
用于确定软件何时可以释放,交付用户使用。
软件可靠性是其考虑因素之一。
第三类是软件可用性模型。
用于确定软件处于正常状态的机会大小,模型不仅考虑软件可靠性,还要考虑软件维护性。
第四类是硬件/软件模型。
用于确定混合硬件-软件系统的可靠性行为。
软件可靠性模型通常遵循以下四条准则之一进行分类,目的在于系统、深刻的理解软件可靠性模型。
(1)建模对象建模对象指软件可靠性数据及软件其他有关信息,譬如与时间有关的信息(数据),与时间无关的信息(数据)等。
依据建模对象软件可靠性模型总的来说分为两大类:静态模型和动态模型。
(2)模型建设可假定软件原有软件缺陷为一确定的有限值,也可假定它是服从 Poisson 分布的随机变量,甚至假定它为无限量,这样可得到不同类型的模型。
(3)模型适用性适用于测试阶段的模型称为增长模型,适用于确认阶段的模型称为确认模型。
(4)数学方法采用概率方法的模型称为概率模型。
采用模糊方法的模型称为模糊模型。
另外还有Bayes 模型与非 Bayes 模型等。
软件可靠性模型的分类方法很多,这里我们采用综合模型的假设、测试环境以及数理统计的分类方法,将模型大致分为:随机过程类模型和非随机过程类模型。
具体分类如图:5 软件可靠性模型的建模过程为了满足软件可靠性指标要求,需要对软件进行测试-可靠性分析 - 再测试 - 再分析-修改的循环过程。