《软件工程(第4版?修订版)》—第1章1.10节实时系统的例子

1.10 实时系统的例子
软件工程(第4版•修订版)
下面举个实时系统的例子,我们来看阿丽亚娜5型火箭中的嵌入式软件。阿丽亚娜5型火箭属于欧洲航天局(ESA)。1996年6月4日,在它的首次航行中,发射大约飞行了40秒钟后开始偏离航向,在地面控制系统的引导下,火箭通过远程控制被销毁。销毁这个未保过险的火箭不仅损失了火箭本身,而且也损失了它装载的4颗卫星。这次灾难共造成5亿美元的损失(Newsbytes home page 1996;Lions et al. 1996)。

从火箭导航系统到它各个组成部分的运行,几乎所有方面都与软件有关。火箭发射的失败以及随后的销毁提出了很多与软件质量有关的问题。在后面的章节中会看到,调查委员会在调查原因时,把重点放在了软件质量及软件质量保证上。在本章,我们根据火箭的商业价值来探讨质量问题。

许多组织机构在阿丽亚娜5型火箭中有投资,包括ESA、法国中央国家航天局(CNES,负责阿丽亚娜计划的全面指挥),以及其他12个欧洲国家。不断的延期和一连串问题损害了阿丽亚娜火箭计划,这些问题还包括在1995年测试引擎的过程中,由于氮气泄漏导致两位工程师死亡的事故。但是,1996年6月的事故是首次直接由软件失效导致的。

这次事故的商业影响远远超过了5亿美元的设备损失。1996年,阿丽亚娜4型及其以前型号获得了全球一半以上的发射合同,领先于美国、俄罗斯以及中国的运载火箭。因此,这次事故不仅使计划的可信度大受损害,也使阿丽亚娜火箭的商业前景充满危机。

新的生意部分基于新火箭能够把更重的负荷运载到轨道。阿丽亚娜5的设计目标是能运载一颗重达6.8吨的卫星或两颗合在一起重达5.9吨的卫星,进一步的目标是希望在2002年之前达到更大的运载能力。这些增加的运载能力具有明显的商业优势。通常,操作人员通过多颗卫星共用一个火箭来减少发射费用,因此,阿丽亚娜能够同时运载多家公司的卫星。

在这个例子的背景下,我们考虑一下质量的含义是什么。阿丽亚娜5型火箭的销毁证实,这个灾难性后果的原因是客户错误地说明了需求。既然这样,开发人员可能声称系统仍然是高质量的,只不过是根据错误的需求规格说明构造了系统。的确,调查委员会在总结事故原因和补救措施时指出:

委员会的调查结果是基于阿丽亚娜5项目组完全的公开介绍和文档,这些文档从总体上表明,从工程技术以及文档的完整性和文档可跟踪性来说,阿丽亚娜5的程序是高质量的(Lions et al. 1996)。

但是从用户和客户的观点来看,规格说明的过程已经足够好,能够确定规格说明中的缺陷,并且在灾难发生前,使客户能够改正规格说明中的缺陷。调查委员会认识到:

SRI(最终找到的引起问题的子系统)的厂商仅仅是遵循了给定的规格说明,即在检测到任何异常的情况下,处理器将终止执行。异常的发生并不是因为偶尔的失效,而是由于一个设计错误。异常被检测到了,但是并没有被适当处理。原因是采用了这样一种观点,即在软件发生故障之前,就应该认为它是正确的。委员会有理由相信阿丽亚娜5软件设计的其他部分也采纳了这个观点,而委员会支持相反的观点:应该假定软件是有故障的,直到应用了目前可接受的最好的实践方法并能够证明它是正确的(Lions et al. 1996)。

在后面的章节中,我们将更详细地研究这个例子,探讨开发人员和客户决策中的设计、测试和维护的含义。我们将看到,在开发初期,低质量的系统工程是如何导致一系列决策失误,进而又是如何导致一系列灾难发生的。另一方面,包括ESA和调查委员会等所有相关机构的开诚布公,以及高质量的文档和尽快得知真相的最真诚的愿望,促成了眼前问题的快速解决和防止未来类似问题发生的有效计划。

