随着国防工业软件开发人员从 Ada 过渡到 Java 并升级其硬件,他们必须以保护现有应用软件的方式进行。支持实时和安全关键型 Java 的混合语言开发工具以及 Ada 和 C 等中坚工具提供了无缝升级路径,可在保留遗留代码的同时提高工作效率。
随着国防工业软件开发人员从 Ada 过渡到 Java 并升级其硬件,他们必须以保护现有应用软件的方式进行。支持实时和安全关键型 Java 的混合语言开发工具以及 Ada 和 C 等中坚工具提供了无缝升级路径,可在保留遗留代码的同时提高工作效率。
国防工业越来越需要解决军事硬件过时和缺乏对老化软件程序的支持。国防部和国防承包商越来越多地寻求将当前应用程序迁移到新硬件上,并使用现代编程语言来增强系统功能,同时尽可能多地保留原始软件投资。Java和多语言开发工具的增强版本支持传统和现代软件的合并,同时降低了系统增强的风险和成本。
Ada相对于C/C++、Java的优势
军事系统的寿命通常比其创建中使用的技术长几十年,这使得增强甚至
保持系统的能力变得极其困难。对于用Ada语言编写的软件来说,这个问题尤其严重 -曾经是军事系统设计的强制性要求。在工具可用性和经验丰富的程序员数量方面,对 Ada 开发的支持远远落后于 C、C++ 和 Java 等当代编程语言。因此,许多国防承包商寻求将此类系统迁移到现代语言基础,以简化维护和未来的增强。然而,与此同时,他们希望通过尽可能重用遗留软件并利用基于标准的集成开发环境 (IDE) 而不是专有工具集来最大限度地降低迁移成本。
但是,当代语言并不能充分反映Ada中内置的功能和属性,而这些功能和属性对于军事应用至关重要。
Ada专为嵌入式系统而设计,包括实时操作以及直接访问和操作系统底层硬件的能力。Ada 也是一种“安全”的语言,其架构和工具集可以防止编程错误或在开发过程的早期检测到它们。
当代语言在这些属性中的一个或多个方面存在不足。传统的Java缺乏确定性和直接操作底层硬件的能力。C和C++都缺乏编程保障,使得这些语言本质上不安全,并使军事系统开发复杂化。内存泄漏或对不存在对象的引用等错误可能导致现场致命的系统行为,但在 C 和 C++ 程序的开发过程中很容易逃脱检测。大型航空航天和国防开发人员发现,他们需要在 C 语言和 C++ 开发中添加 250 多条设计规则,以确保可靠的软件设计。
Java获得真正的Ö和安全
然而,随着专用Java配置文件的开发,情况正在改善。实时Java(RTSJ)已经问世好几年了,它解决了实时嵌入式系统的确定性需求,硬件级接口可以通过C来处理。此外,Java本身还包括支持关键任务系统软件开发的保护措施和语言功能(参见表1)。这些属性使RTSJ与Ada相似,它能够满足军事系统需求,同时利用Java工具和程序员的广泛可用性。
图1
Java社区中也有一种新的动力,将语言的适用性扩展到安全关键系统。JSR-302专家组正在定义一个“安全关键”的Java配置文件(SCJava)。RTSJ 的这个子集消除了许多类库以及垃圾回收和动态
类加载等功能,这些功能可能导致不可预测且可能不安全的代码执行;这也允许随时创建以最高可靠性执行的程序。JSR-302专家组的目标是至少满足DO-178B标准A级的要求,用于认证航空电子系统软件。安全关键型Java规范的草案版本预计将于2008年年中发布以供审查,SCJ将在年底前首次实现。
遗留迁移不可避免
遗留军事系统问题的完整解决办法必须包括的不仅仅是适当的语言;必须包括一种适当的语言。但是,它还必须支持重用仍然有效的代码。用新语言重写应用程序可能会有风险,因为它总是会引入更改。例如
,Ada使用对象,而C不使用,C++使用对象,但方式不同。适应这种差异很容易将行为变化引入系统操作。重写代码也会触发重新测试代码的需求,并且测试任务和安全关键型系统可能既费力又昂贵。
因此,完整迁移解决方案的一个关键要素是能够将 Ada、C 和 C++ 等
遗留语言以及 Java 混合到紧密耦合解决方案中的开发环境。这些工具,如DDC-I的基于Eclipse的OpenArbor框架,允许任何语言的每个程序元素能够调用其他元素;它们还允许开发人员从同一会话同时编译和调试它们。再加上用于未来开发的强大的语言(如SC Java),混合语言开发和调试工具使开发人员能够重用遗留软件并将其合并到当代语言程序中,以合理的成本维护和增强军事系统。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !