邱衛新,陸 峻(.海軍駐南京地區雷達系統軍事代表室,南京0003; .中國船舶重工集團公司第七二四研究所,南京53)
?
基于GJB5000A的軟件敏捷開發在裝備研制中的應用
邱衛新1,陸峻2
(1.海軍駐南京地區雷達系統軍事代表室,南京210003; 2.中國船舶重工集團公司第七二四研究所,南京211153)
摘要:通過分析GJB5000A與敏捷開發各自的擅長領域和存在的明顯不足,將敏捷開發實踐裁剪為適應GJB5000A相應的成熟度級別,使軟件組織在獲得敏捷性的同時具有規范性。提出了裝備研制中基于GJB5000A的軟件敏捷開發過程,為進一步改進提供了規范性實踐。
關鍵詞:GJB5000A;敏捷開發;過程改進
隨著軟件在裝備中應用范圍和實現功能的迅速拓展,裝備軟件的規模、復雜度和數量都在大幅度增長,呈現出多樣化、復雜化和智能化的特點,而軟件面臨的問題也越來越多。軟件質量在某種程度上已經成為制約裝備質量、效能、戰備完好性的瓶頸問題,其質量直接影響著軍事指揮和武器裝備作戰效能的發揮。提高和保證裝備軟件質量成為十分重要和緊迫的任務。
GJB5000A與敏捷開發方法逐步成為軟件過程改進的兩種主要模式。然而,目前國內在實施GJB5000A模型方法時流于形式主義的現象很嚴重,而在敏捷方法的實踐中“目無法度”的情況也很突出。在GJB5000A模型框架下,本文將以快速迭代開發為主要特征的敏捷開發與GJB5000A模型進行融合,可以幫助裝備承研單位在進行大規模規范化開發的同時快速響應需求變化,有效改進軟件開發過程,提高企業的核心競爭力[1]。因此,基于GJB5000A的軟件敏捷開發研究具有重大的現實意義。
GJB5000A是一個過程改進參考模型,其核心思想是把軟件開發視為一個過程,并根據這一原則對軟件開發和維護進行過程監控和管理。GJB5000A一共有5個成熟度等級,定義了一個循序漸進的度量標準,用以評估裝備承研單位的軟件過程和評價其軟件能力。它描述了軟件過程不斷改進和提升途徑,幫助有關單位對其各項過程改進工作排出優先次序[2]。軟件能力成熟度一級(初始級)描述軟件過程不可預測,成功依賴個人能力,項目常無法按期完成,過程不可預測;軟件能力成熟度二級(已管理級)描述軟件過程執行受控,項目滿足已定義的標準和規程,解決基本項目管理問題;軟件能力成熟度三級(已定義級)描述組織過程比二級更針對性、更嚴格,解決組織級過程標準化的問題;軟件能力成熟度四級(已定量管理級)描述組織和項目為質量和過程績效建立了定量的目標,并作為管理過程的標準,解決定量管理的問題;軟件能力成熟度五級(優化級)描述根據對過程中固有變異和共因進行定量理解,強調持續地改進過程,解決持續過程優化的問題[3]。
Agile開發方法(敏捷開發)是近年來軟件開發界提出的一種新的開發方法。敏捷開發是輕量型的開發方法,它反對傳統、龐大、重型的過程,強調與人交流的重要性,提倡用高質量的軟件代替文檔,具有能夠適應需求變化、進行快速開發的能力。這類方法以快捷、輕便的思維方式迅速解決了一些傳統軟件開發中存在的問題,提高了軟件企業的生產效率,得到了迅速的推廣。敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟件項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。換言之,就是把一個大項目分為多個相互聯系但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態[4]。
敏捷方法能夠適用于開發復雜的、大規模的應用程序,但是會存在一些問題有待解決:
(1)隱式知識可以促進敏捷,但在所開發軟件的規模擴大時具有嚴重的伸縮性問題;
(2)要識別和響應是否需要違背標準的敏捷實踐,高才能的人員是關鍵;
(3)當項目很大且變更可預見時,簡單設計是有風險的。
擴大敏捷使用規模的主要解決方案是引入GJB5000A的一些要素:
(1)使用高層架構計劃來提供必須的全局視圖信息;
(2)更仔細地定義里程碑完成標準以避免表面“完成”實際卻沒有完成的情況;
(3)使用設計模式和架構方案而不是簡單設計來應對可以預見的變更[5]。
GJB5000A依賴預先制定的復雜詳盡的計劃和規格說明。這導致了延誤和競爭力降低,而使用敏捷方法可以解決這些風險。使用短迭代并在簡單設計和預見變更的架構之間進行平衡可以應對快速變更。使用短迭代和結對編程可以快速看到結果。需求多次變更可以通過短迭代的方法加以解決。
GJB5000A模型方法與敏捷開發的最終目的都是為了提高軟件產品質量對開發進度進行有效管理而產生的過程改進標準或實踐。只是在軟件過程改進中兩者的關注焦點不同。GJB5000A關注組織級或企業級改進,為軟件組織提供了實施過程改進所需要做的目標,沒有對具體實踐做出硬性規定;而敏捷開發更關注項目級改進,主要關注于為軟件組織提供具體的可操作實踐進行過程改進。GJB5000A與敏捷開發對于過程改進關注焦點的不同可以使兩者互為補充。
綜上所述,GJB5000A可以為敏捷開發提供必要的組織管理框架和組織級規模開發能力,有利于敏捷開發的最佳實踐在組織級的應用和推廣。同時,敏捷開發為GJB5000A提供了項目級的具體實踐方法,確保團隊在GJB5000A框架下能夠快速響應,不斷創新,持續交付價值。兩者的有效結合能夠有效實現個人績效向團隊績效、向組織績效的轉變過程。同時,也可以通過敏捷實踐,規避GJB5000A實施過程中重文檔、重流程的不良傾向,使GJB5000A實施時更加關注組織的實際價值,關注客戶,關注創新。
3.1生存周期模型的選擇
在組織層面,將敏捷團隊封裝以符合GJB5000A規范,敏捷團隊在項目內部實施敏捷開發。在項目管理、工程以及支持層面,對GJB5000A的相關過程域進行適當的裁剪,將敏捷實踐與相關過程域進行有效融合,建立基于GJB5000A的軟件敏捷開發的生存周期模型。
采用該模型的項目,其生存周期劃分為4個階段,每一個階段的工作產品都是下一個階段的輸入。為保證項目工程進度,階段之間允許并行開發,但階段結束須按順序完成,不得交叉。
裝備研制中基于GJB5000A的軟件敏捷開發的生存周期模型流程圖如圖1所示。