系统的观点使调查委员会和开发人员可以把阿丽亚娜5看作子系统的集合。这个集合反映了对问题的分析,正如我们本章论述的那样,不同的开发人员能够开发具有明显不同功能的独立子系统。例如:

发射器的飞行姿态和它在空间中的运动由惯性参照系统(SRI)测量。它具有自己内部的计算机,根据捷联式惯性平台的信息,通过激光陀螺和加速器计算角度和速度。来自SRI的数据通过数据总线传输到机载计算机(On-Board Computer,OBC),该计算机通过伺服阀门和液压执行器执行飞行程序、控制固体推进器的喷射器和Vulcain低温引擎(Lions et al. 1996)。

但是综合的解决方案必须包括一个具有所有构件的总体视图,它把各个部件合在一起考虑,以决定各部件之间的“联系”是否紧密、合适。在阿丽亚娜5的例子中,调查委员会提出客户和开发人员应该一起工作以找出关键软件,并确保它不仅能够处理预测到的行为,而且能够处理未预测到的行为。

这意味着,关键软件(从某种意义上来说,该软件的失效会使任务处于危险的境地)必须在一个非常详细的层面标识出来,异常行为必须细化,并且一个合理的备份策略必须将软件失效考虑进去(Lions et al. 1996)。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-13 21:16:19

《软件工程(第4版?修订版)》—第1章1.10节实时系统的例子的相关文章

《软件工程(第4版?修订版)》—第2章2.6节实时系统的例子

2.6 实时系统的例子软件工程(第4版•修订版)阿丽亚娜5型火箭的软件系统包含了从阿丽亚娜4复用的软件.复用的目的是为了降低风险.提高生产率和质量.因此,开发新的阿丽亚娜软件的任何过程模型都应当包含复用活动.尤其是过程模型必须包含一些活动以检查可复用构件的质量,还要包含一些安全措施,以确保复用的软件在新系统的设计环境下能够正确地工作. 这样一个过程模型有可能像图2-17所示的简化模型.图示模型中的方框表示活动.从左边进入方框的箭头表示资源,从右边离开方框的箭头表示输出,从顶部进入的箭头表示控制或

《软件工程(第4版?修订版)》—第1章1.9节信息系统的例子

