隨著國防工業軟件開發人員從 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),混合語言開發和調試工具使開發人員能夠重用遺留軟件并將其合并到當代語言程序中,以合理的成本維護和增強軍事系統。
審核編輯:郭婷
-
JAVA
+關注
關注
19文章
2970瀏覽量
104838 -
C++
+關注
關注
22文章
2110瀏覽量
73696
發布評論請先 登錄
相關推薦
評論