隨著國(guó)防工業(yè)軟件開(kāi)發(fā)人員從 Ada 過(guò)渡到 Java 并升級(jí)其硬件,他們必須以保護(hù)現(xiàn)有應(yīng)用軟件的方式進(jìn)行。支持實(shí)時(shí)和安全關(guān)鍵型 Java 的混合語(yǔ)言開(kāi)發(fā)工具以及 Ada 和 C 等中堅(jiān)工具提供了無(wú)縫升級(jí)路徑,可在保留遺留代碼的同時(shí)提高工作效率。
隨著國(guó)防工業(yè)軟件開(kāi)發(fā)人員從 Ada 過(guò)渡到 Java 并升級(jí)其硬件,他們必須以保護(hù)現(xiàn)有應(yīng)用軟件的方式進(jìn)行。支持實(shí)時(shí)和安全關(guān)鍵型 Java 的混合語(yǔ)言開(kāi)發(fā)工具以及 Ada 和 C 等中堅(jiān)工具提供了無(wú)縫升級(jí)路徑,可在保留遺留代碼的同時(shí)提高工作效率。
國(guó)防工業(yè)越來(lái)越需要解決軍事硬件過(guò)時(shí)和缺乏對(duì)老化軟件程序的支持。國(guó)防部和國(guó)防承包商越來(lái)越多地尋求將當(dāng)前應(yīng)用程序遷移到新硬件上,并使用現(xiàn)代編程語(yǔ)言來(lái)增強(qiáng)系統(tǒng)功能,同時(shí)盡可能多地保留原始軟件投資。Java和多語(yǔ)言開(kāi)發(fā)工具的增強(qiáng)版本支持傳統(tǒng)和現(xiàn)代軟件的合并,同時(shí)降低了系統(tǒng)增強(qiáng)的風(fēng)險(xiǎn)和成本。
Ada相對(duì)于C/C++、Java的優(yōu)勢(shì)
軍事系統(tǒng)的壽命通常比其創(chuàng)建中使用的技術(shù)長(zhǎng)幾十年,這使得增強(qiáng)甚至
保持系統(tǒng)的能力變得極其困難。對(duì)于用Ada語(yǔ)言編寫(xiě)的軟件來(lái)說(shuō),這個(gè)問(wèn)題尤其嚴(yán)重 -曾經(jīng)是軍事系統(tǒng)設(shè)計(jì)的強(qiáng)制性要求。在工具可用性和經(jīng)驗(yàn)豐富的程序員數(shù)量方面,對(duì) Ada 開(kāi)發(fā)的支持遠(yuǎn)遠(yuǎn)落后于 C、C++ 和 Java 等當(dāng)代編程語(yǔ)言。因此,許多國(guó)防承包商尋求將此類(lèi)系統(tǒng)遷移到現(xiàn)代語(yǔ)言基礎(chǔ),以簡(jiǎn)化維護(hù)和未來(lái)的增強(qiáng)。然而,與此同時(shí),他們希望通過(guò)盡可能重用遺留軟件并利用基于標(biāo)準(zhǔn)的集成開(kāi)發(fā)環(huán)境 (IDE) 而不是專(zhuān)有工具集來(lái)最大限度地降低遷移成本。
但是,當(dāng)代語(yǔ)言并不能充分反映Ada中內(nèi)置的功能和屬性,而這些功能和屬性對(duì)于軍事應(yīng)用至關(guān)重要。
Ada專(zhuān)為嵌入式系統(tǒng)而設(shè)計(jì),包括實(shí)時(shí)操作以及直接訪(fǎng)問(wèn)和操作系統(tǒng)底層硬件的能力。Ada 也是一種“安全”的語(yǔ)言,其架構(gòu)和工具集可以防止編程錯(cuò)誤或在開(kāi)發(fā)過(guò)程的早期檢測(cè)到它們。
當(dāng)代語(yǔ)言在這些屬性中的一個(gè)或多個(gè)方面存在不足。傳統(tǒng)的Java缺乏確定性和直接操作底層硬件的能力。C和C++都缺乏編程保障,使得這些語(yǔ)言本質(zhì)上不安全,并使軍事系統(tǒng)開(kāi)發(fā)復(fù)雜化。內(nèi)存泄漏或?qū)Σ淮嬖趯?duì)象的引用等錯(cuò)誤可能導(dǎo)致現(xiàn)場(chǎng)致命的系統(tǒng)行為,但在 C 和 C++ 程序的開(kāi)發(fā)過(guò)程中很容易逃脫檢測(cè)。大型航空航天和國(guó)防開(kāi)發(fā)人員發(fā)現(xiàn),他們需要在 C 語(yǔ)言和 C++ 開(kāi)發(fā)中添加 250 多條設(shè)計(jì)規(guī)則,以確??煽康能浖O(shè)計(jì)。
Java獲得真正的?和安全
然而,隨著專(zhuān)用Java配置文件的開(kāi)發(fā),情況正在改善。實(shí)時(shí)Java(RTSJ)已經(jīng)問(wèn)世好幾年了,它解決了實(shí)時(shí)嵌入式系統(tǒng)的確定性需求,硬件級(jí)接口可以通過(guò)C來(lái)處理。此外,Java本身還包括支持關(guān)鍵任務(wù)系統(tǒng)軟件開(kāi)發(fā)的保護(hù)措施和語(yǔ)言功能(參見(jiàn)表1)。這些屬性使RTSJ與Ada相似,它能夠滿(mǎn)足軍事系統(tǒng)需求,同時(shí)利用Java工具和程序員的廣泛可用性。
圖1
Java社區(qū)中也有一種新的動(dòng)力,將語(yǔ)言的適用性擴(kuò)展到安全關(guān)鍵系統(tǒng)。JSR-302專(zhuān)家組正在定義一個(gè)“安全關(guān)鍵”的Java配置文件(SCJava)。RTSJ 的這個(gè)子集消除了許多類(lèi)庫(kù)以及垃圾回收和動(dòng)態(tài)
類(lèi)加載等功能,這些功能可能導(dǎo)致不可預(yù)測(cè)且可能不安全的代碼執(zhí)行;這也允許隨時(shí)創(chuàng)建以最高可靠性執(zhí)行的程序。JSR-302專(zhuān)家組的目標(biāo)是至少滿(mǎn)足DO-178B標(biāo)準(zhǔn)A級(jí)的要求,用于認(rèn)證航空電子系統(tǒng)軟件。安全關(guān)鍵型Java規(guī)范的草案版本預(yù)計(jì)將于2008年年中發(fā)布以供審查,SCJ將在年底前首次實(shí)現(xiàn)。
遺留遷移不可避免
遺留軍事系統(tǒng)問(wèn)題的完整解決辦法必須包括的不僅僅是適當(dāng)?shù)恼Z(yǔ)言;必須包括一種適當(dāng)?shù)恼Z(yǔ)言。但是,它還必須支持重用仍然有效的代碼。用新語(yǔ)言重寫(xiě)應(yīng)用程序可能會(huì)有風(fēng)險(xiǎn),因?yàn)樗偸菚?huì)引入更改。例如
,Ada使用對(duì)象,而C不使用,C++使用對(duì)象,但方式不同。適應(yīng)這種差異很容易將行為變化引入系統(tǒng)操作。重寫(xiě)代碼也會(huì)觸發(fā)重新測(cè)試代碼的需求,并且測(cè)試任務(wù)和安全關(guān)鍵型系統(tǒng)可能既費(fèi)力又昂貴。
因此,完整遷移解決方案的一個(gè)關(guān)鍵要素是能夠?qū)?Ada、C 和 C++ 等
遺留語(yǔ)言以及 Java 混合到緊密耦合解決方案中的開(kāi)發(fā)環(huán)境。這些工具,如DDC-I的基于Eclipse的OpenArbor框架,允許任何語(yǔ)言的每個(gè)程序元素能夠調(diào)用其他元素;它們還允許開(kāi)發(fā)人員從同一會(huì)話(huà)同時(shí)編譯和調(diào)試它們。再加上用于未來(lái)開(kāi)發(fā)的強(qiáng)大的語(yǔ)言(如SC Java),混合語(yǔ)言開(kāi)發(fā)和調(diào)試工具使開(kāi)發(fā)人員能夠重用遺留軟件并將其合并到當(dāng)代語(yǔ)言程序中,以合理的成本維護(hù)和增強(qiáng)軍事系統(tǒng)。
審核編輯:郭婷
-
JAVA
+關(guān)注
關(guān)注
19文章
2973瀏覽量
104905 -
C++
+關(guān)注
關(guān)注
22文章
2113瀏覽量
73742
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論