張萍 李棟



摘 ?要:為提高裝備軟件的質量和可靠性,其研制過程需遵循GJB 5000A(軍用軟件研制能力成熟度模型)開展。本文旨在對GJB 5000A中的五個工程類過程域在彈載嵌入式軟件研發中的實施過程進行研究,并分析了彈載嵌入式軟件的自身特點以及該過程域的實施情況。根據研制經驗,提出了在工程研制中需注意的實際問題,為提高相關軟件的研發質量和效率提供經驗和參考。
關鍵詞: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)
隨著對軍用軟件產品質量和可靠性的要求日益增高,中國人民解放軍總裝備部于2008 年頒布了《軍用軟件研制能力成熟度模型》[1],用以規范管理軍用軟件產品的研制流程。彈載嵌入式軟件作為重要的裝備軟件,其質量和可靠性更是重中之重。軍用軟件研制能力成熟度模型在彈載嵌入式軟件研制中的實施,為保證軟件產品的高質量和高可靠性提供了有效手段。隨著軍用軟件在武器裝備中作用的不斷提高,其在裝備系統研制中也逐漸占據主導地位[2]。軟件能力成熟度模型中的工程類過程域為彈載嵌入式軟件研制的工程活動提供了標準依據和規范化的軟件研制流程。在軟件需求開發方面,文獻[3]和文獻[4]分別從可否定性方面和實施方法上對軟件需求開發進行了研究。針對軍用嵌入式軟件,文獻[5]引入了技術成熟度(M)管理的方法來解決設計過程中的常見問題。文獻[6]從集成策劃、產品集成和接口管理三個方面分析研究了產品集成的具體實施方法。本文基于軍用軟件研制能力成熟度模型在軍用彈載嵌入式軟件研發中的實際工程應用,對其中的工程類過程域的具體實施過程進行研究,并根據彈載軟件的工程研制經驗,提出了實施過程中需注意的幾個問題,對不斷規范裝備研制單位的軟件產品流程,提高軟件產品研制質量起到積極的作用。
2 ? 工程類過程域(Engineering process areas)
GJB 5000A的軟件研制能力成熟度模型所包含的22 個過程域可以分為四大類,分別為過程管理類過程域五個、項目管理類過程域七個、工程類過程域五個和支持類過程域五個[7]。其中工程類的五個過程域分別為需求開發(RD)、技術解決方案(TS)、產品集成(PI)、驗證(VER)和確認(VAL),如圖1所示。這五個過程域貫穿軟件的整個工程研制過程,使整個研發過程都有據可依,有標可循。
需求開發過程域主要是識別用戶需求,并把這些需求轉化為產品需求。通過對這一系列產品需求的分析,從而得出初始的產品部件需求。通過溝通協調,產品和產品部件需求能夠清晰地描述產品性能、質量特性、設計特點、驗證需求等,從而使開發人員能夠理解和使用。需求開發過程域為技術解決方案過程域提供需求,技術解決方案過程域將這些需求轉化為產品結構、產品部件設計和產品部件。同時,需求開發過程域中提出的接口需求也要在產品集成過程域中得到驗證。
技術解決方案過程域為產品部件提供技術數據包,這些技術數據包在產品集成過程域或者供方協議管理過程域(SAM)中會被使用。根據已建立的準則,將會開發各種備選方案從而得到最優設計。對于不同的產品,這些準則可能完全不同,這取決于產品類型、操作環境、性能要求、維護需求以及費用和交付時間。決策分析與決定過程域(DAR)的專用實踐可以用來選擇最終的解決方案。技術解決方案過程域還依賴于驗證過程域中的專用實踐來開展設計的驗證和設計中的同行評審。
驗證過程域保證工作產品滿足特定的需求。驗證過程域根據特定的需求選擇需要驗證的工作產品和驗證方法。驗證是一個增量式過程,通常以產品部件驗證開始,以集成后產品的驗證結束。驗證還包括同行評審,該過程能夠較早地發現被評審工作產品和產品部件的缺陷,并提供寶貴意見。
確認過程域是根據客戶需求對產品逐步進行確認。它可以在真實操作環境中進行,也可以在仿真環境中開展。對該過程域來說,與客戶對確認要求進行溝通協調是非常重要的環節。確認的對象可以是產品、產品部件、中間工作產品以及過程。經過確認的對象通常需要重新驗證和確認。
產品集成過程域包括生成集成策略、產品部件集成以及向客戶遞交產品等專用實踐。驗證和確認過程的專用實踐在產品集成的實施過程中都會被涉及。驗證過程更傾向于對產品部件而非產品集成的接口和接口需求的驗證。接口驗證在集成過程中是相當重要的。若產品集成是在真實的試驗環境中進行,則運用確認過程的專用實踐。
3 ?彈載嵌入式軟件的特點(Characteristics of missile-borne embedded software)
彈載嵌入式飛行控制軟件在規模上屬于中等規模軟件。它對外要接收載機飛行任務,對內需要控制全彈各個組件的自檢以及整個工作流程,接口繁多,時序復雜。在研制初期,系統需求尚不明晰,存在諸多不確定性,這就造成在軟件研制啟動后的整個開發過程中會有大量的需求變更,從而引發多輪次軟件迭代設計。
鑒于飛行控制軟件的使用目的,其對可靠性和安全性要求嚴格,因此軟件開發過程規范、受控、可追溯等更不可忽視。飛行控制軟件為嵌入式運行的軟件產品,其最終隨硬件產品一同交付。軟件研發過程受硬件產品的制約,接口需求等需要硬件產品配合的驗證試驗要在硬件到位的情況下才能開展,軟件研發周期無法保證。
4 ?工程類過程域在軟件研發中的應用(Application of Engineering process areas in software development)
在系統需求分析基本完成,軟件研制任務明確后,即可啟動軟件研制工作。從完成系統的需求分析,到軟件最終交付使用,軟件研制需經歷需求開發過程、設計與實現過程和驗證與確認過程。五個工程類過程域貫穿整個軟件的開發與迭代過程,如圖2所示。
4.1 ? 需求開發過程
需求開發過程產生并分析用戶、產品和產品部件的需求,這些需求包括與產品生存周期各個階段有關的需要,以及與產品屬性有關的需要。
開發用戶需求。根據飛控軟件特點,系統工程組向利益相關方收集、獲取需求,歸納總結共性的需求條目,編寫《用戶需求列表》,并對軟件的功能、性能、接口等需求進行定義,編寫《軟件研制任務書》初稿,內容涵蓋軟件產品介紹、軟件應遵循的標準或規范,以及軟件產品的功能性需求、非功能性需求、接口需求等。
評審《軟件研制任務書》。系統工程組組織對《軟件研制任務書》進行評審,評審通過后,系統工程組申請將《軟件研制任務書》入庫,同時申請建立功能基線。
制定運行方案和場景。軟件設計組分析軟件對硬件平臺及計算機資源的需求,包括計算機軟件配置項(CSCI)環境需求和計算機資源需求。
確定并分配產品部件需求。軟件設計組將產品分解為產品部件,將功能需求、性能需求、設計約束條件分配給每個產品部件,分析CSCI能力需求。
標識接口需求。軟件設計組對軟件產品的內部接口、外部接口(包括通訊協議)、工作用接口和測試用接口等進行標識,文檔化已標識接口的類型、功能、使用方式、數據格式、限制條件等信息。
分析需求。分析利益相關方的需要、期望、約束和外部接口,識別需求的優先順序和關鍵程度,并完成《軟件需求規格說明》的編寫。
評審《軟件需求規格說明》。由軟件設計組根據評審規程組織相關人員對《軟件需求規格說明》進行評審,確保與用戶、開發人員、測試人員以及其他利益相關方能達成一致理解,共同確認《軟件需求規格說明》。
4.2 ? 設計與集成過程
設計與集成過程是針對軟件需求進行軟件設計、代碼實現和代碼集成的工程技術活動,它涵蓋技術解決方案和產品集成兩個過程域。
確定設計策略。軟件設計人員依據《軟件需求規格說明》建立選擇準則,制定備選方案,并對分配需求逐條開展設計決策,確定最能滿足選擇準則的設計策略方案。
體系結構設計和詳細設計。軟件設計人員依據《軟件需求規格說明》進行軟件體系結構分解,定義軟件接口設計準則,分析每個軟件部件的設計,確定其實現方式。根據設計策略和體系結構設計,確定軟件體系結構的細節,完整定義產品部件和接口。根據設計內容,完成編寫《軟件設計說明》。
建立技術數據包。軟件設計人員在體系結構設計期間開始建立技術數據包,并在軟件產品生存周期內維護該數據包。
軟件實現。軟件實現人員根據《軟件設計說明》實現軟件部件,編寫軟件支持文檔,并對實現的軟件單元進行單元測試。
制定軟件集成計劃。軟件實現人員依據《軟件需求規格說明》和《軟件設計說明》建立軟件集成環境,確認軟件部件和部件的內外部接口關系,制定軟件集成策略,并編寫《軟件集成計劃》。
軟件集成。軟件實現人員根據《軟件集成計劃》,將軟件部件集成為可提交用戶使用的完成軟件產品,對集成后的軟件產品進行軟件仿真等功能驗證,并開展部件測試。
4.3 ? 驗證與確認過程
驗證與確認過程是確保工作產品滿足指定的需求和使用需求。
在彈載嵌入式軟件研發過程中,主要通過相關文檔的評審、軟件代碼的測試、軟件仿真等手段實施驗證活動,確保工作產品滿足指定的需求;在用戶及利益相關方參與的情況下,通過飛控組件交付試驗以及半實物仿真試驗等方法,在接近真實的環境中進行產品確認,確保產品滿足使用需求。
軟件測試是貫穿軟件開發的整個過程,是軟件產品驗證與確認的一個途徑。它主要包括代碼審查、文檔審查和靜態測試,與軟件模塊對應的單元測試,與《軟件設計說明》相對應的部件測試,與《軟件需求規格說明》相對應的配置項測試以及與《軟件研制任務書》相對應的系統測試等。軟件研制過程中的缺陷定位技術也是目前正在探索使用的一種測試技術,主要采用基于程序譜的理論[8]。
5 ?應用中需關注的問題(Issues to be concerned about in application)
細致實施軟件需求開發。軟件需求是軟件項目研發的基礎。軟件需求具有不確定性、變化性和主觀性等特點,獲取高質量的軟件需求是軟件研制過程中的重點和難點。尤其是對于彈載嵌入式飛行控制軟件來說,在研制初期,載機端的需求存在較大的不確定性,這必將給軟件需求的確定帶來較大困難。在需求開發階段如若能夠細化需求分解,則為交付高質量的軟件產品打下良好的基礎,也能大幅降低整個軟件研制過程的糾錯成本[9-10]。表1給出了軟件各研制階段的糾錯成本,其中假設在軟件實現階段糾正一個錯誤的成本為1。從中我們不難看出,需求分析階段的糾錯成本最多為實現階段的1/5,隨著研制進度的深入,糾錯成本將大幅提高。細致全面的需求分解必會幫助研發人員在軟件開發過程中少走彎路。
軟件迭代過程中的狀態控制。隨著系統需求的逐步明晰,軟件狀態也會隨之迭代更改以滿足其要求。軟件本身的狀態管理在軟件開發過程中的被重視程度已較為深入。除此之外,還需格外關注需求變更引起的一系列狀態更改,采用有效便捷的手段管理需求變更引發的軟件狀態變化。
重用模塊的使用。對于不同型號的飛行控制軟件開發來說,其各方面都具有較高的繼承性。軟件中部分功能明確、獨立、接口固定且經過多輪次多途徑驗證的成熟函數,被封裝成獨立的功能模塊,作為組織資產[11]的一部分供不同的項目軟件使用。模塊的重用是提高軟件可靠性和軟件研發效率的重要手段。在飛控軟件的設計和集成過程中,經分析后能使用重用模塊的應盡量使用,但應充分分析其適用性。若需對重用模塊進行適應性修改后使用的,應分析其影響域并策劃相應的軟件測試,以保證其正確性。
開展及時有效的同行評審。從首版軟件的形成到最終交付使用的軟件版本,其間必然會通過各種方式發現許多軟件相關問題。隨著軟件研制流程的不斷深入,其牽涉的產品和試驗越來越繁多,發現并修復軟件問題需要付出的代價也越大。因此越早發現缺陷,其影響域越小,修復缺陷的成本也越低。走查是一種軟件開發中最為有效,也最便于設計人員開展的同行評審形式。軟件文檔的一致性、軟件代碼實現的正確性等均可以通過走查的方式開展。根據研制經驗,在首版軟件代碼形成后,開展一輪全面的走查,其缺陷檢出率較高,且帶來的影響也較小。在廣泛實施同行評審并收集數據的基礎上,可利用度量結果來評估和改進軟件開發過程[12]。
6 ? 結論(Conclusion)
GJB 5000A中的五個工程類過程域涵蓋了貫穿整個軟件研制過程的軟件開發和維護活動。根據彈載嵌入式軟件自身的特點,本文主要分析了這五個工程類過程域的特性以及其在彈載嵌入式軟件研制中的實際應用情況,并根據工程實施經驗提出了在實際應用中需格外關注的幾個問題,為保證軍用軟件產品的質量,提高軟件可靠性提供經驗和參考。
參考文獻(References)
[1] 中華人民共和國國家軍用標準.軍用軟件研制能力成熟度模型GJB 5000A-2008[S].北京:國防工業出版社,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三級的產品集成過程研究與應用[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] 王勇.軟件過程資產庫的研究與實現[J].計算機應用與軟件,2016,33(7):106-108,144.
[12] 張文秀,張錦輝.軟件過程中同行評審的應用與度量[J].計算機應用與軟件,2008,25(10):101-103.
作者簡介:
張 ?萍(1980-),女,碩士,高級工程師.研究領域:彈載嵌入式軟件設計.
李 ?棟(1974-),男,碩士,高級工程師.研究領域:控制與導航.