隗合建、陳嘉凱 /中國運載火箭技術研究院
軟件產品是航天工程任務的重要組成部分。自20 世紀80 年代以來,NASA 發(fā)布了一系列關于軟件產品保證方面的文件要求。該要求緊密圍繞航天工程任務保成功需要,將技術與管理進行有機結合,突出了航天軟件產品安全性、系統(tǒng)性、規(guī)范化、專業(yè)性和獨立性等特點,是對不斷發(fā)展、探索的工程實踐經驗的系統(tǒng)總結與提煉,對我國航天軟件產品保證具有極大的參考意義。
NASA 航天軟件產品保證通過建立分級分類的軟件標準體系,配合軟件安全性、全生命周期過程管理與改進等具體指導性文件,構建出了全系統(tǒng)、全要素、全過程的可操作執(zhí)行的軟件產品保證框架。同時,NASA 建立了專業(yè)的軟件產品保證支撐機構和獨立的驗證確認中心,以確保整個框架的有效執(zhí)行,并在工程實踐中指導軟件產品保證框架不斷自我完善、持續(xù)改進。
從NASA 軟件工程和產品保證的實踐來看,軟件工程作為航天系統(tǒng)工程的重要組成部分,需要進行頂層規(guī)劃,緊密圍繞航天軟件“安全關鍵”的本質特性,將技術與管理相結合,準確把握任務風險識別與控制,加強產品保證與過程改進的融合,以實現(xiàn)航天任務圓滿成功的目標。同時,要加強產品保證專業(yè)支撐機構的建設和作用發(fā)揮,支撐機構要注重信息化建設,以提高產品保證工作的執(zhí)行效率和質量。
NASA 軟件標準體系文件共包括程序文件、標準、手冊和指南4 個部分。其中,程序文件《軟件工程要求》是頂層文件,定義了軟件分類,對軟件產品研制、維護、退役、操作和管理提出了最低保證要求;《軟件安全標準》規(guī)定了安全關鍵軟件的研制流程和技術要求;《軟件安全指南》描述了工程實踐中具體流程和技術的實施方法;《軟件保證和軟件安全標準》闡述了軟件產品保證計劃的制定要求;《軟件形式檢查標準》建立了軟件形式檢查過程的框架模型,以便盡早檢測和消除軟件產品缺陷;《軟件工程和保證手冊》用于指導持續(xù)的軟件工程實施和過程改進;《可編程邏輯器件手冊》對可編程邏輯器件的產品設計、驗證和維護提供了實施指南;《復雜電子保證專業(yè)人員手冊》包含可編程設計的復雜集成電路相關的設計過程、保證活動及應用實例。
2020 年,NASA 發(fā)布了《軟件工程和保證手冊》。該手冊為《軟件工程要求》《軟件保證和軟件安全標準》的使用提供了實施指南,是NASA 軟件工程和產品保證實施的關鍵組成部分,為有效開展可持續(xù)的軟件工程和產品保證及過程改進提供支撐。
《NASA 軟件工程和保證手冊》共包括6 部分內容,其中最關鍵的B、C、D 3 個部分描述了軟件工程和產品保證需要開展的具體活動。B 部分針對每個機構提出要求,提供有關頂層要求實施的獨立說明和解釋性信息;C 部分針對每個軟件項目提出要求,從軟件管理、軟件生命周期過程和軟件生命周期支持3 方面,為軟件項目提供適宜的軟件產品保證步驟以及軟件安全性要求;D 部分則對軟件工程實施提出了更高標準要求,具體包括編程清單、保證和安全、軟件設計原理等。該手冊以“操作方法”“指導材料”的形式提供給用戶,為用戶在軟件工程、軟件保證和軟件安全方面提供具體可行的指導,以幫助用戶實現(xiàn)不斷超越。
戈達德空間飛行中心(GSFC)作為NASA 航天任務飛行中心,其軟件產品保證實質是一種型號研制管理模式,通過將運載火箭、航天飛機等各類飛行任務管理要求進行集成,成體系地細化了各項軟件產品保證要求,并將這些要求融入到研制單位的質量管理體系,系統(tǒng)安全性、可靠性、維修性設計要求和風險管理程序中,以實現(xiàn)軟件產品的安全可靠。
該系列軟件產品保證要求主要包括4 個部分內容:一是軟件保證。包括軟件質量、安全性、可靠性、鑒定和批準、獨立驗證和確認。二是評審,包括軟件需求評審、初步設計評審、關鍵設計評審、測試就緒評審、驗收評審。三是軟件配置管理。承研單位需開發(fā)、使用配置管理系統(tǒng),對軟件需求、源代碼、數(shù)據和文檔提供管理和控制。四是軟件問題報告和糾正措施,包括不合格品檢測和報告、追溯和管理、影響評估和糾正。
為保證各項任務、計劃的順利完成,NASA 專門設立了安全與任務保證辦公室(OSMA),將管理與工程有機結合起來。作為NASA 統(tǒng)管質量、可靠性和安全性的重要職能部門,下設獨立驗證和確認中心、任務保障部門、安全與保證要求部門、工程與安全中心和資源管理辦公室5 個部門。主要負責NASA 的安全性與任務保證戰(zhàn)略、政策和標準的制定與實施,對NASA 所屬機構的安全性、可靠性及維修性設計貫徹落實起到重要作用。主要職責包括:保證NASA 安全性與任務保證的各項方針在全生命周期內得到有效落實;分析并獨立評估各項目以保證各任務能夠安全完成;為安全性、可靠性設計等領域部門提供資助,確保該類技術、過程、方法得到創(chuàng)新及快速轉化;制定并實施安全與任務保證一系列指導文件、標準、手冊等。
針對軟件產品保證,其下設的獨立驗證與確認中心、工程與安全中心發(fā)揮了重大作用。
(1)獨立驗證與確認中心
1993 年,“挑戰(zhàn)者”航天飛機事故后NASA 成立了常設性支撐機構獨立驗證與確認中心(IV&V)。該機構行政上隸屬于戈達德空間飛行中心,在安全與任務保證辦公室的指導下運作,主要承擔NASA的軟件產品保證、關鍵飛行軟件獨立驗證與確認的管理工作。該中心采用系統(tǒng)工程方法,匯集領域專業(yè)人才、軟件工程最佳實踐案例和綜合各類驗證與確認工具等,對關鍵軟件開展獨立驗證與確認,給出飛行任務軟件產品專家意見。同時,該機構致力于不斷改進獨立驗證和確認的方法、工具和實踐。
(2)工程與安全中心
工程與安全中心(NESC)核心是一個成熟的知識庫,由來自NASA 各個飛行中心以及業(yè)界、學術界和其他政府機構的技術專家組成。通過匯集業(yè)內最優(yōu)秀工程師的思想,不斷優(yōu)化研制流程,深化知識基礎,增強技術能力,以履行對卓越工程的承諾。NESC 以書面形式出具技術評估和咨詢報告,對咨詢內容提供預防性和糾正性建議。該機構通過經驗教訓系統(tǒng)對經驗教訓開展數(shù)據挖掘、趨勢分析等工作,將分析結果傳達給領導層和一線工程師,以求在潛在問題成為重大問題之前解決。
軟件產品保證不僅僅是質量管理、標準化等管理工作,而是在軟件生命周期中開展的各項管理和技術工作的綜合,具有明顯的技術特征。產品保證隊伍應獨立于產品設計、生產、試驗、質量管理隊伍,同時強化產品保證工程師識別技術狀態(tài)變化、把握產品關鍵特性的職責,實現(xiàn)對軟件產品全生命周期質量和技術監(jiān)督把關。
軟件產品保證工作的機制是全過程管控,從設計到試驗、從自研至外協(xié)外購都應實現(xiàn)全覆蓋。在軟件產品研制不同階段,要針對不同類別產品采取差異化管控方法,將傳統(tǒng)的粗放式質量管理轉向精細化、集成化、一體化管控模式,確保軟件產品質量的一致性和穩(wěn)定性。
軟件產品保證工作的配套建設主要是通過人員的專業(yè)化、文件體系的規(guī)范化、制度標準的齊備化,將工程經驗式研制轉變?yōu)橹R型研制。以風險型、精細化、技術性優(yōu)化管理過程,兼顧多接口、全過程、全要素的管理。
要實現(xiàn)軟件產品保證過程中技術和管理的有效結合,最重要的方法是采用風險管理,對型號研制過程中的技術風險進行充分的鑒別、評價、預防和控制,保證航天軟件產品安全、可靠、可用,能夠完成規(guī)定的任務目標。
軟件產品保證的工作基礎是科學配套的產品保證標準、制度體系,細致嚴謹?shù)漠a品保證文件體系(策劃、實施、總結),技術和管理融合的專業(yè)技術人員隊伍。在專業(yè)技術人員準確識別技術風險的基礎上,提出有針對性、差異化的管理控制措施,并通過技術和管理的雙重手段,確保產品風險得到有效控制。
軟件產品保證和過程改進,是出于“高質量的過程產生高質量的產品”這一理念,加以有效的方法使安全關鍵軟件零缺陷。前者評判一個產品是否合格,后者評判一個組織的能力,兩者是密不可分的。對于一個組織而言,更關注組織本身能力的提升;對于一項航天重大工程而言,更關注各研制單位提供的產品是否滿足質量要求。因此,軟件過程改進適合各研制單位開展,軟件產品保證適合型號工程研制推進。
雖然實施軟件產品保證和過程改進會犧牲一些“發(fā)揮”的空間,要嚴格按照標準規(guī)范、流程文件、質量要求等實施,但是更強的可依據性、易判定性將避免產品研制過程中不少疑問和爭議,有效識別、防止、去除錯誤,切實提高軟件產品的質量。
NASA 工程實踐表明,為充分發(fā)揮軟件產品質量與可靠性保障作用,需要建立集技術和管理于一體的技術支撐機構工作體系,完整體現(xiàn)各級組織、型號及技術支撐機構相互結合的關系,并能發(fā)揮技術支撐機構的獨立監(jiān)督、服務作用。
技術支撐機構需統(tǒng)一部署,形成專業(yè)、技術上的優(yōu)勢,全面參與型號研制的策劃與過程的管理和監(jiān)督,制定覆蓋型號研制各階段的軟件產品保證工作策劃,發(fā)揮好獨立把關作用,將控制點前移,把“預防為主”方針落到實處,推動型號軟件產品保證工作切實有效實施。
同時,技術支撐機構作為前沿性和基礎性專業(yè)技術研究機構,應該總體掌控型號中的軟件質量與可靠性技術基礎研究需求,制定專業(yè)技術發(fā)展路徑,提前籌劃基礎研究與能力建設工作,以滿足型號軟件研制需要。
技術支撐機構應對積累的故障數(shù)據進行深入分析,建立軟件質量問題舉一反三基線,將新技術、新方法、新工具融入管理過程,融入型號研制過程,為型號研制流程優(yōu)化、研制能力提升提供決策支撐。
軟件產品保證工作應依托信息化手段,構建軟件研制、管理人員便于使用的信息化管理平臺。該平臺要與各類知識管理系統(tǒng)相結合,統(tǒng)計分析研制過程數(shù)據、質量數(shù)據,獲取軟件設計準則、測試規(guī)范等知識,從設計源頭提升軟件產品質量。
軟件產品保證從基礎建設到融合發(fā)展,是一個不斷深化的過程,提升信息化平臺技術水平、擴大應用規(guī)模、納入業(yè)務流程是發(fā)展重點。將數(shù)據采集、信息傳遞、知識使用等環(huán)節(jié)有效嵌入科研生產流程,實現(xiàn)軟件產品保證要素的閉環(huán)管理。通過經驗知識的傳遞、使用、沉淀和持續(xù)積累,打造組織知識管理、項目協(xié)同推進、員工能力提升的一體化平臺,實現(xiàn)知識型研制。