薛 凱,高 飛,閻 君,吳曉蕊,楊 飛
(1. 空間物理重點實驗室,北京,100076;2. 北京航天自動控制研究所,北京,100854;3. 中國運載火箭研究院,北京,100076)
航天某重大工程是一項探索性強、風險性高的國家重大科技工程,相對于傳統航天器圍繞特定任務開展研制工作的產品性導向而言,其最大特點是科研性。以產品性為特點的項目工作思路是用最成熟的技術做最穩定的產品,而以科研性為特點的工作思路則是充分驗證技術方案和快速探索極限能力,這就決定了該工程項目的研制工作和演示驗證方案的復雜性和多變性,也意味著其技術狀態的多樣化、試驗產品交付的高頻性等特點。為了盡快完成研制工作,隊伍基于硬件產能與產品交付頻度難匹配的現狀,采取了相對固化硬件產品的技術狀態,通過調整軟件方案來實現各種研制目標,從而在有限時間內開展更多的試驗。這就要求軟件的開發需適應狀態變化大、交付頻次高、功能兼容強的研制模式。而隨著航天市場競爭環境的變化,各航天器項目衍生狀態多、產品交付快、進度要求緊等新常態也逐漸蔓延到了所有航天產品研制過程中,軟件質量與進度的矛盾愈發激烈,復雜軟件系統管理亟需采取更有效的技術管理模式與實施方法。
傳統的軟件系統研制依附于單機,信息傳輸鏈條冗長,各軟件相互獨立,為系統主動服務意識不足,針對軟件系統的總體需求解讀常常出現偏差,各軟件在設計過程中歷經多次反復,影響產品交付進度;在研制過程中,航天各項目、各任務均開展質量問題舉一反三,而在該工作中各專業往往以被動的方式參與到其中,沒有充分地吸收既往經驗、理解準則,并應用到自己的產品中;目前航天器已形成了技術狀態控制要求以及軟件更改影響域分析要求,以指導配置項級軟件更改影響分析,但針對軟件更改對其他支撐軟件、軟件系統,甚至其他系統的影響推演方法目前還不完善。
為解決上述問題,航天重大工程從進度和質量兩條線索入手,通過建立連接、調整結構、聚焦關鍵節點及核心環節,以提高研制效率和質量為目標,在現有研制模式的基礎上優化流程,最終形成一種面向復雜軟件系統的敏捷式精細化過程管理模型,推動了重大工程軟件系統管理的科學化、系統化和規范化發展,解決了復雜系統軟件按時保質交付的難題,為任務完成奠定了基礎。
傳統的軟件管理是依附于單機的管理,軟件之間相互獨立,軟件系統設計和管理并沒有作為一個重要的設計、管理環節進行系統的開展,這造成了軟件的主動服務系統意識不足,總體的需求不能自頂向下有效地落實,軟件設計中總體需求的落實情況、標準規范的推廣情況沒有得到及時的確認,軟件研制經驗和成果積累少,開發效率難以提升。
作為國家重大科技項目,重大工程集中體現了電氣系統集成化、智能化的發展方向,由于采用“通用化硬件+定制化軟件”為基本設計思路,軟件實現的功能在整體系統功能的所占比重越來越高。與此同時,由于重大工程的一個重要目標是盡可能獲取邊界狀態的試驗數據,因而重大工程設計了多發次、多狀態的演示驗證試驗,各發次驗證目標具有關聯性。在研發迭代周期上,新技術、新產品從不成熟到成熟的過程致使從設計到驗證的迭代次數增多、迭代鏈條變長。在新一次任務確定后,從總體系統方案的設計到軟件的實現、測試、試驗等環節均需要逐步改進優化,才能達到最終較為理想的工作效果。因此,重大工程的軟件對外面臨的是呈爆炸式增長的軟件規模和復雜度、調整范圍和頻率極高的技術狀態變化和密集化、并行化、連續化的交付壓力。
當軟件規模和復雜度不斷攀升、配套協作單位劇增,軟件需求的傳遞是否失真、技術要求的執行是否到位、設計水平是否匹配等問題隨之而來。信息傳遞是管理的基礎,要求的準確傳達、執行的及時反饋都依賴于信息傳遞的效率和效果。基礎有效才能帶來過程的高效。任務書、工程標準、質量標準、舉一反三要求等都是以某種信息形式從頂層總體單位向下游配套單位傳遞;信息傳遞效率低以及信息失真問題帶來的是進度成本,后期信息的失真帶來的則是質量成本、甚至是系統功能的妥協。在人員組成上,重大工程研制初期,項目配套單位眾多,各單位專業化發展不平衡,團隊年輕,經驗較少,導致對標準、要求理解和執行有偏差,各單位的航天經驗也存在薄厚之分,從而帶來質量風險,工作協同過程中,各單位工作節奏不一致也會導致潛在的進度風險。
由于航天重大工程高頻的、大幅度的技術狀態更改,加之需求變化的不確定性和進度的緊迫性,在軟件研制工作中,每次試驗的軟件需要根據任務要求進行大調整;研制進度上,軟件需求確認工作最早只能在前一次驗證結束后、本次試驗頂層方案設計基本完成時開始,整個軟件系統研制的周期要求極短。因此軟件需基于龐大的系統狀態完成快速、全面的更改影響分析,提前協調及調度必要資源,對可能產生的進度影響進行預警,從而降低技術變更帶來的管理成本。
基于上述分析,航天重大工程軟件系統管理解決的重點聚焦于軟件設計要求的傳遞、設計過程的質量控制、技術狀態變更控制、設計能力統一與提升4項問題。
航天重大工程的軟件系統根據驗證目標,運用多專業學科的設計方法,通過設計、研制和驗證轉化形成了一套滿足系統全生命周期使用要求、綜合最優的系統產品。因此航天軟件系統研制亦是系統工程。軟件系統研制的實施過程也應按照識別關鍵活動并制定活動流程,然后在系統工程專業技術、標準規范及工具方法等要素的支持下,開展系統工程全壽命周期活動的過程[1,2]。另一方面,軟件系統管理的對象主體是軟件系統的開發活動,要實現軟件開發、運行、維護活動系統化、制度化、度量化。因此,針對航天器軟件系統這種多專業強耦合的集成系統可以結合兩種管理方式。
隨著航天軟件管理經驗的不斷積累,軟件工程標準日趨完善,各軟件組織開始實施軟件過程改進,為與總體系統工作有機的結合,一種較為有效地做法是將軟件工程化、系統工程管理和產品保證相融合[2],實施該方法需要實現多方聯動的組織架構,并盡可能降低管理成本;針對此問題,為應對需求頻繁更替的現狀,越來越多的軟件組織偏向于在高度紀律性的規范化過程實施基礎上,構建扁平化組織,在策劃、控制、溝通等環節采取敏捷方法[3,4],但實施該方法后,隨即要面對的是如何使扁平化組織快速有效地做出正確的決策,而這依賴于敏捷團隊的能力;面臨嚴峻的質量、進度壓力,很多企業通過組織學習的方式實現設計團隊的進化[5,6],通過組織學習可以逐步培養扁平化組織的決策、控制能力,最終實現可快速響應變化、質量可控的軟件系統管理。
航天重大工程軟件管理模型如圖1所示。

