软件可靠性技术发展与趋势分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件可靠性技术发展及趋势分析
1引言
1)概念
软件可靠性指软件在规定的条件下、规定的时间内完成规定的功能的能力。
安全性是指避免危险条件发生,保证己方人员、设施、财产、环境等免于遭受灾难事故或重大损失。安全性指的是系统安全性。一个单独的软件本身并不存在安全性问题。只有当软件与硬件相互作用可能导致人员的生命危险、或系统崩溃、或造成不可接受的资源损失时,才涉及到软件安全性问题。由于操作人员的错误、硬件故障、接口问题、软件错误或系统设计缺陷等很多原因都可能影响系统整体功能的执行,导致系统进入危险的状态,故系统安全性工作自顶至下涉及到系统的各个层次和各个环节,而软件安全性工作是系统安全性工作中的关键环节之一。
因此,软件可靠性技术解决的是如何减少软件失效的问题,而软件安全性解决的是如何避免或减少与软件相关的危险条件的发生。二者涉及的范畴有交又,但不完全相同。软件产生失效的前提是软件存在设计缺陷,但只有外部输入导致软件执行到有缺陷的路径时才会产生失效。因此,软件可靠性关注全部与软件失效相关的设计缺陷,以及导致缺陷发生的外部条件。由于只有部分软件失效可能导致系统进
入危险状态,故软件安全性只关注可能导致危险条件发生的失效。以及与该类失效相关的设计缺陷和外部输入条件。
硬件的失效,操作人员的错误等也可能影响软件的正常运行,从而导致系统进入危险的状态,因此软件安全性设计时必须对这种危险情况进行分析,井在设计时加以考虑。而软件可靠性仅针对系统要求和约束进行设计,考虑常规的容错需求,井不需要进行专门的危险分析。在复杂的系统运行条件下,有时软件、硬件均未失效,但软硬件的交互
作用在某种特殊条件下仍会导致系统进入危险的状态,这种情况是软件安全性设计考虑的重点之一,但软件可靠性并不考虑这类情况。2)技术发展背景
计算机应用范围快速扩展导致研制系统的复杂性越来越高。软硬件密切耦合,且软件的规模,复杂度及其在整个系统中的功能比重急剧上升,由最初的20%左右激增到80%以上。伴随着硬件可靠性的提高,软件的可靠性与安全性问题日益突出。
在军事、航空航天、医疗等领域,核心控制软件的失效可能造成巨大的损失甚至威胁人的生命。1985年6月至1987年1月,Therac-25治疗机发生6起超大剂量辐射事故,其中3起导致病人死亡。1991年海湾战争。爱国者导弹在拦截飞毛腿导弹中几次拦截失败,其直接原因为软件系统未能及时消除计时累计误差。1996年阿里亚娜5型运载火箭由于控制软件数据转换溢出起飞40秒后爆炸,造成经济损
失达5亿美元。1999年大力神4B运载火箭由于软件问题飞行9秒后偏离航向,造成卫星未进入预定轨道。
不断发生的软件失效和事故使人们逐渐认识到:在系统复杂性较高的情况下,常规的软件工程方法和软件评测手段并不能解决软件可靠性与安全性设计深层次的问题。软件系统的安全性需要通过专业技术予以保证。实际工程中对软件可靠性安全性的迫切需求直接促进了软件可靠性安全性技术的发展。通过不断的研究实践和工程积累,逐步形成理论,并进一步指导实际软件研制。
2 软件可靠性安全性技术应用与管理趋势
1)技术应用趋势
软硬件复合系统设计时更加注重系统层次上的可靠性与安全性的综合分析和设计,在软件可靠性分析、设计、测试、验证方面有下述趋势:
(1)更加注重软件可靠性与安全性分析和设计的系统性。
主要表现在以下两方面:
A)分析的范围进一步扩展,在原有分析的基础上加强系统级的分析与设计,更注重软件与其外部运行环境之间相互作用的分析;
B)注重对软件运行异常环境的分析以及异常情况下软件处理功能的分析与设计:包括硬件异常状态、时序和软硬件异常交互的分析,软硬件综合容错分析与设计、软件降级分析与设计等。
美国麻省理工学院系统与软件安全性项目组人员经过对大量的与软件相关的事故进行统计分析发现,几乎所有与软件相关的事故都涉及到软件需求问题。而且,软件作为一种逻辑产品,其失效模式与硬件失效模式不同。很多事故发生时,操作人员操作正确,硬件也未出现故障,从软件工程的角度看,软件的表现符合“软件需求规格说明”,也没有失效。导致故障的原因在于,软件与外部运行环境之间出现一种超出设计人员设想的相互作用方式,也就是说与软件相关的大部分系统失效是由于软件对外部输入处理及其相关时序的设计遗漏造成,而非软件失效造成。为此,NASA定义了一种软件交互失效模式,并规定全部的安全性关键软件和任务关键软件均需在系统、功能等顶层设计加强软件与外部环境的交互动态分析
在缺少软硬件容错设计的情况下,软件的输入错误必然导致软件的输出错误。由于许多实时嵌入式系统的输入来自于外部的硬件或软件,硬件故障或外部的干扰很可能造成外部环境的变化或输入信号时序、幅度的变化,也可能产生输入信号错误,为避免由于这种原因造成的软件失效,必须在软件研制前期进行深入、细致的分析,并采取针对性的设计措施
(2)强调量化风险控制,注重对研制的软硬件复合系统的概率风险进行评估。
1986年挑战者号失事后。挑战者事故调查委员会批评NASA未能估计出每个组件失效的风险传统的安全性定性分析方法不足以预计
或削弱全部的安全性风险,有关学者建议概率风险评价方法应尽可能早的应用于飞机的风险管理程序。早期的概率风险评价研究与试点工作由专业研究人员进行。1995年4月,NASA在NFG 7120.5A《NASA 程序和项目管理过程与要求》中规定,概率风险分析应作为保证程序和技术成功的一种决策工具,要求程序与项目管理决策必须在概率风险排序的基础上进行。2002年11月,NASA在NFG 7120.5B规定NASA 独立验证与确认机构负责全部的安全性关键软件和任务关键软件全生命周期各阶段产品的独立确认与验证工作,包括软件可靠性与安全性的分析,测试与验证,以及软件概率风险危险分析与评价工作。
概率风险分析是系统应用可靠性和安全性等相关技术的一种综合分析方法,包括对软件可靠性和安全性的量化分析与评价,其目的是识别与评价为保证安全性和任务完成所需采取的各种行动、措施的风险,为决策提供支持。首先,需使用定性分析方法,如初步危险分析PHA,危险与可运行性研究HAZOP,故障模式、影响及危害性分析FMECA,系统检查单,主逻辑框图等技术对软硬件组合系统进行分析,获得可能导致系统不期望状态发生的初始事件表。在定性方法不足以提供对失效、后果、事件的充分理解时使用定量的方法。然后,就系统、人、软件对初始事件的不同响应而导致的事件链的不同发展过程进行分析鉴别,生成系统的功能事件序列图。然后,分析各事件的发生概率(包括共因失效分析,人因分析以及软件各种失效分析等),用故障树和概率统计技术归纳各事件序列最终状态的发生概率,分析各终结状态的严重度,结合状态发生概率与严重度,获得概率风险描