在航空电子设备和无人机应用中使用Java

毫无疑问,航空电子开发者是最保守的软件工程师, 然而Java现在也开始渗透到这个专业之至的行业了。原因很引人注目。在20世纪90年代设计的Java,提供比C和C++更好的抽象,更强大的面向对象的封装。类型系统的严格执行降低了软件工程的错误。内置语法和库特性,使多核处理器上的多线程编程变得简单。同时Java的普及使得它更容易招募Java开发者,许可Java开发工具,找到和重用现成的软件组件。最后,Java平台提供的可移植性和可扩展性的好处,远远超过了用更多种古旧语言实现的好处。

与C和C ++开发相比,典型的Java开发中需两倍人员,以保证新功能的实现过程中的生产力,而在典型的软件维护活动要多达十倍。在这个度量上,软件维护包括着不断的小量改进现有软件,以修复bug ,或调整性能,或改变功能,软硬件平台移植;以及整合两个大型软件系统的功能,形成一个整合了各个独立子系统功能的更大的软件系统。

传统的软件工程正越来越受益于安全至上的航空开发,因为用于航空电子设备和无人机的软件规模和复杂性一直在增长。与此同时,在软件组件模块化组装时的增长需求中,放进了这些系统的运行练习。

支持无人机性能灵活配置的模块化软件架构,我们用框图来说明其各机载组件间的交互。面向对象的设计原则,使得独立开发的组件可以模块化组装。组装的灵活性被用于支持软件和硬件性能的发展,以及为个别任务定制的机载功能。

自治系统

近来的无人机显著能力更强。一些自主无人机现在板载运行自己的任务规划软件。即自主操作的无人机可以更快地应对意外的威胁和机会。他们还可以从更加灵活的传感器组捕获和吸收更多数据,并根据这些信息的可用性做出更明智的决策。

在过去,无人驾驶飞机的机载软件足够小,以使每个这样的系统上的所有软件为可以得到充分的开发,并通过一个两三人的小团队测试。今天,自主飞行的机载软件要大得多,有时大到了百万行代码的规模。系统这么大,不能为每个单独的应用程序从头开发。相反,安全关键代码本身成为了一个知识产权的库,被维护和发展了数十年,横跨多个相关产品,并且软件可以为每个任务部署不同的配置。该软件必须是可重复使用的,且可以很容易地为每个不同的应用程序配置。由于微处理器迅速过了时,同时典型的处理器和许多实时操作系统都具有不少于五年的商业寿命,我们的软件也必须可移植以应对不同代的处理器和多种操作系统更新。

最近一个由欧洲委员会资助的项目强调了这些趋势。被称为DIANA,全称“分布式设备独立先进的航空电子应用”(Distributed equipment Independent Advanced avioNics Applications),这个项目探索了Java作为一种给力的技术,可以减少的航空电子设备软件开发的成本。关键是努力设计实现一种先进的航空电子平台,定名为AIDA,全称 “架构独立分布式航空电子设备”(Architecture for Independent Distributed Avionics)。缩减成本主要通过缩短开发时间,降低了软件集成时间,降低认证成本。这些好处是是利用了Java的可移植性和可扩展性优势,从而大大提高了易用性,包括软件组件可以重复使用,视不同的情况可以具体定制,在不同执行上下文内有效集成。部署Java在ARINC 653内核的分区中,AIDA方法允许安全认证凭证开发,以使每个应用程序可以被直接重用,部署为一个新软件的一部分

机载任务规划软件,用于波音公司的实验机—J-UCAS X-45C,在Java中实现并部署在PERC超虚拟机上。(照片由波音公司提供) 。

DIANA的AIDA一个有趣的方面是软件组件的动态重配置。由于安全关键软件系统是由许多独立开发的软件组件,在这个领域里有些情况下,这些独立开发的组件可能需要被编译成不同配置。无人机每个发射任务之前,相应的要配置好无人机的特殊传感器组和在地面上武器系统。根据特定任务的目标,无人机可用静止图像摄像机,红外(IR)摄像机,电子窃听设备,能够检测核武器和核材料,激光雷达,云穿透雷达,探地雷达的传感器,或声纳传感器来部署。在大多数情况下,可从UAV的机载传感器的数据量远远超过将数据传输到一个命令控制地面站的可用无线电通信带宽。出于这个原因,在船执行数据分析上是非常可取的。如果无人机携带着武器,配置也可以做出不同任务的武器选择。在许多情况下,当无人机初始开发完成后,新的传感器,新武器,新的分析算法就可以用了。能够重新设定无人机的机载软件的以适应这些新功能的话,就可以大大增加无人机的通用性和实用性。

