奚 坤,王振華,蔡雨辰,陳朝暉
(北京控制工程研究所,北京100090)
航天器控制軟件可靠性工程方法研究*
奚 坤,王振華,蔡雨辰,陳朝暉
(北京控制工程研究所,北京100090)
當(dāng)前航天器控制軟件的復(fù)雜度越來越高,軟件的規(guī)模十分龐大,對軟件可靠性安全性要求極高,因此對航天器控制軟件的可靠性設(shè)計和度量具有重要意義.介紹和分析適用于航天器控制軟件的可靠性設(shè)計方法,并結(jié)合某型號給出實(shí)際的軟件設(shè)計以及可靠性度量的具體實(shí)例.
航天器控制軟件;導(dǎo)航制導(dǎo)控制;軟件可靠性設(shè)計;可靠性度量
當(dāng)前航天器控制軟件的復(fù)雜度越來越高,軟件的規(guī)模十分龐大,在不同的控制模式下,運(yùn)行不同的飛行模式,采用不同的控制律.軟件的處理復(fù)雜,運(yùn)行環(huán)境苛刻.其可靠性、安全性對于整個系統(tǒng)來說極為重要,這些對測試充分性提出了嚴(yán)峻的挑戰(zhàn).
因此,我們應(yīng)該重視航天型號軟件可靠性需求分析、設(shè)計和驗證工作.如在軟件設(shè)計階段,如何采取措施來實(shí)現(xiàn)軟件的可靠性設(shè)計;在軟件測試階段,如何采取措施來驗證軟件的可靠性要求是否得到了實(shí)現(xiàn),如何對軟件進(jìn)行可靠性度量等.
1.1 軟件可靠性需求分析
航天器控制軟件可靠性需求的開發(fā)和分析與系統(tǒng)可靠性分析密切相關(guān),在完成系統(tǒng)分析之后可開始進(jìn)行.軟件可靠性分析的任務(wù)和內(nèi)容如下:
(1)對軟件可靠性需求進(jìn)行關(guān)鍵性分析,識別軟件的安全關(guān)鍵需求.對安全關(guān)鍵功能的時間、吞吐量和空間進(jìn)行分析與評估.
(2)確認(rèn)軟件是否對于可能的失效具有足夠的處理能力,如果發(fā)生這些失效,需確保軟件具有使系統(tǒng)維持在一個安全可靠狀態(tài)的能力.
(3)進(jìn)行初步的軟件故障樹分析(software fault tree analysis,SFTA).SFTA是用來尋找危險原因的自上而下的分析方法,作為“樹”的頂端的危險可從初步危險分析(preliminary hazard analysis,PHA)或軟件子系統(tǒng)危險分析以及需求關(guān)鍵性分析等來源獲取,分析結(jié)果是一系列可能引起危險的原因或者是這些原因的組合.SFTA的分析結(jié)果可用來確定在哪些地方應(yīng)該設(shè)計故障容限或失效安全措施,對于龐大的系統(tǒng)可用于識別軟件的安全關(guān)鍵部分.
(4)進(jìn)行初步的軟件失效模式與影響分析(software failure mode and effect analysis,SFMEA).SFMEA是一種自底向上的分析方法,分析軟件的每個組成部件如何失效,失效如何通過系統(tǒng)傳播,以及失效是否會導(dǎo)致危險.由于在軟件需求分析階段還沒有比較詳細(xì)的設(shè)計,所以只能進(jìn)行初步的基于軟件功能的分析.SFMEA的分析結(jié)果可用來指導(dǎo)設(shè)計消除或減輕失效的措施,如果發(fā)現(xiàn)災(zāi)難性的危險,則可能導(dǎo)致修改設(shè)計.
(5)分析方法和分析結(jié)果應(yīng)文檔化.針對分析過程中識別出的可靠性需求項應(yīng)建立追蹤矩陣表格,在后續(xù)的設(shè)計和測試階段進(jìn)行雙向追蹤.
1.2 航天器控制軟件可靠性設(shè)計
航天器控制軟件都為實(shí)時嵌入式軟件,對于軟件的可靠性設(shè)計通常可采取避錯設(shè)計、查錯設(shè)計、改錯設(shè)計、容錯設(shè)計以及軟件重用等設(shè)計方式.
1.2.1 避錯設(shè)計
避錯設(shè)計是使軟件產(chǎn)品在設(shè)計過程中,不發(fā)生錯誤或少發(fā)生錯誤的一種設(shè)計方法.體現(xiàn)了預(yù)防為主的思想,是軟件可靠性設(shè)計的首要方法.
設(shè)計錯誤通常發(fā)生在各個變換的過程中,避錯設(shè)計的關(guān)鍵在于控制這些變換過程.航天器控制軟件基本上都是變換型結(jié)構(gòu),所以著重對控制變換進(jìn)行避錯設(shè)計.主要有以下四種避錯方法:
(1)控制和減少程序復(fù)雜性,使軟件中的各個模塊高內(nèi)聚,低耦合.
(2)提高變換精確性,方法包括使判斷條件簡單、邏輯清晰、層次分明等.
(3)迅速查找和改正變換錯誤,盡量減小改正變換錯誤的影響域.
(4)航天器控制軟件常用的避錯設(shè)計如:樹形模式管理設(shè)計、默認(rèn)分支設(shè)計、標(biāo)識量增大碼距、串口通訊前空讀設(shè)計等.
1.2.2 查錯設(shè)計
查錯設(shè)計是在設(shè)計中賦予程序某些特殊的功能,使程序在運(yùn)行中自動查找存在錯誤的一種設(shè)計方法.可分為被動式檢測和主動式檢測兩種類型.
被動式錯誤檢測[1]適用于軟件的各種結(jié)構(gòu)層次,用來檢測從一個單元、模塊向另一個單元、模塊傳遞的錯誤征兆和存在于單元、模塊內(nèi)部的錯誤,比如數(shù)據(jù)的剔野和限幅處理,數(shù)據(jù)通訊時設(shè)置校驗碼和累加和等.
主動式錯誤檢測則能夠主動地對系統(tǒng)進(jìn)行搜索,并指示搜索到的錯誤.主動式錯誤檢測可以作為周期性的任務(wù)來安排,例如規(guī)定每小時檢查一次,也可以當(dāng)作一個低優(yōu)先級的任務(wù)來執(zhí)行,在系統(tǒng)處于等待狀態(tài)時主動進(jìn)行檢查.如浮點(diǎn)數(shù)據(jù)異常周期性檢查、內(nèi)存周期自檢等方法.
1.2.3 改錯設(shè)計
改錯設(shè)計是在設(shè)計中賦予程序自我改正錯誤、減少錯誤危害程度的能力的一種設(shè)計方法.
改正錯誤的前提是必須已經(jīng)準(zhǔn)確地找出軟件錯誤的起因和部位,程序又有能力修改、剔除錯誤語句.對于航天嵌入式軟件來說,它真正的工作狀態(tài)是運(yùn)行于太空中,維護(hù)人員無法像普通的商業(yè)軟件一樣直接修改或更新軟件.因此.改錯設(shè)計對航天嵌入式軟件的可靠性來說具有極為重要的作用.當(dāng)軟件缺陷引發(fā)的問題超越了軟件自身能夠解決的范圍,甚至影響整個航天器的安全性時,唯有依靠在軌參數(shù)注入,在軌程序注入等改錯手段來進(jìn)行補(bǔ)救.
1.2.4 容錯設(shè)計
容錯設(shè)計是在設(shè)計中賦予程序某些特殊的功能,使程序在錯誤已被觸發(fā)的情況下,仍然能正常運(yùn)行的一種設(shè)計方法.軟件容錯設(shè)計的主要方法有:N版本法、恢復(fù)塊法、信息冗余.
航天器控制軟件常用的包括:數(shù)據(jù)防抖動處理、重要數(shù)據(jù)恢復(fù)處理、數(shù)據(jù)三取二容錯處理等.
1.2.5 重用設(shè)計
最大限度地重用現(xiàn)有的軟件構(gòu)件,不僅能縮短開發(fā)周期,提高開發(fā)效率,也能提高軟件的可維護(hù)性和可靠性.現(xiàn)有的成熟軟件,已經(jīng)過嚴(yán)格的運(yùn)行檢測,大量的錯誤已經(jīng)在開發(fā)、運(yùn)行和維護(hù)過程中排除是比較可靠的.在項目規(guī)劃開始階段就要把軟件重用列入工作中不可缺少的一部分,作為提高軟件可靠性的一種必要手段.
航天器控制軟件重用主要包括以下兩種方式:
開發(fā)過程重用:包括軟件研制規(guī)范、方法、工具和標(biāo)準(zhǔn)等;
軟件構(gòu)件重用:目前已在航天型號軟件開發(fā)中得到應(yīng)用的包括規(guī)范化算法,基礎(chǔ)公共運(yùn)算庫等多種構(gòu)件開發(fā)方式.
1.3 航天器控制軟件可靠性度量
航天控制器軟件可靠性度量的思路是在國內(nèi)外現(xiàn)有成熟技術(shù)的基礎(chǔ)上,通過借鑒和運(yùn)用可靠性標(biāo)準(zhǔn)、可靠性建模方法、數(shù)據(jù)分析方法;以及對可靠性測試數(shù)據(jù)分析方法的研究、設(shè)計開發(fā)和應(yīng)用,針對性地提升可靠性測試能力,為提升航天器控制軟件可靠性而服務(wù).
軟件可靠性模型是軟件可靠性度量的基礎(chǔ),對可靠性測試具有重要的指導(dǎo)意義.軟件可靠性發(fā)展至今,模型種類有幾十種[2],其中常用的有:指數(shù)型模型(如J-M模型)、超指數(shù)模型、非齊次泊松過程模型、Musa基本執(zhí)行時間、Littlewood-Verrall模型、Weibull模型、S-可靠性增長模型等.
具體的模型選擇應(yīng)根據(jù)航天器控制軟件的代碼規(guī)模、復(fù)雜性、可靠性等特征要求進(jìn)行選取.選取的原則需滿足適用性、簡潔性,且在類似系統(tǒng)中有成功經(jīng)驗.
2.1 可靠性分析的實(shí)際應(yīng)用
以某航天器控制軟件的可靠性需求分析為例,通過對該型號可靠性需求進(jìn)行關(guān)鍵性分析,識別出其“軌道控制”為其可靠性關(guān)鍵項目之一.
因此在SFTA分析過程中,選取了“軌道控制任務(wù)失敗”這一危險事件作為故障樹的頂事件,逐層分析導(dǎo)致該頂事件的原因,建立故障樹[3]如圖1所示.
圖1 軟件故障樹圖Fig.1 Software fault tree
通過上述SFTA分析,該型號對于可能導(dǎo)致“軌道控制任務(wù)失敗”這一危險事件的各種原因,軟件均采取了可靠性的設(shè)計措施,從而能夠有效保證航天控制任務(wù)的完成.
在SFMTA分析過程中,也針對“軌控邏輯功能”進(jìn)行了失效模式影響分析,定義嚴(yán)酷度、發(fā)生度和檢測度等級[4]及取值,分析失效模式、失效原因、失效影響,計算RPN(風(fēng)險優(yōu)先數(shù)),確定RPN臨界值,給出建議措施的過程,最后形成分析報告.分析示例如表1所示.
表1 失效模式影響分析Tab.1 Failure modes and effects analysis
2.2 可靠性設(shè)計的實(shí)際應(yīng)用
該航天器控制軟件采用三機(jī)熱備份容錯結(jié)構(gòu),為保證容錯系統(tǒng)的可靠性和完備性,軟件從容錯策略的正確性合理性、三機(jī)交換數(shù)據(jù)可靠性、交換數(shù)據(jù)時序、三機(jī)運(yùn)行同步及差異性和容限值選取的合理性等方面考慮進(jìn)行設(shè)計,相比傳統(tǒng)的N版本方法,不僅降低了軟硬件的開發(fā)成本,而且還縮短了軟件的研制周期.
通過對三機(jī)容差數(shù)據(jù)實(shí)行分級、分類制度,根據(jù)系統(tǒng)實(shí)際運(yùn)行過程中可能出現(xiàn)的各種情況,給出不同的容錯策略,予以區(qū)別對待.
三機(jī)中每兩機(jī)分別進(jìn)行比對.如果數(shù)據(jù)交換失敗,即本機(jī)未接收到或未接收全另外兩機(jī)中任一機(jī)發(fā)送的數(shù)據(jù),則此兩機(jī)就不再進(jìn)行按位數(shù)據(jù)比對,而直接置此兩機(jī)數(shù)據(jù)比對不一致/超差標(biāo)志.如果數(shù)據(jù)交換成功,即本機(jī)接收完另外兩機(jī)中任一機(jī)發(fā)送的全部數(shù)據(jù),則此兩機(jī)就進(jìn)行按位數(shù)據(jù)比對.
根據(jù)容錯過程中可能出現(xiàn)的各種實(shí)際情況,對帶容差數(shù)據(jù)和無容差數(shù)據(jù)分別設(shè)計如表2所示的不同的容錯策略,同時給出相應(yīng)的比對標(biāo)志.
表2 數(shù)據(jù)容錯策略Tab.2 Data fault tolerance strategy
2.3 可靠性度量的實(shí)際應(yīng)用
前面已經(jīng)提到軟件可靠性模型目前種類繁多[5],已經(jīng)見文的模型已有幾十種,為了探索一種適合于航天軟件的可靠性模型,本文從基本模型JM模型切入,通過觀察基本模型的適用度,確定今后軟件可靠性的研究方向.為此,在對該型號航天器控制軟件的測試過程進(jìn)行記錄后,根據(jù)測試記錄數(shù)據(jù),使用此模型進(jìn)行分析,將測試結(jié)果與實(shí)際結(jié)果進(jìn)行比較,找出模型與實(shí)際的差異性.
J-M可靠性模型[6]有以下假設(shè):
(1)在測試階段,程序中所有的錯誤具有相等的概率被檢測到;
(2)當(dāng)前軟件的錯誤發(fā)生率與當(dāng)前軟件中所存在的錯誤數(shù)成正比;
(3)在兩個檢測到的錯誤之間,錯誤檢測率保持不變;
(4)在每次發(fā)生一次錯誤后,都會對此錯誤進(jìn)行修正,并不引入新的錯誤;
(5)每個檢測到的錯誤都是相對獨(dú)立的;
(6)軟件的操作和軟件可靠性預(yù)測都是在類似的環(huán)境下進(jìn)行的.
為了實(shí)現(xiàn)此模型,數(shù)據(jù)要求如下:
檢測到錯誤的時間序列為:t1,t2,t3,…,tn,t0=0;
檢測到錯誤的時間間隔為:x1,x2,x3,…,xn,xi=ti-ti-1;
xi服從獨(dú)立的指數(shù)分布,其分布函數(shù)為:
x1,x2,x3,…,xn的聯(lián)合分布密度函數(shù)為:
N的最大似然估計比較難求,首先得到N的最大似然方程為
然后使用數(shù)值計算方法得出N的近似值[7],此處不再細(xì)述.
當(dāng)前軟件的可靠性函數(shù)為
本文對某航天控制應(yīng)用軟件的初樣版本進(jìn)行了記錄,得到記錄結(jié)果如表3所示.
表3 某航天控制應(yīng)用軟件錯誤記錄Tab.3 Software error record
根據(jù)表3中記錄的數(shù)據(jù),開發(fā)可靠性評估與預(yù)測軟件,得到圖2~4的分析結(jié)果.
圖2 故障發(fā)生概率Fig.2 Fault occurrence probability
圖2表示當(dāng)前軟件的隨時間向前推移的故障發(fā)生概率,橫軸表示軟件運(yùn)行天數(shù),縱軸表示軟件故障發(fā)生概率,可以看出在大約40天時,軟件的故障發(fā)生概率已經(jīng)達(dá)到99%左右.
圖3為預(yù)測的當(dāng)前軟件錯誤數(shù)的大體趨勢從中可以看出,其初期預(yù)測偏差較大,而后逐漸趨于平穩(wěn).
圖3 軟件中錯誤數(shù)總趨勢Fig.3 The general trend of errors in the software
圖4為當(dāng)前軟件的故障發(fā)生率,橫軸表示軟件的錯誤檢測數(shù),縱軸表示軟件的錯誤檢測率,其隨著時間推移,雖然中間稍有波動,但是下降趨勢明顯.從該圖的趨勢可以看出錯誤檢測率還有下降空間,尚需進(jìn)一步測試.
圖4 軟件錯誤檢測率趨勢Fig.4 The trend of software error detection rate
綜上所述,最終得到目前軟件的錯誤檢測率為0.097 705 4個/天,預(yù)測錯誤數(shù)約為40個,平均檢測到一次錯誤的時間間隔約為10天,軟件當(dāng)前狀態(tài)尚不理想,還需進(jìn)行進(jìn)一步測試,直到錯誤檢測率保持在0.000 1以下,效果為佳.
本文針對航天器控制軟件嵌入式結(jié)構(gòu)、實(shí)時性要求高、可靠性要求高、運(yùn)行環(huán)境苛刻、規(guī)模大、資源受限和結(jié)構(gòu)復(fù)雜等特點(diǎn),開展了針對航天嵌入式軟件可靠性需求方面的分析與研究工作,對航天軟件開發(fā)中常用的可靠性工程方法進(jìn)行了分析.最后以某航天嵌入式軟件的可靠性開發(fā)過程為主線,詳細(xì)描述了實(shí)際工程中可靠性需求分析,可靠性設(shè)計和可靠性度量技術(shù)的實(shí)施過程,綜合運(yùn)用可靠性工程方法完成實(shí)際航天器控制軟件的可靠性工作.
[1]LYU M R.主編,劉喜成,鐘婉懿譯.軟件可靠性工程手冊[M].北京:電子工業(yè)出版社,1997.
[2]SINNAMON R M,ANDREWS J D.Improved accuracy in quantitative fault tree analysis[J].Quality and Reliability Engineering International,1997,13(2):28-29.
[3]趙宇,楊軍,馬小兵.可靠性數(shù)據(jù)分析教程[M].北京:北京航空航天大學(xué)出版社,2009.
[4]姜興杰,楊峰輝.軟件可靠性分析與設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(7):135-141.JIANG X J,YANG F H.Analysis and design of the software reliability[J].Modern Electronics Technique,2011,34(7):135-141.
[5]龔慶祥.型號可靠性工程手冊[M].北京:國防工業(yè)出版社,2007.
[6]蔡開元.軟件可靠性工程基礎(chǔ)[M].北京:清華大學(xué)出版社,1995.
[7]張虹,姜明明,黃百喬.軟件可靠性分析方法研究與應(yīng)用[J].測控技術(shù),2011,30(5):101-105.
ZHANG H,JIANG M M,HUANG B J.Study and application on software reliability analysis[J].Measurement&Control Technology,2011,30(5):101-105.
Reliability Engineering Method on Spacecraft Control Software
XI Kun,WANG Zhenhua,CAI Yuchen,CHEN Zhaohui
(Beijing Institute of Control Engineering,Beijing 100090,China)
The spacecraft control software is becoming more complex and huge now,which requires higher software reliability and security and leads to higher demands on both reliability design and measure of spacecraft control software.In this paper,a reliability design method,which is suitable for space application,is given and analyzed.Based on a certain aerospace combined with concrete examples of the reliability measure,the software design is proposed.
spacecraft control software;guidance-navigation control;software reliability design;reliability measure
TP311
A
1674-1579(2016)04-0048-05
10.3969/j.issn.1674-1579.2016.04.009
奚 坤(1983—),工程師,研究方向為航天嵌入式軟件技術(shù);王振華(1981—),高級工程師,研究方向為航天嵌入式軟件技術(shù);蔡雨辰(1985—),工程師,研究方向為航天嵌入式軟件技術(shù);陳朝暉(1969—),研究員,研究方向為航天嵌入式軟件技術(shù).
*國家高技術(shù)研究發(fā)展計劃(863)資助項目(2015AA7046306).
2016-03-11