软件可靠性学科发展现状及展望

软件可靠性学科发展现状及展望
    陈光宇 黄锡滋 (电子科技大学管理学院)
摘 要:软件可靠性工程的发展主要是在信息技术、可靠性工程、用户需求等综合因素的作用下形成和发展起来的。本文简要回顾软件可靠性学科的三个阶段的发展,侧重阐述软件可靠性工程的形成及特征,并提出软件可靠性工程发展中需解决的问题。
关键词:软件可靠性;软件可靠性工程;信息技术;可靠性工程;软件工程 ;软件危机
计算机软件经过了50多年的发展,已经成为现代信息社会中的关键,影响着全球人类活动的各个领域。社会的日常运行越来越依赖于基于软件的系统,而对这种系统失效的容许能力却越来越小。软件工程帮助在预定费用内按期交付符合功能性要求的软件产品,还帮助满足一定的质量标准。从用户的角度来说,软件的质量标准中最直观和最直感的就是软件可靠性。对于安全关键和任务关键的系统尤其如此。
一、软件可靠性学科发展回顾
软件可靠性是软件工程学与可靠性工程学结合产生的前沿学科。它的兴起和发展源于三个方面的因素。首先,需求的拉动力:持续了二三十年的软件危机与上世纪九十年代软件故障引发的许多重大事故大大损害了客户满意度;其次,技术的推动力:信息技术(硬件技术、软件技术)的迅猛发展有力推动软件可靠性发展;最后,可靠性工程的理论和方法对软件可靠性的支撑力。

