王保錄、于喜紅、薛凱、肖振、紀(jì)祖赑、占續(xù)軍 /空間物理重點(diǎn)實(shí)驗(yàn)室
隨著信息技術(shù)的快速發(fā)展,軟件在航天裝備中所占比重越來越大,航天飛行器作為典型高精尖產(chǎn)品代表,集中體現(xiàn)了系統(tǒng)集成化、智能化的發(fā)展方向,航天飛行器軟件的規(guī)模及復(fù)雜度呈指數(shù)級(jí)增長(zhǎng)。傳統(tǒng)軟件開發(fā)方式是面向代碼、從無到有的手工作坊式,按軟件配置項(xiàng)分配人力資源,各軟件研制缺少頂層設(shè)計(jì),沒有統(tǒng)一的技術(shù)框架和標(biāo)準(zhǔn),研制水平嚴(yán)重依賴個(gè)人能力,難以開展成果共享。型號(hào)各自為戰(zhàn),軟件重用效率不高,而且主要為代碼級(jí)的白盒重用,質(zhì)量風(fēng)險(xiǎn)較大,開發(fā)、測(cè)試及后期維護(hù)成本居高不下。再加上軟件處于型號(hào)研制流程的末端,因此,軟件短線問題時(shí)有發(fā)生。這種軟件研制模式難以滿足型號(hào)質(zhì)量、進(jìn)度及成本的要求,難以適應(yīng)新形勢(shì)下“高質(zhì)量、高效率、高效益”的發(fā)展要求。因此,必須找到能夠支持快速迭代、易開發(fā)、易維護(hù)的高質(zhì)量軟件產(chǎn)品研制和交付方法,通過強(qiáng)化產(chǎn)品線、弱化型號(hào)線,由產(chǎn)品牽引型號(hào)軟件研制,實(shí)現(xiàn)降本增效。
本文以“產(chǎn)品牽引型號(hào)”為戰(zhàn)略指引,以航天飛行器型號(hào)軟件研制為應(yīng)用背景,開展軟件產(chǎn)品化體系研究,涵蓋管理體系、產(chǎn)品體系、產(chǎn)品化技術(shù)與信息基礎(chǔ)保障體系3 個(gè)方面。以此為基礎(chǔ)開展軟件產(chǎn)品化體系研究與實(shí)踐,設(shè)計(jì)基于重用產(chǎn)品的型號(hào)軟件研制流程,打破型號(hào)邊界,由產(chǎn)品化人員統(tǒng)籌各型號(hào)需求,牽引型號(hào)研制,使型號(hào)與產(chǎn)品化融合,實(shí)現(xiàn)橫向一致、降本增效。
基于GJB5000A 體系框架,建設(shè)了軟件產(chǎn)品化制度體系樹,為實(shí)現(xiàn)產(chǎn)品化與型號(hào)融合提供了制度支撐,如圖1 所示。制度體系樹分為管理制度、技術(shù)標(biāo)準(zhǔn)和作業(yè)指導(dǎo)書三大類。管理制度為三級(jí)架構(gòu),院級(jí)產(chǎn)品化管理制度為頂層約束文件;所級(jí)標(biāo)準(zhǔn)《軟件重用指南》為二級(jí)文件;軟件產(chǎn)品化研制流程相關(guān)制度作為三級(jí)文件,為基于重用產(chǎn)品開展型號(hào)軟件研制提供了詳細(xì)的制度約束。
圖1 軟件產(chǎn)品化制度體系樹
工作體系方面,借鑒互聯(lián)網(wǎng)組織架構(gòu),建立產(chǎn)品總監(jiān)、產(chǎn)品經(jīng)理、軟件設(shè)計(jì)三級(jí)管理體系,推行產(chǎn)品經(jīng)理負(fù)責(zé)制。按產(chǎn)品組織研制隊(duì)伍,每類產(chǎn)品分配主管產(chǎn)品經(jīng)理,統(tǒng)籌各型號(hào)需求,牽頭開展產(chǎn)品化研制,進(jìn)行跨型號(hào)通用設(shè)計(jì)。根據(jù)軟件專業(yè)特點(diǎn),制定了產(chǎn)品化工作考核與激勵(lì)制度,從重用產(chǎn)品的研制數(shù)量和質(zhì)量、軟件設(shè)計(jì)人員在開發(fā)中選用可重用產(chǎn)品的數(shù)量與比例等多維度考核工作開展情況,激勵(lì)設(shè)計(jì)人員主動(dòng)開展產(chǎn)品化工作、主動(dòng)采用產(chǎn)品化工作成果。
產(chǎn)品體系重點(diǎn)包括型譜建設(shè)與貨架建設(shè)。通過開展領(lǐng)域需求分析,將重用軟件產(chǎn)品按不同顆粒度劃分,具體分為構(gòu)件(含插件)、框架、基本型軟件和通用型軟件4 個(gè)類別。
(1)構(gòu)件。具有確定的軟件獨(dú)立功能,可重用的軟件單元或模塊、組件的統(tǒng)稱??芍赜脴?gòu)件封裝了設(shè)計(jì)和實(shí)現(xiàn),通過對(duì)外接口向高層的應(yīng)用提供服務(wù),可獨(dú)立交付。一般是無法獨(dú)立運(yùn)行的代碼、庫(kù)文件或功能單一的工具類可執(zhí)行程序。
(2)插件。實(shí)現(xiàn)了標(biāo)準(zhǔn)頂層接口的可重用構(gòu)件,即標(biāo)準(zhǔn)構(gòu)件,適用于面向?qū)ο筌浖_發(fā)。
(3)框架。一系列技術(shù)、功能模塊和產(chǎn)品的集合,具有較為復(fù)雜的軟件功能,具備相對(duì)固定的架構(gòu)形式,是一種特殊構(gòu)件,能夠作為其他構(gòu)件開發(fā)的依賴對(duì)象,能夠作為構(gòu)件或插件的宿主程序。
(4)基本型軟件。實(shí)現(xiàn)了領(lǐng)域內(nèi)某一類基礎(chǔ)應(yīng)用需求的軟件產(chǎn)品,需要進(jìn)行功能定制才能滿足個(gè)性化需求,如增刪部分構(gòu)件?;拘彤a(chǎn)品在具體型號(hào)應(yīng)用中盡量不對(duì)代碼進(jìn)行修改或僅少量修改。
(5)通用型軟件。無需進(jìn)行功能定制或需要修改少量配置參數(shù)即可實(shí)現(xiàn)完全重用的一類軟件,可以完全覆蓋領(lǐng)域需求。
為更好滿足型號(hào)不同層次質(zhì)量要求,建立構(gòu)件成熟度3 級(jí)模型,成熟度級(jí)別由低到高依次為1 級(jí)、2 級(jí)和3 級(jí),具體定義如下:
(1)1 級(jí)。經(jīng)過開發(fā)方測(cè)試;
(2)2 級(jí)。經(jīng)過系統(tǒng)試驗(yàn)考核;
(3)3 級(jí)。經(jīng)過第三方測(cè)試。
型號(hào)軟件成熟度定級(jí)時(shí)可參考重用構(gòu)件成熟度,避免重復(fù)測(cè)試。成熟度提升需經(jīng)產(chǎn)品評(píng)審小組評(píng)審?fù)ㄟ^。當(dāng)構(gòu)件發(fā)生更改后,視更改級(jí)別成熟度降級(jí),需補(bǔ)充相應(yīng)測(cè)試或試驗(yàn)驗(yàn)證才能提升成熟度,各等級(jí)變化示意見表1。
表1 構(gòu)件變化后產(chǎn)品成熟度等級(jí)變化示意
軟件重用技術(shù)是軟件產(chǎn)品化的技術(shù)基礎(chǔ)。本文聚焦軟件重用技術(shù),分析領(lǐng)域軟件特點(diǎn),選擇平臺(tái)化開發(fā)作為軟件重用的基礎(chǔ)路線,分別研發(fā)了標(biāo)準(zhǔn)化的嵌入式軟件分層架構(gòu)和桌面應(yīng)用軟件“平臺(tái)+插件”架構(gòu),各型號(hào)軟件研制必須選用對(duì)應(yīng)的基礎(chǔ)平臺(tái)框架,如圖2 所示。
圖2 嵌入式軟件分層架構(gòu)與桌面應(yīng)用軟件插件式架構(gòu)圖
嵌入式軟件分層框架設(shè)計(jì)分離了各功能接口,使每個(gè)功能模塊均可作為單獨(dú)功能使用。用戶需求發(fā)生變更時(shí),只會(huì)涉及部分構(gòu)件的適應(yīng)性修改,不會(huì)對(duì)其他構(gòu)件的正常工作產(chǎn)生影響,修改完成以后重新鏈接生成可執(zhí)行文件即可重新生成軟件產(chǎn)品。同時(shí),各模塊對(duì)其內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)細(xì)節(jié)進(jìn)行了封裝,通過提供外部接口來實(shí)現(xiàn)與其他構(gòu)件和系統(tǒng)的通信,調(diào)度邏輯模塊靈活實(shí)現(xiàn)各功能之間的統(tǒng)一調(diào)用與編排。與硬件驅(qū)動(dòng)分離,有利于軟件系統(tǒng)修改、維護(hù)以及在不同硬件運(yùn)行環(huán)境間的移植,從頂層規(guī)劃上保證軟件的修改不影響其核心功能以及一些關(guān)鍵的設(shè)計(jì)抽象。
桌面應(yīng)用軟件“平臺(tái)+插件”架構(gòu)使軟件的功能和模塊在劃分中的相互耦合性更少,功能和模塊具有更大的獨(dú)立性,可以提高軟件開發(fā)并行性。基于該架構(gòu)可以完成功能模塊在系統(tǒng)中的替換、增加及減少等操作,解決開發(fā)中需求不確定性問題,而且方便軟件的升級(jí)和維護(hù)。該架構(gòu)可以實(shí)現(xiàn)插件級(jí)黑盒重用,有效提高軟件的重用率。
插件是根據(jù)應(yīng)用軟件程序的標(biāo)準(zhǔn)化接口所編寫的用于實(shí)現(xiàn)特定功能的程序模塊,是一種具有標(biāo)準(zhǔn)化接口的構(gòu)件。利用插件技術(shù)可以實(shí)現(xiàn)在程序主體不被修改的基礎(chǔ)之上,加強(qiáng)和拓展計(jì)算機(jī)軟件的作用。本項(xiàng)目以標(biāo)準(zhǔn)化帶動(dòng)產(chǎn)品化,利用面向?qū)ο笳Z言的多態(tài)特性,設(shè)計(jì)一種重用構(gòu)件接口,已形成所級(jí)標(biāo)準(zhǔn)規(guī)范。在接口的設(shè)計(jì)上,僅規(guī)定最為基礎(chǔ)且通用的6 個(gè)函數(shù)方法,見表2。功能覆蓋了航天型號(hào)桌面應(yīng)用軟件業(yè)務(wù)單元的基本操作。所有插件實(shí)現(xiàn)必須實(shí)現(xiàn)此接口,使領(lǐng)域平臺(tái)框架可以對(duì)插件進(jìn)行統(tǒng)一管理,實(shí)現(xiàn)插件式的“即插即用”功能擴(kuò)展。
表2 插件接口函數(shù)說明
插件開發(fā)方按照標(biāo)準(zhǔn)接口定義實(shí)現(xiàn)不同顆粒度的功能單元,并部署到插件庫(kù)。開發(fā)人員根據(jù)業(yè)務(wù)需要利用自動(dòng)化腳本技術(shù)動(dòng)態(tài)組合裝載、運(yùn)行。插件使用XML 作為描述文件,描述文件供平臺(tái)讀取插件信息,包括插件的名稱、版本、作者、Email、描述和程序名。
為方便重用軟件貨架產(chǎn)品管理,在型號(hào)軟件配置管理工具的基礎(chǔ)上開發(fā)了重用產(chǎn)品管理系統(tǒng),作為重用軟件產(chǎn)品資產(chǎn)庫(kù)。以構(gòu)件為基本單元進(jìn)行管理,管理方式比面向型號(hào)的配置管理系統(tǒng)更為靈活,管理成本更低。依托構(gòu)件庫(kù)管理重用產(chǎn)品技術(shù)狀態(tài),產(chǎn)品缺陷及技術(shù)狀態(tài)變化可以即時(shí)通知使用者,使軟件產(chǎn)品化研制全流程實(shí)現(xiàn)信息化。
重用貨架產(chǎn)品包括可重用構(gòu)件、可重用軟件和可重用軟件框架三大類,其管理形態(tài)主要包括源代碼、庫(kù)文件和可執(zhí)行程序。每一類貨架產(chǎn)品都以數(shù)據(jù)包的形式進(jìn)行管理,數(shù)據(jù)包全集包括構(gòu)件說明、源代碼、庫(kù)文件、可執(zhí)行程序。數(shù)據(jù)包可根據(jù)軟件特點(diǎn)進(jìn)行裁剪,具體如表3 所示。
表3 貨架產(chǎn)品數(shù)據(jù)包
貨架產(chǎn)品管理系統(tǒng)包含構(gòu)件維護(hù)人、配置管理員、項(xiàng)目成員、產(chǎn)品經(jīng)理和產(chǎn)品總監(jiān)5 類角色,共同參與完成對(duì)貨架產(chǎn)品的入庫(kù)、出庫(kù)、更改、重用等流程管理。
軟件的產(chǎn)品化不僅僅意味著軟件產(chǎn)品的可重用,而是軟件的生產(chǎn)過程也要進(jìn)化到工業(yè)化產(chǎn)品生產(chǎn)水平。通過將軟件生產(chǎn)提升到工業(yè)化生產(chǎn)水平,將大幅提高軟件生產(chǎn)效率,提高軟件產(chǎn)品質(zhì)量,形成規(guī)?;?jīng)濟(jì)效益。
軟件研制過程包含需求分析、設(shè)計(jì)、編碼、測(cè)試、配置管理、部署、項(xiàng)目管理等諸多活動(dòng),大部分的工作仍然是手工作業(yè)為主,有些環(huán)節(jié)有信息化管理手段。要實(shí)現(xiàn)工業(yè)化生產(chǎn),其核心就是要解決如何讓研發(fā)的各個(gè)過程能夠無縫銜接,提高自動(dòng)化水平。通過技術(shù)創(chuàng)新,將開發(fā)人員從簡(jiǎn)單重復(fù)性的工作中解放出來,處理更高級(jí)、更關(guān)鍵的問題。
本文基于開源Jenkins 持續(xù)集成系統(tǒng)實(shí)現(xiàn)了軟件流水線平臺(tái),將一系列分析、驗(yàn)證、確認(rèn)和測(cè)試工具進(jìn)行集成。通過自動(dòng)化的方式對(duì)代碼或插件開展靜態(tài)分析、 單 元 測(cè)試、配置項(xiàng)測(cè)試,從而提高軟件測(cè)試效率和精度。軟件流水線將一系列開發(fā)和組裝工具進(jìn)行集成,代碼或插件通過形式化的需求描述,進(jìn)行模型翻譯或成熟插件復(fù)用,能夠自動(dòng)生成工程代碼并組裝成應(yīng)用軟件,從而避免手工開發(fā)、集成和部署引入的缺陷。此外,因軟件流水線能夠充分節(jié)省資源,縮短研制周期,軟件流水線的快速反饋特性可以讓用戶頻繁確認(rèn),從根本上避免“需求誤解鏈條”造成的“需求理解二義性”。
設(shè)計(jì)基于重用產(chǎn)品的型號(hào)軟件研制流程,促進(jìn)型號(hào)與產(chǎn)品化融合,實(shí)現(xiàn)橫向一致,如圖3 所示。產(chǎn)品化人員全面介入型號(hào)軟件研制,同類軟件由產(chǎn)品經(jīng)理統(tǒng)籌各型號(hào)需求,參與工作產(chǎn)品(文檔、代碼)審查。在型號(hào)軟件入庫(kù)流程上增加產(chǎn)品經(jīng)理會(huì)簽環(huán)節(jié),由產(chǎn)品經(jīng)理對(duì)工作產(chǎn)品的產(chǎn)品化要素把關(guān),保證產(chǎn)品重用比例及重用質(zhì)量,具體包括:
圖3 基于重用軟件產(chǎn)品的軟件研制流程
(1)型號(hào)軟件研制人員和產(chǎn)品經(jīng)理共同會(huì)簽任務(wù)書,有效合并同類需求,消滅不必要的個(gè)性需求;
(2)在軟件需求分析階段,產(chǎn)品經(jīng)理參與需求分析,標(biāo)識(shí)可重用構(gòu)件和待開發(fā)的重用構(gòu)件,避免錯(cuò)誤重用或未重用現(xiàn)有資產(chǎn)。對(duì)重用產(chǎn)品的測(cè)試需求進(jìn)行初步分析;
(3)在測(cè)試階段,產(chǎn)品化經(jīng)理參與測(cè)試計(jì)劃評(píng)審,識(shí)別免測(cè)項(xiàng),避免重復(fù)測(cè)試。
基于重用產(chǎn)品的型號(hào)軟件研制流程的關(guān)鍵環(huán)節(jié)包括:
(1)重用申請(qǐng)
型號(hào)軟件設(shè)計(jì)發(fā)起構(gòu)件重用申請(qǐng)流程,與重用構(gòu)件維護(hù)人達(dá)成一致,建立構(gòu)件與型號(hào)配套軟件的引用關(guān)系。
(2)變更通知
重用構(gòu)件變更通過郵件提醒構(gòu)件的關(guān)注人和重用申請(qǐng)人,做到更改影響及時(shí)傳遞。
(3)重用反饋
型號(hào)人員就重用構(gòu)件的使用情況向構(gòu)件維護(hù)人員進(jìn)行反饋,反饋內(nèi)容包含使用方式(完全重用/修改重用)、修改程度(修改代碼行百分比)、發(fā)現(xiàn)問題數(shù)及問題詳細(xì)描述和改進(jìn)建議。
以型號(hào)中普遍配套的中心控制軟件為例,基于測(cè)發(fā)控領(lǐng)域平臺(tái)框架進(jìn)行插件組裝,平均重用插件超過15 項(xiàng)。中心控制軟件產(chǎn)品經(jīng)理會(huì)簽各型號(hào)任務(wù)書,組織產(chǎn)品隊(duì)伍基于型號(hào)需求開展插件配置和組裝,向型號(hào)人員交付軟件。
本文以航天裝備軟件為應(yīng)用背景,開展軟件產(chǎn)品化體系建設(shè),從管理體系、產(chǎn)品體系、產(chǎn)品化技術(shù)與信息基礎(chǔ)保障體系3 個(gè)方面分別進(jìn)行研究與實(shí)踐,實(shí)現(xiàn)了一套完整的面向航天裝備軟件的產(chǎn)品化體系。該體系打通了產(chǎn)品軟件與型號(hào)軟件之間的邊界,使型號(hào)線與產(chǎn)品線融合,實(shí)現(xiàn)了橫向一致、降本增效。