圖1 重大工程軟件管理模型Fig.1 Management Concept Model of Major Aerospace Projects
該模型以信息傳遞的效果和效率作為工程管理基礎,形成扁平化的溝通平臺,以支持技術交流、規范制定、質量控制的常態化執行;依托該平臺以軟件關鍵里程碑為質量控制節點,以“敏捷溝通圓桌會議”的形式開展面向用戶的任務書解讀和基于專家審核的交付確認工作,加快需求確認過程并提前發現共性問題;為彌補設計師隊伍技術經驗不足的短板,提高一次性設計質量,積累、利用好本任務和其他任務的故障案例和設計經驗,依托專家組強化故障案例總結、設計準則提煉能力,通過組織學習和針對性舉一反三,讓設計師充分吸收既往經驗、理解準則,并應用到自己的軟件產品中,在整體軟件設計水平站在前人積累的基礎上,全面提升軟件產品質量;在研制過程中如發生了狀態變化,工作重點關注反饋及時準確和影響范圍控制,項目集中定期統計技術狀態變更情況,提前協調及調度必要資源,對可能產生的進度影響進行預警,降低因技術變更帶來的管理成本,對發生的狀態更改創新性地提出了一套“十字鏈條”技術狀態控制方法開展全要素管理要素識別。
重大工程通過軟件總體專業牽頭,以任務整體PHA分析結果、軟件安全等級分析結果、配置項分布為線索,從承研軟件數量及重要程度兩個維度綜合考慮工作組的代表人員構成,以此形成軟件系統管理組織機構。
軟件工作組在軟件系統工作中堅持服務與統籌、連接與共享的原則。在軟件工作組中不同背景的軟件人員,充分地進行思想交流碰撞,取人之長補己之短,打造軟件全系統融合及共享平臺,互學互鑒,促進隊伍整體能力提升。工作組服務系統總體目標、服務各級研制單位。立足研制痛點、細致規范開展工作,確保任務全面成功。通過統籌研制工作中的難點、統籌協調項目資源,研究過程中核心風險環節,形成一套適應項目特點的規范化軟件工作程序,并落地實施。
根據上述原則,重大工程軟件工作組形成了工作的職責,主要分為3項:
a)負責頂層策劃與軟件總體設計,負責全系統軟件技術狀態管理工作,負責分系統、重要單機軟件驗收工作,負責編寫軟件研制總結報告等。
b)辨識重大工程軟件研制風險點,研究對策、創新方法、執行落地,針對性地開展工程化要求之外的特定工作。針對重大工程軟件研制過程中的痛點,如任務書理解不一致問題、低層次重復性軟件設計問題、軟件技術狀態控制問題,形成規范化的信息溝通、舉一反三、技術狀態管理等例行制度,并通過工作組牽引軟件研制隊伍落地開展工作。
c)組織開展技術經驗交流與分享工作。
重大工程同時成立了由各單位軟件專家組成的重大工程軟件專家組,為重大工程軟件研制提供技術支撐,協助設計師系統進行重大軟件技術問題攻關,負責專項軟件關鍵節點及歸零評審、審查項目軟件復查及舉一反三結果、對研制過程中的重大軟件技術問題提供技術支持等工作。
信息傳遞的效果和效率是工程管理的基礎,依托軟件工作組,重大工程軟件系統形成了一個扁平化的溝通平臺,讓信息流動更加便捷有效,確保將各級配套單位的思想認識和行動標準統一,信息流動關系如圖2所示。

