趙小莉 邵愛華 王慧聰
(航天恒星科技有限公司,北京 100095)
面對(duì)航天項(xiàng)目對(duì)功能、可靠性、成本、體積、功耗等綜合性的需求不斷提升以及高密度發(fā)射任務(wù)形勢(shì),系統(tǒng)級(jí)芯片(System on Chips,SoC)技術(shù)以其集成度高、可靠性好、功耗低等特點(diǎn)逐步成為當(dāng)前嵌入式系統(tǒng)設(shè)計(jì)技術(shù)的主流,并已被廣泛應(yīng)用于航天領(lǐng)域[1]。星載導(dǎo)航軟件就是運(yùn)行在SoC芯片上的嵌入式軟件,隨著硬件平臺(tái)的更新?lián)Q代和用戶需求的不斷提升,軟件規(guī)模和復(fù)雜度也隨之攀升,軟件研發(fā)面臨三方面問題:①軟件產(chǎn)品實(shí)現(xiàn)能力無法適應(yīng)復(fù)雜航天器功能日益增長發(fā)展需求,近年來不同行業(yè)對(duì)導(dǎo)航服務(wù)多樣化功能需求促使對(duì)軟件開發(fā)的實(shí)現(xiàn)能力要求越來越高,現(xiàn)有的軟件功能模塊劃分還不能適應(yīng)不斷更新?lián)Q代的硬件產(chǎn)品以及日益豐富的功能性需求,軟件模塊的抽象化、通用化和參數(shù)化難度大;②軟件構(gòu)件復(fù)用程度低、復(fù)用管理不規(guī)范,每個(gè)軟件配置項(xiàng)分解成N個(gè)獨(dú)立的功能模塊,但設(shè)計(jì)模塊分解的層次和顆粒度不一,彼此存在不同程度的耦合現(xiàn)象,此外,產(chǎn)品主線與變體之間的追蹤關(guān)系以及變體在同步更新、關(guān)鍵節(jié)點(diǎn)版本升級(jí)等方面存在復(fù)雜關(guān)系,對(duì)于數(shù)百個(gè)軟件配置項(xiàng)實(shí)現(xiàn)復(fù)用庫、出/入庫、項(xiàng)目開發(fā)庫/受控庫及變更控制的集成管理,使用單一配置管理工具工作量浩大;③軟件開發(fā)及驗(yàn)證效率低,軟件代碼只能依靠手工驅(qū)動(dòng)進(jìn)行測(cè)試,在代碼量規(guī)模激增的情況下,無法及時(shí)開展代碼靜態(tài)分析和單元測(cè)試,變更影響分析不全面,無法實(shí)現(xiàn)從需求到測(cè)試過程的全過程追蹤。
為了適應(yīng)新的發(fā)展需求,提升軟件的可靠性和效率,提高軟件的管理能力和水平,本文建立滿足目前最大需求包絡(luò)的星載導(dǎo)航軟件產(chǎn)品線,利用軟件一體化平臺(tái)工具支撐實(shí)現(xiàn)軟件產(chǎn)品化、條目化和分支管理,形成可復(fù)用軟件產(chǎn)品資源庫,實(shí)現(xiàn)基于構(gòu)件、架構(gòu)、配置項(xiàng)產(chǎn)品的完整、一致的軟件產(chǎn)品數(shù)據(jù)包,以提供多項(xiàng)目宇航單機(jī)配套選用應(yīng)用,從而滿足高質(zhì)量、高可靠性要求,適應(yīng)短周期快速研制需要[2]。通過初步實(shí)踐表明:該方法適用于目前軟件產(chǎn)品化現(xiàn)狀,能有效提升軟件產(chǎn)品的開發(fā)效率,降低代碼缺陷率和開發(fā)成本,具有一定借鑒價(jià)值。
軟件產(chǎn)品線是指具有一組可管理的公共特性的軟件密集性系統(tǒng)的集合,這些系統(tǒng)滿足特定的市場(chǎng)需求或任務(wù)需求,并且按預(yù)定義的方式從一個(gè)公共的核心資產(chǎn)集開發(fā)得到[3]。軟件產(chǎn)品線的開發(fā)和復(fù)用模型示意圖如圖1所示。為實(shí)現(xiàn)產(chǎn)品線復(fù)用,從需求、建模、軟件架構(gòu)、性能模型、測(cè)試用例和組件等所有資產(chǎn)都需圍繞可復(fù)用目標(biāo)進(jìn)行設(shè)計(jì),每一條軟件產(chǎn)品線的設(shè)計(jì)要覆蓋產(chǎn)品中主要的共性和變化點(diǎn)[4]。項(xiàng)目開發(fā)復(fù)用軟件產(chǎn)品線,形成獨(dú)立的項(xiàng)目生命周期模型。
圖1 軟件產(chǎn)品線開發(fā)和復(fù)用模型示意圖
產(chǎn)品線的設(shè)計(jì)是實(shí)現(xiàn)軟件復(fù)用的有效途徑,主要目的是實(shí)現(xiàn)對(duì)特定領(lǐng)域中共性需求的分析、設(shè)計(jì)和實(shí)現(xiàn),或?qū)σ唤M具有共性的程序作為一個(gè)整體進(jìn)行共性分析,提煉形成領(lǐng)域構(gòu)件[5]。
首先對(duì)客戶需求進(jìn)行綜合分析,兼顧歷史成熟產(chǎn)品的應(yīng)用實(shí)踐以及系統(tǒng)級(jí)的中長期發(fā)展規(guī)劃,從中識(shí)別軟件需求的最大包絡(luò),明確公共特性和可變特性,形成完整的軟件產(chǎn)品線型譜。依托產(chǎn)品線研制隊(duì)伍按照獨(dú)立的產(chǎn)品線生存周期模型進(jìn)行產(chǎn)品線的開發(fā)和驗(yàn)證,以功能獨(dú)立為原則進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)并劃分模塊,關(guān)注模塊以及模塊間的關(guān)系,標(biāo)準(zhǔn)模塊間的接口和通信規(guī)范,最大限度減少各功能模塊間的耦合。經(jīng)過測(cè)試驗(yàn)證,形成基于配置項(xiàng)級(jí)、架構(gòu)級(jí)、構(gòu)件級(jí)的三級(jí)可復(fù)用資產(chǎn),同時(shí)配套形成產(chǎn)品線架構(gòu)、可復(fù)用構(gòu)件的使用指南等支持文件[6]。
對(duì)于某特定項(xiàng)目,分析其功能、性能是否可以基于現(xiàn)有產(chǎn)品線進(jìn)行開發(fā),如果存在可復(fù)用的產(chǎn)品線,應(yīng)進(jìn)一步分析項(xiàng)目和產(chǎn)品線的共性和差異,確定如何復(fù)用產(chǎn)品線,即確定項(xiàng)目的公共特性、可變特性和新增需求。公共特性從產(chǎn)品線的需求、構(gòu)件和測(cè)試獲得;可變特性根據(jù)項(xiàng)目和產(chǎn)品線的差異,對(duì)可配置的參數(shù)進(jìn)行應(yīng)用適配;新增需求按照項(xiàng)目生存周期模型進(jìn)行獨(dú)立開發(fā),包括設(shè)計(jì)、編碼和驗(yàn)證全過程,同時(shí)分析并確定該項(xiàng)目的新增需求是否適合納入產(chǎn)品線[7]。由于開發(fā)過程中大部分人力、成本和技術(shù)復(fù)雜因素都轉(zhuǎn)移到了產(chǎn)品線,故可降低軟件項(xiàng)目的開發(fā)成本,提高開發(fā)效率和質(zhì)量。
產(chǎn)品線的管理內(nèi)容主要包括需求管理、測(cè)試管理、配置管理以及復(fù)用管理四個(gè)方面。對(duì)公共特性的需求進(jìn)行分解,粒度分解到獨(dú)立的功能單元,并進(jìn)行需求描述和標(biāo)識(shí);對(duì)于可變特性,按公共特性處理的同時(shí)還需要將可變點(diǎn)描述清楚,例如如何變更、允許的配置范圍及意義等。需求管理可實(shí)現(xiàn)變更需求影響范圍的快速定位。對(duì)于公共特性的測(cè)試用例,需要進(jìn)行標(biāo)識(shí),追蹤相應(yīng)的公共需求標(biāo)識(shí),同時(shí)設(shè)置反向追蹤關(guān)系;對(duì)于可變特性需求的測(cè)試用例,除設(shè)置標(biāo)識(shí)和追蹤關(guān)系外,要明確對(duì)于可變量的測(cè)試情況說明,同時(shí)所有的測(cè)試缺陷閉環(huán)情況均需追蹤管理。產(chǎn)品線應(yīng)有獨(dú)立的配置管理機(jī)制,在有若干新功能納入或者若干問題解決方法納入時(shí)進(jìn)行版本升級(jí)[8];項(xiàng)目是產(chǎn)品線的支線,其配置管理既要能反映項(xiàng)目的版本演進(jìn),又要可追溯復(fù)用產(chǎn)品線匹配版本。項(xiàng)目經(jīng)產(chǎn)品經(jīng)理分析后,對(duì)于其中有復(fù)用前景的功能或模塊,在通過項(xiàng)目的測(cè)試和客戶的驗(yàn)證后,作為可復(fù)用部分納入產(chǎn)品線核心資產(chǎn)庫,增加產(chǎn)品線新版本的說明,便于后續(xù)的項(xiàng)目根據(jù)實(shí)際情況進(jìn)行復(fù)用。
航天恒星科技有限公司(以下簡稱公司)研制的星載導(dǎo)航軟件,是衛(wèi)星測(cè)控系統(tǒng)標(biāo)準(zhǔn)通用單機(jī)配套軟件產(chǎn)品,具備高可靠、適用場(chǎng)景多、功能覆蓋全面等特點(diǎn),滿足不同尺寸衛(wèi)星不同平臺(tái)、不同軌道高度的適用需求,可以應(yīng)用于測(cè)繪、遙感、編隊(duì)飛行、交會(huì)對(duì)接等多種應(yīng)用場(chǎng)景。為了追求更高的目標(biāo),不斷提升自身產(chǎn)品質(zhì)量和軟件研制效率,公司在軟件復(fù)用和產(chǎn)品線研制方面進(jìn)行了諸多探索和實(shí)踐,現(xiàn)建立了星載導(dǎo)航軟件SoC平臺(tái)1.0和2.0版本產(chǎn)品線,實(shí)現(xiàn)了軟件產(chǎn)品需求、測(cè)試的條目化,正深化應(yīng)用和推廣導(dǎo)航軟件產(chǎn)品線技術(shù)。
1)配置項(xiàng)級(jí)產(chǎn)品線的設(shè)計(jì)
根據(jù)導(dǎo)航接收機(jī)型譜建立原則,兼顧產(chǎn)品繼承性、通用性以及衛(wèi)星應(yīng)用特點(diǎn)和產(chǎn)品可持續(xù)發(fā)展等因素,將星載導(dǎo)航軟件產(chǎn)品按照各單板進(jìn)行劃分,以各模塊的功能作為特征參數(shù),在不同硬件平臺(tái)(SoC平臺(tái)、數(shù)字信號(hào)處理DSP+可編程門陣列FPGA平臺(tái)等)的基礎(chǔ)上再對(duì)軟件模塊進(jìn)行細(xì)化。SoC平臺(tái)的產(chǎn)品包括基本導(dǎo)航功能和可選配的短報(bào)文等功能。其中導(dǎo)航接收機(jī)SoC2.0平臺(tái)軟件組成圖如圖2所示,將軟件根據(jù)功能化分成四個(gè)配置項(xiàng):導(dǎo)航信息處理軟件、定軌軟件、接口軟件和接口FPGA軟件。導(dǎo)航信息處理軟件運(yùn)行在基帶板上SoC芯片內(nèi)部從核CPU中,主要完成導(dǎo)航信號(hào)的捕獲跟蹤、獲取測(cè)量值以及定位解算等功能;定軌軟件運(yùn)行在基帶板上SoC芯片內(nèi)部主核CPU中,主要完成SoC芯片控制、定軌解算、數(shù)據(jù)交互等功能;接口軟件及接口FPGA運(yùn)行在接口板上,主要完成與星上設(shè)備的數(shù)據(jù)交互以及系統(tǒng)監(jiān)控及故障處理功能。四個(gè)軟件配置項(xiàng)分別形成獨(dú)立的產(chǎn)品線,每個(gè)軟件產(chǎn)品線均構(gòu)建了配置項(xiàng)級(jí)、通用架構(gòu)級(jí)和構(gòu)件級(jí)三個(gè)層級(jí)的可復(fù)用產(chǎn)品。在項(xiàng)目應(yīng)用時(shí),若板級(jí)功能定義與配置項(xiàng)級(jí)產(chǎn)品線功能需求定義完全一致未發(fā)生變化,即無需參數(shù)配置及功能擴(kuò)展或接口變更,則可直接沿用某一條配置項(xiàng)級(jí)產(chǎn)品線[9]。
圖2 導(dǎo)航接收機(jī)SoC2.0平臺(tái)軟件組成圖
2)架構(gòu)級(jí)軟件產(chǎn)品線的設(shè)計(jì)
軟件產(chǎn)品線的通用架構(gòu)是產(chǎn)品線的頂層結(jié)構(gòu)屬性,描述組成組件之間的相互關(guān)系,是進(jìn)行軟件復(fù)用的最基本結(jié)構(gòu)。在架構(gòu)復(fù)用時(shí),關(guān)鍵是要分析任務(wù)復(fù)雜度以及硬件中斷接口是否影響程序時(shí)序,架構(gòu)復(fù)用后可再根據(jù)需求選擇相應(yīng)構(gòu)件在各任務(wù)及中斷中進(jìn)行使用。以SoC2.0平臺(tái)定軌軟件的頂層架構(gòu)為例,軟件產(chǎn)品線采用前后臺(tái)的系統(tǒng)執(zhí)行架構(gòu),提供了三個(gè)任務(wù)調(diào)度模塊(初始化任務(wù)、1 s任務(wù)、空閑任務(wù))和四個(gè)中斷模塊(核中斷、單點(diǎn)失效SPF中斷、定時(shí)器中斷、通用異步收發(fā)器UART中斷)組成的初始化任務(wù)+后臺(tái)任務(wù)+中斷+定時(shí)任務(wù)四級(jí)任務(wù)調(diào)度通用框架。
3)構(gòu)件級(jí)組件的設(shè)計(jì)
在通用架構(gòu)的基礎(chǔ)上,通過各種低耦合、獨(dú)立構(gòu)件的組合,最終實(shí)現(xiàn)軟件的全部功能[10]?,F(xiàn)將所有構(gòu)件區(qū)分為A、B、C三類:A類構(gòu)件為在各種不同的工作環(huán)境下能夠保持不變無需更改的構(gòu)件,如定軌軟件與導(dǎo)航信息處理軟件的通信構(gòu)件、定軌計(jì)算功能中的卡爾曼濾波啟動(dòng)、軌道內(nèi)插等構(gòu)件、在軌維護(hù)功能構(gòu)件、內(nèi)存下卸構(gòu)件以及各中斷的執(zhí)行構(gòu)件等;B類構(gòu)件為需更改配置參數(shù)而不更改軟件代碼就可滿足項(xiàng)目任務(wù)需求的構(gòu)件,如根據(jù)使用的導(dǎo)航系統(tǒng)以及捕獲頻點(diǎn)的多樣化需求進(jìn)行動(dòng)態(tài)調(diào)整的參數(shù),包含射頻芯片及頻綜芯片的配置參數(shù)、定軌計(jì)算功能的輸入數(shù)據(jù)解析、定軌計(jì)算功能的門限判決等;C類構(gòu)件為按既定接口約束修改或新增代碼才可實(shí)現(xiàn)的構(gòu)件,可以在對(duì)現(xiàn)有系統(tǒng)影響最小的情況下進(jìn)行功能擴(kuò)展,如某類星座頻點(diǎn)的定軌解算,則需要對(duì)定軌計(jì)算功能中的輸入數(shù)據(jù)解析、幾何學(xué)單點(diǎn)定軌等構(gòu)件進(jìn)行更改,這種構(gòu)件更改對(duì)產(chǎn)品線的結(jié)構(gòu)和代碼的改動(dòng)量是最小的。
近期公司新研制的某項(xiàng)目任務(wù),用戶新增了Galileo導(dǎo)航星座需求,同時(shí)硬件環(huán)境由DSP變更為SoC芯片,產(chǎn)品經(jīng)理在對(duì)定軌軟件進(jìn)行總體功能分析時(shí),綜合考慮成本、進(jìn)度、可實(shí)現(xiàn)性等因素,選擇相似度最高的SoC2.0軟件產(chǎn)品線為基線,確定了其中的定軌軟件采用架構(gòu)級(jí)和構(gòu)件級(jí)復(fù)用。經(jīng)進(jìn)一步分析軟件需求后具體識(shí)別出復(fù)用資產(chǎn)庫中24個(gè)A類構(gòu)件,4個(gè)B類構(gòu)件,3個(gè)C類構(gòu)件。頻綜芯片配置、射頻芯片配置作為B類構(gòu)件通過更改配置參數(shù)能夠滿足新增導(dǎo)航星座的需求,SPF硬件發(fā)送接口與接收接口配置作為B類構(gòu)件能夠適應(yīng)與之交互的接口軟件CPU類型變化的需求。跳秒計(jì)算構(gòu)件、定軌計(jì)算功能的輸入數(shù)據(jù)解析構(gòu)件、幾何學(xué)單點(diǎn)定軌計(jì)算構(gòu)件作為C類構(gòu)件需要針對(duì)新增的導(dǎo)航星座需求增加相應(yīng)星座的處理程序。故軟件設(shè)計(jì)師在實(shí)施時(shí)從資產(chǎn)庫中選擇定軌軟件的整體架構(gòu)作為頂層架構(gòu)設(shè)計(jì)構(gòu)件使用,再分別選擇相應(yīng)構(gòu)件,同時(shí)包括與之對(duì)應(yīng)的設(shè)計(jì)、代碼、測(cè)試用例等。根據(jù)SoC2.0產(chǎn)品線架構(gòu)設(shè)計(jì)對(duì)所有A、B、C類共性構(gòu)件進(jìn)行組裝,其中對(duì)于B類參數(shù)可配置構(gòu)件,生成配置文件直接進(jìn)行FLASH燒錄,對(duì)于C類可擴(kuò)展構(gòu)件進(jìn)行定制開發(fā)。所有構(gòu)件經(jīng)集成測(cè)試及驗(yàn)證確認(rèn)后將隨整機(jī)交付。
對(duì)于不能復(fù)用的需求,按照體系文件規(guī)定的開發(fā)流程進(jìn)行需求條目的分解、設(shè)計(jì)、開發(fā)并進(jìn)行完整的驗(yàn)證,同時(shí)產(chǎn)品經(jīng)理評(píng)估項(xiàng)目中不能復(fù)用的新需求,具有通用性及應(yīng)用前景,可提煉為復(fù)用條目,并納入產(chǎn)品線管理,如Galileo導(dǎo)航星座中的C類需求跳秒計(jì)算包含于新增導(dǎo)航星座需求一并納入導(dǎo)航接收機(jī)產(chǎn)品線。項(xiàng)目中可復(fù)用部分已經(jīng)過完整驗(yàn)證,項(xiàng)目管控重點(diǎn)可集中在對(duì)新需求的設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試以及完整的組裝測(cè)試和確認(rèn)測(cè)試,便于集中資源,降低代碼的開發(fā)量,提升研發(fā)效率和質(zhì)量。項(xiàng)目應(yīng)用過程中,復(fù)用條目發(fā)現(xiàn)的缺陷通過修復(fù)和驗(yàn)證后,需同步更新產(chǎn)品線,其他項(xiàng)目可保持同步更新。
公司引入軟件研制一體化平臺(tái)工具,整合開發(fā)工具、測(cè)試工具、配置管理工具,通過資產(chǎn)庫和工具的數(shù)據(jù)交互可有力支持產(chǎn)品線及項(xiàng)目的需求管理、測(cè)試管理、配置管理和復(fù)用管理。
基于一體化平臺(tái)的產(chǎn)品線應(yīng)用如圖3所示。
圖3 基于一體化平臺(tái)的產(chǎn)品線應(yīng)用示意圖
平臺(tái)對(duì)軟件需求實(shí)施條目化管理,每一條需求與相應(yīng)的設(shè)計(jì)、代碼及測(cè)試用例的雙向追蹤關(guān)系一經(jīng)定義,即可自動(dòng)維護(hù)檢索。對(duì)于B類和C類需求,在需求、設(shè)計(jì)、代碼和測(cè)試用例條目中均對(duì)可變點(diǎn)附加詳細(xì)說明。當(dāng)產(chǎn)品線復(fù)用時(shí),只需一鍵復(fù)制一體化平臺(tái)資產(chǎn)庫中需求條目,即可從版本控制工具SVN中自動(dòng)提取可重用代碼,同步復(fù)制相應(yīng)的軟件設(shè)計(jì)、測(cè)試用例和其他文檔。當(dāng)需求變更時(shí),根據(jù)已定義的追蹤關(guān)系可快速定位到需要修改的設(shè)計(jì)文檔、代碼和測(cè)試用例集,對(duì)于B類和C類需求可直接獲取變更點(diǎn)的現(xiàn)狀及全貌。復(fù)用后的產(chǎn)品可通過平臺(tái)自動(dòng)觸發(fā)測(cè)試工具進(jìn)行各級(jí)測(cè)試驗(yàn)證、比對(duì)測(cè)試結(jié)果、生成問題單、觸發(fā)問題單的閉環(huán)流程。對(duì)于共性新增功能可通過更改構(gòu)件屬性自動(dòng)升級(jí)產(chǎn)品線版本,產(chǎn)品線是獨(dú)立功能的配置項(xiàng),每個(gè)構(gòu)件可以在產(chǎn)品線大版本的基礎(chǔ)上維護(hù)自己獨(dú)立的版本升級(jí)。項(xiàng)目根據(jù)需要從產(chǎn)品線建立項(xiàng)目獨(dú)立的配置管理分支,選取特定版本的產(chǎn)品線或其某個(gè)版本的構(gòu)件。若因缺陷升級(jí)產(chǎn)品線,則可根據(jù)已定義的追蹤關(guān)系,觸發(fā)相應(yīng)需求、設(shè)計(jì)、代碼、測(cè)試用例等的變更,完成驗(yàn)證發(fā)布后項(xiàng)目可自動(dòng)獲得當(dāng)前新版本代碼,編譯連接即可同步升級(jí)。經(jīng)軟件一體化平臺(tái)支持的產(chǎn)品線復(fù)用,使項(xiàng)目研制周期相比預(yù)期縮短一半,整體提高了研發(fā)效率。
通過解決宇航領(lǐng)域軟件產(chǎn)品化過程中遇到的問題,引入軟件產(chǎn)品線的管理方法,借助軟件研制一體化平臺(tái)工具,建立軟件復(fù)用資源庫,積極推進(jìn)軟件產(chǎn)品線建設(shè),持續(xù)實(shí)現(xiàn)軟件跨硬件平臺(tái)的構(gòu)件和架構(gòu)復(fù)用。2019—2021年星載導(dǎo)航軟件,在代碼規(guī)模激增近70%的情況下,千行代碼缺陷率卻下降了50%左右?;谝惑w化平臺(tái)工具實(shí)現(xiàn)軟件產(chǎn)品化,將提升軟件的研制能力,快速實(shí)現(xiàn)從開發(fā)、集成、測(cè)試到應(yīng)用全過程、全要素、全數(shù)據(jù)的管理,助力航天企業(yè)的“高質(zhì)量、高效率、高效益”發(fā)展。