軟件俱樂部的第一條規(guī)則:如果它沒有壞,不要談?wù)撍5牵@在許多情況下是不可行的,例如當(dāng)由于系統(tǒng)相關(guān)原因必須遷移運(yùn)行良好的代碼時。這在安全關(guān)鍵系統(tǒng)中成為一個大問題,在這些系統(tǒng)中,更改代碼可能會觸發(fā)許多其他昂貴且有風(fēng)險的活動。那么設(shè)計師該怎么做呢?這里解釋了如何衡量團(tuán)隊的目標(biāo)以及應(yīng)該考慮哪些選項。
將安全關(guān)鍵型系統(tǒng)遷移到新技術(shù)可能是一個代價高昂且有風(fēng)險的過程,開發(fā)人員應(yīng)盡可能避免。然而,在某些情況下,出于財務(wù)或性能原因,遷移是可取的,或者由于硬件過時和新要求而不可避免。面臨遷移的開發(fā)人員需要仔細(xì)考慮系統(tǒng)更改的類型和程度,以比較內(nèi)部活動與設(shè)計服務(wù)支持的好處。
部署在航空航天和國防領(lǐng)域的安全關(guān)鍵嵌入式系統(tǒng)的使用壽命通常超過單個系統(tǒng)組件的使用壽命。技術(shù)發(fā)展的快速步伐很可能在系統(tǒng)本身退役之前至少需要更改其中一個組件數(shù)年甚至數(shù)十年。反過來,此類硬件更改可能會引發(fā)開發(fā)人員需要將系統(tǒng)軟件遷移到新技術(shù)以確保持續(xù)的可維護(hù)性。
許多系統(tǒng)更改可以觸發(fā)軟件組件遷移。例如,外圍設(shè)備、通信總線或協(xié)議可能會發(fā)生變化,從而迫使代碼段遷移到新硬件。目標(biāo)硬件或處理器可能會過時,就像基于 Intel 80860 的系統(tǒng)一樣,迫使整個系統(tǒng)軟件遷移到一個全新的平臺。可能會出現(xiàn)新的功能要求或認(rèn)證標(biāo)準(zhǔn),迫使系統(tǒng)設(shè)計結(jié)合以前不需要的實時操作系統(tǒng) (RTOS)。同樣,新標(biāo)準(zhǔn)的實施、監(jiān)管機(jī)構(gòu)(如 FAA)對認(rèn)證的新要求以及與新系統(tǒng)互操作的需求可能會產(chǎn)生將軟件遷移到新平臺的需求。
對開發(fā)環(huán)境的更改也可能引發(fā)遷移系統(tǒng)軟件的需要。開發(fā)和維護(hù)應(yīng)用程序的主機(jī)過時,就像 VAX/VMS 主機(jī)一樣,當(dāng)故障硬件的備件變得難以找到時,可能會迫使系統(tǒng)軟件遷移到新的開發(fā)工具。開發(fā)工具本身的過時或應(yīng)用程序工具或語言專業(yè)知識的喪失可以啟動向新工具的遷移,以確保開發(fā)人員可以繼續(xù)支持已安裝的系統(tǒng)。同樣,RTOS 的過時可能會促使軟件遷移到新平臺。
即使是業(yè)務(wù)變化也會刺激遷移。與 RTOS 或其他軟件組件相關(guān)的生產(chǎn)版稅會影響系統(tǒng)的盈利能力。隨著利潤的縮小,開發(fā)人員可能會選擇遷移系統(tǒng)軟件以消除此類版稅。
降低成本和風(fēng)險
無論是什么觸發(fā)了硬件或軟件的變化,遷移系統(tǒng)軟件都涉及成本和風(fēng)險。軟件遷移不僅意味著更改軟件及其伴隨的引入錯誤的風(fēng)險,還意味著重新測試和可能重新認(rèn)證軟件。開發(fā)和測試工作的綜合成本可能相當(dāng)可觀,尤其是對于必須滿足嚴(yán)格要求的安全關(guān)鍵系統(tǒng)。
遷移因素
成功遷移的一個關(guān)鍵——最小化成本和風(fēng)險——是徹底了解遷移的影響。開發(fā)人員需要考慮許多因素,包括:
性能:新處理器/RTOS/平臺能否滿足系統(tǒng)的實時期限要求?
資源限制:軟件是否適合系統(tǒng)內(nèi)存和寄存器可用性的限制?
RTOS 影響:將 RTOS 更改或添加到曾經(jīng)裸板環(huán)境中可能會改變代碼執(zhí)行順序或時序。它還可能增加系統(tǒng)復(fù)雜性并改變內(nèi)存需求。
字長:字長的變化,比如從 16 位到 32 位,將如何影響現(xiàn)有代碼?計算算法、指針、計數(shù)器、上溢/下溢條件和執(zhí)行速度會受到字長變化的影響。
工具可用性:主機(jī)或目標(biāo)平臺的變化是否也意味著工具集的變化?用于創(chuàng)建和維護(hù)系統(tǒng)軟件的開發(fā)工具可能不適用于主機(jī)系統(tǒng)和目標(biāo)處理器或 RTOS 的給定組合。
數(shù)據(jù)布局:編譯器將數(shù)據(jù)映射到寄存器和內(nèi)存的方式各不相同。這種變化可能會導(dǎo)致與軟件中隱含或預(yù)期的映射發(fā)生沖突。
可擴(kuò)展性:軟件遷移可能需要升級或增強(qiáng)功能以??滿足新要求。工具和系統(tǒng)資源需要支持此類增強(qiáng)功能。
可追溯性:將遷移的軟件追溯到原始版本的能力可以通過證明軟件沒有改變來幫助降低測試成本。
遷移過程中發(fā)生的變化越多,發(fā)揮作用的因素就越多。最低風(fēng)險的遷移是只改變系統(tǒng)的一個方面,例如主機(jī)開發(fā)平臺。如果原始軟件開發(fā)系統(tǒng)和軟件工具在當(dāng)前主機(jī)平臺(例如運(yùn)行 Microsoft Windows 的 PC)上可用,則這是可行的。僅更改開發(fā)主機(jī)對系統(tǒng)和軟件的其余部分的影響很小。
開發(fā)人員應(yīng)該尋求創(chuàng)造性的方法來將更改的數(shù)量保持在最低限度。例如,如果新主機(jī)平臺上沒有開發(fā)工具,則仿真可以提供切換工具集的替代方法。在 PC 上運(yùn)行的 VAX 仿真器已被證明成功地允許繼續(xù)使用工具,并且由此生成的二進(jìn)制目標(biāo)代碼通常與原始代碼相同。工具、源代碼和目標(biāo)代碼沒有改變,減少了重新測試和重新認(rèn)證的需要。
工具更改需要編譯器專業(yè)知識
當(dāng)工具集必須改變時,開發(fā)人員面臨著額外的挑戰(zhàn)。編譯器將源代碼映射到底層硬件結(jié)構(gòu)的方式各不相同,例如內(nèi)存尋址和寄存器使用。除非開發(fā)人員仔細(xì)約束編譯器的行為,否則這些變化可能會導(dǎo)致目標(biāo)代碼發(fā)生變化。充其量,這會觸發(fā)重新測試并可能重新認(rèn)證軟件的需要。在最壞的情況下,這些更改可能會在執(zhí)行期間導(dǎo)致意外且可能存在缺陷的系統(tǒng)行為。
在不引起其他更改的情況下更改工具集要求開發(fā)團(tuán)隊具有編譯器行為方面的專業(yè)知識,而這正是應(yīng)用級工程師通常缺乏的專業(yè)知識。為了避免花費(fèi)時間和精力來獲得所需的技能,開發(fā)團(tuán)隊可以向外部尋求幫助。設(shè)計服務(wù)組織通常具有使用各種工具集的經(jīng)驗,并且可以將這些經(jīng)驗用于確保工具更改不會觸發(fā)軟件更改。
設(shè)計團(tuán)隊?wèi)?yīng)盡可能避免一些更改,例如將應(yīng)用程序從舊式編程語言轉(zhuǎn)換為當(dāng)前編程語言。團(tuán)隊?wèi)?yīng)該利用舊語言和新目標(biāo)硬件的開發(fā)系統(tǒng),而不是轉(zhuǎn)換。這將并發(fā)更改和風(fēng)險的數(shù)量限制在兩個:開發(fā)系統(tǒng)和目標(biāo)硬件。
改變語言涉及許多可能的陷阱。生成的應(yīng)用程序?qū)⑴c原始應(yīng)用程序不同,需要進(jìn)行昂貴的重新測試和重新認(rèn)證。其他因素也起作用。生成的代碼將具有不同的布局,并且可能不再適合可用內(nèi)存;數(shù)據(jù)布局將不同,不再正確映射到底層硬件;性能和時間方面將發(fā)生變化。應(yīng)用程序必須在源代碼級別進(jìn)行修改,這將需要培訓(xùn)軟件工程師使用新的編程語言以及應(yīng)用程序的設(shè)計和內(nèi)部工作。
盡管如果沒有一個程序員接受過應(yīng)用程序編程語言的培訓(xùn),遷移到一種新語言可能很誘人,但這應(yīng)該是最后的手段。在采取這條路線之前,請考慮用舊語言培訓(xùn)程序員。精通 Java 或 C++ 等相對復(fù)雜的當(dāng)前語言的程序員不會發(fā)現(xiàn)學(xué)習(xí)另一種語言是不可逾越的。
設(shè)計服務(wù)提供專家協(xié)助
另一種可能性是聘請?zhí)峁┍匾Z言專業(yè)知識的設(shè)計服務(wù)。對于針對軍事和航空電子系統(tǒng)的 Ada 和 JOVIAL 等專業(yè)語言,設(shè)計服務(wù)提供商通常在應(yīng)用領(lǐng)域和語言方面擁有豐富的經(jīng)驗,包括滿足安全關(guān)鍵系統(tǒng)設(shè)計需求的經(jīng)驗。這使他們能夠快速深入了解系統(tǒng)軟件,并提供開發(fā)團(tuán)隊所需的維護(hù)和升級支持。
如果歸根結(jié)底必須廢棄原始語言,系統(tǒng)設(shè)計人員可以使用翻譯工具部分更改語言。然而,沒有任何工具可以完成完整的工作,并且轉(zhuǎn)換后的源程序的可讀性可能會受到質(zhì)疑。在可能的情況下,開發(fā)團(tuán)隊?wèi)?yīng)努力僅在絕對必要的部分更改語言。
實現(xiàn)此目的的一種方法是使用支持新舊目標(biāo)語言并可以混合語言的工具集。這允許團(tuán)隊保持原始代碼中仍然可用的部分完整,并將語言更改限制在滿足新要求所涉及的部分。
這種混合語言工具的一個關(guān)鍵部分是調(diào)試器。雖然許多編譯器可以組合不同語言的代碼段,但大多數(shù)調(diào)試器工具一次只能處理一種語言。這意味著開發(fā)人員必須同時調(diào)用多個工具來查看代碼段之間的交互,而這些工具很少以協(xié)調(diào)的方式交互或交換信息以幫助將目標(biāo)代碼與多種語言源相關(guān)聯(lián)。DDC-I,??s OpenArbor等工具允許從一次啟動中進(jìn)行混合語言調(diào)試,可以顯著減少調(diào)試時間并更容易檢測交互錯誤。
無論是否涉及語言更改,遷移安全關(guān)鍵系統(tǒng)軟件都是一項復(fù)雜的任務(wù),存在許多潛在的陷阱。硬件、主機(jī)、目標(biāo)、工具和語言的每次更改都會帶來復(fù)雜性,并可能會強(qiáng)制進(jìn)行額外更改,從而導(dǎo)致后果升級。通過最大化遺留工具和代碼重用,應(yīng)盡可能避免遷移中固有的成本和風(fēng)險。當(dāng)需要更改時,仔細(xì)選擇新工具并戰(zhàn)略性地使用經(jīng)驗豐富的設(shè)計服務(wù)可以降低軟件遷移風(fēng)險和成本。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19811瀏覽量
233589 -
RTOS
+關(guān)注
關(guān)注
24文章
841瀏覽量
120773 -
編譯器
+關(guān)注
關(guān)注
1文章
1656瀏覽量
49893
發(fā)布評論請先 登錄
如何精準(zhǔn)提取MOSFET溝道遷移率

選擇錫絲直徑的關(guān)鍵考慮因素
中軟國際推出金融數(shù)據(jù)信創(chuàng)遷移與集成解決方案
PoE交換機(jī)在安防監(jiān)控系統(tǒng)中的關(guān)鍵作用
充電樁老化負(fù)載評估:保障安全與效率的關(guān)鍵路徑
HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-應(yīng)用接續(xù)動態(tài)配置遷移保持遷移連續(xù)性
HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-應(yīng)用接續(xù)動態(tài)配置遷移按需遷移頁面
socket編程的安全性考慮
云計算遷移的步驟與注意事項
安全型繼電器型號表示方法
IT資源遷移到云服務(wù)器的關(guān)鍵因素
RFID無線測溫系統(tǒng),守護(hù)電廠安全運(yùn)行的關(guān)鍵力量

更深入地了解汽車與航空電子等安全關(guān)鍵型應(yīng)用的IP核考量因素

接線柱的選型考慮事項

評論