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