廖凱 居慧
【摘 要】民用飛機對安全性的要求決定了機載軟件需比普通行業(yè)軟件滿足更多的要求。機載軟件源代碼中所含的非激活代碼若被意外激活,會對飛機的安全性帶來不同等級的危害。如何通過過程保證的方法來避免或減緩非激活代碼被意外激活,是當下機載軟件研制單位和適航審定局方共同關注的問題。本文針對機載軟件非激活代碼的特殊屬性,分別從軟件計劃、設計和驗證過程,解析了業(yè)界標準中與非激活代碼相關的要求。同時站在審定局方的角度,詮釋了局方在適航符合性驗證方面的對非激活代碼的關注點。
【關鍵詞】機載軟件;非激活代碼;死代碼;符合性;結構覆蓋率分析
中圖分類號: TP311.52 文獻標識碼: 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 前言
伴隨著電子技術的高速發(fā)展,越來越多的機載電子設備被應用到現(xiàn)代民用飛機上,這些電子設備的重要組成部分是機載軟件,一類比普通行業(yè)軟件對安全性有更高要求的軟件。民機機載軟件不同于行業(yè)軟件,其需求在機載系統(tǒng)/設備的設計階段,從機載系統(tǒng)/設備功能需求分配給機載軟件。
由于各種不同的原因,機載軟件的源代碼中會出現(xiàn)非激活代碼,這些代碼在當前飛機構型中處于不被激活的狀態(tài)。如何在機載軟件的研發(fā)過程中和局方審查階段來制定和檢查對于防止非激活代碼意外被運行,成為了適航審定局方重點關注的問題。
1 民機機載軟件的特性
不同于傳統(tǒng)意義上的行業(yè)軟件,民用飛機機載軟件具備如下特性:
(1)安全性:按照軟件失效對飛機產(chǎn)生的危害等級,民機機載軟件被分為A/B/C/D/E級,這些安全等級,由其依附的系統(tǒng)/設備的安全等級向下分解而來。
(2)非獨立性:民機機載軟件必須加載到目標系統(tǒng)/設備中才能正常運行,在適航審定過程中,也只能跟隨其依附的系統(tǒng)/設備一起被適航審定當局批準,沒有單獨針對軟件的合格證。
(3)目標性:DO-178B/C對民機機載軟件的生命周期過程劃分為計劃過程、開發(fā)過程和綜合過程,對每個過程的活動和目標進行了明確定義,這些目標即是民機機載軟件合格審定過程的基本要素。
(4)適航性:適航審定當局會分階段地對民機機載軟件生命周期過程所有活動和目標的符合性,以及生命周期數(shù)據(jù)等,進行DO-178B/C適用目標的符合性檢查。
2 民機機載軟件非激活代碼的定義和分類
機載軟件非激活代碼是一類可執(zhí)行目標代碼或數(shù)據(jù),這類代碼被設計出來是不希望被運行或使用的,例如先前開發(fā)軟件組件的一部分。或者是僅在目標計算機環(huán)境中的特定構型中被運行的代碼或被使用的數(shù)據(jù),例如一種被硬件針腳選擇或軟件程序選項而被激活的代碼。
各種原因會導致民機機載軟件存在非激活代碼。例如,某些可在地面維護的軟件,它們在飛行過程中是處于非激活狀態(tài)的,只在地面維護時可用;某些可選項軟件會基于已批準的構型,在航線運營商的要求下進行配置使用,未被選擇的軟件即是非激活的;有些軟件是為滿足多種用戶需求的,未被使用的特征也是非激活的。在進行機載軟件結構覆蓋率分析時,某些代碼在測試環(huán)境中不能被覆蓋到,但這些代碼并非不滿足需求。例如實現(xiàn)初始化功能的代碼或防御性代碼,它們只能通過分析或代碼檢查的方式進行驗證。但即便是這樣,可能仍有一些代碼不能被覆蓋到而被歸為死代碼或非激活代碼。
非激活代碼的主要特征是在機載軟件基于需求的測試進行結構覆蓋率分析時,會有某些代碼在測試環(huán)境中無法被覆蓋,這一特征與死代碼相似。非激活代碼與死代碼同樣都是在進行結構覆蓋率分析是未被覆蓋的代碼,基于軟件驗證考慮,機載軟件非激活代碼可分為兩類。
類別一:在任何已取證產(chǎn)品中使用的任何現(xiàn)有構型中都不會被有意運行的非激活代碼。例如一個已被批準的機型上搭載的地面維護功能,在任何情況下,飛行過程中都是非激活狀態(tài)。再比如一些軟件中所含的防御性編碼,防御性編碼是防御式設計的一種形式,用來確保軟件在未知的環(huán)境中能繼續(xù)運行。防御性編碼的時間往往用于需要高可用性、安全性、保密性的地方。在民用飛機機載軟件,尤其是設計保證等級較高的軟件,有較廣泛的應用。
類別二:僅在目標計算機環(huán)境的特定已批準構型中才會被運行的非激活代碼。例如全權數(shù)字電子控制器FADEC中的軟件,是用來指揮發(fā)動機正常工作的程序。不同機型搭載的可能是不同公司生產(chǎn)的不同型號的發(fā)動機,每款發(fā)動機對應FADEC軟件中不同的控制代碼,這些代碼具有互斥性,一個機型只允許一種型號發(fā)動機對應的代碼,其它型號發(fā)動機對應的FADEC軟件中的代碼均為非激活狀態(tài)。
機載軟件的研制過程是分階段進行的,分為計劃過程、開發(fā)過程(需求、設計和編碼)、測試過程和總結過程,另外,局方階段性介入(SOI)符合性檢查也需同步進行,且每個軟件研制過程產(chǎn)生的數(shù)據(jù)必須獲得局方批準,才能進入并開展下一階段的工作。為了最終獲得適航審定局方的批準,機載軟件的研制單位需從軟件研制和符合性驗證兩方面進行考慮,制定策略和措施來滿足各項標準和規(guī)定文件中與非激活代碼相關的要求。
3 機載軟件非激活代碼的研制考慮
根據(jù)民用飛機機載軟件的安全性要求,非激活代碼除須滿足機載軟件的一般要求外,還須對系統(tǒng)安全性產(chǎn)生的影響進行重點關注,所以基于軟件生命周期過程控制的理念,應在軟件生命周期的各個階段,對軟件非激活代碼有相關考慮。
3.1 軟件計劃過程
根據(jù)DO-178B/C的相關要求,如果計劃使用非激活代碼,軟件計劃階段需描述非激活機制和非激活代碼將如何定義和驗證,以滿足系統(tǒng)安全性目標。
3.2 軟件設計過程
系統(tǒng)/設備的設計可能存在多個構型,一般一個飛機型號只會用到其中一種構型。這就會導致不能被執(zhí)行的非激活代碼的出現(xiàn),例如未選擇的功能或未使用的庫函數(shù),又或是未被使用到的數(shù)據(jù)。非激活代碼與死代碼不同,針對非激活代碼的活動應包含:
(1)應設計和實施一種機制來保證非激活的功能或組件對激活的功能或組件產(chǎn)生負面的不利影響。
(2)應有足夠證據(jù)表明非激活代碼對于它所處的環(huán)境是未被計劃的。因非正常系統(tǒng)狀態(tài)導致非激活代碼的無意執(zhí)行,等同于活躍代碼的無意識運行。
(3)非激活代碼的開發(fā)與激活代碼的開發(fā)一樣,都應符合DO-178B/C的目標。
3.3 軟件驗證過程
在機載軟件驗證過程中,對非激活代碼應做如下考慮。對第一類非激活代碼,應進行組合的分析和測試活動,來表明能導致非激活代碼被不經(jīng)意地執(zhí)行的方法被阻止、隔離或消除。任何對含有第一類非激活代碼軟件級別的重新指派,都應被系統(tǒng)安全性評估過程證明是有效的,并記錄在軟件合格審定計劃文件中。同樣地,任何對第一類非激活代碼軟件驗證過程的緩和活動,都應被軟件開發(fā)過程評估,并記錄在軟件合格審定計劃文件中。對第二類非激活代碼,應建立足夠的分析策略,并開發(fā)額外的測試用例和測試程序,來滿足要求的目標覆蓋率。
4 機載軟件非激活代碼的符合性驗證考慮
所有跟隨飛機一起取得適航許可證的機載軟件都必須通過適航審定局方的審查后才能夠獲得批準,局方對非激活代碼的適航符合性方面有相應的關注點,對于這些關注點,機載軟件研制方應制定應對措施和實施計劃并盡早獲得局方認可。
根據(jù)適航審定局方在以往的民用飛機審查項目上提出的符合性要求的內容研究發(fā)現(xiàn),對于非激活代碼可能引起的安全性問題,必須覆蓋以下幾點考慮:
第一類非激活代碼應:
a)在飛機飛行期間禁止執(zhí)行;
b)非激活機制的功能應有相應需求并通過測試證明這種機制起預定作用;
c)非激活機制應支持激活軟件的相應的軟件等級;
d)推薦此類非激活代碼應追溯到對應的需求并進行相應等級的驗證以確保其滿足設計需要。
第二類非激活代碼應:
a)像其它機載軟件一樣擁有需求;
b)非激活代碼應確保滿足適用的軟件等級的DO-178B/C目標;
c)非激活機制應包含在需求和設計中;
d)非激活機制應滿足適用的設計保證等級并通過驗證。
5 結論
現(xiàn)代民機機載系統(tǒng)中軟件的廣泛應用,使得適航審定局方對機載軟件的關注度逐漸提高。機載軟件的特殊性,也對軟件的研制單位提出了更高的要求。
本文從機載軟件的研制過程和符合性驗證過程兩方面,對與軟件非激活代碼相關的關注點和需開展的工作進行了解析,對各項標準規(guī)范中的相關要求做了深度分析和理解,為機載軟件的參研單位在處理軟件源代碼中存在的非激活代碼提供了方向性的指導意見。
【參考文獻】
[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]沈小明,王云明,陸榮國,等.機載軟件研制流程最佳實踐[M].上海:上海交通大學出版社,2013.
[5]李欣.民機機載軟件的開發(fā)流程及其風險分析[C].第七屆民用飛機航電國際論壇論文集.北京:科學普及出版社, 2018:116-120.