王保錄、于喜紅、薛凱、肖振、紀祖赑、占續(xù)軍 /空間物理重點實驗室
隨著信息技術的快速發(fā)展,軟件在航天裝備中所占比重越來越大,航天飛行器作為典型高精尖產(chǎn)品代表,集中體現(xiàn)了系統(tǒng)集成化、智能化的發(fā)展方向,航天飛行器軟件的規(guī)模及復雜度呈指數(shù)級增長。傳統(tǒng)軟件開發(fā)方式是面向代碼、從無到有的手工作坊式,按軟件配置項分配人力資源,各軟件研制缺少頂層設計,沒有統(tǒng)一的技術框架和標準,研制水平嚴重依賴個人能力,難以開展成果共享。型號各自為戰(zhàn),軟件重用效率不高,而且主要為代碼級的白盒重用,質量風險較大,開發(fā)、測試及后期維護成本居高不下。再加上軟件處于型號研制流程的末端,因此,軟件短線問題時有發(fā)生。這種軟件研制模式難以滿足型號質量、進度及成本的要求,難以適應新形勢下“高質量、高效率、高效益”的發(fā)展要求。因此,必須找到能夠支持快速迭代、易開發(fā)、易維護的高質量軟件產(chǎn)品研制和交付方法,通過強化產(chǎn)品線、弱化型號線,由產(chǎn)品牽引型號軟件研制,實現(xiàn)降本增效。
本文以“產(chǎn)品牽引型號”為戰(zhàn)略指引,以航天飛行器型號軟件研制為應用背景,開展軟件產(chǎn)品化體系研究,涵蓋管理體系、產(chǎn)品體系、產(chǎn)品化技術與信息基礎保障體系3 個方面。以此為基礎開展軟件產(chǎn)品化體系研究與實踐,設計基于重用產(chǎn)品的型號軟件研制流程,打破型號邊界,由產(chǎn)品化人員統(tǒng)籌各型號需求,牽引型號研制,使型號與產(chǎn)品化融合,實現(xiàn)橫向一致、降本增效。
基于GJB5000A 體系框架,建設了軟件產(chǎn)品化制度體系樹,為實現(xiàn)產(chǎn)品化與型號融合提供了制度支撐,如圖1 所示。制度體系樹分為管理制度、技術標準和作業(yè)指導書三大類。管理制度為三級架構,院級產(chǎn)品化管理制度為頂層約束文件;所級標準《軟件重用指南》為二級文件;軟件產(chǎn)品化研制流程相關制度作為三級文件,為基于重用產(chǎn)品開展型號軟件研制提供了詳細的制度約束。

圖1 軟件產(chǎn)品化制度體系樹
工作體系方面,借鑒互聯(lián)網(wǎng)組織架構,建立產(chǎn)品總監(jiān)、產(chǎn)品經(jīng)理、軟件設計三級管理體系,推行產(chǎn)品經(jīng)理負責制。按產(chǎn)品組織研制隊伍,每類產(chǎn)品分配主管產(chǎn)品經(jīng)理,統(tǒng)籌各型號需求,牽頭開展產(chǎn)品化研制,進行跨型號通用設計。根據(jù)軟件專業(yè)特點,制定了產(chǎn)品化工作考核與激勵制度,從重用產(chǎn)品的研制數(shù)量和質量、軟件設計人員在開發(fā)中選用可重用產(chǎn)品的數(shù)量與比例等多維度考核工作開展情況,激勵設計人員主動開展產(chǎn)品化工作、主動采用產(chǎn)品化工作成果。
產(chǎn)品體系重點包括型譜建設與貨架建設。通過開展領域需求分析,將重用軟件產(chǎn)品按不同顆粒度劃分,具體分為構件(含插件)、框架、基本型軟件和通用型軟件4 個類別。
(1)構件。具有確定的軟件獨立功能,可重用的軟件單元或模塊、組件的統(tǒng)稱。可重用構件封裝了設計和實現(xiàn),通過對外接口向高層的應用提供服務,可獨立交付。一般是無法獨立運行的代碼、庫文件或功能單一的工具類可執(zhí)行程序。
(2)插件。實現(xiàn)了標準頂層接口的可重用構件,即標準構件,適用于面向對象軟件開發(fā)。
(3)框架。一系列技術、功能模塊和產(chǎn)品的集合,具有較為復雜的軟件功能,具備相對固定的架構形式,是一種特殊構件,能夠作為其他構件開發(fā)的依賴對象,能夠作為構件或插件的宿主程序。
(4)基本型軟件。實現(xiàn)了領域內某一類基礎應用需求的軟件產(chǎn)品,需要進行功能定制才能滿足個性化需求,如增刪部分構件。基本型產(chǎn)品在具體型號應用中盡量不對代碼進行修改或僅少量修改。
(5)通用型軟件。無需進行功能定制或需要修改少量配置參數(shù)即可實現(xiàn)完全重用的一類軟件,可以完全覆蓋領域需求。
為更好滿足型號不同層次質量要求,建立構件成熟度3 級模型,成熟度級別由低到高依次為1 級、2 級和3 級,具體定義如下:
(1)1 級。經(jīng)過開發(fā)方測試;
(2)2 級。經(jīng)過系統(tǒng)試驗考核;
(3)3 級。經(jīng)過第三方測試。
型號軟件成熟度定級時可參考重用構件成熟度,避免重復測試。成熟度提升需經(jīng)產(chǎn)品評審小組評審通過。當構件發(fā)生更改后,視更改級別成熟度降級,需補充相應測試或試驗驗證才能提升成熟度,各等級變化示意見表1。

