劉曉萍,王冬霞,黃雙臨,郭 睿
(32021部隊,北京100094)
近年來,衛星導航系統服務精度與時效性逐步提高,其用途從單一軍事領域逐漸向民用和科研領域發展,成為國家經濟建設中重要的空間信息基礎設施。越來越多的國家和地區,開始啟動不同的衛星導航系統建設計劃,并以此推動軍事和經濟實力的提高。
北斗衛星導航系統(BeiDou navigation satellite system,BDS)統經歷了北斗衛星導航試驗系統即北斗一號(BeiDou navigation demonstration system,BDS-1)、北斗衛星導航(區域)系統即北斗二號(BeiDou navigation satellite(regional)system,BDS-2)、北斗三號全球衛星導航系統(BeiDou-3 navigation satellite system, BDS-3),地面軟件是支撐衛星導航系統精度指標實現和穩定運行的核心,若其在使用中發生失效(不可靠),會導致系統任務失敗。因此,導航系統對地面軟件的穩定運行有著嚴格的可用度要求[1-2]。
常規的軟件測試,通常聚焦在軟件代碼實現之后,再開展具體的工作,而軟件分析驗證,則是貫穿于整個軟件生存周期,從系統設計、需求分析、軟件設計到軟件代碼實現,在各個軟件研制階段,均可開展獨立分析驗證[3-4]。本文首先分析了國內外研究現狀及發展趨勢,接著從系統、需求、設計及源代碼四個層次,分析驗證地面軟件的可靠性,并提出了三種關鍵技術。
隨著計算機技術的發展和系統規模、復雜度的提高,軟件在系統控制中發揮著越來越重要的作用。在系統可靠性工程技術的發展過程中,人們逐漸認識到軟件系統的高可靠需要通過專業技術予以保證。20世紀90年代,由于實際工程需求的不斷提高,軟件開發過程中出現了很多新概念、新技術和新模式,軟件可靠性技術研究為適應這種工程需求的變化,開始針對特定領域、不同類型的軟件,如導彈飛行控制系統、以及載人航天領域的運載火箭、飛船與國際空間站等系統使用的安全性關鍵軟件等,結合其具體的領域特點和可靠性要求進行研究。從此,軟件可靠性與安全性技術得到了廣泛的關注和飛速發展,目前針對整個軟件生存周期,已經初步形成了系統性的軟件可靠性與安全性理論體系[5-6]。
美國國家航空航天局(The National Aeronautics and Space Administration, NASA)很早就開展了針對高端嵌入式系統的軟件可靠性和安全性方研究:2004年7月,發布了NASA-STD-8719.13B《NASA軟件安全性標準》;1996年,發布了NASA-GB-1740.13-96 《安全性關鍵軟件分析與開發手冊》;2004年3月,發布了NASA-GB-8719.13《NASA 軟件安全性手冊》等標準。同時,由委托方、開發方和獨立第三方組成的三方保證機制,開展軟件質量、可靠性與安全性保證等工作[7]。
NASA尤其重視軟件的可靠性安全性問題,于1991年底成立了獨立驗證與確認(independent verification and validation,IV&V)機構,該機構針對所有安全和任務關鍵軟件的全生存周期產品開展獨立的驗證與確認,包括軟件可靠性與安全性的分析驗證工作,加強關鍵軟件的可靠性保證。
近十年來,在實時嵌入式軟件可靠性安全性分析驗證技術應用方面呈現出以下趨勢[8-9]:
1)由技術研究轉向工程應用。NASA的IV&V機構在1996年以前,側重于軟件可靠性安全性保證技術研究,在所有確認項目中,只有不到3%的項目得到了獨立的評價和獨立驗證。1996年4月以后,獨立評價和獨立驗證與確認項目不斷增加,2000年,獨立評價和確認的項目,在所有確認項目中的占比達到了20%。2000年4月,將工作方向轉移到應用領域,至2002年,獨立評價和獨立驗證與確認項目所占比例已達 42%。目前 NASA全部的安全關鍵軟件和任務關鍵軟件都由該部門負責評價和驗證。
2)更加強調軟件分析驗證工作。軟件測試需在軟件代碼實現之后再開展具體的工作。而軟件分析驗證,則應貫穿于整個軟件生存周期,包括系統頂層分析、客戶需求分析、軟件框架設計、軟件詳細設計和軟件代碼實現,在各個軟件研制階段,均應開展獨立分析驗證。獨立驗證與確認機構在2007年以后,將驗證工作重點前移,加強在軟件代碼實現之前,對各研制階段產品進行驗證,取得了顯著效果。前期驗證工作發現的嚴重問題比例由 28%上升到了 82%。大多數嚴重問題,在軟件研制階段就被識別出來,并采取有效措施進行徹底地解決,而不是到后期,僅能采取有限的補救措施或者降低使用要求。
3)更加注重分析和測試技術的聯合應用。由于測試驗證的不充分與高成本,分析技術越來越重要。在系統的功能分析和設計階段,就大力開展仿真驗證與分析;常規狀態下的功能驗證,主要依靠要實際測試驗證,輔助分析驗證;異常狀態下的功能驗證,主要依靠仿真驗證,輔助分析驗證;小概率失效和/或軟件危險失效驗證,則主要依靠分析驗證,輔助仿真驗證。
4)更加注重跨領域技術合作和各階段產品的質量把控。軟件研制人員必須與相關領域的專業技術人員密切合作,因為大型復雜軟件研制,需要可靠性、軟件安全性、信息安全以及軟件運行等多學科、跨領域的知識。例如針對國際空間站項目,NASA成立了9個專業團隊,每個團隊支持一個特定的子系統,分析人員涉及導航、制導與控制、人機接口、內部和外部系統、命令和控制、下一代生命支持、集成系統測試等專業領域。多專業、多領域、多系統的綜合分析,共同保證軟件系統可靠安全地運行。
從公布的項目來看,NASA大量的高端嵌入式系統項目,軟件系統的研制水平和成功率都遠高于國內。而且,NASA仍計劃對更多的項目開展可靠性和安全性的獨立驗證與確認。隨著技術的進步,可靠性和安全性分析驗證技術將會在越來越多的領域發揮更大的作用。
國內軟件可靠性論證工作始于 20世紀 80年代,隨著論證工作的不斷深入與總結,積累了較為豐富的經驗,其中GJB450-1988《裝備研制與生產的可靠性通用大綱》、GJB1909-1994《裝備可靠性維修性參數選擇和指標確定要求》、QJ1408-1994《航天產品可靠性保證要求》以及原國防科工委制定的一系列標準、法規,對我國軟件可靠性工作起到了極大的推動作用。后續 GIB450A-2004《裝備可靠性工作通用要求》、GJB1909-2009《裝備可靠性維修性參數選擇和指標確定要求》、QJ1408-1998《航天產品可靠性保證要求》等標準的編制與頒布,進一步促進與完善了我國可靠性專業領域的發展。
近幾年,軟件的可靠性與安全性分析研究的趨勢,主要集中在以下兩個方面[10-11]:
1)軟件可靠性和安全性分析技術研究。總裝備部投入經費對軟件安全性分析標準進行了追蹤,于2004年發布了國家軍用標準GJB/Z142-2004《軍用軟件安全性分析指南》,但該標準的規定屬框架性規定,適用于對型號軟件研制過程的概念、方法進行指導。
中國航天標準化與產品保證研究院從1993年起,相繼組織翻譯出版了《國外軟件可靠性資料匯編》(R.M.S譯文選 10)、《國外軟件質量與可靠性標準匯編》(《質量與可靠性》資料匯編之十七)、《軟件安全性》等,有力地推動了大型軟件可靠性分析驗證工作的開展。
2)軟件可靠性和安全性驗證技術的實際應用。軟件可靠性和安全性驗證技術已在航天彈、箭、星、船等多個型號的任務關鍵軟件中進行了工程應用。特別是在921二期工程中,按照《921軟件工程化技術標準》,在初樣和試樣階段,開展了載人運載火箭的故障檢測軟件,全生存周期的可靠性和安全性驗證分析,以便及時發現問題并反饋給設計人員進行修改和完善,為型號任務成功提供了軟件保證支持,取得了良好的效果。
初樣階段,針對故障檢測系統中兩個箭上軟件,開展了任務書、需求、設計和代碼四個階段的可靠性和安全性分析驗證工作。試樣階段,除對兩個箭上軟件繼續開展軟件可靠性和安全性分析驗證工作之外,還增加了兩個地面軟件的可靠性和安全性驗證內容,在需求和代碼層發現的問題最多,任務書層次之。
軟件可靠性和安全性分析技術雖然已在航天彈、箭、星、船等多個型號的嵌入式軟件中進行了工程應用,但是針對大型工程軟件項目的可靠性分析,尚未進行深入研究。
BDS在工程實踐過程中,運用軟件工程方法對軟件研制過程中的各階段進行了較好的質量管理,但仍存在對軟件可靠性因素設計考慮不足、驗證測試不夠深入與充分的問題[12-13]。
目前BDS地面軟件可靠性分析驗證主要以提升系統服務可靠性為目標,立足于系統、需求、設計、源代碼四個層次,明確關鍵任務、失效模式、輸入失效影響、時序失效影響等可靠性關鍵問題,提出了應用于網絡實時環境的精密單點定位軟件可靠性分析驗證方法,為BDS持續優化升級、長期穩定運行奠定了堅實基礎。
分析地面軟件特點,分別在系統、需求、設計、源代碼四個層次上對軟件進行可靠性分析,明確軟件可靠性分析驗證項目與方法,制定分析驗證方案,整個工作包括三個層次四個內容,如圖1所示。

