廖凱 居慧
【摘 要】民用飛機(jī)對安全性的要求決定了機(jī)載軟件需比普通行業(yè)軟件滿足更多的要求。機(jī)載軟件源代碼中所含的非激活代碼若被意外激活,會對飛機(jī)的安全性帶來不同等級的危害。如何通過過程保證的方法來避免或減緩非激活代碼被意外激活,是當(dāng)下機(jī)載軟件研制單位和適航審定局方共同關(guān)注的問題。本文針對機(jī)載軟件非激活代碼的特殊屬性,分別從軟件計(jì)劃、設(shè)計(jì)和驗(yàn)證過程,解析了業(yè)界標(biāo)準(zhǔn)中與非激活代碼相關(guān)的要求。同時站在審定局方的角度,詮釋了局方在適航符合性驗(yàn)證方面的對非激活代碼的關(guān)注點(diǎn)。
【關(guān)鍵詞】機(jī)載軟件;非激活代碼;死代碼;符合性;結(jié)構(gòu)覆蓋率分析
中圖分類號: TP311.52 文獻(xiàn)標(biāo)識碼: A 文章編號: 2095-2457(2018)21-0033-002
DOI:10.19694/j.cnki.issn2095-2457.2018.21.015
【Abstract】The safety requirements of civil aircraft determine that airborne software needs to meet more requirements than ordinary software.If the deactivated code is accidentally activated,it will result in different levels of damage to the safety of the aircraft.How to avoid or mitigate the accidental activation of deactivated code by process assurance method is a common concern of the airborne software development unit and airworthiness certification authority.According to the special attributes of the airborne software deactivated code,this paper analyzes the requirements related to the deactivated code in the industry standards from the process of software planning,design and verification.Meanwhile,from the perspective of airworthiness certification authority,it interprets the authority's concerns about the deactivated code in the aspect of airworthiness compliance verification.
【Key words】Airborne software;Deactivated code;Dead code;Compliance;Structural coverage analysis
0 前言
伴隨著電子技術(shù)的高速發(fā)展,越來越多的機(jī)載電子設(shè)備被應(yīng)用到現(xiàn)代民用飛機(jī)上,這些電子設(shè)備的重要組成部分是機(jī)載軟件,一類比普通行業(yè)軟件對安全性有更高要求的軟件。民機(jī)機(jī)載軟件不同于行業(yè)軟件,其需求在機(jī)載系統(tǒng)/設(shè)備的設(shè)計(jì)階段,從機(jī)載系統(tǒng)/設(shè)備功能需求分配給機(jī)載軟件。
由于各種不同的原因,機(jī)載軟件的源代碼中會出現(xiàn)非激活代碼,這些代碼在當(dāng)前飛機(jī)構(gòu)型中處于不被激活的狀態(tài)。如何在機(jī)載軟件的研發(fā)過程中和局方審查階段來制定和檢查對于防止非激活代碼意外被運(yùn)行,成為了適航審定局方重點(diǎn)關(guān)注的問題。
1 民機(jī)機(jī)載軟件的特性
不同于傳統(tǒng)意義上的行業(yè)軟件,民用飛機(jī)機(jī)載軟件具備如下特性:
(1)安全性:按照軟件失效對飛機(jī)產(chǎn)生的危害等級,民機(jī)機(jī)載軟件被分為A/B/C/D/E級,這些安全等級,由其依附的系統(tǒng)/設(shè)備的安全等級向下分解而來。
(2)非獨(dú)立性:民機(jī)機(jī)載軟件必須加載到目標(biāo)系統(tǒng)/設(shè)備中才能正常運(yùn)行,在適航審定過程中,也只能跟隨其依附的系統(tǒng)/設(shè)備一起被適航審定當(dāng)局批準(zhǔn),沒有單獨(dú)針對軟件的合格證。
(3)目標(biāo)性:DO-178B/C對民機(jī)機(jī)載軟件的生命周期過程劃分為計(jì)劃過程、開發(fā)過程和綜合過程,對每個過程的活動和目標(biāo)進(jìn)行了明確定義,這些目標(biāo)即是民機(jī)機(jī)載軟件合格審定過程的基本要素。
(4)適航性:適航審定當(dāng)局會分階段地對民機(jī)機(jī)載軟件生命周期過程所有活動和目標(biāo)的符合性,以及生命周期數(shù)據(jù)等,進(jìn)行DO-178B/C適用目標(biāo)的符合性檢查。
2 民機(jī)機(jī)載軟件非激活代碼的定義和分類
機(jī)載軟件非激活代碼是一類可執(zhí)行目標(biāo)代碼或數(shù)據(jù),這類代碼被設(shè)計(jì)出來是不希望被運(yùn)行或使用的,例如先前開發(fā)軟件組件的一部分?;蛘呤莾H在目標(biāo)計(jì)算機(jī)環(huán)境中的特定構(gòu)型中被運(yùn)行的代碼或被使用的數(shù)據(jù),例如一種被硬件針腳選擇或軟件程序選項(xiàng)而被激活的代碼。
各種原因會導(dǎo)致民機(jī)機(jī)載軟件存在非激活代碼。例如,某些可在地面維護(hù)的軟件,它們在飛行過程中是處于非激活狀態(tài)的,只在地面維護(hù)時可用;某些可選項(xiàng)軟件會基于已批準(zhǔn)的構(gòu)型,在航線運(yùn)營商的要求下進(jìn)行配置使用,未被選擇的軟件即是非激活的;有些軟件是為滿足多種用戶需求的,未被使用的特征也是非激活的。在進(jìn)行機(jī)載軟件結(jié)構(gòu)覆蓋率分析時,某些代碼在測試環(huán)境中不能被覆蓋到,但這些代碼并非不滿足需求。例如實(shí)現(xiàn)初始化功能的代碼或防御性代碼,它們只能通過分析或代碼檢查的方式進(jìn)行驗(yàn)證。但即便是這樣,可能仍有一些代碼不能被覆蓋到而被歸為死代碼或非激活代碼。
非激活代碼的主要特征是在機(jī)載軟件基于需求的測試進(jìn)行結(jié)構(gòu)覆蓋率分析時,會有某些代碼在測試環(huán)境中無法被覆蓋,這一特征與死代碼相似。非激活代碼與死代碼同樣都是在進(jìn)行結(jié)構(gòu)覆蓋率分析是未被覆蓋的代碼,基于軟件驗(yàn)證考慮,機(jī)載軟件非激活代碼可分為兩類。
類別一:在任何已取證產(chǎn)品中使用的任何現(xiàn)有構(gòu)型中都不會被有意運(yùn)行的非激活代碼。例如一個已被批準(zhǔn)的機(jī)型上搭載的地面維護(hù)功能,在任何情況下,飛行過程中都是非激活狀態(tài)。再比如一些軟件中所含的防御性編碼,防御性編碼是防御式設(shè)計(jì)的一種形式,用來確保軟件在未知的環(huán)境中能繼續(xù)運(yùn)行。防御性編碼的時間往往用于需要高可用性、安全性、保密性的地方。在民用飛機(jī)機(jī)載軟件,尤其是設(shè)計(jì)保證等級較高的軟件,有較廣泛的應(yīng)用。
類別二:僅在目標(biāo)計(jì)算機(jī)環(huán)境的特定已批準(zhǔn)構(gòu)型中才會被運(yùn)行的非激活代碼。例如全權(quán)數(shù)字電子控制器FADEC中的軟件,是用來指揮發(fā)動機(jī)正常工作的程序。不同機(jī)型搭載的可能是不同公司生產(chǎn)的不同型號的發(fā)動機(jī),每款發(fā)動機(jī)對應(yīng)FADEC軟件中不同的控制代碼,這些代碼具有互斥性,一個機(jī)型只允許一種型號發(fā)動機(jī)對應(yīng)的代碼,其它型號發(fā)動機(jī)對應(yīng)的FADEC軟件中的代碼均為非激活狀態(tài)。
機(jī)載軟件的研制過程是分階段進(jìn)行的,分為計(jì)劃過程、開發(fā)過程(需求、設(shè)計(jì)和編碼)、測試過程和總結(jié)過程,另外,局方階段性介入(SOI)符合性檢查也需同步進(jìn)行,且每個軟件研制過程產(chǎn)生的數(shù)據(jù)必須獲得局方批準(zhǔn),才能進(jìn)入并開展下一階段的工作。為了最終獲得適航審定局方的批準(zhǔn),機(jī)載軟件的研制單位需從軟件研制和符合性驗(yàn)證兩方面進(jìn)行考慮,制定策略和措施來滿足各項(xiàng)標(biāo)準(zhǔn)和規(guī)定文件中與非激活代碼相關(guān)的要求。
3 機(jī)載軟件非激活代碼的研制考慮
根據(jù)民用飛機(jī)機(jī)載軟件的安全性要求,非激活代碼除須滿足機(jī)載軟件的一般要求外,還須對系統(tǒng)安全性產(chǎn)生的影響進(jìn)行重點(diǎn)關(guān)注,所以基于軟件生命周期過程控制的理念,應(yīng)在軟件生命周期的各個階段,對軟件非激活代碼有相關(guān)考慮。
3.1 軟件計(jì)劃過程
根據(jù)DO-178B/C的相關(guān)要求,如果計(jì)劃使用非激活代碼,軟件計(jì)劃階段需描述非激活機(jī)制和非激活代碼將如何定義和驗(yàn)證,以滿足系統(tǒng)安全性目標(biāo)。
3.2 軟件設(shè)計(jì)過程
系統(tǒng)/設(shè)備的設(shè)計(jì)可能存在多個構(gòu)型,一般一個飛機(jī)型號只會用到其中一種構(gòu)型。這就會導(dǎo)致不能被執(zhí)行的非激活代碼的出現(xiàn),例如未選擇的功能或未使用的庫函數(shù),又或是未被使用到的數(shù)據(jù)。非激活代碼與死代碼不同,針對非激活代碼的活動應(yīng)包含:
(1)應(yīng)設(shè)計(jì)和實(shí)施一種機(jī)制來保證非激活的功能或組件對激活的功能或組件產(chǎn)生負(fù)面的不利影響。
(2)應(yīng)有足夠證據(jù)表明非激活代碼對于它所處的環(huán)境是未被計(jì)劃的。因非正常系統(tǒng)狀態(tài)導(dǎo)致非激活代碼的無意執(zhí)行,等同于活躍代碼的無意識運(yùn)行。
(3)非激活代碼的開發(fā)與激活代碼的開發(fā)一樣,都應(yīng)符合DO-178B/C的目標(biāo)。
3.3 軟件驗(yàn)證過程
在機(jī)載軟件驗(yàn)證過程中,對非激活代碼應(yīng)做如下考慮。對第一類非激活代碼,應(yīng)進(jìn)行組合的分析和測試活動,來表明能導(dǎo)致非激活代碼被不經(jīng)意地執(zhí)行的方法被阻止、隔離或消除。任何對含有第一類非激活代碼軟件級別的重新指派,都應(yīng)被系統(tǒng)安全性評估過程證明是有效的,并記錄在軟件合格審定計(jì)劃文件中。同樣地,任何對第一類非激活代碼軟件驗(yàn)證過程的緩和活動,都應(yīng)被軟件開發(fā)過程評估,并記錄在軟件合格審定計(jì)劃文件中。對第二類非激活代碼,應(yīng)建立足夠的分析策略,并開發(fā)額外的測試用例和測試程序,來滿足要求的目標(biāo)覆蓋率。
4 機(jī)載軟件非激活代碼的符合性驗(yàn)證考慮
所有跟隨飛機(jī)一起取得適航許可證的機(jī)載軟件都必須通過適航審定局方的審查后才能夠獲得批準(zhǔn),局方對非激活代碼的適航符合性方面有相應(yīng)的關(guān)注點(diǎn),對于這些關(guān)注點(diǎn),機(jī)載軟件研制方應(yīng)制定應(yīng)對措施和實(shí)施計(jì)劃并盡早獲得局方認(rèn)可。
根據(jù)適航審定局方在以往的民用飛機(jī)審查項(xiàng)目上提出的符合性要求的內(nèi)容研究發(fā)現(xiàn),對于非激活代碼可能引起的安全性問題,必須覆蓋以下幾點(diǎn)考慮:
第一類非激活代碼應(yīng):
a)在飛機(jī)飛行期間禁止執(zhí)行;
b)非激活機(jī)制的功能應(yīng)有相應(yīng)需求并通過測試證明這種機(jī)制起預(yù)定作用;
c)非激活機(jī)制應(yīng)支持激活軟件的相應(yīng)的軟件等級;
d)推薦此類非激活代碼應(yīng)追溯到對應(yīng)的需求并進(jìn)行相應(yīng)等級的驗(yàn)證以確保其滿足設(shè)計(jì)需要。
第二類非激活代碼應(yīng):
a)像其它機(jī)載軟件一樣擁有需求;
b)非激活代碼應(yīng)確保滿足適用的軟件等級的DO-178B/C目標(biāo);
c)非激活機(jī)制應(yīng)包含在需求和設(shè)計(jì)中;
d)非激活機(jī)制應(yīng)滿足適用的設(shè)計(jì)保證等級并通過驗(yàn)證。
5 結(jié)論
現(xiàn)代民機(jī)機(jī)載系統(tǒng)中軟件的廣泛應(yīng)用,使得適航審定局方對機(jī)載軟件的關(guān)注度逐漸提高。機(jī)載軟件的特殊性,也對軟件的研制單位提出了更高的要求。
本文從機(jī)載軟件的研制過程和符合性驗(yàn)證過程兩方面,對與軟件非激活代碼相關(guān)的關(guān)注點(diǎn)和需開展的工作進(jìn)行了解析,對各項(xiàng)標(biāo)準(zhǔn)規(guī)范中的相關(guān)要求做了深度分析和理解,為機(jī)載軟件的參研單位在處理軟件源代碼中存在的非激活代碼提供了方向性的指導(dǎo)意見。
【參考文獻(xiàn)】
[1]DO-178B,Software Consideration in Airborne Systems and Equipment Certification[S].RTCA,1992.
[2]DO-178C,Software Consideration in Airborne Systems and Equipment Certification[S].RTCA,2011.
[3]Micheal Dewalt.The Deactivated/Dead Code Elephant: 010[R].USA:FAA,2011.
[4]沈小明,王云明,陸榮國,等.機(jī)載軟件研制流程最佳實(shí)踐[M].上海:上海交通大學(xué)出版社,2013.
[5]李欣.民機(jī)機(jī)載軟件的開發(fā)流程及其風(fēng)險分析[C].第七屆民用飛機(jī)航電國際論壇論文集.北京:科學(xué)普及出版社, 2018:116-120.