文档介绍:软件可靠性工程发展过程魏新科1软件可靠性工程发展历史国内软件可靠性研究始于上世纪80年代初,徐仁佐在软件可靠性建模等方面做了有益的探索,并开发了软件可靠性专家系统SRES。黄锡滋、蔡开元、何国伟等在软件可靠性理论和工程实践等方面也做了研究,包括软件可靠性分配、软件可靠性管理、软件可靠性模型应用选择、软件可靠性测试、软件可靠性度量体系等。国外基于软件故障生命周期已经提出了若干技术来解决软件可靠性工程学问题。包括故障生命周期技术及软件可靠性和度量。故障生命周期的4种技术:错误预防;错误排除;错误容忍;错误/故障预测。软件可靠性建模的主要任务是错误/故障预测,即估计(度量目前状态)和预计(评价将来状态)软件系统的可靠性。容错是得到高可靠软件的主要方法之一。有两类错误容忍技术:单版本和多版本软件容错技术。前者包括程序模块化、系统终止、原子行为、错误检测、意外处理、检查点和重启、过程对和数据多样性;后者称为设计多样性,由不同的程序团队使用不同的设计方法独立开发多个软件版本,但根据相同的需求说明,它们提供同样的服务。多版本软件方法的主要技术是恢复块、N2版本编程、N2自检编程和基于这3种基本技术的其他变种。可靠性模型试图估计多版本中的相同故障的概率,Eck2hardt和Lee提出了设计多样性错误关联的第一个可靠性模型,基于需求空间难度差异的假设,来观察版本故障间的积极关联。Littlewood和Miller[提出,基于强制的设计多样性,可能存在消极的错误关联。Dugan和Lyu提出一个马尔可夫奖励模型,来比较由设计多样性方法得到的系统可靠性。Tomek和Trivedi为软件容错提出了统计学奖励网络模型。Popov,Strigini等基于需求空间的子域概念,估计了设计多样性故障概率的上下限。。通过采取与硬件类似的数学建模方法,能够建立软件可靠性框架。用故障率作为度量,可直接用于模型;综合硬件和软件可靠性,就形成系统可靠性模型度量形式统一;框图设计的系统可靠性模型直观,易于迅速识别可靠性关键构件部件。但故障模式影响分析(FMEA)和故障模式影响关键性分析(FMECA)对硬件系统应用很好,对软件系统的认识还不充分。,但它们的主要缺点包括:软件测试期间的观察可能不能直接扩展到操作使用中;收集到的故障数有限,可靠性预计未必准确;SRGM的某些假设不真实。但这些问题可通过合适的方法来克服,比如收集数据时,满足模型假设,则可得到精确的可靠性估计。添加影响软件质量的重要因子,能够进一步改善这些SRGM模型的预计精度。目前还提出了一种技术,将代码覆盖对可靠性影响结合进传统的软件可靠性模型中,使用时间和代码覆盖度量来预计可靠性。故障/错误数目和测试覆盖之间的关系,可由不同分布的模型来确定。如何将更多度量结合进这类建模,有待进一步探索。早期的软件可靠性预计模型,通常很不充分,可执行程度低,不够形式化而难以分析,且与目标系统无关。它们对可靠性预计的影响也十分有限。,软件可靠性模型也包括了复杂性度量,如初始的软件错误密度和故障率。SRGM中与可靠性相关的两个度量是时间区间内的故障数和故障间隔时间。CPU时间比日历时间更合适且更精确,CPU时间能够如实地表示软件的实际执行时间。软件可靠性建模已合并了测试效果的其他度量,以改善预计的精确程度。关键问题是对软件度量的定义和解释不一致,迫切需要识别、描述、合并和理解统一的软件可靠性度量。。基于错误的数据是静态的,可使用维护源代码的配置管理工具来收集。基于故障的数据很难收集。故障发生后,必须记录故障的出现时间。手工记录日历时间,会使建模不够精确;记录CPU时间,特别是在多个CPU并行地执行软件的分布式系统和网络环境中,很难收集。如果自动地收集数据,缺点是比较具有干扰性,如在线收集数据能够引起对测试中系统的中断。另外,不同组织之间所需收集数据的数量和类型也各不相同,要根据SRE目的搜集类似的数据。对领域故障数据的分析,有5步:1)数据预处理;2)数据分析;3)模型结构识别和参数估计;4)模型求解;5)模型分析。,SRE还有许多其他方法。接下来给出方法和工具的一些实例。故障树提供了图形化和逻辑框架,系统地分析故障模式。故障树技术起源于硬件系统,扩展到软件系统,它能够为硬件/软件协同设计提供统一的建模方案。为硬件2软件交互的可靠性建模是目前一个研究热点。SRE仿真技术假设给定的环境代表了影响因素,仿真方法的结果就会代表