陳剛,羅旭升
中國航空工業(yè)集團公司第一飛機設(shè)計研究院,陜西 西安 710089
民用飛機的系統(tǒng)及軟硬件設(shè)計過程通常要求嚴格的安全性工作,SAE ARP 4754A及SAE ARP 4761從系統(tǒng)研制過程入手,提出了安全性工作的要求,并給出了詳細指南,但4761從PSSA分析工作給出軟硬件研制保證等級之后就停止了進一步的向下延伸。給出的軟硬件等級僅僅是軟硬件應(yīng)達到的總體的可靠性指標,如A級軟硬件理論上應(yīng)達到10-9的失效發(fā)生率[1]。而作為相對應(yīng)的軟件標準,RTCA DO-178C(或歐洲對等標準CM-SWCEH-002[2])中并未明確說明軟件研制過程中應(yīng)執(zhí)行的安全性活動,僅僅通過對不同等級軟件實施不同的過程控制來滿足其對應(yīng)安全目標,似乎在提出軟件安全性目標之后就再沒有安全性相關(guān)的軟件活動要求。
GJB/Z 102A[3]給出了一些軟件安全性設(shè)計的基本原則,但其主要描述要求和原則,并未給出一般方法;另外,其研制過程與DO-178C中要求的機載軟件研制過程不盡相同,不便于應(yīng)用。
本文以民用飛機機載軟件研制過程為基礎(chǔ),結(jié)合DO-178C中要求的各項評審、分析活動,提出了民用飛機機載軟件滿足軟件安全性要求的簡單方法,旨在不增加或少增加軟件研制過程活動的基礎(chǔ)上,明確軟件研制過程中的安全性活動,滿足日益提高的軟件安全性相關(guān)要求。
DO-178C中要求標注安全性相關(guān)的軟件需求,但并未明確說明如何獲取相關(guān)需求。軟件安全性需求的來源主要有以下幾個方面[4]:①系統(tǒng)安全性需求的繼承:由系統(tǒng)安全性需求分解而來的軟件需求都應(yīng)標識為軟件安全性需求;②由初步危險分析(Preliminary Hazard Analysis)得來的軟件安全性相關(guān)高層需求:若系統(tǒng)初步危險分析結(jié)果中,部分危險可由軟件直接造成,則應(yīng)編寫相應(yīng)的軟件安全性需求,用于消除或限制該軟件根源錯誤的產(chǎn)生;③后續(xù)過程反饋:由軟件后續(xù)的設(shè)計、編碼、集成等過程反饋后,根據(jù)反饋信息重新補充的軟件安全性相關(guān)高層需求;④派生高層需求的安全性評估:按照DO-178C的要求,所有的派生需求應(yīng)反饋給系統(tǒng)過程或安全性過程進行安全性影響評估,確認對安全性有影響的派生需求,應(yīng)標注為軟件安全性需求;⑤對A、B級軟件,其關(guān)鍵功能(即所有影響軟件等級分配的功能)應(yīng)具備非相似的冗余設(shè)計,以避免因該功能的單一失效引起系統(tǒng)故障。
DO-178C中有相關(guān)的需求驗證目標,對于軟件安全性需求同樣適用。軟件安全性需求驗證的主要目標是為了確認是否所有的系統(tǒng)安全性需求都被精確地傳遞到軟件并進行了足夠的分解和補充,系統(tǒng)安全性需求和對應(yīng)的軟件安全性需求之間是否建立了追蹤關(guān)系等。目前,民用飛機行業(yè)主要采用人工評審的方式驗證軟件安全性需求,主要評估準則為軟件安全性需求的精確性、完整性(由某條系統(tǒng)需求分解得到的多個軟件需求均被滿足時,能否保證該系統(tǒng)需求的自然滿足)、正確性、一致性(包括上下級需求之間的一致性和同級需求之間的一致性)、無二義性、追蹤性及可測試性[5]。軟件安全性需求的評審可與其他需求的評審一起進行,供應(yīng)商應(yīng)設(shè)計對應(yīng)的需求檢查單,對軟件需求的評審準則進行固化。
另外,無論軟件高層需求或軟件低層需求或兩者都采用了模型的方式進行了需求的表達,則也可以通過模型仿真的形式進行需求的驗證,確認需求的邏輯正確性和一致性,時序、性能等方面則需在目標機上進行測試驗證[6]。
軟件架構(gòu)設(shè)計時,如果計劃采用劃分組件的方式來降低部分組件的軟件研制保證等級。則應(yīng)保證低等級的軟件組件的行為不會造成高等級軟件組件的行為異常,為此應(yīng)制定相應(yīng)的分區(qū)隔離策略及軟件安全性需求,以確保分區(qū)隔離策略的有效性[7]。另外,盡管具體的組件劃分可能會在軟件架構(gòu)設(shè)計過程進行,但由于分區(qū)可能涉及CPU、內(nèi)存、總線和接口等硬件資源的劃分或共享策略,需要在系統(tǒng)階段就進行決策和資源隔離的考慮[8]。
與軟件安全性需求開發(fā)類似,在軟件設(shè)計過程中,除了編寫軟件低層需求外,還需要編寫和識別軟件的安全性低層需求,其主要來源如下:①軟件高層安全性需求的繼承:由軟件高層安全性需求進行分解而來的需求都應(yīng)標注為安全性相關(guān)需求;②由架構(gòu)設(shè)計決策確定的安全性需求:由于軟件架構(gòu)設(shè)計中做出的設(shè)計決策所導致的影響軟件安全性的需求,如分區(qū)隔離、與安全關(guān)鍵功能之間的接口關(guān)系等;③后續(xù)過程反饋:由軟件后續(xù)編碼、集成等過程反饋后,根據(jù)反饋信息重新補充的軟件安全性相關(guān)低層需求;④派生低層需求的安全性評估:按照DO-178C的要求,所有的派生需求應(yīng)反饋給系統(tǒng)過程或安全性過程進行安全性影響評估,確認對安全性有影響的派生需求,應(yīng)標注為軟件安全性需求。
軟件低層需求的驗證目標包括精確性、一致性、與上級需求的追蹤性、完整性、與目標硬件的兼容性、標準的符合性等。對于安全性需求來說,除了這些通用目標之外,在驗證時更應(yīng)額外關(guān)注以下項目:①安全關(guān)鍵功能與非安全關(guān)鍵功能之間的控制和數(shù)據(jù)依賴關(guān)系,判斷非安全關(guān)鍵功能是否會對安全關(guān)鍵功能產(chǎn)生不利影響;②判斷軟件設(shè)計,尤其是軟件安全關(guān)鍵功能的設(shè)計是否會造成系統(tǒng)限制的違例,如響應(yīng)時間、內(nèi)存占用等方面。
在DO-178C中,將軟件驗證過程、軟件配置管理過程和軟件質(zhì)量保證過程這三個貫穿軟件生命周期的過程統(tǒng)稱為軟件綜合過程。
軟件安全性測試分析對軟件測試的結(jié)果進行分析,用以判斷符合軟件研制保證等級的測試強度是否已經(jīng)達到。對于未達標的情況應(yīng)進行補充測試,如補充后仍然無法滿足的,應(yīng)進行合理的解釋說明[9]。同時,分析還應(yīng)展示測試中出現(xiàn)的錯誤類型、數(shù)量及嚴重程度,必要時應(yīng)在討論后確定是否進行軟件的修改和回歸測試。民用飛機采用的軟件安全性測試分析主要包括:①需求覆蓋分析:用以確定是否所有的軟件需求都進行了正確的測試,包括正常測試和魯棒性測試,該分析適用于C級以上的機載軟件;②耦合覆蓋分析:用以確定軟件不同組件間的數(shù)據(jù)耦合關(guān)系和控制耦合關(guān)系是否至少被測試過程執(zhí)行過一次,該分析適用于C級以上的機載軟件;③語句覆蓋分析:用以確定軟件代碼的所有語句是否至少被測試過程執(zhí)行過一次,該分析適用于C級以上的機載軟件;④判定覆蓋分析:用以確定軟件代語句中包含的所有判定是否至少被測試過程執(zhí)行過一次,該分析適用于B級以上的機載軟件;⑤MCDC覆蓋分析:用以確定為軟件測試所編寫的測試用例,是否符合MCDC準則的要求,該分析僅適用于A級機載軟件。
由于軟件安全性需求的最終目的是支撐系統(tǒng)安全性目標的實現(xiàn),因此,為了驗證這些安全性目標或需求,應(yīng)將測試繼續(xù)向上延伸,確保系統(tǒng)級安全性測試結(jié)果的正確性。另外,由于系統(tǒng)設(shè)備及周邊環(huán)境一般都在上級集成商處才能夠獲得,這就需要軟件供應(yīng)商與上級集成商或主機商之間進行測試協(xié)調(diào),在系統(tǒng)聯(lián)試、鐵鳥試驗或機上地面試驗階段進一步對軟件安全性進行驗證,同時在多家供應(yīng)商聯(lián)合測試時應(yīng)確保軟件質(zhì)量保證過程及配置管理過程的連續(xù)性和有效性[10]。
軟件配置管理過程要求對軟件的更改進行控制,軟件的更改影響分析屬于軟件更改控制流程中的一個環(huán)節(jié),目的在于通過分析,確定軟件更改的影響范圍,以此決定所有受到影響的軟件資料是否需要同時更改或采取其他合適的方案。軟件安全性更改分析與正常的更改影響分析過程并無不同,只是需要更加關(guān)注對安全關(guān)鍵功能的影響。DO-178C在軟件配置管理過程中已經(jīng)提出了軟件更改控制及影響分析的相關(guān)要求,因此,只需注意在軟件更改控制委員會中加入軟件或系統(tǒng)安全性相關(guān)人員,以執(zhí)行相關(guān)影響分析即可。另外,軟件質(zhì)量保證人員應(yīng)在更改控制流程中,對軟件的更改進行跟蹤和監(jiān)督,以保證該流程的正確執(zhí)行。
對于有操作人員參與的系統(tǒng)來說,操作人員本身也應(yīng)被考慮為系統(tǒng)的一個部件,因此,系統(tǒng)整體的安全性也與人員的合規(guī)和正確操作無法脫離。為保證操作的正確性,詳細可靠的用戶手冊和操作人員培訓計劃必不可少。軟件操作培訓的準備工作應(yīng)在軟件研制過程中開始考慮,如軟件人機界面設(shè)計的易用性考慮、防出錯措施、可維護設(shè)計等。針對軟件安全關(guān)鍵功能,在培訓工作中應(yīng)提供完整詳盡的操作流程,并明確告知操作或維護人員系統(tǒng)中現(xiàn)存的可能風險。與培訓相關(guān)的所有活動和安排應(yīng)以書面形式在培訓計劃或軟件安全性計劃中明確。
對于民用飛機機載軟件來說,盡管RTCA DO-178C并沒有明確提出安全性相關(guān)要求和目標,但實際上已經(jīng)將大部分安全性活動融入了軟件生命周期的各個環(huán)節(jié),如軟件需求的驗證(已經(jīng)包含了安全性需求的驗證)、軟件設(shè)計的驗證、軟件需求覆蓋率分析、結(jié)構(gòu)覆蓋分析等。因此,如果使用DO-178C來滿足主機商或其他應(yīng)用標準(如GJB/Z 102A)中關(guān)于軟件安全性的要求,僅需補充或細化部分活動。本文以此為出發(fā)點,以民用飛機機載軟件研制過程為基礎(chǔ),提出了民用飛機機載軟件滿足軟件安全性要求的簡單方法,明確了軟件研制過程中的安全性活動,滿足了不同主機商對機載軟件系統(tǒng)日益提高的安全性要求,同時也便于飛機軟件適航符合性工作的進一步推廣。