圖2 軟件工作組信息傳遞示意Fig.2 Schematic Diagram of Information Transmission
圖2的信息傳遞模式的優勢在于扁平化組織打破了分系統、單位的壁壘,共享技術與管理信息,充分發揮軟件設計師隊伍的主觀能動性,通過工作組的集體智慧,及時化解研制風險。通過壓扁信息傳遞結構,軟件工作組作為整個研制隊伍的代表,直接與兩總系統、調度與質量系統、其他專業設計師系統、第三方測評單位建立直接溝通渠道,隨時溝通信息、隨時反饋風險、隨時解決問題。依托扁平化敏捷式的組織溝通形式可以支持常態化、例行化的專業技術交流、需求及技術狀態集中監控和風險問題跟蹤。
為徹底解決任務書理解不一致、交付后產品質量不高的問題,工作組針對此類問題頻發的研制單位配套軟件,策劃并開展了任務解讀、過程中復核、交付審核走查的“三環節”軟件設計過程質量把關機制,如圖3所示。

圖3 “三環節”軟件設計過程質量控制機制Fig.3 Quality Control Method of Software Design Process
工作組在首輪任務書及任務書更改階段,針對上下游任務傳遞過程中可能出現的文檔表述不一致、雙方理解不一致問題,通過工作組平臺,直接對接需求方和承制方集中解讀,必要時邀請分系統設計人員參與解讀,消除理解歧義;在設計過程中,工作組開展接口解讀、可靠性安全性設計復核等工作。在設計過程中,如通過月例會分析辨識出軟件技術風險點,則針對性地開展對具體軟件的復核工作;在軟件產品交付前開展代碼走查工作。在產品正式交付前,組織工作組骨干并邀請專家組成員開展2至3天的封閉式代碼走查,避免交付后出現問題。
航天重大工程以建設和維護組織資產庫為頂層設計,將標準規范、項目經驗、研制過程風險、典型案例納入組織知識集中,工作組由專人負責外部環境知識的引入,針對引入的知識進行精細化提煉和精準化推送。
同時,為保證知識在軟件設計師隊伍內的循環效果,工作組采取了知識吸收效果確認的策略,防止知識衰減。在實施過程中,重大工程以舉一反三為組織資產建設的切入點,建立了知識環繞式的組織資產庫共享機制。
重大工程軟件舉一反三故障案例的收集由工作組負責,以月為周期收集故障案例,數據來源包括了其他航天器各年度的故障案例,以及通過工作組成員渠道反饋的故障案例。在每次例會安排舉一反三專題,會上結合本系統軟件特點,識別典型、有針對性的軟件質量案例,組織集中開展學習討論、經驗分享,加深對故障案例的理解,精細化提煉舉一反三要點。
在舉一反三專題會中,工作組在月例會上直接明確需開展舉一反三的軟件配置項及責任單位,會后將舉一反三要點及具體要求發全系統開展徹底的舉一反三工作。軟件工作組負責匯總全系統舉一反三報告,并由專家組對舉一反三結果進行審查。專家組對各單位舉一反三工作的全面性、準確性以及針對性進行審查確認,對于不滿足要求的舉一反三結果,由工作組牽頭督促相關單位整改到位,確保工作閉環。在質量問題數據庫及相應舉一反三要點梳理的基礎上,為充分利用組織資產,實現應用迭代,軟件工作組牽頭組織各級專家及配套單位,及時梳理并確認各類設計準則,下發各單位,進一步反哺設計。
為降低技術狀態更改帶來的質量風險,工作組提出了基于“十字鏈條”的多環節關聯性軟件技術狀態控制方法,如圖4所示。
軟件技術狀態控制工作需要關注監控的及時性、影響分析的全面性以及技術狀態更改確認的充分性。
重大工程依托軟件工作組對于A、B級軟件在系統試驗階段的技術狀態更改,由工作組牽頭采用十字傳播路徑軟件更改影響分析方法開展工作,十字傳播路徑分為水平向和垂直向,水平向以研制歷程時間線描述本軟件生命周期各工作環節,垂直向以軟件利益相關維度描述可能受影響的方案或產品,通過十字傳播路徑可通過水平向確認軟件平行依賴項如對設計文檔、測試驗證的影響,通過垂直向確認對系統功能和其他軟硬件的影響。
在技術狀態監控環節,軟件工作組從總體層面維護全系統軟件技術狀態表,包括各軟件任務書、軟件版本、各套設備軟硬件部署、待解決問題等。根據工作計劃,工作組對關鍵里程碑節點依托系統轉段、系統試驗前后、出廠評審等節點,開展專家確認,對其他節點采取按月快速確認的方式監控技術狀態。對產生重大變化的關鍵軟件,工作組采用專題代碼走查,進行技術狀態更改確認。

