張萍 李棟
摘 ?要:為提高裝備軟件的質量和可靠性,其研制過程需遵循GJB 5000A(軍用軟件研制能力成熟度模型)開展。本文旨在對GJB 5000A中的五個工程類過程域在彈載嵌入式軟件研發(fā)中的實施過程進行研究,并分析了彈載嵌入式軟件的自身特點以及該過程域的實施情況。根據(jù)研制經(jīng)驗,提出了在工程研制中需注意的實際問題,為提高相關軟件的研發(fā)質量和效率提供經(jīng)驗和參考。
關鍵詞:GJB 5000A;工程類過程域;彈載嵌入式軟件
中圖分類號:TP311 ? ? 文獻標識碼:A
Abstract: In order to improve the quality and reliability of military equipment software, its development process needs to follow GJB 5000A (military software development capability maturity model). This paper proposes to study the implementation process of the five engineering process areas in GJB 5000A in the development of missile-borne embedded software. Characteristics of the missile-borne embedded software and the implementation of this process area are also analyzed. Based on development experience, actual issues that need to be paid attention to in the engineering development are put forward to provide experience and reference for improving the quality and efficiency of related software development.
Keywords: GJB 5000A; engineering process areas; missile-borne embedded software
1 ? 引言(Introduction)
隨著對軍用軟件產(chǎn)品質量和可靠性的要求日益增高,中國人民解放軍總裝備部于2008 年頒布了《軍用軟件研制能力成熟度模型》[1],用以規(guī)范管理軍用軟件產(chǎn)品的研制流程。彈載嵌入式軟件作為重要的裝備軟件,其質量和可靠性更是重中之重。軍用軟件研制能力成熟度模型在彈載嵌入式軟件研制中的實施,為保證軟件產(chǎn)品的高質量和高可靠性提供了有效手段。隨著軍用軟件在武器裝備中作用的不斷提高,其在裝備系統(tǒng)研制中也逐漸占據(jù)主導地位[2]。軟件能力成熟度模型中的工程類過程域為彈載嵌入式軟件研制的工程活動提供了標準依據(jù)和規(guī)范化的軟件研制流程。在軟件需求開發(fā)方面,文獻[3]和文獻[4]分別從可否定性方面和實施方法上對軟件需求開發(fā)進行了研究。針對軍用嵌入式軟件,文獻[5]引入了技術成熟度(M)管理的方法來解決設計過程中的常見問題。文獻[6]從集成策劃、產(chǎn)品集成和接口管理三個方面分析研究了產(chǎn)品集成的具體實施方法。本文基于軍用軟件研制能力成熟度模型在軍用彈載嵌入式軟件研發(fā)中的實際工程應用,對其中的工程類過程域的具體實施過程進行研究,并根據(jù)彈載軟件的工程研制經(jīng)驗,提出了實施過程中需注意的幾個問題,對不斷規(guī)范裝備研制單位的軟件產(chǎn)品流程,提高軟件產(chǎn)品研制質量起到積極的作用。
2 ? 工程類過程域(Engineering process areas)
GJB 5000A的軟件研制能力成熟度模型所包含的22 個過程域可以分為四大類,分別為過程管理類過程域五個、項目管理類過程域七個、工程類過程域五個和支持類過程域五個[7]。其中工程類的五個過程域分別為需求開發(fā)(RD)、技術解決方案(TS)、產(chǎn)品集成(PI)、驗證(VER)和確認(VAL),如圖1所示。這五個過程域貫穿軟件的整個工程研制過程,使整個研發(fā)過程都有據(jù)可依,有標可循。
需求開發(fā)過程域主要是識別用戶需求,并把這些需求轉化為產(chǎn)品需求。通過對這一系列產(chǎn)品需求的分析,從而得出初始的產(chǎn)品部件需求。通過溝通協(xié)調,產(chǎn)品和產(chǎn)品部件需求能夠清晰地描述產(chǎn)品性能、質量特性、設計特點、驗證需求等,從而使開發(fā)人員能夠理解和使用。需求開發(fā)過程域為技術解決方案過程域提供需求,技術解決方案過程域將這些需求轉化為產(chǎn)品結構、產(chǎn)品部件設計和產(chǎn)品部件。同時,需求開發(fā)過程域中提出的接口需求也要在產(chǎn)品集成過程域中得到驗證。
技術解決方案過程域為產(chǎn)品部件提供技術數(shù)據(jù)包,這些技術數(shù)據(jù)包在產(chǎn)品集成過程域或者供方協(xié)議管理過程域(SAM)中會被使用。根據(jù)已建立的準則,將會開發(fā)各種備選方案從而得到最優(yōu)設計。對于不同的產(chǎn)品,這些準則可能完全不同,這取決于產(chǎn)品類型、操作環(huán)境、性能要求、維護需求以及費用和交付時間。決策分析與決定過程域(DAR)的專用實踐可以用來選擇最終的解決方案。技術解決方案過程域還依賴于驗證過程域中的專用實踐來開展設計的驗證和設計中的同行評審。
驗證過程域保證工作產(chǎn)品滿足特定的需求。驗證過程域根據(jù)特定的需求選擇需要驗證的工作產(chǎn)品和驗證方法。驗證是一個增量式過程,通常以產(chǎn)品部件驗證開始,以集成后產(chǎn)品的驗證結束。驗證還包括同行評審,該過程能夠較早地發(fā)現(xiàn)被評審工作產(chǎn)品和產(chǎn)品部件的缺陷,并提供寶貴意見。
確認過程域是根據(jù)客戶需求對產(chǎn)品逐步進行確認。它可以在真實操作環(huán)境中進行,也可以在仿真環(huán)境中開展。對該過程域來說,與客戶對確認要求進行溝通協(xié)調是非常重要的環(huán)節(jié)。確認的對象可以是產(chǎn)品、產(chǎn)品部件、中間工作產(chǎn)品以及過程。經(jīng)過確認的對象通常需要重新驗證和確認。
產(chǎn)品集成過程域包括生成集成策略、產(chǎn)品部件集成以及向客戶遞交產(chǎn)品等專用實踐。驗證和確認過程的專用實踐在產(chǎn)品集成的實施過程中都會被涉及。驗證過程更傾向于對產(chǎn)品部件而非產(chǎn)品集成的接口和接口需求的驗證。接口驗證在集成過程中是相當重要的。若產(chǎn)品集成是在真實的試驗環(huán)境中進行,則運用確認過程的專用實踐。
3 ?彈載嵌入式軟件的特點(Characteristics of missile-borne embedded software)
彈載嵌入式飛行控制軟件在規(guī)模上屬于中等規(guī)模軟件。它對外要接收載機飛行任務,對內需要控制全彈各個組件的自檢以及整個工作流程,接口繁多,時序復雜。在研制初期,系統(tǒng)需求尚不明晰,存在諸多不確定性,這就造成在軟件研制啟動后的整個開發(fā)過程中會有大量的需求變更,從而引發(fā)多輪次軟件迭代設計。
鑒于飛行控制軟件的使用目的,其對可靠性和安全性要求嚴格,因此軟件開發(fā)過程規(guī)范、受控、可追溯等更不可忽視。飛行控制軟件為嵌入式運行的軟件產(chǎn)品,其最終隨硬件產(chǎn)品一同交付。軟件研發(fā)過程受硬件產(chǎn)品的制約,接口需求等需要硬件產(chǎn)品配合的驗證試驗要在硬件到位的情況下才能開展,軟件研發(fā)周期無法保證。
4 ?工程類過程域在軟件研發(fā)中的應用(Application of Engineering process areas in software development)
在系統(tǒng)需求分析基本完成,軟件研制任務明確后,即可啟動軟件研制工作。從完成系統(tǒng)的需求分析,到軟件最終交付使用,軟件研制需經(jīng)歷需求開發(fā)過程、設計與實現(xiàn)過程和驗證與確認過程。五個工程類過程域貫穿整個軟件的開發(fā)與迭代過程,如圖2所示。
4.1 ? 需求開發(fā)過程
需求開發(fā)過程產(chǎn)生并分析用戶、產(chǎn)品和產(chǎn)品部件的需求,這些需求包括與產(chǎn)品生存周期各個階段有關的需要,以及與產(chǎn)品屬性有關的需要。
開發(fā)用戶需求。根據(jù)飛控軟件特點,系統(tǒng)工程組向利益相關方收集、獲取需求,歸納總結共性的需求條目,編寫《用戶需求列表》,并對軟件的功能、性能、接口等需求進行定義,編寫《軟件研制任務書》初稿,內容涵蓋軟件產(chǎn)品介紹、軟件應遵循的標準或規(guī)范,以及軟件產(chǎn)品的功能性需求、非功能性需求、接口需求等。
評審《軟件研制任務書》。系統(tǒng)工程組組織對《軟件研制任務書》進行評審,評審通過后,系統(tǒng)工程組申請將《軟件研制任務書》入庫,同時申請建立功能基線。
制定運行方案和場景。軟件設計組分析軟件對硬件平臺及計算機資源的需求,包括計算機軟件配置項(CSCI)環(huán)境需求和計算機資源需求。
確定并分配產(chǎn)品部件需求。軟件設計組將產(chǎn)品分解為產(chǎn)品部件,將功能需求、性能需求、設計約束條件分配給每個產(chǎn)品部件,分析CSCI能力需求。
標識接口需求。軟件設計組對軟件產(chǎn)品的內部接口、外部接口(包括通訊協(xié)議)、工作用接口和測試用接口等進行標識,文檔化已標識接口的類型、功能、使用方式、數(shù)據(jù)格式、限制條件等信息。
分析需求。分析利益相關方的需要、期望、約束和外部接口,識別需求的優(yōu)先順序和關鍵程度,并完成《軟件需求規(guī)格說明》的編寫。
評審《軟件需求規(guī)格說明》。由軟件設計組根據(jù)評審規(guī)程組織相關人員對《軟件需求規(guī)格說明》進行評審,確保與用戶、開發(fā)人員、測試人員以及其他利益相關方能達成一致理解,共同確認《軟件需求規(guī)格說明》。
4.2 ? 設計與集成過程
設計與集成過程是針對軟件需求進行軟件設計、代碼實現(xiàn)和代碼集成的工程技術活動,它涵蓋技術解決方案和產(chǎn)品集成兩個過程域。
確定設計策略。軟件設計人員依據(jù)《軟件需求規(guī)格說明》建立選擇準則,制定備選方案,并對分配需求逐條開展設計決策,確定最能滿足選擇準則的設計策略方案。
體系結構設計和詳細設計。軟件設計人員依據(jù)《軟件需求規(guī)格說明》進行軟件體系結構分解,定義軟件接口設計準則,分析每個軟件部件的設計,確定其實現(xiàn)方式。根據(jù)設計策略和體系結構設計,確定軟件體系結構的細節(jié),完整定義產(chǎn)品部件和接口。根據(jù)設計內容,完成編寫《軟件設計說明》。
建立技術數(shù)據(jù)包。軟件設計人員在體系結構設計期間開始建立技術數(shù)據(jù)包,并在軟件產(chǎn)品生存周期內維護該數(shù)據(jù)包。
軟件實現(xiàn)。軟件實現(xiàn)人員根據(jù)《軟件設計說明》實現(xiàn)軟件部件,編寫軟件支持文檔,并對實現(xiàn)的軟件單元進行單元測試。
制定軟件集成計劃。軟件實現(xiàn)人員依據(jù)《軟件需求規(guī)格說明》和《軟件設計說明》建立軟件集成環(huán)境,確認軟件部件和部件的內外部接口關系,制定軟件集成策略,并編寫《軟件集成計劃》。
軟件集成。軟件實現(xiàn)人員根據(jù)《軟件集成計劃》,將軟件部件集成為可提交用戶使用的完成軟件產(chǎn)品,對集成后的軟件產(chǎn)品進行軟件仿真等功能驗證,并開展部件測試。
4.3 ? 驗證與確認過程
驗證與確認過程是確保工作產(chǎn)品滿足指定的需求和使用需求。
在彈載嵌入式軟件研發(fā)過程中,主要通過相關文檔的評審、軟件代碼的測試、軟件仿真等手段實施驗證活動,確保工作產(chǎn)品滿足指定的需求;在用戶及利益相關方參與的情況下,通過飛控組件交付試驗以及半實物仿真試驗等方法,在接近真實的環(huán)境中進行產(chǎn)品確認,確保產(chǎn)品滿足使用需求。
軟件測試是貫穿軟件開發(fā)的整個過程,是軟件產(chǎn)品驗證與確認的一個途徑。它主要包括代碼審查、文檔審查和靜態(tài)測試,與軟件模塊對應的單元測試,與《軟件設計說明》相對應的部件測試,與《軟件需求規(guī)格說明》相對應的配置項測試以及與《軟件研制任務書》相對應的系統(tǒng)測試等。軟件研制過程中的缺陷定位技術也是目前正在探索使用的一種測試技術,主要采用基于程序譜的理論[8]。
5 ?應用中需關注的問題(Issues to be concerned about in application)
細致實施軟件需求開發(fā)。軟件需求是軟件項目研發(fā)的基礎。軟件需求具有不確定性、變化性和主觀性等特點,獲取高質量的軟件需求是軟件研制過程中的重點和難點。尤其是對于彈載嵌入式飛行控制軟件來說,在研制初期,載機端的需求存在較大的不確定性,這必將給軟件需求的確定帶來較大困難。在需求開發(fā)階段如若能夠細化需求分解,則為交付高質量的軟件產(chǎn)品打下良好的基礎,也能大幅降低整個軟件研制過程的糾錯成本[9-10]。表1給出了軟件各研制階段的糾錯成本,其中假設在軟件實現(xiàn)階段糾正一個錯誤的成本為1。從中我們不難看出,需求分析階段的糾錯成本最多為實現(xiàn)階段的1/5,隨著研制進度的深入,糾錯成本將大幅提高。細致全面的需求分解必會幫助研發(fā)人員在軟件開發(fā)過程中少走彎路。
軟件迭代過程中的狀態(tài)控制。隨著系統(tǒng)需求的逐步明晰,軟件狀態(tài)也會隨之迭代更改以滿足其要求。軟件本身的狀態(tài)管理在軟件開發(fā)過程中的被重視程度已較為深入。除此之外,還需格外關注需求變更引起的一系列狀態(tài)更改,采用有效便捷的手段管理需求變更引發(fā)的軟件狀態(tài)變化。
重用模塊的使用。對于不同型號的飛行控制軟件開發(fā)來說,其各方面都具有較高的繼承性。軟件中部分功能明確、獨立、接口固定且經(jīng)過多輪次多途徑驗證的成熟函數(shù),被封裝成獨立的功能模塊,作為組織資產(chǎn)[11]的一部分供不同的項目軟件使用。模塊的重用是提高軟件可靠性和軟件研發(fā)效率的重要手段。在飛控軟件的設計和集成過程中,經(jīng)分析后能使用重用模塊的應盡量使用,但應充分分析其適用性。若需對重用模塊進行適應性修改后使用的,應分析其影響域并策劃相應的軟件測試,以保證其正確性。
開展及時有效的同行評審。從首版軟件的形成到最終交付使用的軟件版本,其間必然會通過各種方式發(fā)現(xiàn)許多軟件相關問題。隨著軟件研制流程的不斷深入,其牽涉的產(chǎn)品和試驗越來越繁多,發(fā)現(xiàn)并修復軟件問題需要付出的代價也越大。因此越早發(fā)現(xiàn)缺陷,其影響域越小,修復缺陷的成本也越低。走查是一種軟件開發(fā)中最為有效,也最便于設計人員開展的同行評審形式。軟件文檔的一致性、軟件代碼實現(xiàn)的正確性等均可以通過走查的方式開展。根據(jù)研制經(jīng)驗,在首版軟件代碼形成后,開展一輪全面的走查,其缺陷檢出率較高,且?guī)淼挠绊懸草^小。在廣泛實施同行評審并收集數(shù)據(jù)的基礎上,可利用度量結果來評估和改進軟件開發(fā)過程[12]。
6 ? 結論(Conclusion)
GJB 5000A中的五個工程類過程域涵蓋了貫穿整個軟件研制過程的軟件開發(fā)和維護活動。根據(jù)彈載嵌入式軟件自身的特點,本文主要分析了這五個工程類過程域的特性以及其在彈載嵌入式軟件研制中的實際應用情況,并根據(jù)工程實施經(jīng)驗提出了在實際應用中需格外關注的幾個問題,為保證軍用軟件產(chǎn)品的質量,提高軟件可靠性提供經(jīng)驗和參考。
參考文獻(References)
[1] 中華人民共和國國家軍用標準.軍用軟件研制能力成熟度模型GJB 5000A-2008[S].北京:國防工業(yè)出版社,2009:13-15.
[2] 馬潔.基于GJB 5000A的軍用軟件過程改進的研究[D].北京:中國科學院大學,2014.
[3] 宋志剛,盧德中.軟件需求的可否定性研究[J].航空計算技術,2013(3):74-76.
[4] 常柏林,孫中泉,劉陽.GJB 5000A 2級軍用軟件過程管理[J].四川兵工學報,2010(10):141-143.
[5] 宋志剛.基于GJB 5000A的型號軟件設計過程的研究與實踐[J].航空計算技術,2014(4):106-108.
[6] 蘇春梅,何劍偉,劉永剛,等.基于GJB 5000A三級的產(chǎn)品集成過程研究與應用[J].遙測遙控,2015,36(4):37-43.
[7] CHRISSIS M B, KONRAD M, SHRUM S. CMMI for development[M]. 3rd Edition. Hoboken: Addison-Wesley Professional, 2011:68-75.
[8] NAISH L, LEE H J, RAMAMOHANARAO K. A model for spectra-based software diagnosis[J]. ACM Transactions on Software Engineering and Methodology, 2011, 20(3):1-32.
[9] 石柱.軍用軟件能力成熟模型可重復級實施指南[M].北京:中國標準化出版社,2006:114-131.
[10] 石柱.軍用軟件研制能力成熟度模型及其應用[M].北京:中國標準出版社,2009:100-104.
[11] 王勇.軟件過程資產(chǎn)庫的研究與實現(xiàn)[J].計算機應用與軟件,2016,33(7):106-108,144.
[12] 張文秀,張錦輝.軟件過程中同行評審的應用與度量[J].計算機應用與軟件,2008,25(10):101-103.
作者簡介:
張 ?萍(1980-),女,碩士,高級工程師.研究領域:彈載嵌入式軟件設計.
李 ?棟(1974-),男,碩士,高級工程師.研究領域:控制與導航.