软件可靠性-课件PPT讲义(精)
- 格式:ppt
- 大小:4.97 MB
- 文档页数:75


7.7 软件可靠性
7.7.1 基本概念
1. 软件可靠性的定义
定义1 软件可靠性(software reliability)是指软件在规定的运行环境中和规定的时间内无失效运行的概率[ANSI91]。所以它是时间t的函数,我们用)(tR来表示。
定义2 软件故障率(failure rate)是指在单位时间内软件发生故障的概率。它和软件可靠性的关系如下:
)()()(tRdttdRt
或者是:
))(exp()(
0 tdtttR
定义3 软件平均无故障时间(MTTF)。指软件从开始运行到出现一个故障的期望时间,根据可靠性的定义有:
0 )(dttRMTTF
和软件中错误相关的定义
定义4 软件错误(Software Error)。指在软件生存期内的不希望或不可接受的人为错误。软件错误是一种人为的行为,相对于软件本身是一种外部行为。
定义 5 软件缺陷(Software Defect)。指存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。其结果是软件在某一特定条件时出现运行故障。当软件指程序时,软件缺陷即程序污点(Bug)。
定义 6 软件故障(Software Fault)。指软件运行过程中出现的一种不希望或不可接受的内部状态。软件故障是一种动态行为。
定义 7 软件失败(Software Failure)。指软件运行时产生的一种不希望或不可接受的外部行为结果。
2. 软件的可用性定义
程序在给定的时间点,按照SRS的规定,成功地运行的概率。
可靠性与可用性的区别:
可靠性指在0到t这段时间间隔内系统没有失效;可用性仅仅意味着在时刻t,系统是正常运行的。 在时刻t系统是可用的,意味着两种可能:1)在0到t这段时间间隔内系统一直没有失败;2)在0到t这段时间间隔内,系统失效了若干次,但都被修复好了。
如果一端时间内,软件系统故障停机时间分别为td1 , td2 ,,正常运行时间分别为tu1 ,
浅谈软件系统可靠性
1 概述
近年来,随着计算机在军用与民用产品上的应用日益增多,软件缺陷所引发的产品故障,甚至灾难性事故也越来越严重, 软件故障已成为高新技术产品发展的瓶颈。在这种情况下,一旦计算机系统发生故障,则其效益就会大幅度地消减,甚至完全丧失,从而使社会生产和经济活动陷入不可收拾的混乱状态。因此可以说,计算机系统的高可靠性是实现信息化社会的关键。
计算机系统硬件可靠性方面已有六十余年的发展历史,冗余技术、差错控制、故障自动检测、容错技术和避错技术等可靠性设计技术已经成熟。相比之下, 软件可靠性的研究只有三十几年的发展历史,加上软件生产基本上仍处于作坊式的手工制作,其提高软件可靠性的技术与管理措施还处于十分不完善的状况。20 世纪70 年代末至80 年代初,软件可靠性的研究集中于对软件可靠性模型进行比较和选择。90 年代以来,软件可靠性研究工作进展较快,主要集中在软件可靠性设计、软件可靠性测试与管理以及软件可靠性数据的收集这三个方面。
2 软件可靠性的基本概念
2.1 软件可靠性的定义
1983年,美国IEEE计算机学会软件工程技术委员会对软件可靠性的定义如下:
a) 在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确定是否会遇到已存在的错误。
b) 在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。
软件可靠性定义中提到的“规定的条件”和“规定的时间”,在工程中有重要的意义。
定义中的“时间”有3种度量。第一种是日历时间,指日常生活中使用的日、周、月和年等计时单元;第二种是时钟时间,指从程序运行开始到运行结束所用的时、分、秒;第三种是执行时间,指计算机在执行程序时实际占用的CPU 时间。
定义中所指的“条件”,是指环境条件,包括了与程序存储、运行有关的计算机及其操作系统。
如何进行软件可靠性和稳定性保证
任何软件都需要在实际运行中保证其可靠性和稳定性。无论是科学研究的模拟程序,还是商业软件的资金管理系统,它们都需要在长时间的使用中保持稳定,且不会出现严重的故障。在软件开发的过程中,有各种方法和工具可以用来保证软件的可靠性和稳定性。本文将讨论这些方法和工具,以及关注一些软件开发者应该注意的事项。
1.测试
测试是软件开发的关键环节之一。软件测试目的在于发现潜在的软件问题,例如内存泄露、逻辑错误、数据损坏等等。软件测试通常被分为两类:手动测试和自动化测试。手动测试是由人工操作来检测软件程序和系统的功能和性能。而自动化测试则使用特定的测试框架和工具来模拟人的行为,从而测试应用程序的正确性和性能。
测试是在软件开发周期的各个阶段进行的。它通常开始于开发初始阶段,紧跟着需求规格说明书的编写。当程序代码完成之后,测试人员可以将测试用例推到软件测试过程的下一个阶段,例如系统测试或验收测试。在测试过程中,需要对软件进行全面的测试,以确保其正常运行,没有内部问题。测试可以帮助发现许多问题,例如程序中的语法错误、逻辑错误以及运行时错误等。
2. 代码审查
代码审查是软件开发的一个重要环节,目的在于检查应用程序源代码。通过代码审查,可以找出许多软件错误或潜在的问题,例如未定义的引用、类型转换错误、逻辑错误等等。代码审查的方式有很多种,例如读代码、程序插桩等。程序员可以采用在评审时检查他人的工作,这可以大大提高软件的质量。
在代码审查中,应用程序的源代码被评审或审核。代码审查通常由同事,工程经理或第三方专家完成。评审过程可以包括模块级评审,代码行级评审等。评审后,编写人员会进行一定的修改工作来寻找和解决评审发现的问题。
3.性能测试
性能测试用于评估软件系统的整体性能。它可以衡量应用程序的响应时间、吞吐量等。在性能测试过程中,可以在不同的环境下测试软件的性能和稳定性。例如,在低网络带宽的环境下测试网络应用程序。通过性能测试,可以发现性能不佳或质量问题,可以在软件向用户发布之前解决这些问题。
可靠性基础知识及可靠性分析应用
课程提纲:
第一章 可靠性基础知识
第一节:基本概念
1. 可靠性的基础概念
1.1 可靠性的基本概念
1.2故障及其分类
2. 维修性的概念
3. 可信性和可用性的概念
4. 可靠性与产品质量的关系
第二节:可靠新维修性常用度量参数
1. 可靠度函数、累积故障分布函数故障密度函数
1.1可靠度及可靠度函数
1.2累积故障分布函数
1.3故障密度函数
1.4可靠度函数与累计故障分布函数的性质
2. 故障率与浴盆曲线
2.1故障率函数
2.2浴盆曲线
2.3故障率与可靠度及故障密度函数的关系
3. 平均故障前时间与平均故障间隔时间
3.1平均故障前时间
3.2平均故障间隔时间
4. 产品的寿命特征
4.1可靠寿命
4.2使用寿命
4.3总寿命
4.4储存期限 5. 平均修复时间
第三节:可靠性设计、试验与管理
1. 可靠性设计、试验与管理的基本概念
1.1可靠性设计
1.2可靠性试验
1.3可靠性管理
2. 故障模式、影响及危害性分析
2.1FMECA实施步骤
2.2危害性矩阵
2.3FMECA主要用途
2.4影响FMECA工作效果的因素
3. 建立故障报告、分析和纠正措施系统
3.1故障报告
3.2故障分析
3.3故障纠正
第二章可靠性分析应用
第一节GJB-Z 299C-2006电子设备可靠性预计手册介绍
1. 术语
2. 电子设备可靠性预计一般程序
3.环境分类
第二节:实际产品可靠性预计
1. 环境系数确定
2. 其他系数确定
3. 查表
4. 公式计算