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