圖1 分析驗證工作組成
各階段的工作模式包括以下步驟:
1)軟件背景介紹。軟件設計人員介紹軟件相關背景、研制技術要求等;
2)項目組制定實施方案。由系統或軟件設計人員審查并提出改進意見,修改后形成預審稿,評審通過后方可啟動軟件可靠性分析工作;
3)四個層級可靠性分析驗證。軟件配置項的系統層、需求層、設計層和代碼層的分析驗證工作。
4)制定規范。根據以上內容制定軟件規范,同時編寫《軟件研制總結報告》,組織評審驗收,若評審未通過,則按評審結論重新分析,修改規范,直至評審通過。
開展軟件系統層分析驗證,通過對地面軟件研制技術要求、軟件系統規格說明和軟件系統設計說明文檔的分析驗證,發現軟件系統設計薄弱環節或缺陷,進而指導地面軟件設計和測試。
地面軟件系統層分析驗證,主要采用任務分析、系統運行模式分析、失效模式分析三種方法完成:
1)任務分析。主要驗證系統任務的定義及劃分是否合理,任務的輸入輸出、接口、可靠性要求等內容是否定義明確、內容完整,是否與研制技術要求及相關文檔要求一致;
2)系統運行模式分析。檢查系統運行模式的描述是否完整,檢查某一運行模式下執行的系統任務與技術要求、可靠性設計通用要求是否存在不一致,或是系統任務正確執行的條件是否具備等。
3)失效模式分析。通過分析造成系統失效的原因和產生的結果,尋找減輕系統失效危害的辦法。失效模式分析是一種自底向上的分析方法,尋找底層故障在系統中的傳播路徑,并在傳播路徑途中設置容錯、檢測和監控,識別可能影響系統運行的單點故障,并按影響嚴重程度進行分級。
開展軟件需求層分析驗證,明確關鍵的軟件運行模式、功能、輸入和輸出,驗證軟件關鍵功能定義的正確性和完備性,以及軟件的關鍵等級,保證從系統可靠性要求轉換和細化為軟件可靠性需求的正確性與完備性,獲得與軟件功能相關的系統危險事件及其嚴重性等級。
地面軟件需求層分析驗證,主要采用內容完整性及一致性分析、運行模式分析、輸入鏈路失效影響分析等三種方法:
1)內容完整性及一致性分析,是分析軟件需求規格說明中的功能、性能、接口、可靠性要求等內容,是否符合相關軟件工程標準要求,是否與任務書及相關文檔要求一致,文字描述是否明確、完整;
2)軟件運行模式分析,是分析是否存在潛在路徑、使某運行模式下執行的軟件功能與任務書要求不一致,或是不具備正確執行軟件功能的條件,分析識別出關鍵模式和控制模式轉換的關鍵輸入;
3)輸入鏈路失效影響分析,是分析輸入鏈路上可能發生的故障,對失效處理遺漏或不足可能引發的危險。
開展軟件設計層分析驗證,明確軟件設計層的運行模式、功能、輸入和輸出。地面軟件設計層分
析驗證,主要采用設計獨立性分析、設計接口分析、設計邏輯分析等三種方法:
1)設計獨立性分析的主要目的,是檢查軟件功能與模塊、以及模塊之間的關系,驗證設計與需求的可追溯性,并確立關鍵/重要模塊;
2)設計接口分析,是識別設計外部接口傳輸、內部接口一致性、中斷及公共數據區使用等方面存在的問題與薄弱環節,為設計更改提供依據;
3)設計邏輯分析,是對照各模塊流程圖及執行邏輯,檢查是否正確實現了要求的功能,是否存在冗余,算法是否考慮了異常情況的處理,是否對關鍵量進行了保護,是否符合相關的安全性要求。對于多個模塊組合完成的復雜邏輯,結合模塊調用關系圖,分析其設計的路徑、時序是否符合需求要求。
開展軟件代碼層分析驗證,通過對軟件配置項的關鍵代碼,審核代碼實現的完整性、標準符合性,分析軟件存在的薄弱環節,為后續的軟件安全性評價提供依據。地面軟件代碼層分析驗證,主要采用代碼邏輯分析和運行模式轉換分析兩種方法:
1)代碼邏輯分析。檢測編碼軟件中的邏輯錯誤,評價代碼程序所描述的運行順序。主要分析各模塊實現是否與設計要求一致、是否可以優化、是否存在多余語句等,對于需要多個模塊組合執行才能完成的復雜邏輯,分析其執行路徑、時序等是否符合設計要求;
2)運行模式轉換分析。確定軟件運行模式及其轉換條件,保證代碼對軟件運行模式或狀態轉換條件及相關設計實現的正確性,標識實現運行模式轉換的指令序列,檢查其轉換實現是否正確,分析轉換后模式初值設置是否正確、是否符合設計要求。
BDS是我國自主研發的衛星導航系統,其地面軟件的可靠性直接影響著系統的精度、可靠性與穩定性。因此,針對軟件生存周期各階段的系統、需求、設計、代碼等進行可靠性分析,找出可靠性實現薄弱環節和隱患。
在系統運行過程中,地面軟件各配置項之間、軟件與外場站之間、軟件與外部系統之間,以及軟件與操作人員之間存在大量的信息交互。針對地面業務流程多、運行時間長、可靠性要求高的特點,為了完備地開展系統失效影響分析,硬件、軟件或系統失效影響分析必須聯合開展,因此,硬件/軟件/系統交互失效分析技術,是實現地面軟件高可靠性的關鍵技術之一。
該技術的主要解決措施為:
1)識別地面軟件任務執行過程中,相關行為主體之間的協同時序、交互信息,以及可能發生的失效。具體解決途徑如下:識別軟件配置項,確認其運行環境,明確行為主體;梳理與軟件配置項相關的系統任務,確認每一個軟件配置項的輸入輸出交互信息、交互接口和交互的行為主體;根據行為主體及接口的類型,可能的故障原因,梳理軟件配置項可能的交互失效。
2)確定失效影響嚴酷度類別判定準則。具體解決途徑如下:確定軟件配置項交互失效影響的軟件輸出、相關的其他軟件配置項或系統,識別與某軟件配置項交互失效相關的系統任務,在后續的分析中,按照失效影響程度確定嚴酷度類別。
3)應用該項技術,針對地面軟件配置項和軟件運行的服務器環境,綜合考慮任務相關的系統運行模式等系統交互影響,在定義系統嚴酷度等級的基礎上,系統分析發現故障模式,增加軟件檢錯、容錯、糾錯設計。
地面軟件運行模式直接關系著衛星導航系統的運行模式,其切換指令及切換過程中的故障處理能力,直接影響著導航系統的定位導航授時精度。因此,為了識別運行模式、分析控制指令、分析模式間切換條件及存在問題,系統運行及切換過程中故障識別技術,是必須解決的關鍵技術之一。該技術的主要解決途徑如下:歸納影響系統功能執行的輸入;梳理、確認軟件控制指令、系統配置參數的功能執行條件的影響,初步確定系統運行模式;對系統任務進行復核,明確任務失效嚴酷度等級,根據任務在上級系統中的作用和任務失效嚴酷度等級,來確定關鍵任務;標識每個運行模式,并說明各運行模式下系統執行的任務;說明模式間的所有可能切換條件,繪制運行模式切換圖或給出模式切換矩陣;明確控制系統模式切換的關鍵輸入,對發現的系統設計問題應填寫系統設計問題單。
應用該技術,確定了控制指令是實現系統正常模式和自主模式切換的條件,通過控制指令分析模式切換,可發現指令方面的問題,并提出系統正常模式、自主模式條件下的不同任務要求。
在工程實踐過程中,雖然軟件研制各階段均有嚴格的質量管理,并且經過第三方評測,但仍存在驗證測試不夠充分的問題,主要表現為代碼潛在路徑等深層次的軟件可靠性問題。因此,為提高系統的可靠性,代碼潛在路徑故障識別技術是亟需解決的一項關鍵技術。
該技術的主要解決途徑如下:
1)分析準備。分析人員首先了解系統背景、任務需求、設計說明等,提交分析的軟件代碼至少已通過開發方測試。
2)軟件代碼可靠性與安全性分析。進行軟件代碼可靠性與安全性分析,包括邏輯分析、運行模式分析。
3)代碼更改可靠性與安全性分析。代碼更改后,應進行更改影響分析,根據更改影響的范圍,確定需要迭代更新的分析項目,更新相關的分析內容與分析結論。
4)編制分析報告。對于分析中發現的問題,應填寫問題報告單,并反饋軟件設計人員進行問題確認。分析工作完成后,應將全部的分析內容反映到文檔中,形成軟件代碼可靠性與安全性分析報告。
應用該技術,挖掘了代碼潛在路徑引起的隱患和薄弱環節,為進一步優化過程、改進設計、排除缺陷,加強軟件系統的可靠性、提高系統的穩定性,為進一步提高BDS的導航定位精度提供保障。
本文針對BDS地面軟件,具體分析了可靠性驗證技術的研究進展、研究內容、關鍵技術及解決途徑。首先介紹了國內外軟件可靠性研究現狀,接著詳細論述了從方案設計以及系統層、需求層、設計層、源代碼等四個層次,具體分析討論了 BDS地面軟件可靠性分析驗證研究內容,并指出了關鍵技術及解決途徑。