作者丨Tina、张晓楠
2月28日,据外媒报道,此前波音公司为美国宇航局(NASA)研发的载人飞船“星际客机”(CST-Starliner)发射升空失败的消息终于有了实锤:波音公司承认失败原因在于他们对“星际客机”的软件测试不充分,导致一个明显Bug未被检测出来。
这是这家拥有百年历史与强大工程实力的航天巨头,在MAX空难风波后遭受的最新打击。
此前波音公司在软件设计、软件外包、研发管理等方面暴露出的问题不仅再一次被诟病,而且这次在软件测试上的错误又成了新的焦点。
一次被寄予厚望的飞行北京时间12月20日19时36分,波音公司的新一代载人飞船“星际客机”自卡纳维拉尔角发射升空,执行该飞船的第一次飞行测试任务。按照计划,飞船在这次无人试飞中将与国际空间站对接,为宇航员送上圣诞礼物。
火箭的发射本来一切正常,飞船按计划被送入了远地点千米、近地点77千米的亚轨道。
但是就在与火箭分离后,“星际客机”飞船上的一个关键设备出现了异常,我们可以简单理解为飞船的一个时钟错误,让飞船误以为自己正处于提升近地点的变轨过程中。
在预设程序里,变轨是需要很高精度的姿态和轨道控制的,因此“星际客机”飞船的48台姿轨控推力器开始疯狂工作,在短时间内消耗了大量燃料。
在下面的直播画面截图中,我们能清楚地看到飞船的多台推力器正在工作。
(任务控制中心直播截图)
在发现异常后,任务控制人员第一时间尝试向飞船注入正确指令,手动消除影响,但不凑巧的是,当时飞船正好处于两颗TDRS中继卫星的覆盖交接区,因此指令没有注入成功。
由于“星际客机”消耗了过多的燃料,与国际空间站的对接试验不得不取消,原定于12月28日返回的飞船不得不提前到22日返回地球。
(工作人员正在回收“星际客机”飞船)
最终,国际空间站的宇航员们没有等来年的圣诞礼物,“星际客机”也于北京时间12月22日20时58分在著名的白沙导弹靶场着陆。
小小计时器引发大问题美国宇航局(NASA)局长布里登斯廷在随后的新闻发布会上总结说,原本飞船将通过“入轨点火”改变其行进轨道,与空间站会合,但当时用来控制飞船活动的自动计时器错估了任务阶段,导致飞船提早消耗了过多燃料,地面控制中心曾试图发出指令覆盖计时器的程序,但由于又出现了通信延迟,该指令最终没能追上燃料的消耗速度,与空间站的对接任务因此搁浅。
波音太空发射部门高级副总裁奇尔顿表示,问题出在软件上,而非飞船机体本身,飞船的推进、航行及生命保障系统也都运行如常。
尽管这次任务从隔热板到环境控制到着陆,许多项目都进展顺利,但由于这个小小的计时系统的问题,导致了这次飞行任务的失败。而且在实验室测试软件的过程中,工作人员主要关心的是确保载人飞船和运载火箭两部分能够正确通信。测试小组证明了没有通信问题,但是他们走了捷径,所以从未发现载人飞船读取错误时间的问题。
奇尔顿说,公司将集中精力寻找“失败的根本原因”,但他说,“我们不知道为什么计时器会报错,公司一直在寻找软件编码上的问题,但是我们还没有找到问题出在哪里。”
软件测试不能走捷径为了解开谜团,波音公司和美国宇航局在去年12月底组织了独立调查小组,分析这次失败的原因,并于2月中旬发出调研报告。
这份报告显示,飞船和火箭助推器的时间存在偏差,而飞船的MissionElapsedTimer提前轮询了火箭助推器的时间,从而进行了错误的计时并进入了错误的轨道。在发现这个问题之后,波音继续搜寻了可能存在的未被发现的其他问题。他们很快的发现了第二个Bug,该问题可能导致在将服务舱与机组成员舱分开时发射错误的推进器。
这些明显的错误完全可以被提前“测试”出来。于是调查小组对测试的流程进行了检查,发现测试人员为了缩短测试时间,走了捷径。他们将整个飞行过程分成了几个小单元分别进行测试,但最后却没有做完整的、端到端的集成测试。也就是说根本没有进行时长为25个小时的整体测试。
美国宇航局载人航天业务负责人道格·洛夫罗表示,波音公司的问题是“根本性的”和广泛的“软件过程故障”。波音的这种软件质量控制,还不知道会导致系统中到底存在多少个Bug,“到底只有这两个还是会有几百个”。
波音公司表示将重新对代码进行审核,这涉及到一百万行代码,波音公司官员说,审查需要多长时间还不确定。
波音曾经的鲜血教训“星际客机”载人飞船的失败正值波音公司遭遇多年历史上最黑暗的时期。波音一直因空难事故丑闻缠身。年10月,一架狮航波音MAX客机发生坠机事故,造成人丧命。几个月后,一架埃航波音MAX客机也坠毁,机上人罹难。目前波音MAX机型仍处于停飞状态。
回顾波音MAX的两次致命飞行,一个自动控制下压机头的名为MCAS的自动纠正失速系统受到最大的诟病。
前波音公司资深软件工程师MarkRabin认为最重要的一个原因就是软件外包,而将软件外包的起因则是波音裁撤资深研发以削减成本。
《彭博社》在一则报告中指出:波音MAX把软件系统外包给了印度外包公司HCL和Cyient的软件工程师,比起美国正职软件工程师每小时35至40美元的工资,印度外包的时薪只需要9美元。更进一步,波音的分包商与供应商同样选择将工程外包到印度,降低成本以保证利益最大化。
波音公司在年曾发布了0份裁员通知,而这些被裁减的人大部分在IT部门。该公司当时拥有,名员工,其中包括18,名工程和技术人员,但他们计划是削减10,个工作岗位。一位前波音软件工程师在年表示,企业将裁掉90%经过了熟练培训的员工,用“外包”来代替他们,从而缩减开支。
软件外包是一个需要发包方和承包方高度协作的过程。服务周期长、可变因素多,这使得公司在软件外包过程中面临重大风险。波音的型飞机计划70%使用外包,最终导致了延期三年还交付不了,波音表示:“我们同时在技术、工具和供应链上做了太多改变,超出了我们的管理能力”。
同时波音的组织结构也存在较大的问题。在波音公司,高级工程师主要向各型号飞机的业务主管汇报工作,然后才向技术端的总工程师汇报。这种模式造成的问题是:工程师一旦发现问题,因为可能造成飞机的研发进度滞后,通常会首先面临来自高管的压力,因为这些高管的工作就是保证在Deadline前完成任务。
从民用到航空,软件测试有多重要?波音公司发言人戈登·约翰德罗(GordonJohndroe)在电子邮件中说,“星际客机”载人飞船发生的故障与两起致命的波音MAX客机坠毁事故之间“无法直接对比”。约翰德罗说,“鉴于任务要求和条件的特殊性”,航天软件开发“采用了不同的方法和人员”。
但航空安全网站AirSafe.