- 软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。
- MTBF(Mean Time Between Failures,评估故障间隔时间)定义为:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。
- 可靠性测试
- 可靠性测试的目的可归纳为以下3个方面:
- 发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。
- 为软件的使用和维护提供可靠性数据。
- 确认软件是否达到可靠性的定量要求。
- 从技术的角度来看,影响软件可靠性的主要因素如下
- 运行剖面(环境)。
- 软件可靠性的定义是相对运行环境而言的,一样的软件在不同的运行剖面下,其可靠性的表现是不一样的。
- 软件规模。
- 软件规模也就是软件的大小,一个只有数十行代码的软件和几千、几万行代码的软件是不能相提并论的。
- 软件内部结构。、
- 结构对软件可靠性的影响主要取决于软件结构的复杂程度,一般来说,内部结构越复杂的软件,所包含的软件缺陷数就可能越多。
- 软件的开发方法和开发环境。
- 软件工程表明,软件的开发方法对软件的可靠性有显著影响。例如,与非结构化方法相比,结构化方法可以明显减少软件的缺陷数。
- 软件的可靠性投入。
- 软件在生命周期中可靠性的投入包括开发者在可靠性设计、可靠性管理、可靠性测试和可靠性评价等方面投入的人力、资金、资源和时间等。经验表明,在早期重视软件可靠性并采取措施开发出来的软件,可靠性有明显的提高。
- 运行剖面(环境)。
- 软件工程各个阶段可能进行的主要软件可靠性活动如下所述:
- 1.需求分析阶段
- (1)确定软件的可靠性目标。
- (2)分析可能影响可靠性的因素。
- (3)确定可靠性的验收标准。
- (4)制定可靠性管理框架。
- (5)制定可靠性文档编写规范。
- (6)制定可靠性活动初步计划。
- (7)确定可靠性数据收集规范。
- 2.概要设计阶段
- (1)确定可靠性度量。
- (2)制定详细的可靠性验收方案。
- (3)可靠性设计。
- (4)收集可靠性数据。
- (5)调整可靠性活动计划。
- (6)明确后续阶段的可靠性活动的详细计划。
- (7)编制可靠性文档。
- 3.详细设计阶段
- (1)可靠性设计。
- (2)可靠性预测(确定可靠性度量估计值)。
- (3)调整可靠性活动计划。
- (4)收集可靠性数据。
- (5)明确后续阶段的可靠性活动的详细计划。
- (6)编制可靠性文档。
- 4.编码阶段
- (1)可靠性测试(含于单元测试)。
- (2)排错。
- (3)调整可靠性活动计划。
- (4)收集可靠性数据。
- (5)明确后续阶段的可靠性活动的详细计划。
- (6)编制可靠性文档。
- 5.测试阶段
- (1)可靠性测试(含于集成测试、系统测试)。
- (2)排错。
- (3)可靠性建模。
- (4)可靠性评价。
- (5)调整可靠性活动计划。
- (6)收集可靠性数据。
- (7)明确后续阶段的可靠性活动的详细计划。
- (8)编制可靠性文档。
- 6.实施阶段
- (1)可靠性测试(含于验收测试)。
- (2)排错。
- (3)收集可靠性数据。
- (4)调整可靠性模型。
- (5)可靠性评价。
- (6)编制可靠性文档。
- 1.需求分析阶段
- 主要的可靠性设计技术
- 容错设计技术
- 恢复块设计
- N版本程序设计
- 冗余设计
- 检错设计
- 一般采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。
- 降低复杂度设计
- 降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
- 系统配置技术
- 双机热备技术
- 服务器集群技术
- 容错设计技术
- 软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。
- 软件可靠性评价工作是指选用或建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间收集的软件失效数据进行处理,并评估和预测软件可靠性的过程。
- 这个过程包含如下3个方面
- (1)选择可靠性模型
- (2)收集可靠性数据
- (3)可靠性评估和预测