表1 構件變化后產(chǎn)品成熟度等級變化示意
軟件重用技術是軟件產(chǎn)品化的技術基礎。本文聚焦軟件重用技術,分析領域軟件特點,選擇平臺化開發(fā)作為軟件重用的基礎路線,分別研發(fā)了標準化的嵌入式軟件分層架構和桌面應用軟件“平臺+插件”架構,各型號軟件研制必須選用對應的基礎平臺框架,如圖2 所示。

圖2 嵌入式軟件分層架構與桌面應用軟件插件式架構圖
嵌入式軟件分層框架設計分離了各功能接口,使每個功能模塊均可作為單獨功能使用。用戶需求發(fā)生變更時,只會涉及部分構件的適應性修改,不會對其他構件的正常工作產(chǎn)生影響,修改完成以后重新鏈接生成可執(zhí)行文件即可重新生成軟件產(chǎn)品。同時,各模塊對其內部結構和實現(xiàn)細節(jié)進行了封裝,通過提供外部接口來實現(xiàn)與其他構件和系統(tǒng)的通信,調度邏輯模塊靈活實現(xiàn)各功能之間的統(tǒng)一調用與編排。與硬件驅動分離,有利于軟件系統(tǒng)修改、維護以及在不同硬件運行環(huán)境間的移植,從頂層規(guī)劃上保證軟件的修改不影響其核心功能以及一些關鍵的設計抽象。
桌面應用軟件“平臺+插件”架構使軟件的功能和模塊在劃分中的相互耦合性更少,功能和模塊具有更大的獨立性,可以提高軟件開發(fā)并行性。基于該架構可以完成功能模塊在系統(tǒng)中的替換、增加及減少等操作,解決開發(fā)中需求不確定性問題,而且方便軟件的升級和維護。該架構可以實現(xiàn)插件級黑盒重用,有效提高軟件的重用率。
插件是根據(jù)應用軟件程序的標準化接口所編寫的用于實現(xiàn)特定功能的程序模塊,是一種具有標準化接口的構件。利用插件技術可以實現(xiàn)在程序主體不被修改的基礎之上,加強和拓展計算機軟件的作用。本項目以標準化帶動產(chǎn)品化,利用面向對象語言的多態(tài)特性,設計一種重用構件接口,已形成所級標準規(guī)范。在接口的設計上,僅規(guī)定最為基礎且通用的6 個函數(shù)方法,見表2。功能覆蓋了航天型號桌面應用軟件業(yè)務單元的基本操作。所有插件實現(xiàn)必須實現(xiàn)此接口,使領域平臺框架可以對插件進行統(tǒng)一管理,實現(xiàn)插件式的“即插即用”功能擴展。

表2 插件接口函數(shù)說明
插件開發(fā)方按照標準接口定義實現(xiàn)不同顆粒度的功能單元,并部署到插件庫。開發(fā)人員根據(jù)業(yè)務需要利用自動化腳本技術動態(tài)組合裝載、運行。插件使用XML 作為描述文件,描述文件供平臺讀取插件信息,包括插件的名稱、版本、作者、Email、描述和程序名。
為方便重用軟件貨架產(chǎn)品管理,在型號軟件配置管理工具的基礎上開發(fā)了重用產(chǎn)品管理系統(tǒng),作為重用軟件產(chǎn)品資產(chǎn)庫。以構件為基本單元進行管理,管理方式比面向型號的配置管理系統(tǒng)更為靈活,管理成本更低。依托構件庫管理重用產(chǎn)品技術狀態(tài),產(chǎn)品缺陷及技術狀態(tài)變化可以即時通知使用者,使軟件產(chǎn)品化研制全流程實現(xiàn)信息化。
重用貨架產(chǎn)品包括可重用構件、可重用軟件和可重用軟件框架三大類,其管理形態(tài)主要包括源代碼、庫文件和可執(zhí)行程序。每一類貨架產(chǎn)品都以數(shù)據(jù)包的形式進行管理,數(shù)據(jù)包全集包括構件說明、源代碼、庫文件、可執(zhí)行程序。數(shù)據(jù)包可根據(jù)軟件特點進行裁剪,具體如表3 所示。

