繁体
首页

第87章 错误、故障和风险(8)(2 / 2)

8.20 假设你在负责一个计算机系统的设计和开发,用来控制一个游乐园中的过山车系统。座椅上安装的传感器将确定哪些座位已经被占用,因此该软件可以考虑其重量和平衡。该系统可以在运行过程中控制机器的速度和持续时间。游乐园对该系统的目标是,一旦机器启动之后,就不需要人来操作这个系统。

列出你为了保证系统的安全性可以或应该做的一些重要事情。考虑开发、技术问题、操作说明等所有方面。

8.21 在对一个大型银行的计算机系统的程序做了一个修改后,一个员工忘记输入一些命令。其结果是,由银行收取的大约800,000笔直接存款直到第二天才记到客户账户里。该错误的一些潜在后果是什么?如果你是银行行长,需要向新闻媒体或你的客户起草一份声明,你在声明中会说些什么?

8.22 谁是“好人”?在本章讨论过的人或机构中挑选两个,他们的工作有助于使系统更加安全或减少了错误的消极后果。请说明你为什么会选择他们。

8.23 我们提到过,有些手机上包含数百万行的计算机代码。估计一下如果把一百万行代码打印出来,会有多少页。(请说明你所做的假设。)

8.24 在许多医院,医生会把病人的处方药订单输入到计算机系统中。这些系统可以消除在阅读医生笔迹时可能产生的错误,并且可以自动检查与该病人正在服用的其他药物是否有冲突。在一个系统上,当另一名医生使用了前一个医生忘了退出的终端,该系统把第二个医生开的药分配给了第一个医生的病人。描述为了减少这类错误,该系统应该包含的两个功能。

8.25 海军导弹舰艇上的一名技术人员在校准燃料阀的计算机程序中错误的地方输入了一个零。该程序用另一个数字除以输入的数字。由于计算机中“除零”是一个非法操作,因此造成了程序崩溃。该程序故障导致舰艇上的整个局域网故障,造成该舰艇有三个小时在水中无法移动。

以下这些人对于该事件拥有什么程度的责任:技术人员、编写燃料阀校准程序的人、选择和购买舰艇局域网的人、销售网络软件的软件公司、舰艇的船长。这些人都做错了什么事情(如果有的话)?应该做什么才能减少在未来发生类似问题的机会?是否还有任何其他人应该对此承担一定的责任?(当然,在没有更多详细信息的情况下,你可能无法给出一个完整和确切的答案。如有需要,请说明你所需要的额外信息,并说明它会如何影响你的答案。)

8.26 美国FDA维护了超过120000种药品的注册信息。由美国健康和卫生部组织的一项调查发现,其中大约34000种药物的信息是不正确或过时的。而且在该目录中漏掉了大约9000种药物。该数据库的信息如此过时,可能造成什么风险?该数据库中的信息为什么会过时?请给出你能想到的尽可能多的原因。

8.27 曾经有这样一个故事:在一个大型零售公司的存货系统中,有一个仓库“丢失”了长达三年。在此期间,该仓库没有收到任何货物,也没有运出任何货物。因为使用一个单独的系统来处理工资,所以该仓库员工还在继续领取薪水。这在什么程度上是一个计算机故障?还有什么其他重要的因素属于该问题的一部分?

8.28 如果你有一整天失去了手机,你会受到什么影响?

8.29 请选择你所熟悉的一种非计算机活动,并且它拥有一定的风险(如滑板、潜水或在一家餐馆打工)。描述其中的一些风险和安全措施。把这些风险与计算机系统相关的风险进行类比。

8.30 在Therac-25的案例中,缺失了成功的高可靠性组织(第8.3.1节)的哪些因素?在航天飞机灾难(第8.3.1节)中的哪些影响因素也出现在了Therac-25的案例中?

8.31 软件开发人员有时会被建议“针对故障来设计(design for failure)”。这可能是什么意思?试着给出一些例子。

8.32 这个练习针对的是计算机科学专业的学生或写过软件的人。描述你如何在你写的程序中添加冗余或自检功能。如果你真的曾经这样做过,介绍一下这个项目和你采用的方法。

8.33 假设你是在所选择的领域中工作的一个专业人士。描述为了减轻在本章中讨论过的任意两个问题所产生的影响,你可以做什么具体的事情。(如果你想不到和你的专业领域相关的任何问题,也可以选择你感兴趣的其他领域。)

8.34 设想一下在未来几年中,数字技术或设备可能发生的变化,描述一个它们可能带来的,与本章中讨论的问题有关的新问题。