張利娜、康冰、蘇娟/北京航天發(fā)射技術(shù)研究所
隨著裝備自動(dòng)化、信息化、智能化發(fā)展,軟件在裝備中起到的作用愈發(fā)明顯,軟件部署數(shù)量急劇增加,規(guī)模越來越大,復(fù)雜度也越來越高。為了實(shí)現(xiàn)專業(yè)軟件領(lǐng)域的高質(zhì)量、可持續(xù)發(fā)展,滿足用戶多樣性定制化需求,同時(shí)實(shí)現(xiàn)項(xiàng)目快速研發(fā),北京航天發(fā)射技術(shù)研究所以軟件重用為切入點(diǎn),深入探索軟件產(chǎn)品化方法,建立了四層軟件重用結(jié)構(gòu)的軟件產(chǎn)品研發(fā)體系,從而初步達(dá)到提升軟件研制質(zhì)量、提高開發(fā)效率、節(jié)省人力資源、縮短交付周期、降低開發(fā)成本的目標(biāo)。
研究所以軟件重用為切入點(diǎn),經(jīng)歷了模塊級重用、構(gòu)件級重用、配置項(xiàng)級重用、平臺(tái)級重用過程,建立了多層級軟件產(chǎn)品體系。
為了應(yīng)對用戶需求的不斷變化及急劇增加的項(xiàng)目研制任務(wù),研究所從2011 年開始建立軟件代碼重用庫,以專業(yè)領(lǐng)域?yàn)榍腥朦c(diǎn),按照編程語言和使用場景搭建軟件重用庫框架,開展了函數(shù)級、模塊級可重用代碼設(shè)計(jì)及提??;后續(xù)逐步開展了基于軟件驅(qū)動(dòng)層、協(xié)議層和應(yīng)用層的分層設(shè)計(jì),開始軟件構(gòu)件級重用。編制軟件可重用設(shè)計(jì)準(zhǔn)則并使設(shè)計(jì)準(zhǔn)則標(biāo)準(zhǔn)化,軟件重用過程更加具有通用性;經(jīng)過幾年努力,重用建設(shè)取得初步效果,研究所項(xiàng)目平均軟件代碼重用率達(dá)到40%~50%,極大減少了軟件代碼的重復(fù)開發(fā)。
隨著項(xiàng)目任務(wù)增多,軟件構(gòu)件級重用已不能滿足項(xiàng)目快速開發(fā)交付需求。2015 年以后,結(jié)合研究所產(chǎn)品化工作,通過規(guī)劃產(chǎn)品化發(fā)展路徑,依托產(chǎn)品化通用單機(jī)的研制及使用,按照領(lǐng)域分析并規(guī)劃產(chǎn)品化單機(jī)配套軟件的使用場景,對軟件功能、性能及通信接口進(jìn)行統(tǒng)一化設(shè)計(jì),并根據(jù)使用需求規(guī)劃軟件可配置參數(shù)及范圍,開展軟件配置項(xiàng)級重用建設(shè)。通用配置項(xiàng)級重用推動(dòng)了系統(tǒng)統(tǒng)型設(shè)計(jì),控制模式由分布式向集中式轉(zhuǎn)變,以單機(jī)為單位的產(chǎn)品成熟度得到了大幅提升,極大減輕了項(xiàng)目軟件調(diào)試及維護(hù)的工作量。
2019 年,研究所通過對多年軟件重用庫的建設(shè)效果進(jìn)行總結(jié)分析,將軟件重用層級劃分為平臺(tái)級、配置項(xiàng)級、構(gòu)件級、模塊級四個(gè)層級。將軟件重用由單一設(shè)備擴(kuò)展到軟件研制平臺(tái)及產(chǎn)品領(lǐng)域平臺(tái),通過橫向以專業(yè)為單位,規(guī)劃統(tǒng)一的軟件研制平臺(tái),推進(jìn)軟件可重用設(shè)計(jì)框架的編寫及使用;縱向以產(chǎn)品領(lǐng)域?yàn)榍腥朦c(diǎn),提煉統(tǒng)一的軟件產(chǎn)品平臺(tái),推進(jìn)基于控制要求和系統(tǒng)架構(gòu)的統(tǒng)型設(shè)計(jì)。
通用配置項(xiàng)層是四層軟件產(chǎn)品體系中的第二層,對應(yīng)軟件產(chǎn)品貨架。通用配置項(xiàng)層通過領(lǐng)域分析,統(tǒng)一考慮硬件選型、統(tǒng)一硬件端口資源分配、統(tǒng)一控制功能劃分,統(tǒng)一對外接口,實(shí)現(xiàn)標(biāo)準(zhǔn)軟件配置項(xiàng),達(dá)到軟件產(chǎn)品級重用。輸出物包括需求說明、設(shè)計(jì)說明、代碼、測試文檔等等。通用配置項(xiàng)軟件完成研制和第三方評測后,進(jìn)行所級驗(yàn)收交付,進(jìn)入儲(chǔ)備庫;通過項(xiàng)目驗(yàn)證考核,完成軟件產(chǎn)品定型,進(jìn)入產(chǎn)品貨架;再經(jīng)過多次項(xiàng)目任務(wù)考核不斷提高成熟度。
從2019 年開始,研究所逐步開展軟件產(chǎn)品型譜、軟件產(chǎn)品樹建設(shè),以此為基礎(chǔ)進(jìn)行系統(tǒng)性的軟件產(chǎn)品多級規(guī)劃,推出軟件貨架庫、儲(chǔ)備庫、零部組件庫,覆蓋產(chǎn)品生產(chǎn)、交付運(yùn)行、維護(hù)保障多個(gè)使用場景的可重用軟件產(chǎn)品。同時(shí)推出軟件成熟度定級規(guī)則,逐步推向各級用戶,鼓勵(lì)用戶選取成熟度高的產(chǎn)品,通過用戶的反饋意見,逐步迭代優(yōu)化設(shè)計(jì),實(shí)現(xiàn)軟件產(chǎn)品體系內(nèi)部各級交互采用標(biāo)準(zhǔn)化接口,從系統(tǒng)層面向下推廣覆蓋全層級的軟件產(chǎn)品重用。2020 年至今,通過逐步推進(jìn)可重用模塊及構(gòu)件的開發(fā)及應(yīng)用、通用配置項(xiàng)選用、可重用框架的選用、基本型的開發(fā)和應(yīng)用,實(shí)現(xiàn)了覆蓋項(xiàng)目研制全生命周期的軟件產(chǎn)品化研發(fā)目標(biāo)落地,并在推進(jìn)過程中不斷總結(jié)提煉經(jīng)驗(yàn),逐步開始轉(zhuǎn)向基于軟件可重用需求、軟件集成方案及軟件仿真測試平臺(tái)的軟件系統(tǒng)產(chǎn)品化研發(fā)道路。
研究所涉及的專業(yè)領(lǐng)域?yàn)樾畔⑴c控制領(lǐng)域、電源及電機(jī)驅(qū)動(dòng)領(lǐng)域、定位定向與瞄準(zhǔn)領(lǐng)域。按照各專業(yè)領(lǐng)域特點(diǎn),建立軟件產(chǎn)品樹。信息與控制領(lǐng)域分解為底盤控制、上裝控制、信息處理、維護(hù)保障、仿真測試等五類系統(tǒng)平臺(tái);電源及電機(jī)驅(qū)動(dòng)領(lǐng)域分解為供電配電、電源變換、電力驅(qū)動(dòng)三大類單機(jī)平臺(tái);定位定向與瞄準(zhǔn)領(lǐng)域分解為瞄準(zhǔn)系統(tǒng)、定位系統(tǒng)、輔助駕駛系統(tǒng)等三類系統(tǒng)平臺(tái)。每類平臺(tái)下細(xì)分通用配置項(xiàng),形成系列化產(chǎn)品樹。
在各專業(yè)領(lǐng)域產(chǎn)品樹基礎(chǔ)上,建立四層重用產(chǎn)品結(jié)構(gòu),具體如下:
通用平臺(tái)層是四層軟件產(chǎn)品體系中的最上層,是系統(tǒng)級規(guī)劃。某一類產(chǎn)品軟件的通用開發(fā)平臺(tái),是與各專業(yè)負(fù)責(zé)系統(tǒng)(單機(jī))產(chǎn)品化的設(shè)計(jì)協(xié)同規(guī)劃,目標(biāo)是系統(tǒng)級重用,帶動(dòng)配置項(xiàng)級、構(gòu)件級重用。包括統(tǒng)一的系統(tǒng)設(shè)計(jì)架構(gòu)、設(shè)計(jì)規(guī)范、設(shè)計(jì)標(biāo)準(zhǔn)、接口協(xié)議、通用配置項(xiàng)、軟件通用架構(gòu)、通用模塊等。輸出物是標(biāo)準(zhǔn)、文檔、代碼。
通用配置項(xiàng)層是四層軟件產(chǎn)品體系中的第二層,對應(yīng)軟件產(chǎn)品貨架。通用配置項(xiàng)層通過領(lǐng)域分析,統(tǒng)一考慮硬件選型、統(tǒng)一硬件端口資源分配、統(tǒng)一控制功能劃分,統(tǒng)一對外接口,實(shí)現(xiàn)標(biāo)準(zhǔn)軟件配置項(xiàng),達(dá)到軟件產(chǎn)品級重用。輸出物包括需求說明、設(shè)計(jì)說明、代碼、測試文檔等等。通用配置項(xiàng)軟件完成研制和第三方評測后,進(jìn)行所級驗(yàn)收交付,進(jìn)入儲(chǔ)備庫;通過項(xiàng)目驗(yàn)證考核,完成軟件產(chǎn)品定型,進(jìn)入產(chǎn)品貨架;再經(jīng)過多次項(xiàng)目任務(wù)考核不斷提高成熟度。
研究所每年發(fā)布軟件產(chǎn)品貨架目錄,并制作軟件貨架產(chǎn)品樣本,供各項(xiàng)目直接沿用或通過修改配置參數(shù)的方式使用。研究所制定并發(fā)布了所標(biāo) 準(zhǔn)《 軟 件成熟度定級細(xì)則》,每年據(jù)此開展軟件產(chǎn)品成熟度定級及提升工作。
通用構(gòu)件層是四層軟件產(chǎn)品體系中的第三層,對應(yīng)通用部件貨架。該層實(shí)現(xiàn)特定功能的軟件模塊集或函數(shù)集,實(shí)現(xiàn)標(biāo)準(zhǔn)架構(gòu)統(tǒng)一,達(dá)到部件級重用。通用構(gòu)件包含軟件框架、驅(qū)動(dòng)層構(gòu)件(與硬件相關(guān)、基本數(shù)據(jù)結(jié)構(gòu)相關(guān)等)、領(lǐng)域共性構(gòu)件(領(lǐng)域需要的基本構(gòu)件,如CAN 網(wǎng)絡(luò))、應(yīng)用專用構(gòu)件(應(yīng)用系統(tǒng)中特有的構(gòu)件)。輸出物包括使用說明、設(shè)計(jì)說明、代碼、測試文檔等。通用構(gòu)件庫首推軟件通用框架的應(yīng)用,框架提供軟件重用基礎(chǔ)的設(shè)計(jì)平臺(tái),在同類產(chǎn)品中,統(tǒng)一設(shè)計(jì)思路、統(tǒng)一內(nèi)部接口、統(tǒng)一設(shè)計(jì)實(shí)現(xiàn),達(dá)到對設(shè)計(jì)框架一致的理解。
通用模塊層是四層軟件產(chǎn)品體系中的第四層,對應(yīng)部門級可重用模塊管理庫。通用模塊即通用地實(shí)現(xiàn)特定功能的可執(zhí)行語句集合的統(tǒng)稱,如典型控制模塊、數(shù)據(jù)處理模塊、人機(jī)交互功能模塊等,內(nèi)部接口固定,可被同類開發(fā)平臺(tái)調(diào)用,可用于跨產(chǎn)品跨系列的重用。輸出物包含模塊代碼、模塊說明、模塊設(shè)計(jì)、模塊測試文檔。通用模塊級特點(diǎn)是通用性好,重用靈活,可跨領(lǐng)域、跨系列重用。
圖1 為控制軟件框架,屬于面向?qū)ο蟮目蚣?,通用?gòu)件級產(chǎn)品??蚣芤c(diǎn)是將系統(tǒng)按照不同的功能需求分類組織成有序的層次,層級間保持松耦合。其中用戶層由開發(fā)人員根據(jù)實(shí)際需求自定義設(shè)計(jì),其余三層由框架提供,由可重用構(gòu)件組成。
圖1 控制軟件框架
通用模塊層是四層軟件產(chǎn)品體系中的第四層,對應(yīng)部門級可重用模塊管理庫。通用模塊即通用地實(shí)現(xiàn)特定功能的可執(zhí)行語句集合的統(tǒng)稱,如典型控制模塊、數(shù)據(jù)處理模塊、人機(jī)交互功能模塊等,內(nèi)部接口固定,可被同類開發(fā)平臺(tái)調(diào)用,可用于跨產(chǎn)品跨系列的重用。輸出物包含模塊代碼、模塊說明、模塊設(shè)計(jì)、模塊測試文檔。通用模塊級特點(diǎn)是通用性好,重用靈活,可跨領(lǐng)域、跨系列重用。
研究所每年更新并發(fā)布軟件產(chǎn)品樹,依據(jù)四層產(chǎn)品結(jié)構(gòu)建立重用資產(chǎn)庫,更新并發(fā)布軟件重用資產(chǎn)目錄,供型號設(shè)計(jì)人員出庫選用。
研究所軟件專業(yè)標(biāo)準(zhǔn)體系納入GJB5000B 軟件過程管理體系建設(shè),提出了工程技術(shù)、組織管理、項(xiàng)目管理、配置管理、測量與績效管理、質(zhì)量保證等工作要求,同時(shí)細(xì)化了包括工程類、管理類和支持類三大類標(biāo)準(zhǔn),覆蓋軟件生存周期模型各階段。工程類包括工程設(shè)計(jì)類標(biāo)準(zhǔn)、配置項(xiàng)級應(yīng)用類標(biāo)準(zhǔn)、構(gòu)件級設(shè)計(jì)標(biāo)準(zhǔn)、模塊級設(shè)計(jì)標(biāo)準(zhǔn)等。管理類包括航天型號地面設(shè)備軟件產(chǎn)品成熟度定級細(xì)則、重用資產(chǎn)管理指南等。支持類包括通用軟件產(chǎn)品代號編制規(guī)則、各配置庫管理指南、各專業(yè)領(lǐng)域重用庫管理要求等。
研究所在GJB5000B 軟件過程管理體系的測量與績效管理實(shí)踐域文件中,提出“型號軟件產(chǎn)品化率”“型號代碼重用率”測量項(xiàng),作為考察產(chǎn)品重用情況的重要數(shù)據(jù)。這兩個(gè)測量項(xiàng)可基本覆蓋通用配置項(xiàng)、通用構(gòu)件、通用模塊各層級的應(yīng)用效果分析情況。“型號軟件產(chǎn)品化率”用來衡量型號配套中軟件通用配置項(xiàng)的應(yīng)用效果,計(jì)算公式是:型號軟件產(chǎn)品化率=∑通用配置項(xiàng)使用 次 數(shù)/∑型號配套配置項(xiàng)個(gè)數(shù)。“型號代碼重用率”用來衡量型號配套中新研軟件配置項(xiàng)使用通用構(gòu)件和通用模塊的應(yīng)用效果,計(jì)算公式是:型號代碼重用率=∑重用代碼規(guī)模/∑型號配套交付代碼規(guī)模。
研究所在軟件重用建設(shè)中經(jīng)過不斷磨練、摸索,建設(shè)形成了產(chǎn)品規(guī)劃、平臺(tái)開發(fā)、應(yīng)用優(yōu)化、產(chǎn)品保證四個(gè)小組組成的通用平臺(tái)產(chǎn)品化軟件項(xiàng)目團(tuán)隊(duì)。在運(yùn)行過程中,從規(guī)劃平臺(tái)、規(guī)劃產(chǎn)品樹、規(guī)劃配置項(xiàng)、規(guī)劃構(gòu)件產(chǎn)品開始,各組成員通過持續(xù)迭代的方式推進(jìn)平臺(tái)化工作。通過產(chǎn)品在多個(gè)型號中應(yīng)用,項(xiàng)目逐漸進(jìn)入運(yùn)行維護(hù)階段,直至本平臺(tái)產(chǎn)品體系被新技術(shù)替代。實(shí)際產(chǎn)品由型號研制團(tuán)隊(duì)維護(hù),并向平臺(tái)團(tuán)隊(duì)反饋應(yīng)用效果,定制問題由平臺(tái)團(tuán)隊(duì)協(xié)助型號研制團(tuán)隊(duì)解決,平臺(tái)問題由平臺(tái)團(tuán)隊(duì)分析升級后向各型號通報(bào)。
軟件產(chǎn)品化研制流程按照規(guī)劃產(chǎn)品體系、研制軟件通用產(chǎn)品、型號選用三個(gè)階段來執(zhí)行,后續(xù)的迭代更新隨著產(chǎn)品反饋給平臺(tái)研制團(tuán)隊(duì)。其中,平臺(tái)軟件產(chǎn)品應(yīng)按照瀑布開發(fā)模型設(shè)計(jì),型號軟件產(chǎn)品應(yīng)用按照完全沿用、僅修改裝訂參數(shù)或適應(yīng)性更改模型設(shè)計(jì)。
研究所在軟件重用建設(shè)中經(jīng)過不斷磨練、摸索,建設(shè)形成了產(chǎn)品規(guī)劃、平臺(tái)開發(fā)、應(yīng)用優(yōu)化、產(chǎn)品保證四個(gè)小組組成的通用平臺(tái)產(chǎn)品化軟件項(xiàng)目團(tuán)隊(duì)。在運(yùn)行過程中,從規(guī)劃平臺(tái)、規(guī)劃產(chǎn)品樹、規(guī)劃配置項(xiàng)、規(guī)劃構(gòu)件產(chǎn)品開始,各組成員通過持續(xù)迭代的方式推進(jìn)平臺(tái)化工作。通過產(chǎn)品在多個(gè)型號中應(yīng)用,項(xiàng)目逐漸進(jìn)入運(yùn)行維護(hù)階段,直至本平臺(tái)產(chǎn)品體系被新技術(shù)替代。實(shí)際產(chǎn)品由型號研制團(tuán)隊(duì)維護(hù),并向平臺(tái)團(tuán)隊(duì)反饋應(yīng)用效果,定制問題由平臺(tái)團(tuán)隊(duì)協(xié)助型號研制團(tuán)隊(duì)解決,平臺(tái)問題由平臺(tái)團(tuán)隊(duì)分析升級后向各型號通報(bào)。
重用資源在型號研制應(yīng)用中,通過通用平臺(tái)推廣,提高了系統(tǒng)可靠性、軟件成熟度;通用配置項(xiàng)級軟件產(chǎn)品的直接沿用,減少了軟件重復(fù)開發(fā);軟件框架的使用,達(dá)到接口標(biāo)準(zhǔn)化、設(shè)計(jì)統(tǒng)一化;軟件的設(shè)計(jì)文檔、代碼、測試等多方面重用,減少了軟件開發(fā)活動(dòng)中的重復(fù)性工作,提升了軟件開發(fā)效率及產(chǎn)品質(zhì)量。
從重用資源推廣角度考察重用資源庫使用情況,以某型通用控制軟件為例,控制軟件已經(jīng)應(yīng)用在多個(gè)型號的多個(gè)通用單機(jī)上,將通用控制軟件配置項(xiàng)的個(gè)數(shù)減少到個(gè)位數(shù),軟件研制周期大幅縮短,降低了研制成本。通用配置項(xiàng)級產(chǎn)品軟件經(jīng)過多個(gè)型號的驗(yàn)證,提高了軟件成熟度和產(chǎn)品質(zhì)量,進(jìn)而提高了系統(tǒng)的可靠性。
研究所通過持續(xù)建設(shè)四層軟件重用結(jié)構(gòu)的產(chǎn)品化體系,形成了豐富的軟件貨架產(chǎn)品和重用資源,減少了代碼重復(fù)開發(fā),降低人力成本的同時(shí)提高了產(chǎn)品成熟度,能夠平穩(wěn)應(yīng)對急劇增加的型號研制需求。在未來,研究所將重點(diǎn)關(guān)注軟件需求與驗(yàn)證,基于通用配置項(xiàng)和通用構(gòu)件開展共性需求和通用測試用例的關(guān)聯(lián)開發(fā)。