圖4 基于“十字鏈條”多環節關聯性軟件技術狀態控制方法 Fig.4 Software Technology State Control Method based on Relevance
為驗證軟件系統管理的目標實現情況,統計了航天重大工程中部分典型演示驗證項目P、K、T型的軟件過程測量數據,各任務按時間序列抽取6、3、4項子樣產品的關鍵研制數據,按研制效率和質量數據統計形成了如下分析結果,見圖5。

圖5 典型項目軟件質量問題數量統計Fig.5 Software Development Productivity Trends of Great Projects of Aerospace
從軟件引起的質量問題數量來看,重大工程累計發生12項軟件質量歸零問題,其中P項目共有6批次,共發生軟件質量問題8項,K項目、T項目共計15發次,軟件問題僅為4項。
從軟件問題的二級原因分類來看,P項目的8項問題中4項為需求問題,即與任務要求理解不一致有關,而K項目、T項目未出現一項需求問題,均為設計問題,常態化例行化的軟件任務書解讀工作收到了實效。
如圖6所示,以全系統軟件第三方測評中統計的千行代碼缺陷率為測量指標,全面分析航天重大工程軟件研制質量趨勢,缺陷率越低,代表軟件研制質量越高。

圖6 航天重大工程軟件研制質量趨勢Fig.6 Trend of Software Defect Rate of Great Projects of Aerospace
P項目試驗階段,平均每千行代碼,測評人員能發現6.4個軟件缺陷,K試驗階段,隨著設計過程中的質量提升工作的常態化開展,重大工程軟件研制質量大幅提升,截至K項目結束代碼缺陷率下降至每千行3.5個。T項目試驗階段,軟件技術狀態仍保持高頻變化,但代碼缺陷率進一步下降至每千行2.6個。與重大項目初期相比,截至到T項目,軟件代碼生產率提高了105%,軟件缺陷率下降了59%,說明軟件里程碑節點質量控制和技術狀態控制策略收到了明顯的成效。
如圖7所示,P項目,隊伍的研制效率平均約為32.4行/人天,即一名設計人員每天僅生產32.4行代碼,各發次的研制效率基本變化不大,P5由于新研設備配套軟件規模大、復雜度高,研制效率較低,約為29.9行/(人·天)。