表3 貨架產(chǎn)品數(shù)據(jù)包
貨架產(chǎn)品管理系統(tǒng)包含構件維護人、配置管理員、項目成員、產(chǎn)品經(jīng)理和產(chǎn)品總監(jiān)5 類角色,共同參與完成對貨架產(chǎn)品的入庫、出庫、更改、重用等流程管理。
軟件的產(chǎn)品化不僅僅意味著軟件產(chǎn)品的可重用,而是軟件的生產(chǎn)過程也要進化到工業(yè)化產(chǎn)品生產(chǎn)水平。通過將軟件生產(chǎn)提升到工業(yè)化生產(chǎn)水平,將大幅提高軟件生產(chǎn)效率,提高軟件產(chǎn)品質量,形成規(guī)模化經(jīng)濟效益。
軟件研制過程包含需求分析、設計、編碼、測試、配置管理、部署、項目管理等諸多活動,大部分的工作仍然是手工作業(yè)為主,有些環(huán)節(jié)有信息化管理手段。要實現(xiàn)工業(yè)化生產(chǎn),其核心就是要解決如何讓研發(fā)的各個過程能夠無縫銜接,提高自動化水平。通過技術創(chuàng)新,將開發(fā)人員從簡單重復性的工作中解放出來,處理更高級、更關鍵的問題。
本文基于開源Jenkins 持續(xù)集成系統(tǒng)實現(xiàn)了軟件流水線平臺,將一系列分析、驗證、確認和測試工具進行集成。通過自動化的方式對代碼或插件開展靜態(tài)分析、 單 元 測試、配置項測試,從而提高軟件測試效率和精度。軟件流水線將一系列開發(fā)和組裝工具進行集成,代碼或插件通過形式化的需求描述,進行模型翻譯或成熟插件復用,能夠自動生成工程代碼并組裝成應用軟件,從而避免手工開發(fā)、集成和部署引入的缺陷。此外,因軟件流水線能夠充分節(jié)省資源,縮短研制周期,軟件流水線的快速反饋特性可以讓用戶頻繁確認,從根本上避免“需求誤解鏈條”造成的“需求理解二義性”。
設計基于重用產(chǎn)品的型號軟件研制流程,促進型號與產(chǎn)品化融合,實現(xiàn)橫向一致,如圖3 所示。產(chǎn)品化人員全面介入型號軟件研制,同類軟件由產(chǎn)品經(jīng)理統(tǒng)籌各型號需求,參與工作產(chǎn)品(文檔、代碼)審查。在型號軟件入庫流程上增加產(chǎn)品經(jīng)理會簽環(huán)節(jié),由產(chǎn)品經(jīng)理對工作產(chǎn)品的產(chǎn)品化要素把關,保證產(chǎn)品重用比例及重用質量,具體包括:

圖3 基于重用軟件產(chǎn)品的軟件研制流程
(1)型號軟件研制人員和產(chǎn)品經(jīng)理共同會簽任務書,有效合并同類需求,消滅不必要的個性需求;
(2)在軟件需求分析階段,產(chǎn)品經(jīng)理參與需求分析,標識可重用構件和待開發(fā)的重用構件,避免錯誤重用或未重用現(xiàn)有資產(chǎn)。對重用產(chǎn)品的測試需求進行初步分析;
(3)在測試階段,產(chǎn)品化經(jīng)理參與測試計劃評審,識別免測項,避免重復測試。
基于重用產(chǎn)品的型號軟件研制流程的關鍵環(huán)節(jié)包括:
(1)重用申請
型號軟件設計發(fā)起構件重用申請流程,與重用構件維護人達成一致,建立構件與型號配套軟件的引用關系。
(2)變更通知
重用構件變更通過郵件提醒構件的關注人和重用申請人,做到更改影響及時傳遞。
(3)重用反饋
型號人員就重用構件的使用情況向構件維護人員進行反饋,反饋內容包含使用方式(完全重用/修改重用)、修改程度(修改代碼行百分比)、發(fā)現(xiàn)問題數(shù)及問題詳細描述和改進建議。
以型號中普遍配套的中心控制軟件為例,基于測發(fā)控領域平臺框架進行插件組裝,平均重用插件超過15 項。中心控制軟件產(chǎn)品經(jīng)理會簽各型號任務書,組織產(chǎn)品隊伍基于型號需求開展插件配置和組裝,向型號人員交付軟件。
本文以航天裝備軟件為應用背景,開展軟件產(chǎn)品化體系建設,從管理體系、產(chǎn)品體系、產(chǎn)品化技術與信息基礎保障體系3 個方面分別進行研究與實踐,實現(xiàn)了一套完整的面向航天裝備軟件的產(chǎn)品化體系。該體系打通了產(chǎn)品軟件與型號軟件之間的邊界,使型號線與產(chǎn)品線融合,實現(xiàn)了橫向一致、降本增效。