软件可靠性的发展伴随着信息技术和可靠性工程的发展而成长。软件可靠性发展至今可分为下列三个阶段:
第一阶段:(1950-1967年),软件可靠性学科萌芽时期
在1950—1958年间.在软件发展过程的这个原始阶段中,完全没有软件可靠性的概念.那时没有专职的程序员,程序是由应用计算机的科学家和工程师自行编制的,没有公认的规则可供遵循。1957年,美国国防部电子设备可靠性顾问团(AGREE)的报告是公认的可
靠性工程的奠基性文件,但是,完全没有提及软件和软件可靠性的问题.可靠性(Reliability)的定义是:产品在规定的条件下和规定的时间内完成规定功能的概率。
在1959—1967年间.在计算机硬件技术和软件技术飞快发展的同时,软件可靠性问题仍然被人冷落,软件危机由此产生。比如,IBM公司推出的360系列机的操作系统OS360的故障连续不断地发生,最终使该系列机陷入困境,大大损害了用户的利益。在计算机应用的其他领域,问题也大量地暴露出来,用户对软件的信任产生了危机。1965年国际电工委员会(IEC)可靠性专业委员会的成立,标志着可靠性工程成为了一门国际化的技术。可靠性工程(Reliability Engineering)的定义是:为获得可靠性而进行的一系列设计、研制和生产活动。
第二阶段:(1968-1987年),软件可靠性学科的形成时期
在1968—1978年间.以集成电路为主体的小型机逐渐得到了广泛的应用,在硬件技术迅速发展的推动下,以及在软件危机带来的用户对软件可靠性需求的紧迫性的拉动下,软件可靠性学科和软件工程学科得以建立和发展.其间,软件的可靠性问题是软件工程学得以建立的一个强大推动力,也是软件工程界力图解决的一个重要目标.软件工程学的理论和技术为可靠软件的设计、测试和管理提供了指南和工具.但是,它没有能力解决在系统开发中,用户要求对软件可靠性的定量评价的问题.于是,许多著名的软件工程专家开始致力于利用和改造硬件可靠性工程学的成果,使之移植到软件领域.由于他们的努力,迎来了软件可靠性学科的开创时期.这个时期的特点是:以软件可靠性为主题的国际学术会议频频召开,吸引了各界人土的关注.软件可靠性的数学模型尤如雨后春笋般地大量涌现.著名的JELINSKI—MORANDA模型、SHOOMAN模型、NELSEN模型、MILLS—BASIN模型都是在这个阶段推出的.此外,软件失效数据的积累和分析工作也有了初步发展.
在1978–1987年间.由于大规模集成电路的出现,导致计算机向大型机和微型机两个极端的方向发展,对软件技术的发展产生了深刻的影响.随着社会对软件的日益依赖,软件故障带来的风险也越来越大,软件可靠性重要作用的进一步增加是无容置疑的.这个时期的特点:各种验证和试用的软件可靠性模型相继推出;软件可靠性管理技术的开发已列入日程;软件可靠性标准化工作开始起步.国际电工委员会(IEC)的TC56技术委员会在1985年成立了软件可靠性工作组,并制定了软件可靠性和维修性管理规范(草案).在80年代中期,软件安全性问题受到了特别的重视,硬件可靠性和安全性分析中所采用的故障树分析法(FTA)、故障模式效应分析法(FMEA)和潜藏回路分析法(SCA),已在软件安全性分析中使用,并取得了令人鼓舞的成果.
3) 软件可靠性(Software Reliability )的定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数.系统输入将确定是否会遇到已存在的错误(如果错误存在的话)。
第三阶段:(1988年至今)软件可靠性向工程应用过渡的时期
超大规模集成电路的出现,将人类带向信息社会。软件逐渐成为全球经济的中枢。但是,由软件引发的、震惊科技界的故障持续不断,在某些类型的设备中软件故障甚至远远超过了硬件,成为系统的主要故障源. 下面我们仅列举几起人们印象深刻的事件。
􀁺 1995年据Murthy报道,数字设备公司在欧洲配置2000多套系统中发生的问题,主要是来自软件需求分析和接口的问题。
􀁺 在医疗设备方面,九十年代中期,美国Therac 25型放射治疗仪2#治疗模式(x射线模式)发生的54#故障,多次产生超计量辐射,造成了两人死亡和多人受伤的重大医疗事故。Therac 25是Therac 6的改进型,使用软件安全互锁装置,旧式的Therac 6使用机械安全互锁装置,却从来没有发生过类似故障。
􀁺 在军事装备方面,1991年海湾战争中,美军使用爱国者导弹,在拦截伊拉克飞毛腿导弹中,出现过几次拦截失败事件。经查明是软件计时系统的累积误差所致。
􀁺 在航天技术方面,1996年欧洲航天局首次发射阿丽亚纳5号火箭失败,直接损失5亿美元,还使耗资已达80亿美元的开发计划推迟了近三年,事故的原因是火箭控制系统的软件故障。
􀁺 90年代后半期,‘千年虫’问题震惊世界,各国投入了大量的人力和物力,耗资数千亿美元,虫害才基本上得到控制。‘千年虫’实际上就是一种特殊的软件故障。
􀁺 引起灾难性后果的软件实例很多。一个未公开的评估报告显示,17个主要的美国国防部(DoD)软件合同中,平均28个月的进度计划推迟了20个月才完成。一个4年应该完成的任务,7年还未提交,其中没有一个项目按时完成。由于存在软件问题,B1轰炸机的部署被推迟了,同样,580亿美元的A12飞机计划也被部分取消了。
软件可靠性的重要性从它的反方向更加清楚的呈现出来,在警钟齐鸣之中,沉痛的教训使客户空前地重视软件的可靠性。客户对软件可靠性的强烈需求有力地拉动了软件可靠性工程的发展。1988年,软件可靠性工程一词从此登上了学术讲台,并为学术界广泛认同,标志着软件可靠性的从纯粹的理论研究向工程应用转化。到目前为止,软件可靠性学科范围已
经扩展到软件可靠性、软件维护性、软件安全性和软件保障性。发
二、软件可靠性工程的形成及特征
1、软件可靠性工程的内涵
软件可靠性工程(Software Reliability Engineering)一词的最早出现是在1988年,AT&T贝尔试验室为它的一个内部软件可靠性系列教程,标以软件可靠性工程教程之名,软件可靠性工程一词从此登上了学术讲台。贝尔试验室在解释这个词汇时,明确说明,它不仅包括了软件可靠性模型及软件的可靠性度量,还包括应用模型和度量实现软件项目可靠性管理。1992年, AT&T贝尔试验室对软件可靠性工程的内涵作出定义,认为重要软件项目的开发应该制定一个软件可靠性大纲,一个好的软件可靠性大纲应包括以下四个系列20个工作项目:可行性和需求 (a.确定功能剖面b.失效定义和分类c.识别需方的可靠性需求d.进行权衡分析c.设置可靠性目标);设计和实施 (a.在部件中分配可靠性b.适应可靠性目标的工程措施c.基于功能剖面的重点资源d.对故障的引入和传播的管理e.外供软件的可靠性测量);系统测试和现场试验(a.确定运行剖面b.进行可靠性增长测试 c.跟踪测试进展d.项目必须的附加测试e.认可可靠性目标);售后和维护(a.建立必须的售后服务机构b.监视现场可靠性是否满足可靠性目标c.跟踪需方对可靠性的满意程度d.拟定软件的改进和提高进度e.产品和开发过程改进指南)。AT&T贝尔试验室的工作,为软件可靠性工程的实施指出了明确的方向。对软件可靠性工程的建立和发展,功不可没。
J.D.Musa认为软件可靠性工程是“一门以减少基于软件的系统在运行中不满足用户要求的可能性为目标的应用科学”, 同时说明软件可靠性工程研究的内容包括:
(1) 软件可靠性的分析:确定指标、设计开发过程、进行预计、分析失效严重性等。
(2) 软件可靠性的测量:用失效数据和软件可靠性模型估计(或测量)软件运行的可靠性。
(3) 软件可靠性的管理:利用可靠性测量和其它信息来控制和改进开发过程,并对采购或重用的软件进行管理。
(4) 开发过程的改进:确定影响软件可靠性的因素,改进费用效益关系。
2、软件可靠性工程的定义
1992年,美国航空与航天学会(AIAA)在其发布的标准“ANSI/AIAA R-01 3—1992推荐的软件可靠性实践’中定义软件可靠性工程是“应用统计技术处理在系统开发和运行期间所采集的数据,以便详细说明、预计、估计和评价基于软件的系统可靠性。” 这个定义的两个特点:一是应用统计技术来处理有关故障数据;二是把软件可靠性工程的目的仅限于“详细说明、预计、估计和评价基于软件的系统可靠性”,以此区分软件可靠性工程和软件工程界
限。
我们认为软件可靠性工程不仅仅是用数理统计的方法来详细说明、预计、估计和评价基于软件的系统可靠性,还应该包括软件可靠性的需求、分析、设计、实施、售后及维护、工程管理活动。因此,我们认为美国航空与航天学会(AIAA)发布的软件可靠性工程的定义是片面的,而软件可靠性工程的正确定义应该是:为获得软件可靠性而进行的一系列开发、维护软件产品的活动。这些活动包容了AT&T贝尔试验室提出的软件可靠性大纲的20个工作目录和J.D.Musa提出的软件可靠性的研究内容。这些活动的相关技术包括: 软件可靠性的分析(可靠性的需求分析、指标分配、故障树分析、故障模式及效应分析、特性分析等);软件可靠性的设计和实施(防错设计、容错设计、检错设计、纠错设计、故障恢复设计、软件可靠性增长等);软件可靠性的测量(用失效数据和软件可靠性模型进行软件可靠性的测试、预计、估计及验证);软件可靠性工程管理(利用可靠性测量和其它信息来控制和改进开发过程,并对采购或重用的软件进行管理,确定影响软件可靠性的因素,改进费用效益关系)。