圖7 航天重大工程軟件研制效率趨勢Fig.7 Software Development Productivity Trends of Great Projects of Aerospace
K項目階段,盡管研制工作量和研制難度陡增,但隊伍在研制過程中形成了技術管理新方法并付諸實踐,航天重大工程軟件研制工作逐漸走出低谷,研制效率開始呈“V”字翻轉,研制效率分別提升至42.3 行/(人·天)(較P項目試驗階段提升30.6%)及50.4 行/(人·天)(較P項目試驗階段提升55.6%)。
T試驗階段,隊伍已全面適應新型工作模式,生產力進一步提升,代碼生產率達66.7行/(人·天),研制效率較P試驗階段提高一倍。上述數據反映出了重大工程軟件研制效率和軟件研制質量都有了大幅提升。軟件需求準確落實、關鍵環節的把控和設計能力的提升推動了軟件研制效率,為重大工程高質量軟件產品產品快速交付提供了有利條件。
隨著中國航天事業以及信息技術的飛速發展,軟件在航天裝備中所占比重越來越大,軟件規模及復雜度呈指數級增長,傳統的航天器軟件研制理念和工作方法已難以適應新形勢下“高質量、高效率、高效益”的發展要求。航天重大工程軟件研制的特點與難點,已成為當前重大型號軟件研制的新常態,航天重大工程的實踐證明,以扁平化組織、敏捷式反應為特點的軟件工作組為牽引組織全型號軟件研制工作,可以有效落實軟件工程化要求,縮短研制進度、提升產品質量,具有廣泛的推廣價值和借鑒意義。