作者:BENJAMIN BROSGOL,DR. DUDREY SMITH
FACE [未来机载能力环境] 方法是一项政府-行业联合软件标准和商业战略,用于获取负担得起的软件系统,促进全球国防计划中便携式能力的创新和快速集成。FACE——最初只关注航空电子设备,但现在已扩大到包括广泛的应用目录,用于整个实时系统范围——并不直接解决质量或适用性问题。由于这些特征在实践中显然很重要,因此组件开发人员的自然问题是如何满足可移植性的明确FACE目标以及软件可靠性,安全性和安全性的任何特定领域要求。部分答案是选择适当的软件开发技术和语言。
FACE 参考体系结构由五个部分组成,每个部分都有一组定义的要求:
操作系统段 (OSS)。OSS 是其他 FACE 段的软件基础,为分区、进程/线程管理和内存管理提供服务。它还可能包括运行状况监视、故障管理和生命周期管理等功能。
输入/输出服务部门 (IOSS)。IOSS 在 PSSS 一致性单元 (UoC) 和为给定平台提供的 IO 设备之间提供标准接口。
特定于平台的服务部门 (PSSS)。PSSS 包括设备服务、公共服务(例如,日志记录或设备协议中介)和图形服务。它们在便携式组件段 (PCS) UoC 和 IOSS 之间提供标准接口。
运输服务部门(TSS)。TSS为来自其他细分市场的UoC提供通信服务,包括分发,路由,状态持久性和数据转换。
便携式组件部门 (PCS)。PCS UoC 提供特定的应用程序功能,仅使用 TSS 接口进行数据通信,仅使用 OSS 接口进行操作系统支持。
图1:人脸参考体系结构示意图。经The Open Group许可转载。
满足给定段要求的组件称为相对于该段的“一致性单位”。FACE 一致性计划定义了验证、认证和正式认可注册软件符合 FACE 技术标准的流程,并指定了证明符合各个细分市场要求的政策和程序。
开放源码软件及其界面
FACE 参考架构的基础是 OSS(图 2),它通过 ARINC 653 和 POSIX 应用程序编程接口 (API) 为其他段提供标准接口。当编程语言运行时支持库(通常情况)与其服务的接口是通过语言语法而不是 FACE API 时,它们被视为 OSS 的一部分。
图2:操作系统段 (OSS) 及其界面。
因此,编程语言运行时与其他 OSS 组件在关键方面有所不同。而不是由 API 指定 - 考虑到编译器实现之间的差异,这将过度约束 - 运行时接口由一组语言功能(所谓的功能集)定义。运行时的实现可能会也可能不会通过对 FACE API 的调用来实现功能集的功能。更一般地说,OSS组件与其实现中所需的较低级别服务之间的接口(所谓的底部接口)不受FACE技术标准的定义或约束。
接口配置文件
符合 FACE 标准的组件可以部署在具有不同安全和/或安保要求的各种环境中。因此,FACE技术标准为OSS接口定义了一组配置文件。按照普遍性的递增顺序,它们是:
安全性:这是一个最小的接口,旨在支持具有高安全保证要求的应用程序。它保证了实时确定性行为,并需要时间和空间划分。
安全:这由两个子配置文件组成,安全底座和安全扩展。这些针对的是具有安全认证要求的系统。这两个配置文件保证了实时确定性行为,并建议但不要求时间和空间分区。
通用:在此配置文件中,不保证实时确定性,并且时间/空间分区是可选的。通用型材适用于安全/安保保证水平较低的组件。
语言很重要
编程语言的选择是系统设计过程中的基本决策之一。源代码是开发、验证和维护的工件,也是安全或安保认证所需的许多分析的主题。尽管原则上几乎任何编程语言都可用于开发高保证软件,但在实践中,当所选语言明确设计为可靠性、安全性和安全性时,软件生命周期成本就会降低。FACE技术标准特别引用了四种候选语言 - C,C++,Ada和Java - 其中,Ada最符合这一标准。Ada特别适用于需要符合安全配置文件或其中一个安全配置文件的组件,避免了缓冲区溢出等C和C++漏洞,并且还避免了Java的非确定性问题(垃圾收集,线程语义)。
Ada 通过支持健全的软件工程实践、强制类型安全的编译时检查以及强制实施动态约束(如数组索引边界和标量范围)的运行时检查,帮助满足高保证要求。Ada 并发功能的确定性子集(称为 Ravenscar 配置文件)允许将 Ada 并发用于需要满足高保证认证要求的应用程序,例如用于机载软件的 DO-178B 或 DO-178C。
便携性是FACE方法背后的驱动力,也是Ada的关键目标。编程语言面临的挑战是在不牺牲运行时效率的情况下以独立于平台的方式定义语义。Ada 通过多种方式实现这一目标。首先,它为并发(任务)、内存管理和异常处理提供了一个高级模型,具有跨所有平台的标准语义,可以映射到目标系统提供的最有效的服务。这与 FACE 参考体系结构中对语言运行时的处理完全一致。使用 Ada,开发人员还可以以独立于计算机的方式表达类型的逻辑属性(例如整数范围、浮点精度、记录字段/类型),然后编译器可以将其映射到有效的底层表示形式。数据结构(布局、对齐、地址)的物理表示有时由系统要求指定,Ada 允许在程序逻辑中定义这一点,但与目标相关的属性分开,以便于维护。
功能集
提供OSS配置文件的基本原理 - 更高的保证级别意味着对通用性的限制 - 也适用于编程语言。因此,FACE技术标准为C,C++,Ada和Java定义了相应的限制集(功能集)。安全性和安全性功能集指定运行时功能的子集,并限制在更高保证级别上可能存在问题的其他通用功能。
FACE 技术标准的 3.0 版为 Ada 定义了两个通用功能集:一个用于 Ada 95,它允许大多数语言,另一个用于 Ada 2012。Ada 2012 通用功能集包含 Ada 95 集和多个 Ada 2012 功能,但尚未包含基于契约的编程(如图 3 所示)。Ada 的安全和安保功能集仅针对 Ada 95 定义,而尚未为 Ada 2012 定义。这些功能集引入了进一步的限制,例如将并发功能限制为 Ravenscar 配置文件允许的功能。
图3:Ada 2012 基于合约的编程示例如下所示:子程序前置条件和后置条件。
Ada 2012标准引入了重要的功能,特别是“基于合同的编程”,它直接支持安全和安保,并通过主要防御系统提供商使用的编码标准实现。Ada 2012 在广泛的目标平台上实施,包括已通过或正在计划通过 OSS 一致性认证的实时操作系统 (RTOS)。鉴于 Ada 2012 的成熟度和优势,正在考虑在更新 FACE 技术标准时将基于合同的编程和其他 Ada 2012 功能添加到 Ada 的安保和安全功能集中。
面孔:向前迈进
寻求开发符合 FACE 标准的组件的组织需要遵守 FACE API 以实现可移植性,但在开发和验证技术的选择方面具有相当大的灵活性。对于需要高保证的应用程序,Ada 提供了内在优势,并具有可支持所有版本语言标准的开发环境。例如,AdaCore的GNAT Pro实现了Ada的安全扩展功能集,并将在未来的FACE版本中支持Ada功能集。GNAT Pro的Ravenscar运行时间可用于Wind River的VxWorks 653和Lynx Software Technology的LynxOS-178 RTOS为多个版本的FACE技术标准实现的安全配置文件,允许开发人员设计具有安全和确定性行为的可移植并发程序。
Ada 在军事和商业航空电子项目以及其他关键应用中的成功使用历史悠久,FACE 组件开发人员可以利用 Ada 的优势在相关保证级别生成可移植代码。Ada 的重用不仅仅是在小型图书馆的层面上;航空电子设备开发人员已经将几乎完整的生产线可更换单元 (LRU) 和功能应用模块移植到不同的主机开发环境和不同的目标中。Ada的设计并正在用于FACE方法所针对的应用程序和环境,无论是在新项目还是现有系统的升级中。开发人员可以将 Ada 用于符合其保障需求的 FACE 配置文件(安全性、安全基础、安全扩展、通用)。
审核编辑:郭婷
-
接口
+关注
关注
33文章
8612浏览量
151294 -
操作系统
+关注
关注
37文章
6838浏览量
123380
发布评论请先 登录
相关推荐
评论