作者: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文章
8692瀏覽量
151920 -
操作系統
+關注
關注
37文章
6896瀏覽量
123749
發布評論請先 登錄
相關推薦
評論