繁体
首页

第92章 职业道德和责任(4)(1 / 3)

经理的决定还会造成什么其他后果?假设该公司后来在另一个项目中使用了你的模块,比如说,对患者进行评估,以判断是否可以纳入新药物的研究中。一些疾病和药物对于不同种族的人可能产生不同影响。不准确的数据可能会威胁到参与该研究的人们的健康和生命,并且会以各种方式扭曲其结论,而损害后来使用药物的其他人。但是,你可能会说,我们在第8章和第9.2.3节中强调过,复用现有软件的人,尤其是在安全攸关的项目里,应审查该软件及其规约,以确保它满足新项目的标准。你认为这是他们的责任。但是,如果你处理缺失数据的方法没有写到规约中,那他们怎么会知道呢?也许有人会注意到,规约是不完整的。也许他们在重复使用它们之前会彻底对该模块进行测试,并发现了代码到底做了什么事情。然而,我们看到过太多人为错误的例子,所得到的教训是:作为一个负责任的专业人员,不要指望其他人都能完美地做好其本职工作。尽你所能,以确保你自己的部分不是促成失败的因素之一。

9.3.7 进度的压力

一个安全攸关的应用

你的团队正在开发一个计算机控制的设备,用于治疗癌症肿瘤。计算机可以控制一个光束的方向、强度和时机,用该光束来破坏肿瘤。因为出现了各种延迟,已经导致了该项目进度落后,而且最后限期马上就到了。你没有足够时间去完成所有的测试计划。该系统到目前为止测试过的常规治疗方案中都能正常运行。你是项目经理,你正在考虑是否要按时交付该系统,同时如果发现存在错误的话,团队会继续测试和制作补丁。

正如我们在第8章观察到的,经常有压力迫使我们减少软件测试。测试是在开发过程中的最后步骤之一,所以当最后期限接近时,测试计划往往会萎缩。

这里的核心问题是安全性。你的公司正在开发的是一台旨在拯救生命的机器,但如果它发生故障,可能会杀死或伤害患者。也许实际情况似乎是显而易见的,按时交付该系统有利于公司,但可能危及患者的安全——这是一个典型的“利润对安全性”的案例。但是,我们暂时先不做结论,而是进一步对这个案例进行分析。

你的决定会影响到哪些人?首先,使用该机器接受治疗的患者。任何故障都可能导致人身伤害或死亡。另一方面,如果机器延迟发布的话,一些可能可以治好的患者则可能不得不接受手术治疗。我们假定使用新机器进行治疗更好,因为它具有较少的侵入性,需要更少的住院治疗和恢复时间,并且总体上费用更低。对于一些患者来说,手术可能是不可能的,他们会因为用不到你的新设备而死于癌症。第二组利益相关者是将购买该机器的医院和诊所。如果他们计划在预定的时间启用该机器的话,那么延迟发布可能导致财务损失。然而,他们应该合理地期望,该机器的设计和测试是专业和完整的。如果你不告诉他们你还没有进行完整的测试,那么你就是在欺骗客户。第三,你的决定会影响你和你的公司(包括其雇员和股东)。延迟交付的负面影响可能包括损害你管理项目的声誉(对工资和提职可能带来影响),名誉的损失,可能带来公司股票价格下跌,以及影响其他合同而带来的损失,从而会造成公司的程序员和其他员工的工作职位被削减。作为项目经理,你拥有必须帮助公司把事情做好的义务。另一方面,如果系统造成患者受伤,同样的消极后果也都可能发生,另外还包括内疚和自责的个人感情,以及由于诉讼而造成的大额金钱损失。

这个简短的分析表明,交付一个没有经过完整测试的系统,可能对患者和其他利益相关者造成消极和积极的影响。这个问题不是简单的“利润对安全性”的问题。我们假设你是诚实的,试图在交付系统和延迟成本的风险之间做出权衡。然而,我们必须考虑可能会影响决策的人性的几个方面。一是更加看重短期和/或高度可能产生的影响。许多延迟成本是相当确定和直接的,而发生故障的风险是不确定的,而且会发生在未来。同时,人们倾向于使用的一个情形的固有的不确定性和一方面的真实论据,来证明做出错误的决定是有道理的。也就是说,他们利用不确定性来证明采取讨巧的策略是对的。要想抵制选择短期效应而忽视长期风险这样的诱惑,可能需要经验(对于专业和伦理问题),对Therac-25案例的了解和勇气。