技术开发 频道

提高软件质量 保障软件安全性

【IT168 技术文章】

    计算机软件质量问题一直是软件开发中的一个重要而棘手的问题。近年来,随着计算机应用范围的迅速扩大,计算机开始广泛地应用于工业控制、航天航空、医疗设备、银行、交通等领域,越来越深入人们的日常生活。计算机及其软件虽然改善了人们的生活水平与工作条件,但也更加直接地关系到人们的生命、财产与人类的生存环境的安危。从而,对软件质量提出了一个新的要求,即安全性。在人们憧憬着信息高速公路、多媒体等计算机新技术成为人们开拓崭新的应用领域的同时,西方工业国正在加紧提高软件质量,保障软件安全性的工作。它已成为西方全社会关注的重要问题。

    本文探讨软件安全性在我国计算机科学与软件产业发展中的战略地位。

    一、软件安全性关系人们的生命、财产和生态环境的安危什么是软件安全性?让我们先看几个实例。 ·在西方国家,计算机已用于核电站的控制与安全保护,一旦其软件发生故障,将会造成人员伤亡和环境污染。 ·在伦敦Heathrow国际机场,平均每三分钟就有一架飞机起落。如果调度飞机场飞机着陆次序的软件发生故障,将会造成飞机相撞的灾难。 ·波音747等大型客机都使用计算机自动导航系统,如果它发生故障,就可能造成机毁人亡的事故。 ·在西方国家,铁路信号系统已计算机化。英国已计划在不久的将来实现铁路信号和扳道的全部自动化。铁路交通的安全性将进一步依赖于计算机的正常运行。 ·在巴黎,由于使用计算机进行有效的调度和安全控制,地铁系统中火车的行驶速度得以加快,火车之间的间隔得以缩短。这些系统中的计算机及其软件具有一个共同的特征,这就是,它们的正确运行关系到人的生命安危。这样的系统是否可以依赖呢?让我们再来看几个例子。 ·由于控制放射性治疗设备的软件错误,在加拿大已经造成了多起癌症病人因受到过量射性辐射而死亡的事故。 ·在英国,由于放射性治疗设备中计算辐射量的软件错误,发生了癌症病人因放射性辐射剂量太低而得不到适当的治疗的事故。 ·在伦敦,救护车调度软件刚投入使用几小时就发生故障,造成急诊病人延误达十几小时。 ·飞机自动控制软件的错误造成了飞机在特技飞行表演时坠毁。这类因计算机软件错误而造成的事故引起了西方工业国家的高度重视,把这类一旦发生故障就可能危及人的生命、财产和生存环境的软件称为安全性关键的软件(Safety Critic al Software)。它们的根本特征是安全性具有至关重要的意义。所谓软件安全性,简单地说 ,就是计算机软件能够使其所控制的系统始终处于不危及人的生命、财产和自然环境的安全状态的性质。

    除此之外,安全性关键的软件还有如下重要特征。 1、高质量需求安全性关键的软件对软件质量往往具有很高的要求。例如,英国Sizewell-B核电站安全保护系统的可靠性要求失败率不高于10-4。美国联邦航空管理局用于空中交通控制的关键计算机系统的可靠性要求是系统总失效率低于10-7,即软件处于故障状态的时间每年不超过三秒钟。一个城市火车调度系统中,安全性关键的处理器的失败概率必须低于10-12/小时。民用航空系统对系统可靠性的需求是人们常常引用的数据,它要求在每小时操作中出现"空难性事故"的概率低于10-9。 2、高复杂性许多安全性关键的软件是实时系统(real-time system)和嵌入式系统(embedded syst em)。分布式系统和混成系统(hybrid system)也不鲜见。它们往往具有很高的复杂性。 3、高开发代价由于安全性关键软件本身的高度复杂性,以及所需满足的高质量需求,开发安全性关键的软件往往代价极大。有人曾作过统计,安全性关键软件的平均开发代价是约500美元一行程序。

    二、软件安全性已引起西方国家的高度重视安全性关键的软件引起了西方工业国的高度重视,投以巨资予以研究,并迅速采取相应的法律与管理措施,以保障这类软件的质量。如英国工贸部与科学与工程研究委员会(SERC )于三年前开始联合组织实施一个庞大的题为"安全性关键的系统"的研究计划(Safety Cri tical Systems Programme),设立软件安全性与可靠性研究中心,联合高等院校与工业界共同研究,第一阶段就投资逾三亿英镑。一批保障软件安全性的软件生产、使用和维护的规范与标准也开始实施。其他西方国家也采取了相应的措施。1994年底,由欧共体的ESSI(Euro pean Systems and Software Initiative Programme)出面组织,将英、德、法、丹麦、奥地利、意大利、瑞典、希腊等欧洲国家的软件可靠性和安全性俱乐部联合起来,组成欧洲俱乐部网ENCRESS,以利交流信息和合作研究。在学术界,软件安全性已成为国际上一个十分活跃的研究领域。计算机软件学术刊物近年来纷纷设立以安全关键的软件为题的专刊,如IEEE Transactions on Software Enginee ring、IEEE Software、Communications of ACM、Journal of Software Engineering,等等。一些重大国际学术会议也开始设立以安全性为题的分组。一批以计算机可靠性和安全性为专题的国际系列学术会议已经召开,如Safety-critical Systems Symposiums、IMA Con ferences on Dependable Systems、European Conferences on Dependable Computings、 International Conferences on Computer Safety、Reliability and Security (Safeco mp),等等。软件安全性不仅受到西方国家工业界和学术界的高度重视,它已成为西方社会一个普遍关注的问题。例如,伦敦救护车事件、放射性治疗设备事件都曾引起新闻媒介的关注。Siz ewell-B核电站安全保护系统的安全性论证(safety case)曾引起新闻媒介以及社会各界的高度关注。总之,软件安全性已成为西方工业国家政府、工业界、学术界以及社会各界关注的重要问题。

    三、保障软件安全性的战略意义为什么软件安全性具有如此重要的意义呢?我们从以下几个方面进行分析。

    1.忽视软件安全性的后果严重显而易见,忽视软件安全性将会造成严重后果。对于社会来说,灾难性事故的后果不仅是人员伤亡、财产损失,它还会造成环境的大规模破坏,对国民经济造成重大影响,其后果甚至会超越国界。对于一个工商企业来说,灾难性事故还意味着失去信誉,从而失去竞争力,最终失去市场,而招致失败。软件安全性在我国尚未引起普遍重视。随着国民经济的高速发展,计算机应用范围将会迅速扩大,计算机软件安全性也将日益显示出其重要性。目前,我国正在进行的"金桥"、"金卡"等"八金"工程将推动计算机应用的迅速发展,正在建设中的核电站、大型水利枢纽等也势必应用计算机进行控制。它们的安全性将关系到我国人民生命财产与生态环境的安危。如何保障这些软件的安全性,防止灾难性事故,已成为一个刻不容缓的课题。

    2.现有理论、技术和方法对软件安全性保障乏术多年来,对系统安全性和可靠性的研究积累了一定的理论、方法和技术,如系统潜在危险分析技术、可靠性分析技术、可靠性设计技术,等等。这些技术在保障物理系统的可靠性和安全性上取得了成效。但是,由于软件系统与物理系统的一些本质区别,这些技术不能有效地应用于软件的可靠性分析和安全性保障。例如,以物理器件发生故障的随机独立性为基础,器件多备份是提高物理系统可靠性的一个基本手段。但是,软件可靠性不能靠程序的多备份来得到。这是因为,软件故障绝大多数源于软件设计错误,不能简单地看作是随机独立事件。另一方面,软件理论研究和计算机科学的发展虽然提出了一些提高软件质量和可靠性的理论、方法和技术,如形式化方法、容错技术、软件工程的理论和方法,等等,在保障软件质量上也取得了一定的进展,但是,国际上计算机科学家普遍认为,由于安全性关键软件的高度复杂性和极高可靠性需求,这些理论、方法和技术尚不具备开发安全性关键软件的能力 ,甚至连测试一个软件系统是否具备10-4以上的可靠性的技术也未具备。总之,如何提高软件质量,保障软件安全性是一个涉及面广、难度大的研究课题。

    3.安全性关键软件的应用前景广阔安全性关键软件往往是高技术、大系统的核心部分,如大型客机、高速铁路、核电站、高度自动化工厂,等等,其应用前景十分广阔。由于现有理论、技术和方法对保障软件安全性乏术,软件安全性已成为制约计算机应用的主要障碍。可以说,21世纪的高技术市场将与安全性关键软件体戚相关。安全性关键软件的开发技术将是打开21世纪高技术市场的钥匙。1994年夏,微软公司、IBM公司等计算机厂商邀请了在英国的一些世界著名的计算科学家探讨21世纪计算机软件的发展方向与战略。与会专家一致认为,21世纪计算机软件发展的大方向将是质量的提高优先于性能和功能的改进。

    四、我国应重视软件安全性研究在我国,安全性关键软件的研究将具有特别重要的战略意义。

    原因有二:

    1.它是推动软件研究系统化、实用化、全面发展的龙头安全性关键软件的研究涉及面广。从开发方法上讲,它涉及软件开发的全过程和各种方法,包括软件工程、形式化方法、容错技术、测试技术等。从所涉及的系统类型上讲,安全性关键软件往往是实时系统、嵌入式系统、混成系统、分布式系统等。此外,安全性关键软件的研究还涉及计算机理论基础和软件理论基础的各个方面。因此,以攻克安全性关键软件的开发技术为目标,可以较系统地组织、协调我国软件研究,合理分配有限的科研资金和资源。而这一目标本身又具有极强的实用性,最终将会为推动我国高技术产业的发展作出积极贡献。

    2.它是推动软件产业健康、全面发展有龙头国际上,许多西方国家对安全性关键的软件的使用已开始实行许可证制度。在颁发安全性关键软件的使用许可证之前,必须对软件的安全性和其它质量指标进行全面的论证和测试。而目前我国尚未采取类似的措施。当引进国外先进技术时,我们必须对其安全性和其它质量指标重新进行论证、测试,以保证其可靠性。即使引进的软件在其原产国拥有使用许可证 ,这样的论证和测试也是必要的。这是因为,引进的软件为适应中国使用者的需要,往往必须对它进行人机界面的汉化等方面修改。对软件安全性和其它质量指标的论证和测试必须按照一定的软件开发规范和标准以及软件开发、维护和实用的管理规则进行,并由国家指定的机构实施。因此,开发与使用高质量、安全可靠的软件不仅是一个极其重要而难度很大的科研课题,而且涉及到软件开发的规范、软件标准化、软件开发、维护和使用的管理规则等行业管理中的许多重要问题。此外 ,它还关系到我国软件产品与国际软件生产的标准与规范的接轨,以及依法保护我国软件市场等问题。尤其是安全性关键的软件测试,可以防止低质软件进入市场和应用于安全性关键的系统中。因此,以保障软件安全性为目标,健全我国软件产业的管理机构和管理规范,将大大促进我国软件产业的健康发展。总而言之,提高软件质量、保障软件安全性具有巨大的社会价值和经济价值。

   五、几点建议鉴于以上分析,建议将提高软件质量、保障软件安全性作为我国"九五"计算机科学和软件产业发展的一个战略目标。为了达到这一战略目标,试提出具体建议如下:

    1.摸清家底对我国计算机在安全性有关的领域中的应用情况进行调查、登记,以便对这些软件进行安全性和质量论证和测试,从而保障这些系统的安全运行。安全性有关的应用领域主要包括 :交通、医疗设备、工业控制系统、核电站、航天航空,等等。

    2.建立软件安全性研究基地选择有一定研究基础的高等院校或其它研究机构,投资建立软件安全性研究中心。以此为基地,培养我国软件安全性保障工作人才,跟踪国际软件安全性研究的发展动态,进行国际学术交流,协调全国的软件安全性研究,并作为学术界与工业界联系的纽带,负责研究成果到生产技术的转换。

    3.投资软件安全性研究选择一批直接关系到安全性关键软件的开发、使用和维护的研究课题,给予较强的资助力度,优先投资,进行研究。例如,软件安全性需求分析与需求定义技术,软件安全性测试的理论、方法与技术,软件安全性分析与验证的理论基础与技术,软件结构与容错技术,软件可靠性分析的理论基础与方法等问题,直接关系到如何防止低质量、不安全软件的使用,研究成果将使软件安全性测试和论证建立在科学的基础之上。建议给予优先资助。

    4.健全软件行业管理规则和规范参照国际惯例,结合中国国情,尽快拟定并实施有关安全性关键软件的开发、使用和维护的软件行业管理规则和规范,以防止低质量、不安全软件的使用。

    5.建立软件质量和安全性论证和测试机构作为软件产业行业管理机构的一部分,建立软件质量和安全性论证和测试机构,负责对安全性关键软件的开发、使用和维护的宏观管理,其职能包括:(1)对安全性关键软件的登记 ;(2)软件安全性和质量的论证和测试;(3)发放安全性关键软件的使用许可证;(4)对安全性关键软件的维护过程的监督,等等。

 

0
相关文章