模塊化和可組合性是軟件中的流行語(yǔ),適用于從企業(yè)計(jì)算到裸機(jī)應(yīng)用程序的所有內(nèi)容。對(duì)于安全關(guān)鍵型嵌入式系統(tǒng),這些概念通過(guò)允許針對(duì)不同用例以不同的組合使用現(xiàn)有軟件組件來(lái)定義軟件重用的目標(biāo)。
雖然正式模塊化開發(fā)的大部分推動(dòng)力來(lái)自航空航天和國(guó)防領(lǐng)域,但它提供的好處與安全關(guān)鍵部門相關(guān)。了解模塊化可組合性為何以及如何融入安全關(guān)鍵型開發(fā),是利用軟件重用優(yōu)勢(shì)同時(shí)滿足當(dāng)今功能安全標(biāo)準(zhǔn)的苛刻目標(biāo)的關(guān)鍵。
模塊化可組合性的概述和挑戰(zhàn)
模塊化解決了設(shè)計(jì)具有明確定義的接口的子系統(tǒng)(模塊)的問(wèn)題,這些接口可用于各種上下文??山M合性要求模塊之間的關(guān)系,以便它們可以以解決多個(gè)問(wèn)題的方式組合在一起。特溫特大學(xué)的Ansgar Fehnker對(duì)這兩個(gè)概念如何協(xié)同工作給出了這樣的定義:
“如果一種設(shè)計(jì)方法有利于生產(chǎn)軟件元素,那么它就滿足了模塊化可組合性,這些軟件元素可以自由地相互組合以產(chǎn)生新系統(tǒng),可能與最初開發(fā)它們的環(huán)境完全不同。
簡(jiǎn)而言之,模塊化可組合性意味著跨系統(tǒng)的可移植性和可重用性,就像樂高積木從街景到航天器一樣。
像樂高一樣,模塊化有一個(gè)實(shí)際的限制。樂高是一個(gè)特定品牌的建筑玩具,不能輕易與斯蒂克爾積木或麥卡諾連接。這同樣適用于模塊化軟件,因?yàn)橐坏┙M件投入生產(chǎn),在不同的環(huán)境中重用它通常會(huì)受到約束和警告。
一個(gè)真實(shí)而臭名昭著的例子是阿麗亞娜5發(fā)射失敗。根據(jù)歐洲航天局的報(bào)告,損失“是由于慣性參考系統(tǒng)軟件的規(guī)格和設(shè)計(jì)錯(cuò)誤。在阿麗亞娜5號(hào)開發(fā)計(jì)劃期間進(jìn)行的廣泛審查和測(cè)試不包括對(duì)慣性參考系統(tǒng)或整個(gè)飛行控制系統(tǒng)的充分分析和測(cè)試,這些系統(tǒng)本可以檢測(cè)到潛在的故障。雖然該軟件實(shí)際上與阿麗亞娜4中成功使用的軟件相同,但它受到新環(huán)境環(huán)境的影響。
安全關(guān)鍵標(biāo)準(zhǔn)如何反映模塊化可組合性
許多行業(yè)標(biāo)準(zhǔn)都引用了與安全可重用性相關(guān)的過(guò)程和目標(biāo),如以下各節(jié)所述。
軟件項(xiàng)目隔離:IEC 62304:2006+AMD1:2015
國(guó)際電工委員會(huì) (IEC) 62304:2006+AMD1:2015 醫(yī)療器械標(biāo)準(zhǔn)允許將軟件項(xiàng)目分開,目的是將盡可能少的系統(tǒng)放置在安全關(guān)鍵性較高的類別中(例如,C 類軟件“在考慮軟件系統(tǒng)外部的風(fēng)險(xiǎn)控制措施后,可能導(dǎo)致危險(xiǎn)情況,從而導(dǎo)致不可接受的風(fēng)險(xiǎn), 由此可能造成的傷害是死亡或重傷“):
“軟件架構(gòu)應(yīng)促進(jìn)安全操作所需的軟件項(xiàng)的隔離,并應(yīng)描述用于確保有效隔離這些軟件項(xiàng)的方法”
圖 1 說(shuō)明了安全影響較少的軟件項(xiàng)目(第 X 項(xiàng))和具有高安全關(guān)鍵影響的軟件項(xiàng)(Y 項(xiàng)和 Z 項(xiàng))的分離。由于存在高度安全的關(guān)鍵項(xiàng)目,整個(gè)軟件系統(tǒng)被指定為C類。
圖 1:根據(jù) IEC 62304:2006 +AMD1:2015 對(duì)軟件項(xiàng)目進(jìn)行分區(qū)的示例 圖 B.18(來(lái)源:IEC)
提高開發(fā)效率:FAA AC 20-148
美國(guó)聯(lián)邦航空管理局 (FAA) 咨詢通告 AC 20-148 為可重用軟件組件 (RSC) 的開發(fā)提供了指導(dǎo),例如軟件庫(kù)、操作系統(tǒng)和通信協(xié)議。RSC 與其他組件的不同之處在于,所需的文檔和指南遠(yuǎn)遠(yuǎn)超出了通常提供的軟件工件。
咨詢通告有明確的指導(dǎo)方針,以確保每個(gè)接口(包括應(yīng)用程序代碼和目標(biāo)硬件)都由開發(fā)人員以 RSC 提供商規(guī)定的方式完全定義。這種高度指定的模塊化意味著RSC在很大程度上可以被視為“黑匣子”,因?yàn)闊o(wú)論目標(biāo)應(yīng)用程序的目的如何,RSC都可以被假定為以明確定義的方式運(yùn)行。
這意味著在符合 DO-178 標(biāo)準(zhǔn)的系統(tǒng)中部署 RSC 可以節(jié)省大量認(rèn)證時(shí)間。如果沒有 RSC,F(xiàn)AA 要求每次重用時(shí)重新生成、重新提交和重新審查認(rèn)證工件,包括對(duì)現(xiàn)有安裝進(jìn)行的軟件更改。
促進(jìn)重用:開放集團(tuán)未來(lái)機(jī)載能力環(huán)境
開放集團(tuán)未來(lái)機(jī)載能力環(huán)境 (FACE) 聯(lián)盟通過(guò)可負(fù)擔(dān)性、速度、敏捷性和卓越改進(jìn)目標(biāo),建立了一條在航空中重用軟件的途徑。FACE技術(shù)戰(zhàn)略和標(biāo)準(zhǔn)概述了幾個(gè)關(guān)鍵原則,包括:
建立一個(gè)軟件環(huán)境,使FACE應(yīng)用程序從一架國(guó)防部飛機(jī)或作戰(zhàn)平臺(tái)重新利用到另一架國(guó)防部飛機(jī)或作戰(zhàn)平臺(tái),只需最少的軟件修訂。
采用增強(qiáng)軟件可移植性的設(shè)計(jì)原則 - 例如,為每個(gè)便攜式 FACE 應(yīng)用程序提供一組通用接口。
限制使用某些 API 調(diào)用并要求其他調(diào)用的編碼標(biāo)準(zhǔn) - 例如,遵守 POSIX API 的特定部分,以確保 FACE 可移植性單元 (UoP) 的功能簽名在語(yǔ)法上正確,并強(qiáng)制正確使用關(guān)鍵語(yǔ)言結(jié)構(gòu)。
自動(dòng)化在實(shí)現(xiàn)模塊化可組合性目標(biāo)方面的價(jià)值
無(wú)論標(biāo)準(zhǔn)或方法如何,模塊化可組合性原則往往會(huì)在時(shí)間和金錢方面對(duì)安全關(guān)鍵型開發(fā)過(guò)程產(chǎn)生巨大影響。乍一看,這似乎是一個(gè)昂貴的提議,但如今的自動(dòng)化工具(可重用組件可用于各種工具鏈)簡(jiǎn)化了驗(yàn)證的不同方面,如圖 2 所示。
圖 2:支持確認(rèn)重用代碼適用性的自動(dòng)化需求可追溯性和回歸測(cè)試示例(來(lái)源:LDRA)
需求可追溯性
軟件生命周期中勞動(dòng)密集型和易出錯(cuò)元素的自動(dòng)化在最大限度地減少模塊化可組合性的開發(fā)影響方面發(fā)揮著關(guān)鍵作用。識(shí)別需求和證明履行可能是一個(gè)苛刻的過(guò)程,特別是當(dāng)功能需求必須與 DO-178 等標(biāo)準(zhǔn)一起驗(yàn)證時(shí)。
自動(dòng)化可追溯性可緩解潛在的項(xiàng)目管理難題。通過(guò)自動(dòng)化,可以在初始模塊開發(fā)和不同環(huán)境中的每次未來(lái)部署之間使用相同的機(jī)制來(lái)管理和跟蹤需求。模塊需求的確認(rèn)可以通過(guò)自動(dòng)化和鏈接回歸測(cè)試來(lái)實(shí)現(xiàn),包括單元測(cè)試、針對(duì)編碼標(biāo)準(zhǔn)的靜態(tài)分析檢查和其他措施。
單元測(cè)試
盡管它們的統(tǒng)稱,稱為“單元測(cè)試”工具的自動(dòng)化工具通常同時(shí)支持單元測(cè)試和集成測(cè)試。這些工具的價(jià)值在于使用相同的機(jī)制來(lái)測(cè)試單個(gè)可重用單元和多個(gè)集成單元作為一個(gè)整體。測(cè)試本身不需要更改函數(shù)是單獨(dú)測(cè)試還是作為調(diào)用樹的頂部進(jìn)行測(cè)試。在前一種情況下,自動(dòng)生成的存根可以處理超出范圍的代碼。
這種自動(dòng)化方法有助于將模塊集成到初始項(xiàng)目和未來(lái)項(xiàng)目中。每當(dāng)在新環(huán)境中調(diào)用模塊時(shí),例如部署到不同的目標(biāo)硬件時(shí),都可以簡(jiǎn)單地回歸原始測(cè)試。通過(guò)在新項(xiàng)目的上下文中調(diào)用模塊的 API,可以驗(yàn)證其適用性。
為您的項(xiàng)目帶來(lái)模塊化可組合性
可重用性是安全關(guān)鍵型應(yīng)用程序開發(fā)人員的圣杯,但模塊化可組合性為實(shí)現(xiàn)其目標(biāo)提供了一種可行、現(xiàn)實(shí)的機(jī)制。雖然有關(guān)于軟件重用的恐怖故事和許多討論模塊化和可組合性原則的標(biāo)準(zhǔn),但自動(dòng)化為任何項(xiàng)目提供了安全重用的有效途徑。
自動(dòng)化減少了在不同環(huán)境中管理、跟蹤和測(cè)試組件重用所需的時(shí)間和精力。生命周期平臺(tái)(如LDRA 工具套件)可確保重用模塊適合其環(huán)境,具有從需求可追溯性到靜態(tài)分析再到單元和集成測(cè)試的功能。這些功能使安全和安保關(guān)鍵軟件開發(fā)團(tuán)隊(duì)能夠根據(jù)嚴(yán)格的行業(yè)標(biāo)準(zhǔn)獲得可重復(fù)使用組件的認(rèn)證和批準(zhǔn)。
審核編輯:郭婷
-
模塊化
+關(guān)注
關(guān)注
0文章
328瀏覽量
21323 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3237瀏覽量
57547
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論