冗余

一个次动机是保持航空器工作,即使某些板载的航空电子设备的计算机可能已失败。典型的系统都提供了冗余飞行计算机。如果其中一台飞行计算机出现故障,商用飞机或无人机可能仍然能够维持良好的服务。

假设某商业飞机或无人机通常运行有三个通用AIDA计算机。每个AIDA计算机运行一个分区的内核,并且能够可靠地执行多关键任务软件模块。为了商业活动或启动某个特定的使命,特定的最小软件功能集必须存在。在某些情况下,某些模块必须冗余运行在不同的计算机或在安全内核的不同分区上。三个AIDA计算机中若有一台无法启动,它会被禁用,并从飞机上拆下。如果换上的电脑不能立即使用,飞机仍可能有资格获得商业飞行或无人机的任务,前提是剩下的两个AIDA计算机可以被配置为运行达到冗余要求水平所有必需的软件模块。在地面上重新配置软件模块,做和在空中飞行得一样好的模拟飞行,如果一个硬件模块在这时发生故障,也会被视为DIANA研究工作的一部分,但还没有得到深入的研究。

不同的航空电子软件模块具有不同的重要级别。无人飞机用于军事用途通常比商业飞机,和几个已用Java语言编程的无人驾驶飞机相比安全要求不太严格。典型的应用包括波音公司的ScanEagle,EADS的Barracuda,波音公司的J-UCAS X-45C和BAE的Taranis 。X-45C和Taranis的项目都是自动飞机,以及机载任务规划软件,他俩的应用程序都是用Java写的。

当下在航空电子应用中Java程序多数应用于不太重要的系统,我们需要定义Java的标准子集,以适合于在最高安全重要级别下使用,DO- 178B A级,自2006年以来一直在运行。制定这个标准的主要目的是为了简化代码生成模型和运行时环境,以减少做全A级认证所需的工作量。例如,传统的Java支持动态类加载和跟踪垃圾回收,这两者大大增加了运行时环境的复杂性和Java源代码到本地机器代码的翻译量。安全至上的Java标准草案中删除了这两个特性。静态链接器取代了动态类加载,安全堆栈分配取代了跟踪垃圾回收。

传统的Java和安全至上的标准之间的其他区别是:

  • 安全至上的Java支持只是标准库的一个很小的子集;
  • 安全至上的Java提供了更大范围的实时优先级和更精确地限制了优先级调度程序的行为;
  • 安全至上的Java为所有线程同步使用优先级上限模拟器。

安全至上Java标准草案还增加了直接访问设备的I / O寄存器和实现在Java语言中的第一级中断处理程序的能力。即使对于一个安全至上的系统的最高集成组件,Java的使用也很迫切,因为Java是不是更便携,更模块化的C,C++和Ada ,因为相比招募其他语言开发者,招聘 Java开发人员更容易。

总结

综上所述,为航空电子设备软件使用Java,提供了更高的人员生产力,增加了现成的软件组件和开发工具的供应量,更容易集成自主开发的软件组件,以及更低的软件维护成本。Java语言的经济性和规模相关使之更容易招聘Java开发人员。传统的Java已经被部署在多种无人机的应用,需要对小心翼翼地解决认证问题,时刻注意虚拟机的实现和软件,。传统的Java可以在不太重要的应用中,如在DO- 178B级别 C和级别D中使用,并且它可以用在不被DO- 178B准则调节的军事和无人驾驶飞机的应用中。

为了支持最严谨的DO- 178B A级认证要求,如可能需要在商业无人机空域范围内自动工作,目前正在开发一个预计会在2011年完成的一个规范完整的Java的安全至上子集。这个安全至上的子集不同于传统的Java制约库,它使用安全的堆栈分配,而不是一个垃圾回收堆,取消动态类加载的支持,但增加对设备的I / O和第一级中断处理支持。

这篇文章的作者是开尔文尼尔森,首席技术官, ATEGO系统(加利福尼亚州的圣地亚哥) 。欲了解更多信息,请访问http://info.hotims.com/34457-536

原文链接: defensetechbriefs 翻译: ImportNew.com - 邢 敏
译文链接: http://www.importnew.com/8979.html
[ 转载请保留原文出处、译者和译文链接。]

关于作者: 邢 敏

二流程序员,三流作家,不入流极限运动员(新浪微博:@大泰如_邢敏

查看邢 敏的更多文章 >>



可能感兴趣的文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部