自主系统发生灾难时,软件应负多少责任?
扫描二维码
随时随地手机看文章
过去几十年,信息系统计算重心不停在集中化与分布式之间摇摆,这为企业级应用从业者带来更多挑战。无论是工业、汽车还是航空航天应用,一套系统服役期往往会超过10年,甚至在15年以上,这类应用对可靠性与安全性等要求又比消费级应用高很多,所以传统开发方法将系统分解为不同的小模块,采用黑盒模式来进行开发,可以保证全系统可靠、简单、直观,但也带来了升级困难、不易扩展、成本高昂、维护复杂等诸多弊端。
归一化平台
为应对上述难题,风河公司的解决之道是推出了风河Helix虚拟化平台(Wind River Helix Virtualization Platform)。风河Helix虚拟化平台充分考虑系统的可扩展性与可兼容性,通过异构集成平台来跨越不同操作系统与硬件架构之间的鸿沟,又采用静态配置、动态配置以及动静态混合配置来适应不同系统对可靠与安全性需求,既能满足当前项目需求与合规性,也方便引入新的硬件、软件、框架或云服务,实现旧系统向新系统的无缝升级。
“Helix是统一的平台,一致性高,可扩展性高,维护方便,易于更新,”风河公司航空与国防业务发展总监Alex Wilson告诉探索科技(TechSugar),Helix虚拟化平台有四大特色。
首先是异构集成,一个软件平台支持多种操作系统(包括风河自产操作系统及第三方操作系统),并提供不同等级的安全机制;其次是抽象化,利用风河异构平台中间层,将芯片与应用分割开来,便于系统扩展升级;第三是安全隔离,风河Hypervisor技术为同一系统中的不同操作系统或应用提供安全有效的隔离机制,方便开发者更容易地实现系统整合;第四是统一整合,利用Hypervisor硬件虚拟化技术,开放人员可以用多核单板系统来替换多主板/多处理器系统,既可保持多操作系统的优势,又能降低多处理器集成过程中的复杂度与风险。
Helix平台将系统复杂度收纳在自己平台之内,大幅降低了用户开发维护的难度,但如何保证复杂异构系统之间相互配合时的安全性与可靠性呢?
风河公司航空与国防业务发展总监Alex Wilson
“在核电站、飞机驾驶系统等高安全应用场景,Helix平台将采用静态配置,尽可能减少系统功能子集,增加可靠性与安全性,” 针对探索科技(TechSugar)的这一疑问,Alex表示,风河Helix平台利用不同的配置选择来应对不同的安全等级要求,“在这些应用的核心理念就是减少子集,减少复杂度,确保安全性,绝对不会用到Linux或Windows系统。”
软件外包在航空业已是惯例
在Helix平台推荐应用中,高安全应用将采用静态配置,以确保系统可靠与安全;富生态应用将采用动态配置,以支持复杂多任务及多操作系统类应用场景;而汽车应用则是典型的混合配置场景,自动驾驶功能对安全性要求高,所以只适合静态配置,而人机交互等其他应用,则可以用动态配置来实现更丰富的功能支持。
Hilex平台配置组合
但即便采用最高安全规格要求来开发软件,也并不是万无一失。比如,波音公司已经承认,将升级软件以应对近期波音737MAX在埃塞俄比亚航空公司空难事件暴露出的安全风险。
“过去20年,航空航天领域一直都是外包软件,其他很成功的机型,例如波音787或中国的C919,都采用过软件外包。” 业界有声音认为,波音将部分软件外包应为此负责,但Alex Wilson认为,软件外包是航空航天领域的传统,埃航空难不一定会影响航空业的软件外包商业模式,“不论外包与否,都有非常严格的规范来对软件系统进行检验,但问题是现在软件代码量越来越多,不同功能软件之间的配合要求越来越多,从自动化阶段进化到自主阶段,如何确保系统级的绝对安全,是未来航空航天软件业的核心问题。”
“DO-187C认证标准对安全要求非常高,通过认证的成本也极高,” Alex Wilson向探索科技(TechSugar)解释,传统上,航空行业有非常严苛的软件功能安全认证标准,但当前的问题是人工智能在自主系统中将发挥主要作用,而传统软件功能测试对人工智能的测试覆盖并不完整。“传统软件测试完成后,功能都可以预测,而加入人工智能以后,当前的测试标准很难预测所有状况,这是一个很大的挑战。”
软件在自主系统中的责任
测试覆盖率不完善,可以从技术上去逐渐解决,但自主系统责任认定上还有需要立法的支持。严格意义上的自主系统将不需要人类介入,但如果发生事故导致损失,由谁来承担责任现在还没有明确的法规可以遵循。
以汽车自动驾驶系统为例,不管厂商在宣传上如何暗示自己的自动驾驶系统如何高级,但使用手册上都要明确注明司机不得在行驶中手离方向盘。
“万一出现事故,不是软件的问题,责任由人类驾驶来承担,” Alex表示汽车公司做出声明,就是做好责任切割,“这让我们思考一个有关自主系统的社会问题,人类到底可以让软件做多少的决定,百分百都交给软件控制是否可行?如果系统控制权百分百交给软件,那么软件到底应该是扮演什么样的角色,人类又如何通过测试来确保功能安全,如果出现意外该如何处理,这些都都需要我们去思考。”
Alex强调,这些问题并不是时效性不高的远期问题,而亟待人类尽快讨论出可行解决方案,“就我们的观察来说,越来越多的系统正走在从自动化系统转变成自主系统的路上。”