隗合建 /中國運載火箭技術研究院

2022 年,中國航天科技集團有限公司印發的年度質量工作要點中明確提出,要加速航天精益產品保證工作落地見效,補充建設相應的產品保證專業技術支撐機構。中國運載火箭技術研究院在三年質量提升工程中也提出,建立面向型號和產品的一體化、專業化產品質量保證隊伍,完善產品質量保證標準規范,完善技術支撐機構的產品質量保證工作流程等明確要求。
軟件產品是航天工程任務的重要組成部分,隨著研究院新型號、新任務、新產業的不斷增加,軟件任務量也大幅增加,同時軟件在航天工程任務中功能占比也呈現逐年增加的趨勢,可以看出軟件在航天工程中發揮了越來越重要的作用。軟件產品的質量直接關乎整個工程研制的質量,因此需要建立符合航天工程任務特點的軟件產品保證體系。
自20 世紀80 年代,美國航空航天局(NASA)就緊密圍繞航天工程任務成功,將技術與管理有機結合,發布了一系列關于軟件的文件,突出了軟件產品保證安全性、系統性、規范化、專業性和獨立性等特點,并隨著工程應用實踐不斷更新。筆者通過對NASA 軟件工程和產品保證實踐經驗的學習,結合目前我國航天軟件產品保證工作的特點,提出了航天軟件產品保證要準確把握航天軟件安全關鍵的本質特征,緊密圍繞確保航天工程任務成功的核心目標。采用技術和管理相結合的方法關注風險識別與控制,將產品保證與組織過程改進相結合,充分發揮技術支撐機構作用開展軟件產品保證基礎工作和型號軟件產品保證,并通過信息化手段實現高效產品保證。
航天軟件的本質特征是高可靠性、高安全性、高實時性,并與航天重大工程背景協同一體化。航天軟件工程的本質特征是實現軟硬件集成系統,軟件需求通過試驗逐漸完備,開發過程整體在遵循瀑布模型的前提下,具體研制工作快速迭代,實現航天工程任務圓滿成功。
產品保證是對航天系統大型復雜工程研制過程中質量相關工作的綜合。軟件產品保證是為確保軟件產品質量滿足交辦方的需求,而在軟件產品生命周期中有計劃和系統地采取一系列有關質量、標準、規范和過程的控制活動。
(1)軟件產品保證的目標是確保航天工程任務成功
軟件產品保證遵循系統管理、一次成功的理念,通過技術和管理活動控制產品質量形成的過程和要素,提高型號研制、生產、服務的效率和效益,確保型號產品完成任務目標。
(2)軟件產品保證是技術和管理相結合的工作
軟件產品保證不僅是質量管理、標準化工作,也是在軟件生命周期中開展各項管理和技術工作的綜合,具有明顯的技術特征。產品保證隊伍與設計、測試、質量管理隊伍分離,同時強化產品保證工程師識別變化、把握關鍵的職責,實現對產品研制過程的全程監督把關。
產品保證工作的機制是全過程管控,自設計至測試、從自研至外協實現過程全覆蓋,并在不同階段、針對不同對象采取差異化管控方法,重點將傳統的粗放式質量管理轉向精細化,確保產品質量一致性和穩定性。
產品保證工作的配套建設主要通過人員的專業化、文件體系的規范化、制度標準的齊備化,將原來的經驗式研制轉變為知識型研制。以風險性、精細化、技術性優化管理過程,兼顧多接口、全過程、全要素的管理。
(3)軟件產品保證關注風險識別與控制
實現軟件產品保證過程中技術和管理相結合,最重要的方法是采用風險管理。對型號研制過程中的技術風險進行充分的鑒別、評價、預防和控制,保證航天軟件產品安全、可靠、可用,能夠完成規定的任務目標。產品保證的工作基礎是科學配套的產品保證標準、制度體系,細致嚴謹的產品保證文件體系,以及行使預警、叫停職責的技術和管理融合的專業技術人員隊伍。
(4)軟件產品保證和組織過程改進
產品保證和過程改進均出于高質量過程產生高質量產品這一理念,施以有效的方法使安全關鍵軟件萬無一失。前者評判一個產品是否合格,后者評判一個組織的能力,兩者密不可分。研制單位更關注組織本身能力的提升;航天重大工程更關注各研制單位提供的產品是否滿足質量要求。因此,軟件過程改進適合研制單位開展,軟件產品保證適合工程型號推進。
NASA 實踐表明,為了發揮質量與可靠性保障作用,有必要建立集技術和管理權威于一體的技術支撐機構工作體系,完整體現各級組織、型號及技術支撐機構相互結合的關系,并發揮技術支撐機構的獨立監督、服務作用。
技術支撐機構需要統一部署,形成專業、技術上的優勢,全面參與型號研制的策劃與過程管理,制定軟件產品保證工作計劃,覆蓋型號研制所有環節,發揮獨立把關作用,將控制點前移,將預防為主方針落到實處,推動型號軟件產品保證實施。
技術支撐機構是開展前沿性和基礎性專業技術研究的權威機構,應總體掌控型號中的質量與可靠性技術基礎研究需求,制定專業技術發展路徑,提前籌劃基礎研究與能力建設工作,以滿足型號研制需要。
技術支撐機構應對積累的數據進行深入分析,建立質量問題舉一反三基線,將新技術方法、工具設備和管理模式融入到型號研制過程中,為型號研制流程優化、研制能力提升提供決策支撐。
(1)評測機構能力認證
航天軟件在幾十年的發展過程中提出了以評測促軟件工程化的理念,軟件評測機構在軟件研制過程中發揮了重要的作用。軟件評測機構均有擅長的測試領域,工程型號選擇軟件評測機構時,不僅要按照傳統的嵌入式軟件、非嵌入式軟件、可編程邏輯器件進行評測能力認證,也應按照計算機、控制器、雷達、導引頭、敏感器等產品進行評測能力認證,提升評測機構在特定產品領域的評測專業技術能力。
(2)舉一反三基線和故障啟示錄
NASA 一直致力于航空航天的進步,這不僅體現在技術發展本身和技術著作上,還體現在技術史、經驗總結等方面。NASA 出版的《工程中的經驗教訓》回顧了近60 年的太空計劃項目,提煉升華為9 個工程準則以及27 個經驗教訓,幾乎覆蓋了技術攻關、項目管理、人力資源等航天系統工程的所有領域。
NASA 針對軟件質量歸零問題和典型問題,編制舉一反三基線、故障啟示錄等代表性的經驗教訓總結報告,從系統需求、軟件需求、源代碼、測試用例、問題描述、問題機理、更改措施、經驗啟示進行全流程的總結,可供研制方、測試方參考借鑒。
(3)測試數據分析報告
航天軟件較為復雜,涉及的研制單位、產品領域多,同時航天軟件研制單位和產品領域又相對固定。通過對軟件研制過程中的代碼走查、開發方測試、第三方測試數據進行統計分析能夠發現各研制單位、各產品領域軟件主要故障模式,從而對“常見病”“多發病”進行分析,明確軟件設計和測試中的關注點,優化測試方法,加強在系統試驗環境、板級測試中驗證軟件主要功能,在仿真測試環境中針對典型故障模式做針對性測試,以便在測試時間短的情況下達到最佳測試效果。
(4)軟件架構、設計準則、測試規范、測試集
NASA 發布的《飛行軟件復雜度研究報告》對過去40 年的大量任務(包括已發射和未發射的)中的飛行軟件問題進行了綜合分析,分析飛行軟件規模和復雜度的增長,提供降低管理復雜度的建議,提出解決軟件復雜度問題只能依靠“最佳實踐”,其中軟件架構是緩解復雜度的關鍵技術手段,而構建參考架構是“最佳實踐中的最佳”。
加強編譯器、數據庫等基礎軟件和飛行控制軟件以及信息處理軟件等應用軟件的設計、測試經驗固化,構建可重用的軟件參考架構,形成設計準則、測試規范、測試集向工程師推送,便于員工培訓、提供設計和測試指導,有助于快速抓住研制重點、建設測試環境、提升測試效率。
(5)軟件研制工具體系建設
針對航天軟件實時性強、硬件資源約束等特點,應研制代碼編程規則檢查、質量度量等靜態測試工具以及目標碼測試、全數字仿真等動態測試工具,支持空間單粒子翻轉、長時間在軌運行導致的計時計數溢出、時序不匹配等航天軟件典型問題的檢查,擺脫軟件測試對硬件環境的依賴,提高故障注入手段。
型號軟件產品保證從型號研制方案階段開始,根據任務要求和風險分析結果,確定關鍵節點和關鍵產品,按源頭起控、過程監督、獨立審查的原則開展活動,嵌入型號研制的全流程中。根據型號研制實際情況,軟件生命周期往往有所裁剪,在開展軟件產品保證的過程中,對于入口應堅持底線思維,確保滿足產品保證工作的最低要求清單,逐漸進行迭代演化;對于出口應堅持紅線思維,明確不能突破的負面清單,進行有限制條件的放行。
(1)研制單位能力確認
型號研制方案階段應對研制單位通過GJB5000認證的資質能力進行確認,如果發現存在未通過GJB5000 相應等級認證的單位,應在研制過程中予以關注,在技術狀態管控、配置管理、更改影響域分析等方面開展必要的軟件工程化檢查活動。
(2)軟件研制要求制定
在型號研制早期,產品保證隊伍應配合型號隊伍制定軟件研制有關的頂層要求。軟件系統方案中應明確軟件配套表、軟件產品結構樹、軟件上下位通信信息流;軟件通信協議包括內外部通信介質、數據格式和發送時序;軟件工程化大綱中可考慮工程研制階段與試驗鑒定階段要求融合;開發運行環境統型應考慮芯片、編譯器、數據庫、操作系統等使用統一版本,避免由于版本過多、版本不一致帶來的研制風險。
(3)軟件需求審查
從歷年質量歸零問題來看,軟件需求缺陷問題每年占15%以上,主要原因是軟件需求中關于安全性設計準則的描述籠統。在軟件研制過程中,要加強軟件需求驗證,開展軟件系統級時序時限匹配性的分析和驗證。軟件需求審查應有型號研制人員和產品保證人員參加,型號研制人員重點關注功能需求,產品保證人員重點關注安全性/可靠性設計準則、性能等非功能需求是否根據本型號的實際情況予以具體細化。
(4)代碼走查
軟件缺陷越早發現進行更改的成本越低。單元測試是發現早期缺陷的有效手段,但是往往投入不足。這種情況下,組織有經驗的軟件工程師開展代碼走查是非常有效的手段。
(5)軟件第三方測試
軟件第三方測試是軟件研制過程中的關鍵環節。一個工程型號中的各個軟件第三方測試要求應橫向一致,除了在依據軟件需求規格說明進行測試外,還應按照軟件故障模式庫挖掘軟件隱含需求,這就需要技術支撐機構對軟件第三方測試過程進行技術審查。
(6)軟件歸零、舉一反三、專項復查和獨立評估
歸零是航天行之有效的質量管理手段,為系統研究問題、積累知識提供了基本方法。軟件產品保證過程遇到軟件質量問題時,通過技術上的分析、管理上的改進,進行有針對性的舉一反三,提高航天產品的質量水平達到系統預防的目的。
技術支撐機構要針對工程型號的具體特點,制定專項復查要求,由各研制單位自行復查,技術支撐機構予以確認。對于工程型號中特別巨大的風險,應該開展獨立評估,技術支撐機構對系統需求、軟件需求、軟件設計、源程序、測試用例、測試結果等軟件生命周期中的所有產物及其過程進行全面的審查。
(7)軟件驗收
軟件驗收是軟件研制過程的集中體現,A、B級軟件應獨立驗收,軟件產品保證人員應參加軟件驗收,并確認研制過程中識別出的風險是否均已通過相應措施進行控制。
軟件產品保證工作應依托信息化平臺進行,將軟件產品保證思想、質量控制措施等貫穿于整個軟件研制流程。通過搭建信息化平臺,可以為一定范圍內的軟件研制、管理人員提供軟件研制過程中可用、有效的信息,統計分析研制過程數據、質量數據,獲取軟件設計準則、測試規范等知識,從源頭提升軟件產品質量。
部分軟件研制單位構建了協同開發平臺,系統設計人員、軟件設計人員、軟件測試人員、質量管理人員可以實時掌握軟件研制信息,在系統設計初期準確把握軟件實現需求。軟件設計人員利用平臺自動推送的設計準則、重用代碼庫快速實現軟件功能模塊并與系統設計人員、軟件測試人員實現高效迭代;軟件測試人員通過信息平臺推送的通用測試用例、測試準則,對軟件進行敏捷測試;質量管理人員通過共享的信息平臺,準確把握軟件研制進度,跟蹤軟件質量問題處理情況,及時總結并不斷完善研制流程中質量控制點,協同實現對軟件產品質量保證。
軟件產品保證從基礎建設到融合發展,是一個不斷深化的過程。提升平臺技術水平、擴大應用規模、納入業務流程是發展重點,將數據采集、信息擴散、知識使用等環節逐步融入科研生產流程,實現產品保證要素的閉環管理,促進高質量經驗知識的傳遞、激發、沉淀和積累,打造組織知識管理、項目協同推進、員工能力提升的一體化平臺,實現知識型研制。