圖1 基于GJB5000A的軟件敏捷開發的生存周期模型流程圖
3.2階段活動描述
裝備研制中基于GJB5000A的軟件敏捷開發的生存周期模型的階段活動描述如表1所示。

表1 基于GJB5000A的軟件敏捷開發的生存周期模型階段活動描述

續表1
GJB5000A軟件能力成熟度體現了軍工單位具備軍用軟件研制能力和承擔相應成熟度等級的軍用軟件研制的資質。本文通過在GJB5000A的標準框架內與軟件敏捷開發的融合實現,為提高裝備研制過程中軟件產品開發質量和開發效率提供了保證。
參考文獻:
[1]Paul E McMahon.CMMI +敏捷整合開發:更快改進性能的案例與實用技術[M].北京:清華大學出版社,2012.
[2]Suzanne Garcia,Richard Turner.CMMI生存指南——最佳過程改進方法[M].北京:電子工業出版社,2010.
[3]GJB5000A軍用軟件研制能力成熟度模型[M].北京:總裝備部軍標出版發行部,2008.
[4]Daniel C.Halbert,Patrick D.0'Brien.Object-oriented development.IEEE Software.
[5]Dennis M Ahern,Aaron Clouse,Richard Turner.CMMI精粹[M].北京:清華大學出版社,2009.
Application of GJB5000A-based agile software development in equipment development
QIU Wei-xing1,LU Jun2
(1.Military Representatives Office of Radar System of the PLA Navy in Nanjing,Nanjing 210003; 2.No.724 Research Institute of CSIC,211153)
Abstract:The advantages and disadvantages of both the GJB5000A and the agile development are analyzed.In practice,the agile development is adjusted to adapt to the GJB5000A maturity levels,making the software agile and normative.The agile software development based on the GJB5000A in the equipment development is presented to provide normative practice for further improvement.
Keywords:GJB5000A; agile development; process improvement
作者簡介:邱衛新(1962-),男,高級工程師,研究方向:雷達總體技術;陸峻(1976-),女,高級工程師,研究方向:計算機軟件工程化。
收稿日期:2015-04-20;修回日期:2015-04-25
文章編號:1009-0401(2015)02-0060-04
文獻標志碼:A
中圖分類號:TP31