1.9 信息系统的例子软件工程(第4版•修订版)本书每一章的结尾都有两个例子,一个是信息系统,另外一个是实时系统.我们把本章中描述的概念应用到每一个例子的相关部分,这样你就能够了解概念在实践中的含义,而不仅仅是理论上的含义. 信息系统的例子是从James和Suzanne Robertson写的Complete Systems Analysis:The Workbook, the Textbook, the Answers(Robertson and Robertson 1994)中抽取的(已获许

《软件工程(第4版?修订版)》—第2章2.5节信息系统的例子

2.5 信息系统的例子软件工程(第4版•修订版)让我们考虑一下用哪种开发过程来支持皮卡地里电视广告程序系统,回想到对什么时间可以销售何种类型的广告会有许多约束,并且条例可能随着广告标准局及其他制订条例的团体的管理而变化,我们希望建立一个易于维护.易于改变的软件系统.甚至存在这样一种可能,当构建系统的时候约束也可能发生变化. 就此系统而言,瀑布模型可能太严格了.因为在需求分析阶段完成之后,它几乎不允许变化.原型化方法对开发用户界面来说可能是有用的,因此,我们可能想在模型中包含某种类型的原型化.但是

《软件工程(第4版?修订版)》—第2章2.10节学期项目

2.10 学期项目软件工程(第4版•修订版)现在是FCO的Loan Arranger系统开发过程的早期阶段.你还没有获得该系统全面的需求.现在所有的只是系统功能的概要描述及如何使用该系统来支持FCO业务的感觉.你还不熟悉概要中使用的许多术语,因此,你要求客户代表准备一份术语表.他们给你的术语描述见表2-3. 以上信息澄清了一些概念,但仍然远不是一组好的需求.不过,你能够据此对如何进行开发作出一些初步的决策.请读者回顾在本章中所介绍的过程,决定哪些过程适于开发Loan Arranger系统.针对每

《Ruby程序员修炼之道》(第2版)—第1章1.1节进入Ruby的世界

第1章 进入Ruby的世界 Ruby程序员修炼之道(第2版) 本章主要内容 Ruby语法的生存工具箱① Ruby基础编程指引:程序编写.保存.运行和错误检查 Ruby安装指南 Ruby的扩展机制 Ruby中易用的命令行工具,包括交互式Ruby解释器(irb) 本书的内容是Ruby基础,而本章是基础中的基石.本章的目标是让读者在开始学习Ruby之前掌握足够的知识和技巧. 接下来读者将看到Ruby的基本语法和技术,以及Ruby的运行机制:如何写一个程序,怎样使用Ruby运行程序,以及如何把一个程序分

《计算机科学概论(第12版)》—第1章1.10节通信差错

*1.10 通信差错 当信息在一台计算机的各个部分之间来回传输,或在月球和地球之间来回传输,又或者只是被保存在存储器中时,最终检索到的位模式有可能和最原始的不一致.灰尘颗粒.磁记录面的油脂或者出了故障的电路,都可能使数据被错误地记录或读取.传输通道上的静电干扰可能会损坏部分数据.在某些技术条件下,普通的背景辐射(background radiation)可以改变存储在机器主存储器中的模式. 为了解决这样的问题,人们开发了许多编码技术来检测甚至校正错误.现在,由于这些技术被大规模地内置于计算机系统

《Ruby程序员修炼之道》(第2版)—第1章1.4节易用的Ruby工具和应用程序

1.4 易用的Ruby工具和应用程序 安装Ruby后,就可以得到一组重要的命令行工具,它们被安装在配置信息bindir所指定的文件夹中,通常是/usr/local/bin./usr/bin或者/opt同等的目录中.(可以使用require "rbconfig"去测试一下RbConfig::CONFIG["bindir"]返回的结果.)这些命令行工具具体是以下几个. ruby:解释器. irb:Ruby交互式解释器. - rdoc和ri:Ruby文档工具. rake:

《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.6节模拟面试问答

1.6 模拟面试问答 本章介绍的是软件测试相关的背景,以及软件测试的发展情况等.身为软件测试员,应该或多或少地了解软件测试的发展动态,及其相关的历史事件等内容,这样无论是在与同行交流,向开发人员介绍和讲解测试,还是在应聘面试中,都会有更多的话题. 一般在应聘过程中,面试官可能会问到以下一些问题,读者可以根据自己的了解以及在本章中学到的内容做出相应的回答. (1)您觉得目前的软件测试行业的现状是怎样的? 参考答案:目前的软件测试行业在国内正在蓬勃地发展中,但是由于起步比较晚,虽然大部分公司都已经设

《Ruby程序员修炼之道》(第2版)—第1章1.3节Ruby扩展和编程库

1.3 Ruby扩展和编程库本节的要点并不是关于Ruby标准库的参考.曾在引言中解释过,本书的目标不是编写一本Ruby语言的参考文档,而是教会读者使用Ruby语言并掌握它,并最终拓宽视野. 相应地,本节的目标是讲述扩展的工作方式,即如何使用Ruby运行这些扩展.它们之间技术实现的不同,并最终能让用户自己编写扩展和库文件的扩展架构. 随Ruby发布的扩展通常全部作为标准库来引用.标准库包括为不同项目和任务所提供的扩展,如数据库管理.网络.数学领域.XML处理等.标准库精密的结构每次改变,哪怕只有一