3、软件可靠性标准化的进展
一个工程应用学科的发展,必然伴随着标准化的进程,同时,标准化的程度,也是该应用学科发展成熟度的重要因素。
软件可靠性的标准化,早在80年代中期就已起步了。从事这项工作的,既有国际标准化组织,也有兼具标准化职能的学术机构。它们的努力在九十年代结出了成果。在学术机构方面,1992年,美国标准化研究所/美国航空航天学会发布‘软件可靠性’标准号:ANSI/AIAA R—013—1992;1995年,美国电机电子工程师学会发布‘IEEE软件异常分类指南’标准号:1004.1—1995;1998年,美国汽车工程学会发布‘软件可靠性程序标准’ 标准号:SAE JA 1002 和‘软件保障性程序标准’标准号:SAE JA 1004。在国际标准化机构方面,国际标准化组织(IS0)和国际电工委员会(IEC),有明确的分工,IEC负责有关电子工程、电气工程领域的国际标准化工作,其它领域则由IS0负责。所以,IS0没有直接制定软件可靠性的标准,但是在著名的IS0-9000‘质量管理和与质量保证’系列标准中,明确指出可靠性是产品的重要质量属性,在IS0 9000—3‘IS0 9001在软件开发,供应和维护中的使用指南’局部的涉及了软件可靠性问题。因此,软件可靠性国际标准的制定,是由国际电工委员会(IEC)负责进行,经过长期的努力,现在有三个标准:
1、标准号:IEC 60300—3-6
名称:可信性管理体制—第三部分;应用指南—第六章:软件的可信性问题(dependability management-Part 3:Application guide-Section 6 :Software aspects of dependability)
发布时间:1997年
2、标准号:IEC 61704
名称:软件可信性评估的测试方法指南(Guide to test methods for dependability assessment of software):
发布时间: 待定
3、标准号:IEC 61713
名称:软件生存期全过程的可信性应用指南( Software dependability through the software life-cycle processes Application guide .)
发布时间: 2000年
4、软件可靠性工程的国际会议(ISSRE)
在软件可靠性工程国际会议(ISSRE)方面,l990年电子领域的学术权威组织IEEE计算机学会成立了‘软件可靠性分技术委员会’,在它成立的第一年就发起召开了第一届软件可
靠性工程国际会议,科技界的反映十分积极。此后每年召开一次软件可靠性工程国际会议成为定制,沿袭至今。会议的影响也日益扩大,1998年,IEEE可靠性学会正式署名作为会议的联合发起单位之一,使其在软件可靠性领域的学术权威性,进一步得到确认。这个软件可靠性工程国际会议,以倡导理论和实际应用相结合为宗旨,对软件企业产生了强大的吸引力。九十年代为软件可靠性发展作出贡献的学术会议,并非仅一家。比较有影响的还有:软件维护性国际会议(ISSM)和软件保证、确认国际会议(ISACC).
5、软件可靠性方法工具化的进展
软件可靠性理论应用的最大障碍是复杂的数学公式、浩繁计算和难于掌握的分析方法。从80年代中期开始,软件可靠性应用工具的开发逐渐受到关注,到90年代在以下几个方面取得了稳步的进展。
a.AT&T软件可靠性测量工具:
是一种应用软件工具,由AT&T开发,最初是供内部使用。
b.SMEFS (Statistical Modeling and Estimation of 1iability Function for Software)
由美国海军水面作战中心于80年代中期开发,90年代仍在继续使用。既适用于TBF模型也适用于FC模型,模型包括:Schneidewind模型、Yamada S-Shaped模型、BrookS&Motely型、 MuSa/0kumoto模型和Littlewood-Verfall模型。
c.SRMP (Software Reliability Modeling program)
由Reliability and Statistical Consultants公司90年代初开发,特点:采用似然函数、u图和y图对九种模型进行比较,优选出适用的模型。
d.SoRe工具
由美国国家科学研究中心LAAS试验室开发,它的特点是在选择模型前,先对数据进行趋势分析,借以判定软件是处于可靠性增长阶段、可靠性衰减阶段或无明显趋势阶段,然后再确定适用的模型。这个工具软件是在Macintosh操作系统下运行。
e. CASE (Computer Aided Software Reliability Estimation)
CASRE是在SMETFS的基础上,将各个模型的计算结果进行线性组合处理,从而提高了模型预测的精度。CASE可在Windows3.1, Windows 95,Windows 98和Windows NT下运行。
三、软件可靠性工程发展中需解决的问题
自从1992年以来,我国在软件可靠性方面的研究从以前的分散的零星研究转化为团队和规模研究,形成了一定规模的骨干队伍。到目前为止,我们的基础理论研究与国外十分接近,在工程应用方面,却有相当的差距。我们认为有以下若干问题需要继续研究和解决:
1、 结合实际项目,运用标准化的方法,逐步形成完整的实施软件可靠性工程的方法。在软件开发周期中,运用PDCA循环持续不断地改进软件可靠性的分析、设计和实现、测量评估、工程管理等的方法。
2、 对软件系统模块失效数据的收集,由有条件的项目开始,研究失效数据的收集处理系统及其机制。可以将硬件的失效数据规范的方法应用到软件的失效数据的研究中,为软件可靠性的快速预计、设计提供理论依据和实际分析手段。
3、 继续开展理论方法的研究
1) 数学模型的有效性和适用范围
2) 软件可靠性测试和验收方法的研究
3) 软件可靠性快速预计技术的研究
4) 软件安全性设计和分析方法的研究 ( 包括SFTA,SFMEA, SSCA和软件的Petri网分析方法)
5) 软件复杂性度量和软件可靠性的关系的研究
6) 大规模分布式软件系统的可靠性分析方法
7) 硬软件复合系统的可靠性综合分析方法
在我国的IT管理方面,已经注意到软件质量的重要性,也采取了一些管理和技术措施,但是这些措施基本上只限于实施软件工程的层面,远没有达到软件可靠性工程的深度。这种状况的出现,又主要源于对软件可靠性缺乏认识。从历史的角度,在我国高级技术和管理人员中,了解和懂得软件可靠性技术的寥寥无几。因此,我们必须跟踪国外软件可靠性技术的发展、继续开展和支持软件可靠性研究,同时还应加强宣传教育和推广应用的力度,使更多的技术管理高层人士认识软件可靠性,使更多的软件设计和管理人员能够掌握基本的软件可靠性方法。对重点工程的关键部分,应明确提出软件可靠性要求。此外应该对国际标准IEC61704和IEC61713的发布和实施予以关注,建议尽快的将其转化为我国的标准,并参照其内容,结合我国IT管理的需求,制定出国家质量标准。只要措施得力,我们完全有能力跟上国际发展的步伐。

附:参考资料或主要信息来源
1、二十世纪九十年代软件可靠性进展回顾,黄锡滋, 《装备质量》 第九期 2000年9月1日
2、软件的可靠性与安全性,黄锡滋, 科学出版社,1993年
3、系统可靠性设计理论与方法,黄锡滋, 科学出版社,1983年
4、软件可靠性工程发展现状,王纬,《装备质量》 第6期 2000年6月1日
5、IEEE Trans.on Reliab.No.3-sp 1998
6、http://www.rstcorp.com/
7、http://www.iec.ch/
8、http://www.sae.org/
9、http://www.iso.ch/
10、 http://ieee.org/
10、http://web.ansi.org/
11、 软件可靠性工程手册,Michael R.Lyu 主编,刘喜成 钟婉懿等译 1997.3
12、 软件可靠性工程案例研究,IEEE 计算机学会,1997

文件下载:文件名.rar
密码或说明:本地下载

给TA打赏
共{{data.count}}人
人已打赏
可靠性动态

质量和可靠性(IBM)

2009-5-23 18:18:12

可靠性动态

软件测试与软件可靠性之间的关系

2009-5-26 17:42:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索