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