《ch软件可靠性度量.pptx》由会员分享,可在线阅读,更多相关《ch软件可靠性度量.pptx(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022/5/23www.china-15.1 引言n5.1.1 软件可靠性工程及软件可靠性n软件可靠性工程应用统计技术,处理在软件开发过程中或(和)运行期间所采集的失效数据,以便详细说明并预计、估计和评价软件的可靠性研究内容包括软件可靠性的基本概念和定义、软件可靠性指标体系、可靠性建模、可靠性设计技术、测试技术和管理技术等2022/5/23www.china-2软件可靠性工程处理以下问题:n确定某过程能否提供满足可靠性要求的代码n为过程改进提供度量n预测软件维护阶段的失效率,确定软件维护工作量n帮助进行安全性认证n确定交付软件产品的时间或停止测试的时机n估计下次故障的可能时间n为软件更新或升
2、级,标识需要重新设计的主要部件n测定软件的可靠性2022/5/23www.china-3n软件可靠性n可靠性是软件的13个质量因素中最关键、最重要的n软件可靠性是指在规定时间和条件下软件无故软件可靠性是指在规定时间和条件下软件无故障运行的概率障运行的概率,是系统功能或软件产品中存在的缺陷的函数n软件故障产生的原因是软件缺陷,但缺陷并不一定导致故障的产生,高缺陷率的软件的可靠性不一定就差n软件失效意味着软件运行中断或者无法完成所规定的任务2022/5/23www.china-4几个值得关注的问题:n软件的运行环境:软件可靠性与运行环境密切相关n软件运行的时间间隔:商业软件需要较高的运行时间间隔(
3、较长的运行寿命),而任务关键软件则需要在短时间内高效运行n软件失效的时机是随机的,与硬件失效类似n不同于软件的正确性,对于持续运行的软件其可靠性最终将归于零(以失效结束);但正确性是软件的特定的某次运行结果,要么为1,要么为02022/5/23www.china-5n5.1.2 软件的缺陷、故障和失效n缺陷(Error,错误):设计和构造进产品总数是不可预知的,只能估计缺陷分为已知和未知(新发现)的缺陷分为已发现的和未发现的已发现的缺陷包括已纠正的和未纠正的n故障(Fault):运行结果错误故障是缺陷的表现形式,是由存在的缺陷产生的但缺陷并不一定导致故障,或者条件不具备,或者不会产生故障n失效
4、(Failure):系统不能完成所需要的功能而失败失效是故障在软件运行时所产生的后果失效缺陷故障已纠正的缺陷2022/5/23www.china-6软件质量度量与软件过程有什么关系?2022/5/23www.china-7失 效故 障面向用户面向开发者软件运行偏离用户需求程序执行输出错误结果可根据对用户应用的严重性等级分类可根据定位和排除故障的难度分类如,3次失效/1000 CPU小时如,6个故障/1KLOC失效与故障的区别2022/5/23www.china-8n5.1.3 软件失效n软件失效是随机发生的n描述失效的方法有三个:n累计失效函数:即与某时间点相关的平均累计失效数n失效率函数:用
5、累计失效函数的变化率表示n平均失效时间MTTF函数:对于一个时间段,表示若干相邻失效时间间隔的平均值;对某个时间点,表示到下次失效的期望时间2022/5/23www.china-9n软件失效率n如果没有缺陷,软件失效率为0n如果发现的缺陷能被及时、完全修复,失效率会趋向0n实际上,发现的缺陷数会递增,而纠正一个缺陷会引入更多的缺陷,因而失效率会增加时间失效率硬件软件(实际)软件(理想)2022/5/23www.china-105.2 软件可靠性度量和建模n5.2.1 基本概念软件可靠性建模过程是根据软件过去的故障行为建立软件可靠性数学模型的过程建模的目的是为了预计软件将来的故障行为建模过程包括
6、以下步骤:通过度量获得历史数据对故障数据进行分析,拟合成概率分布函数对拟合函数进行参数分析确定所期望的可靠性度量值并预测可能的故障行为2022/5/23www.china-11n5.2.2 软件可靠性度量参数软件可靠性R(t)可定义为:在给定条件下,在时间0,t内,软件无故障运行的概率若用T表示软件无故障运行的时间间隔,F(t)为T的累积分布函数,则软件可靠性可表示为:R(t)=1-F(t) t0故障率函数(t)为:其中,f(t)为F(t)的函数密度,即:)()()()()(lim)(0tRtfttRttRtRtt)()(tFdtdtf2022/5/23www.china-12(t)t是在时间
7、0,t内软件正常运行,在t,t+t内发生故障的条件概率,可得:密度函数f(t)、累积分布函数F(t)、可靠性函数R(t)和故障率函数(t)紧密相关,一般可由任一个惟一地确定另外三个,例如若(t)给定,则:根据f(t)或R(t)可计算平均失效时间函数MTTF,从而预测故障时间tdsstR0)(exp)()(ln)(1ln()(1)()(tRdtdtfdtdtFtfttdssttf0)(exp)()(00)()(MTTFdttRdtttf2022/5/23www.china-13n5.2.3 软件可靠性度量模型n指数分布密度函数为分布函数为故障率函数为(常数)具有指数寿命分布的软件产品(故障率为常
8、数)没有老化现象,符合不需要维护的软件的运行情况1)(1)()(1tetFetftt2022/5/23www.china-14nWeibull分布Weibull是更常用的分布,在许多工程领域的可靠性分析中都广泛应用,如轴承磨损、河流泛滥等Weibull分布有两个参数、(为1时变为指数函数)函数密度为:分布函数为:故障率函数为:tttetFetttftt)(0, 01)()(2022/5/23www.china-1511=1tWeibull分布=1时变为指数分布=2时为Rayleigh分布研究表明,软件项目的生命周期模式、项目的缺陷移除模式等都很好地符合Rayleigh模型2022/5/23ww
9、w.china-16数据收集和分析是度量软件可靠性的最重要的先决条件,任何可靠性度量的有效性都与数据收集的有效性直接相关,数据收集过程必须有计划、有组织地进行与软件可靠性相关的数据包括:n缺陷数据n过程数据n产品数据:如规模、功能、性能等5.3 软件可靠性数据收集过程2022/5/23www.china-17 5.3.1 缺陷数据的收集缺陷数据的收集常采用问答、报告形式,即发放问题报告表格要求有关人员填写,收集并分析问题报告表格形成统计数据检测到的缺陷已记录的缺陷已评审的缺陷确认?结束缺陷报告采取措施?通过验证?记录不采取措施的原因记录纠正验证问题报告NoNoNoYesYesYes2022/5
10、/23www.china-18 5.3.2 过程数据的收集缺陷数据必须与过程融合才有价值,因而过程数据也需要收集。通常会将项目的持续时间作为主要关心的过程数据,但实际需要更细分与软件可靠性测试过程相关的数据包括:CPU时间:具有与人无关性,但易忽略人的工作(如评审等)日历时间:优点是易于收集,但没有考虑阶段特征,如某些技术在某阶段更有效运行时间:是为测试而运行软件的总时间,也未考虑阶段特征其他数据:包括平均修复时间、完成每个过程活动的人数、软件生命期各阶段所用时间百分比、各阶段所消耗的资源数量、各阶段的开始、截止日期、各阶段修复一个缺陷所需的工作量、各功能模块的缺陷数,等等2022/5/23w
11、ww.china-195.4 软件的运行剖面软件可靠性建模需要具备三个条件:n软件运行时间基准(日历时间、运行时间、CPU时间)n软件运行过程收集的数据,是建模基础n软件功能和运行环境软件运行剖面用于定量描述软件的用户运行环境,即软件的功能和各功能的使用概率2022/5/23www.china-20 5.4.1 软件新系统的运行剖面n不同的运行模式下各功能的使用概率不同n不同运行模式的出现模式也不同运行模式1运行模式2功能功能使用概率2022/5/23www.china-21运行剖面对软件可靠性工程极具价值:n可为开发过程的资源分配提供参考,有利于提高生产率、可靠性和加快开发速度n有利于测试,
12、可确保常用功能获得更多测试n有利于设计测试用例,以发现影响可靠性最大的故障n根据功能的使用频度可确定开发的优先级n使功能描述更清晰,便于交流n有助于用户培训2022/5/23www.china-22n 5.4.2 软件运行剖面与可靠性的关系软件可靠性度量、评估和预测与软件的某个特定的运行剖面密切相关软件测试期间,为节省时间和成本,通常每个运行剖面只测试一次,因而不能反映每个剖面的出现概率,由此获得的可靠性数据也不能反映实际情况要将测试期间获得的可靠性值变换为实际值,可用以下公式:其中,u是实际的用户环境下的故障密度,T是测试值,C为测试压缩系数CTu2022/5/23www.china-23C
13、的含义是:在覆盖全部输入空间条件下,使用期间所要求的执行时间与测试阶段所要求的执行时间之比C的计算公式为:其中,k为输入状态k运行时的执行时间Pk为输入状态k在运行期间的发生概率QI为输入状态总数Pmin为最少发生的输入状态的概率IIQkkQkkkPPC1min12022/5/23www.china-24 5.4.3 软件运行剖面的建立运行剖面是关于系统如何运行的定量描述,建立步骤为:n建立客户剖面:分类描述要获取该系统的客户的使用模式n建立用户剖面:分类描述要使用该系统的用户的使用模式n定义系统模式剖面:根据执行过程描述系统运行模式n确定功能剖面:划分功能并确定各功能的发生概率n确定运行剖面
14、:确定系统各运行模式的发生概率2022/5/23www.china-255.5 软件可靠性模型及应用软件可靠性建模是软件可靠性工程的研究重点n5.5.1 与软件可靠性模型有关的问题n历史背景20世纪70年代,Telinski、Moranda、Shooman等人提出了软件可靠性建模的问题,并使用建立的模型估计软件现在和未来的可靠性经近40年的发展,软件可靠性模型已有很多种2022/5/23www.china-26n软件可靠性模型的分类Musa、Okumoto根据模型的5个特征进行分类:n时间域(time domain):日历时间、执行时间或CPU时间n类别(Category):软件在无限的时间内
15、可能经历的故障数是有限的还是无限的n型(Type):软件在运行时间t时的失效数分布分类n种类(Class):故障密度对时间的函数分布(仅对有限故障类)n族(Family):故障密度对它的期望故障数的函数分布(仅对无限故障类)有限故障数模型种类型泊松分布二项式分布其他指数分布Mussa(1975)MorandaSchneidewindGoel-OkumotoJelinski-MorandaShoomanGoel-OkumotoMussaKeiller-LittlewoodWeibull分布Schick-wolvertonWagonerC1分布Schick-wolverton帕雷多分布Little
16、woodGamma分布Y-O-O无限故障数模型族型T1T2T3泊松分布几何分布MorandaMussa-Okumoto线性倒数Littlewood-Verrall二次多项式倒数Littlewood-Verrall幂Crow2022/5/23www.china-285.5.2 软件可靠性模型参数与软件可靠性模型相关的参数有:ETF:软件中固有缺陷数,是固定的ETV:同上,是变化的,在开发、维护过程中随时添加EC(t):某时刻已纠正的缺陷数ED(t):某时刻已发现的缺陷数P:在修正缺陷过程中测试的循环次数,常假定 P=ED(t)=EC(t)EC(p):直到第p次测试才修正的缺陷数0:起始故障率p:
17、当前故障率:故障率的变化:累计执行时间:增长率N:测试用例运行总数S:成功的测试用例运行总数2022/5/23www.china-296.5.3 软件可靠性模型nMusa模型n基本模型假设:每个缺陷对故障率的贡献是相同的;每修正一个缺陷故障率均匀地减少,即故障率对时间的导数是常数;软件固有的故障总数是有限的,但不固定,即修正缺陷时可能产生新缺陷Musa模型:ETV00ep2022/5/23www.china-30利用基本模型可估计要达到某可靠性目标还必须要发现(检测出)的缺陷数和需要的时间,有助于计划人力和时间设要达到的可靠性目标为f,则需发现的故障数Nf为:为达到这一目标所需时间Tf为:)/
18、ln(1fpfNfpfT1当前已检测出的累积缺陷数为达到故障率目标或MTTF目标必须要检出的累计缺陷数为达到目标还需检测出的缺陷数为达到目标需要的时间测试时间已检出的累计缺陷数2022/5/23www.china-31n对数模型假设: 每个缺陷对故障率的贡献不同;常用的功能的缺陷可及早被检出,故障率的变化随时间减少;软件固有的故障总数是无限的Musa模型:Nf和Tf为:100p)/ln(1fpfNfpfpfT2022/5/23www.china-32nGoel-Okumoto模型假设:缺陷对时间的分布是非时对齐的,即发现的缺陷不一定会立即消除(适用于开发早期)基本模型:其中,ab为常数,与单位
19、时间内发生的缺陷有关可得:修正模型:故障密度函数为Weibull分布btabet)(btaeatED)(cbtceabctt1)(2022/5/23www.china-335.5.4 软件可靠性模型的适用条件模型假设适用阶段难易度Mussa基本模型优先固有缺陷数常数故障率指数分布集成测试后EMussa对数模型无限固有缺陷数对数分布故障率随时间变化单元测试到系统测试EGoel-Ukumoto非时齐缺陷分布缺陷可能因修复而产生指数、Weibull分布集成测试后M2022/5/23www.china-345.6 软件可靠性测试n5.6.1 软件测试的类型与软件可靠性相关的测试主要是动态测试n单元测试
20、:对汇编单元进行测试n集成测试:对汇编单元接口的测试n验收测试:验收并确认实现了所有需求n回归测试:对与修正的缺陷的软件部件的再测试2022/5/23www.china-355.6.2 软件可靠性测试方法n利用在其他测试中的数据收集来检验软件可靠性的测试基本步骤是:仔细研究开发过程和软件问题报告确定使用那些或那个模型来度量软件可靠性执行一种有效的方法来收集问题报告缺陷数据、过程数据和产品数据,收集集成测试期间及以后的数据按照模型规定的原理和方法,将数据输入选定的模型,直接估计软件可靠性或间接地估计与其有关的参数根据估计结果进行决策:软件能否被释放(发布)?是否需要增加测试时间以达到可靠性目标?
21、如果需要,还需要多少时间?2022/5/23www.china-36nBeta测试可以直接反映可靠性水平n系统软件证明测试在要求时间内、在实际的使用环境中运行系统,不对系统进行维护,收集发现的故障数,以决定整个系统能否通过可靠性测试n基于测试时间的软件证明测试在相对较长时间内对软件的运行进行软件证明测试n基于测试输入的软件证明测试只针对特定的测试用力进行软件证明测试2022/5/23www.china-37 软件证明测试方法1.测试前,先由测试者和用户共同确定以下三个参数:n用户风险因子:是由用户承担的软件可靠性未达目标而通过测试的风险n生产者风险因子:是由开发者承担的可靠性已达目标而未被接受
22、的风险n鉴别因子:是最大可接受的失效密度和失效密度目标的比值2022/5/23www.china-382.确定可靠性测试判定标准根据已确定的三个参数绘制软件可靠性证明测试判定图确定拒绝线和接受线规格化是指将测试时间或测试用例数乘以故障率目标值)1ln(ln)1 (yx规格化的测试时间或测试输入在测试期间发现的累计缺陷数测试通过测试未完测试失败接受线拒绝线1lnln)1 (yx2022/5/23www.china-393.测试开始后,失效发生时,将对应的累计故障数和测试时间或测试用例数在图中标出4.判定测试结果:通过或失败都表示测试结束,若测试未完成,则继续测试注:基于测试用例的证明测试具有随机
23、性,不同测试可能得到不同结果,为此可采用模块化方法选择测试用例,以保证测试的客观性2022/5/23www.china-405.6.3 软件可靠性测试的实施过程1、概述软件可靠性测试有两类:n开发测试:包括性能测试、加载测试、回归测试,目的是发现和修正单元及其集成的缺陷n确认测试:一般只进行加载测试,目的是为了确定软件部件或系统是否被接受对于软件可靠性建模,开发测试收集的是分组数据,是不完整的,而确认测试获得的是完全数据2022/5/23www.china-412.软件可靠性测试过程模型开发业务剖面是软件可靠性测试的重要环节,因为可靠性目标与业务剖面关系密切软件可靠性目标开发系统业务剖面准备测
24、试软件可靠性定量评估软件可靠性模型执行测试收集、整理故障数据对比需求与构造设计和实现集成测试和确认测试接受或拒绝2022/5/23www.china-423、测试的目的通过在规定的业务剖面下运行软件系统,确认是否能够完成于业务剖面相关的任务:n正确地完成规定的功能n满足性能要求n不完成没有规定的功能n提供运行中的故障数据4、用户责任用户要参与软件测试:n规定测试要求,如测试条件和环境n评审和批准测试程序n评审和批准每一需求的认证方法和技术n提供测试环境和人员n要球组织独立的测试组织2022/5/23www.china-435、测试的准备和执行测试准备:准备测试用例、测试程序并决定要使用的自动化
25、测试工具测试用例设计须考虑可靠性定量要求和成本及效率,测试用例的数量和类型选择要与业务剖面及发生概率一致,且考虑到随机性测试程序与特定的业务剖面相关,要考虑发生概率测试执行:从性能测试开始进行加载测试,要考虑业务剖面和运行模式已分配执行时间和测试用例测试执行过程需进行故障识别,记录故障发生时间和严重性对于发现的故障,需要填写故障报告:n引发故障的缺陷什么时候、在那里出现?原因是什么?如何定位?什么时候该定位被确认?n要进行的修改有哪些?2022/5/23www.china-446、测试结果的应用用户根据测试结果评估可靠性并进行决策开发者由此产生软件更新需求,或者改进过程和设计7、需要注意的问题
26、n测试人员独立于开发者的程度将影响测试结果n测试时间计划不周会导致在开发过程后期发现缺陷的风险增加n测试等级及相应的测试时间分配选择不得将不能保证在不牺牲质量的前提下降低成本n测试工具的选择将影响测试效率和完整性2022/5/23www.china-455.7 软件故障数据的趋向性分析n5.7.1 趋向性分析的含义及作用软件可靠性建模的基础是测试数据,但由于不同的可靠性模型基于的假设不同,导致可靠性分析方法的离散性,原因主要是:n 软件的自然特征及相应的失效数据是离散的n 所采用的开发方法和确认方法不同n 数据收集的组织有差别n 分析的目的、要求各种各样软件可靠性模型的有限假设和故障数据的离散
27、性是矛盾的,K. Kanoun于1997年提出的趋向性分析方法用于揭示软件可靠性随时间的演化趋势,实践证明具有很高的实用性2022/5/23www.china-465.7.2 软件故障数据工程模型软件故障数据数据收集数据过滤数据分割寿命期分类数据按部件分类数据故障严重性分类数据描述性统计可靠性评估可靠性度量描述性分析趋向性分析模型应用2022/5/23www.china-47n数据收集收集的故障数据包括:n表征产品本身、开发过程及使用环境的数据,如软件规模、语言、功能、确认和验证方法、使用工具、加载等n与故障及其修正相关的数据,如故障发生时间、故障特征、故障影响结果、缺陷类型、缺陷位置等n数据
28、过滤对收集的数据进行分析和过滤,需滤出的数据有:n与软件无关的外在数据n错误的或虚假的问题报告n重复数据2022/5/23www.china-48n数据分割根据需求将收集到的数据进行分割,可使分析更具体分割方法包括:n根据故障的严重性等级分割n根据生命期阶段分割n根据缺陷所在的软件部件分割n数据工程分析根据工程应用不同,对分割的数据进行不同的分析:n描述性分析:基于统计原理,用图、表进行综合,以识别最有用的现象,如故障的发生条件与严重性的关系等,与可靠性评估没有直接关系,有利于设计和开发n趋向性分析:分析可靠性随时间的变化趋势,有助于评估可靠性模型的有效性n模型应用:选择趋向性模型,涉及可靠性
29、度量问题2022/5/23www.china-495.7.3 趋向性分析经验表明,根据故障时间间隔或某时间间隔内的累积故障数,或故障密度,可以了解软件系统是否会变得越来越可靠,或反之。但有时,这种预测是错误的,因为定量度量并不总是可信的用形式化统计检验方法提高趋向性分析的可信度似乎更有效该方法的基础是计算Laplace因子2022/5/23www.china-50若T为观测时间,对于0,T内的故障时间数据,Laplace因子为:其中,j实在第j-1个故障后,从系统重启到发生第j个故障的时间,N(T)是在0,T内的故障数对于分组数据,这里n(i)是在第i个时间单位内的故障数,即第i个分组;k为观
30、测的时间单位数,即分组数据的组数)(1212)(1)()(11TNTTTNTuTNiijjkikikiinkinkiniku1211)(121)(21)() 1()(2022/5/23www.china-51Laplace因子的值有以下含义:负值表示故障密度减少,可靠性增加正值表示故障密度增加,可靠性降低若作-22间震荡,表示可靠性处于稳定状态全局趋向性局部趋向性可靠性降低可靠性降低可靠性增加可靠性降低可靠性增加2022/5/23www.china-525.7.4 趋向性分析结果的应用n软件开发阶段的趋向性分析可预测软件可靠性的可能趋向及持续时间,以便开发者、测试人员采取有针对性的措施加以控制n对于软件可靠性的定量评估,趋向性分析有助于选择适用的可靠性模型,采取以下策略:n在可靠性增长时,多数模型都可用n可靠性趋向稳定时,可选择常数故障率模型n若可靠性降低,接着又增长,建议选择S模型(Yamada、Ohba模型)n若可靠性持续降低,应等待,因为存在需要处理的问题2022/5/23www.china-53小 结软件质量度量,特别是可靠性度量,是一个软件企业走向成熟、规模化、正规化的必由之路,尽管实施起来有难度,甚至很困难,但必须去做。软件质量度量是改善开发过程,提高企业的CMM等级,改善产品质量的关键2022/5/23www.china-54本章结束本章结束