梅 磊,劉鴻飛,董文通
(中國電子科技集團公司第三十八研究所測試中心,安徽 合肥 230000)
隨著我國航空航天類產(chǎn)品的數(shù)字化、智能化程度不斷提高,作為其中核心控制單元的軟件單元所起到的作用也越來越重要,特別是在導彈、飛機、火箭、衛(wèi)星、飛船等航空航天設(shè)備的科研生產(chǎn)中。系統(tǒng)功能的愈加復雜,軟件規(guī)模逐步增加[1],導致產(chǎn)生軟件質(zhì)量與可靠性相關(guān)風險的情況與日俱增。航天軟件特點主要有以下幾方面:1)軟件開發(fā)環(huán)境和運行平臺的復雜多樣;2)較高的實時處理能力,低延遲通信等;3)針對惡劣的運行環(huán)境,具備高可靠、強穩(wěn)定等能力;4)軟件固化后,由于環(huán)境條件等因素導致可維護性較差;5)軟件開發(fā)的管理過程嚴格。
我國航天軟件工程研制和過程管理的任務(wù)通常是由國家航天航空集團及相關(guān)科研院所承擔,在研制及管理過程中,各單位相繼發(fā)布了一系列用于航天軟件研制和管理的企業(yè)規(guī)范,并在實踐中得到有效的驗證[2]。然而,隨著航空航天事業(yè)的迅速發(fā)展,軟件研制工作量越來越大。國內(nèi)外的航天器發(fā)射、飛機試飛期間由于軟件設(shè)計或?qū)崿F(xiàn)缺陷而出現(xiàn)的故障情況接近60%[3]。研制單位對航天軟件產(chǎn)品的質(zhì)量問題越發(fā)重視,對發(fā)生的故障往往需要多輪分析其產(chǎn)生原因,舉一反三的閉環(huán)故障問題,總結(jié)故障產(chǎn)生與解決的經(jīng)驗教訓,以提高管控研發(fā)能力,最終達到提高航天軟件質(zhì)量的目的。
軟件測試作為驗證軟件能否達到期望功能,保證軟件質(zhì)量的有效方法,在航天軟件研制工作的各個階段都很重要。有效的軟件測試工作貫穿于整個軟件開發(fā)的生命周期[4]。對航天產(chǎn)品軟件開展測試工作的意義在于能夠盡量在項目研制早期發(fā)現(xiàn)軟件設(shè)計缺陷,同時,為設(shè)計師對軟件進一步完善、改進提供依據(jù)和參考,為有關(guān)方了解和評價軟件的質(zhì)量情況提供參考。由于各分系統(tǒng)研制單位的軟件工程化體系、軟件開發(fā)能力和管理水平的參差不齊,同時開發(fā)人員的工作能力也良莠不一,任何航天產(chǎn)品的研制僅依靠總體單位對軟件質(zhì)量進行把控是不夠的[5],因此,建立符合航天質(zhì)量要求的軟件評價統(tǒng)一標準就尤為重要。
我國軟件質(zhì)量評價工作的研究起步較晚,從上世紀末在國外研究成果的基礎(chǔ)上,開始研究符合我國軟件開發(fā)特點的質(zhì)量評價方法。當前,多數(shù)裝備研制單位采用的是總裝備部根據(jù)SEI的CMM標準和軍用軟件研制總要求編制發(fā)布的GJB5000A—2008《軍用軟件能力成熟度模型》[3],對軟件研制過程的評價,是將過程作為提高研制能力的杠桿作用點,利用軟件研制過程的規(guī)范程度反映軟件產(chǎn)品質(zhì)量,同時,利用軟件工程化管理的原則和方法,將軟件的開發(fā)研制過程按照項目的過程進行管理,從而實現(xiàn)滿足客戶需求的軟件產(chǎn)品的定義、開發(fā)、發(fā)布和維護。
在軍用裝備軟件研制領(lǐng)域,對軟件質(zhì)量的嚴格控制是至關(guān)重要的環(huán)節(jié)。很多研究機構(gòu)的明確型號項目的軟件產(chǎn)品必須經(jīng)由擁有合法資質(zhì)的第三方測評機構(gòu)進行軟件測評,同時,對于其測試過程,采用并強制執(zhí)行GJB5000A、GJB438B、GJB2786A等標準規(guī)范進行監(jiān)督[6]。由于各類型航天部件軟件產(chǎn)品的功能性、安全性和可靠性等方面的技術(shù)特點存在較大差異性,現(xiàn)有質(zhì)量評價體系過于復雜和難于實踐操作,同時,軟件測評過程的有效性和公正性也容易受到軟件研制方的影響;因此,目前航天軟件質(zhì)量評價體系難以做到軟件測試過程與軟件質(zhì)量評價互相結(jié)合,往往造成軟件質(zhì)量評價立意高遠,卻難于落地實施。由此可見,急需一種完整、有效且易于執(zhí)行的軟件質(zhì)量評價方法,這不僅是保證軟件測試工作有效開展的必要條件,也會為我國航天軟件產(chǎn)品的質(zhì)量評價提供有力的支撐和保障。
航天軟件的重要特點就是具有極高的可靠性和安全性,這也決定軟件研制所經(jīng)歷的階段及相應(yīng)產(chǎn)生的工作產(chǎn)品的特定性,并直接影響整個系統(tǒng)的研制過程[7]。作為軟件研制過程質(zhì)量保證的有效手段,在軟件研制的各個階段的軟件測試對提高軟件質(zhì)量起著不可或缺的重要作用?;跍y試過程管理的軟件質(zhì)量評價[8],就是通過建立合理的軟件測試模型,同時,基于軟件研制過程而產(chǎn)生的管理方式和評價方法,以此提高軟件研制的效率和代碼質(zhì)量。其主要內(nèi)容如下。
1)對軟件需求的控制,驗證軟件的功能、性能指標是否達到需求文檔或研制任務(wù)書中的要求;
2)對開發(fā)文檔的質(zhì)量控制,軟件開發(fā)文檔的編制格式是否規(guī)范、文檔種類是否齊全、文檔的標識和簽署是否完備等內(nèi)容是否已正確完成;
3)軟件開發(fā)過程的質(zhì)量保證,是否嚴格按照相關(guān)質(zhì)量標準要求對軟件開發(fā)過程進行質(zhì)量管理,并根據(jù)實際完成情況編制質(zhì)量保證報告;
4)軟件開發(fā)過程的配置管理,是否嚴格按照相關(guān)規(guī)定嚴格把控軟件版本管理與變更,并編制配置管理報告。
航天軟件研制過程的科學管理與流程優(yōu)化需要開發(fā)與測試2個部門之間的協(xié)調(diào)合作,通過科學合理的管理,提高航天產(chǎn)品的軟件代碼質(zhì)量。要真正體現(xiàn)配合與協(xié)作的效果,測試工作從過程管理的開始階段就需要介入[6]。系統(tǒng)實施分階段按過程管理,首先確定測試目標和測試方法,然后針對需求設(shè)計、概要設(shè)計、數(shù)據(jù)庫設(shè)計、詳細設(shè)計等各個不同階段軟件開發(fā)的特點,開展軟件測試過程管理工作,二者相輔相成,同步進行。航天軟件研制質(zhì)量與測試過程管理的關(guān)系如圖1所示。
圖1 航天軟件質(zhì)量保證過程
為降低航天軟件后期維護更新的成本,在項目論證階段,軟件測試人員應(yīng)提前介入可行性分析工作,確保軟件研制方案的安全、可靠。在需求分析階段,不僅要求測試人員具備對被測軟件需求的審查、分析以及提取功能、性能等測試內(nèi)容的能力,還應(yīng)熟練掌握常用測試方法及航天軟件質(zhì)量標準的相關(guān)要求。在策劃階段,結(jié)合軟件開發(fā)進度、測試資源、評審監(jiān)督等工作統(tǒng)籌安排,同時細化測試要求獲取測試內(nèi)容[8]。在詳細測試設(shè)計階段,根據(jù)測試項抽象出測試用例,同時根據(jù)開發(fā)方提供的測試環(huán)境為后續(xù)的測試執(zhí)行工作提供支撐。在實際項目管理的時候,通常會利用項目管理工具來實現(xiàn)對軟件研制流程的管控,而測試工作產(chǎn)生的相關(guān)測試文檔會被作為各軟件研制階段的控制成果進入受控的配置管理庫進行統(tǒng)一管理。
航天軟件測試過程分為測試需求階段、測試策劃階段、設(shè)計與實施階段、測試執(zhí)行階段、測試總結(jié)這5個階段,對應(yīng)的項目管理包括需求管理、計劃管理、跟蹤和控制、質(zhì)量保證和配置管理活動過程。本文結(jié)合GJB5000A中對軟件測試工作的要求[9],聯(lián)系實際工作的項目經(jīng)驗和當前航天類軟件測試領(lǐng)域通用的軟件測試技術(shù),建立了一套適用于航天類軟件質(zhì)量評價的測試過程通用模型,同時,將軟件測試管理規(guī)范與軟件測試流程相結(jié)合,利用各自的特點,提出一個既能夠提高航天軟件質(zhì)量水平,又保證軟件高可靠性與安全性的測試流程,如圖2所示。
圖2 航天軟件測試流程
單元測試的目的是在應(yīng)用程序中對最小的可測模塊或過程進行隔離測試,將模塊的功能與定義模塊的功能規(guī)格說明或接口規(guī)格說明進行比較,驗證是否滿足期望的要求。在我國航空航天領(lǐng)域,通常要求代碼達到100%的覆蓋率,在實際工作中通常會利用輔助工具來開展覆蓋性等類型的測試,例如使用自動化測試工具LDRA Testbed測試套件[10]。單元測試環(huán)境結(jié)構(gòu)如圖3所示。
圖3 單元測試環(huán)境結(jié)構(gòu)圖
單元測試的實施主要由測試人員配合開發(fā)人員完成,既充分利用測試人員的代碼質(zhì)量意識和規(guī)范化意識又需要開發(fā)人員對代碼的熟練掌握。通常采用的方式是測試人員根據(jù)軟件的設(shè)計說明靈活制定單元測試計劃,開發(fā)人員在測試人員的幫助下設(shè)計和構(gòu)造驅(qū)動函數(shù)和樁函數(shù)完成單元測試的執(zhí)行工作。這樣既提高測試效率,又能保證測試質(zhì)量。
在完成單元測試工作后,航天類軟件往往需要針對系統(tǒng)的每個配置項軟件開展?jié)u進式的集成測試。集成測試常用的策略如下。
1)自頂向下集成,所有被調(diào)用的單元均作為樁函數(shù),模擬被調(diào)用的軟件代碼;
2)自底向上集成,每個底部單元的驅(qū)動器模塊作為樁函數(shù);
3)三明治集成,結(jié)合自頂向下和自底向上2種策略的特點,測試的覆蓋性最好,但可能出現(xiàn)收斂性較差的情況。
在航天軟件的集成測試過程中,往往根據(jù)實際情況和配置項軟件的功能點進行測試范圍劃分。特殊情況下,還會將集成測試與單元測試的過程進行合并執(zhí)行,并將測試結(jié)果作為階段性工作成果進行管控。
在完成單元測試和集成測試后,結(jié)合整個軟件系統(tǒng)的實裝環(huán)境,進行完整、全面的系統(tǒng)測試,這關(guān)系到航天軟件最終驗收的結(jié)果[8]。系統(tǒng)測試的主要目的是檢查軟件研制過程工程化管理的完整性、正確性及有效性,包括文檔質(zhì)量、功能與需求的一致性等,同時根據(jù)發(fā)現(xiàn)的問題給出合理的評價和建議,并根據(jù)問題選擇新增或復用測試用例進行回歸測試,直至所有問題均完成閉環(huán)為止。在航天軟件測試中,按照軍用軟件測評標準的要求,通常的覆蓋配置項及系統(tǒng)級的測試類型如表1所示。
表1 測試類型及標識
為了更準確地發(fā)現(xiàn)航天軟件開發(fā)過程中的問題,更有效衡量開發(fā)的全面性,幫助提高軟件研制單位開發(fā)過程管理能力,通過結(jié)合面向產(chǎn)品的軟件質(zhì)量評價的優(yōu)點,構(gòu)建多種通用評價模型,充分對軟件質(zhì)量的完整性和全面性進行評價。本文提出的基于軟件測試過程管理的航天軟件質(zhì)量評價方法,主要是在軟件研制的過程中,強調(diào)軟件測試工作的重要性和評價的客觀性,同時,提取測試工作期間產(chǎn)生的工作產(chǎn)品中,包括測試需求分析、測試計劃、測試用例及說明、測試記錄與報告等文檔,與軟件質(zhì)量相關(guān)的特征與評價因子,進行統(tǒng)計與分析,從而完成對航天軟件在整個生命周期之內(nèi)的過程質(zhì)量評價。航天軟件的評價過程如圖4所示。
圖4 評價過程結(jié)構(gòu)圖
質(zhì)量評價模型主要包含2部分:軟件測試相關(guān)結(jié)果的評價、軟件研制過程的評價。通過對歷年來項目的統(tǒng)計,筆者選取了能夠反映質(zhì)量屬性的評價因子,并將評價因子按照模型要求進行分類。其中,研制過程評價因子的類型及評價權(quán)重定義如圖5所示。軟件測試過程的評價因子類型及評價權(quán)重定義如圖6所示。
圖5 研制過程評價因子
圖6 測試過程評價因子
對航天軟件進行質(zhì)量評價時,在不同的測試階段,針對不同類型的評價因子按權(quán)重進行統(tǒng)計和分析,對需要重點關(guān)注的因子類型,可以自適應(yīng)的選擇加大權(quán)重的比值,并在軟件最終的評價報告中對分析結(jié)果進行匯總描述,以達到公正、全面評價軟件質(zhì)量水平的目的。下面以某型衛(wèi)星載荷導引頭軟件的質(zhì)量評價過程為例闡述。
根據(jù)GJB5000A的質(zhì)量標準要求,針對被測軟件在研制過程管理和測試過程管理期間的工作產(chǎn)品按照評價因子的類型進行統(tǒng)計與分析,審查對象包括代碼管理、需求管理、需求分析、需求覆蓋率、語句覆蓋率、分支覆蓋率、代碼缺陷率、功能缺陷率、性能缺陷率、問題歸零率以及配置管理正確率等。其中,研制過程的詳細統(tǒng)計情況如表2所示。軟件測試過程的詳細統(tǒng)計情況如表3所示。
表2 被測軟件研制過程評價因子統(tǒng)計
表3 被測軟件測試過程評價因子統(tǒng)計
考慮到導引頭系統(tǒng)軟件都為重要等級的配置項軟件,出現(xiàn)的任何缺陷都可能給整個系統(tǒng)的運行造成嚴重影響,因此,需要加大軟件測試發(fā)現(xiàn)缺陷率因子的權(quán)重。
在對軟件測試情況進行全面具體的總結(jié)評價時,根據(jù)軟件研制任務(wù)書及需求設(shè)計說明,分析提取出被評價軟件系統(tǒng)的產(chǎn)品質(zhì)量屬性,包括導引頭配置項軟件的代碼規(guī)模(2個微型,1個小型),在滿足用戶需求目標的前提下,共挖掘功能需求49個,性能需求16個。
在評價設(shè)計階段,以功能需求及性能需求為基礎(chǔ),設(shè)計質(zhì)量評價模型,建立產(chǎn)品質(zhì)量屬性結(jié)構(gòu),同時設(shè)計測試項目共165個,以保證對產(chǎn)品部件評價的充分性,同時,通過設(shè)計多種測試類型和方法,以實現(xiàn)對軟件安全性、穩(wěn)定性的驗證覆蓋。
在評價執(zhí)行階段,以測試項為基礎(chǔ),設(shè)計測試用例297個,在單元測試執(zhí)行過程中獲得各配置項軟件的需求覆蓋率、語句覆蓋率、分支覆蓋率等評價因子信息,在系統(tǒng)測試執(zhí)行過程中獲得各軟件的功能缺陷率、性能缺陷率、接口協(xié)議正確率等評價因子信息,定量進行統(tǒng)計和記錄,同時,對測試執(zhí)行期間產(chǎn)生的記錄和問題文檔做好過程管理工作。
在評價結(jié)論階段,根據(jù)統(tǒng)計的評價結(jié)果進行影響分析,得到3個配置項軟件的缺陷主要集中在功能缺陷率中,其中缺陷最多的數(shù)據(jù)處理軟件由于代碼規(guī)模較小,導致千行代碼缺陷率僅達到CMM1級,因此,在項目組召開的缺陷評審中重點討論該軟件出現(xiàn)缺陷的原因和處理情況,并對所有問題進行舉一反三和持續(xù)的追蹤。最后,結(jié)合分析結(jié)果,形成對被測軟件的質(zhì)量評價,并針對軟件質(zhì)量的后續(xù)提升給出建議。在軟件測試報告的評審會議上,邀請客戶、項目組專家和測試專家共同對軟件項目的評價意見進行討論,最終形成評價報告交付用戶,供項目驗收參考使用。
作為航天軟件質(zhì)量評價方法,使用它的前提是研制單位已經(jīng)具備相對完整的質(zhì)量管理體系和軟件工程化管理經(jīng)驗,這也導致本方法的應(yīng)用和推廣存在一定局限。同時,通過對大量項目數(shù)據(jù)的積累和使用后,可對質(zhì)量評價模型增加更多的評價因子和衡量研制水平的評價準則,以進一步提高軟件質(zhì)量評價的準確性和全面性。
隨著測試過程管理技術(shù)和方法的不斷探索和改進,為滿足航天軟件的可靠性、安全性等特殊要求,軟件研制單位和用戶單位對航天軟件測試過程提出了更高的要求,對軟件產(chǎn)品質(zhì)量的評價需求也越來越高。本文針對航天軟件的特點,分析比較傳統(tǒng)軟件質(zhì)量評價方法的不足,同時參考GJB5000A、GJB438B等軟件質(zhì)量過程控制體系,在綜合考慮航天軟件的功能、性能、背景要求的前提下,選取具備質(zhì)量特征屬性的評價因子,并在此基礎(chǔ)上提出了一種用于航天軟件質(zhì)量評價的方法,以對軟件質(zhì)量進行客觀、公正的評價。這不僅是幫助研制單位提高開發(fā)水平的方法,更為軟件研制單位提供了一個軟件過程改進的方向。