王菁華、邊夢琦、董春楊、王潔、凌咸慶 /北京航天長征飛行器研究所
隨著軟件產(chǎn)品在武器裝備中所占比重不斷增加,軟件研發(fā)工作的難度和復(fù)雜度不斷提高。一方面,軟件功能的不斷增加導(dǎo)致編寫規(guī)模不斷擴大,另一方面,研制周期的不斷縮短導(dǎo)致管理難度增加。
隨著軟件承研項目越來越重要、復(fù)雜度越來越高,軟件研制在功能實現(xiàn)、編寫規(guī)模、研制時間等方面均與以往不同,特別是在軟件流程研制上提出了更為嚴格的要求。為此,北京航天長征飛行器研究所的軟件研制流程采用了更科學(xué)的軟件項目管理手段,以保證在“多、大、快”的時代背景下,高效率、高質(zhì)量完成軍用裝備研發(fā)工作。
經(jīng)過不斷摸索與實踐,2019年12 月研究所通過GJB5000A三級的認證工作,由GJB5000A二級水平提升為GJB5000A 三級。截止目前,該體系在研究所運行已一年有余,使用范圍包括多個研發(fā)部門的型號研制團隊,為40 余個軟件項目提供管理支撐,也為研究所后續(xù)開展和推廣軟件項目管理工作積累了豐富的工程經(jīng)驗。
團隊以軟件項目計劃與控制的理念為出發(fā)點,以軍用軟件能力成熟度模型為理論依據(jù),針對研制流程模式進行不斷探索和嘗試,提出符合研究所實際需求的改進方法,力圖尋找一種具有研究所特色的軟件項目管理模式。通過不斷改進,取得了一定效果,形成了一系列富有成效的管理措施。
基于GJB5000A 二級的管理經(jīng)驗,團隊從資源分配角度對人力資本、項目資源、時間投入等要素進行項目估算,并制定軟件開發(fā)計劃,力圖在項目伊始就勾勒出研制流程整體輪廓,為后續(xù)項目管理工作奠定良好的基礎(chǔ)。
為達到軟件研制要求,團隊對整個研制過程中的各項具體活動進行分解,將目光聚焦于與研制過程息息相關(guān)的3 個方面,分別是時間、工作量以及人員。對照軟件項目生存周期模型,依照“項目—任務(wù)—工作—日常活動”的WBS,從項目頂層進行分解,直至可操作的日常工作。
(1)規(guī)模量估算
首先,根據(jù)任務(wù)書明確軟件需求,將軟件項目從一級任務(wù)分解至二級任務(wù),如表1 所示,包括“軟件初始化”“軟件自檢”“時間同步”“參數(shù)裝訂”等。其次,對二級任務(wù)進一步分解,細化代碼功能,如將“軟件初始化”分解為“DSP 存儲器初始化”、“內(nèi)部鎖相環(huán)始終電路”及“外設(shè)時鐘模塊寄存器”等。最后,依據(jù)二級任務(wù)確定開發(fā)方式,或沿用已有軟件,或修改已有軟件,或進行軟件新研,并輔以軟件研制經(jīng)驗確定各項二級任務(wù)的軟件編寫規(guī)模。
表1 規(guī)模量估算表
(2)工作量估算
在軟件研制中,工作量一般以“人/小時”為單位進行計算,將二級任務(wù)作為工作量的最小單元,結(jié)合軟件語言、軟件關(guān)鍵等級、人員熟練程度等因素計算總工作量、總時長等信息。
(3)進度值估算
在“規(guī)模量估算”及“工作量估算”的基礎(chǔ)上,可進行研制進度估算,為每項二級任務(wù)估算時間周期,即各項任務(wù)的起止時間。值得注意的是,在分解過程中不僅需對軟件代碼編寫時間進行估算,也需為各項配置項文檔編寫時間進行估算。
首先,為研制活動的各項日常工作分配系數(shù),各項日常工作系數(shù)總和為100%。其次,根據(jù)權(quán)重及工作量估算計算得出計劃工時,具體公式為:計劃工時=工作量估算×分配系數(shù)。接著,根據(jù)計劃時間與人員工作時間的關(guān)系計算得出計劃工期,具體公式為:計劃工期=計劃工時/人員工作時間。最后,依據(jù)研制經(jīng)驗,估算項目組成員在各項評審、質(zhì)量保證等工作中的時間花費,形成完備的進度估算表,如表2所示。
表2 進度估算表
實際工作的開展將參照進度估算表進行,如出現(xiàn)任務(wù)延遲或提前的情況,可及時得到偏差結(jié)果,并在軟件研制項目組中進行討論。
相對于其他的工程項目,軟件項目受到來自物料、設(shè)備、場地等因素的影響較小,人力資源是軟件項目的主要資源,項目組成員有不可取代的作用。研究所目前承接的軟件研制項目也因為“專業(yè)多、人員多、環(huán)節(jié)多”等特點更加依賴成員。
軟件項目組成員的作用不僅體現(xiàn)在具備足夠的軟件專業(yè)能力及GJB5000A 體系管理意識,也體現(xiàn)在在一個復(fù)雜研制流程中是否可以將自身能力發(fā)揮到最大化。
(1)角色劃分
目前,研究所承接的軟件研制項目編寫規(guī)模復(fù)雜、涉及專業(yè)眾多、集成度高、參與人數(shù)龐大,與傳統(tǒng)研制方式有很大區(qū)別。這就要求軟件項目成員在流程中明確職責并了解工作內(nèi)容,以此提高每一環(huán)節(jié)的工作效率,達到“1+1 >2 ”的效果。
同時,研究所設(shè)計人員人均承接3~4 個不同型號的不同軟件項目工作,人力資源緊張,且用戶方提出型號研制平均周期為18~24 個月,為避免因在型號研制期間中途換人、時間安排不開等問題的影響,軟件項目組人員安排及所屬角色設(shè)置至關(guān)重要。
通過角色劃分的方式(見表3),明確項目組成員在軟件研制過程中承擔的職責,以及在管理流程中被賦予的權(quán)限。以角色定位劃分的方式明確工作范圍,同時,在跟進軟件研制進度時也可一目了然,準確定位問題環(huán)節(jié)所在負責人。提高軟件研制效率,避免“推諉扯皮”“踢皮球”的現(xiàn)象發(fā)生。
表3 某項目人員角色分配
(2)能力提升
為保障軟件研制流程順利進行,需要不斷提高項目組人員的專業(yè)能力及體系意識。通過體系要求的2 個“專用目標”和7 個“專用實踐”開展能力提升工作。一方面,針對軟件研制項目開發(fā)人員、測試人員等開展專業(yè)培訓(xùn)。另一方面,根據(jù)軟件項目管理要求開展管理培訓(xùn)。以傳統(tǒng)培訓(xùn)開發(fā)理論“需求分析—計劃制定—效果反饋”為依據(jù)制定全年培訓(xùn)內(nèi)容,以此幫助項目組成員提高自身能力,改善工作效率。
在項目研制中,通常以開會或電子郵件的方式向項目負責人或更高級領(lǐng)導(dǎo)人員匯報項目進度。這樣的方式導(dǎo)致項目開發(fā)人員需要花費大量時間在溝通和編寫文檔上,是一種不高效的反饋方式。
團隊在GJB5000A 二級的基礎(chǔ)上優(yōu)化反饋方式,從每項工作、定期匯報以及整體進度3方面改進,軟件項目組成員可直接進行進度反饋。同時,在實際進度與估算進度產(chǎn)生偏離時,可以及時釆取有效措施,保證項目按期完成。
(1)日常工作日志填寫
經(jīng)過WBS 分解軟件項目后,將研制任務(wù)分解成可執(zhí)行、可量化的日常工作。軟件項目組成員在每進行一項日常工作后,立即填寫當日完成情況的工作日志,記錄內(nèi)容包括進度百分比、實際用時等信息。
之前在進度估算表中已對每項日常工作的總工時及總工期進行了估算,通過對比實際用時與估算時用的差異,完善估算方法,為后續(xù)軟件研制項目積累研制經(jīng)驗,豐富組織資產(chǎn)庫。
時至今日,傳統(tǒng)中國山水畫的創(chuàng)作者們?nèi)匀辉趶那拜叺漠嬜髦屑橙I養(yǎng),學(xué)習(xí)他們甘于平淡的藝術(shù)精神。從政治經(jīng)濟環(huán)境來說,現(xiàn)今的社會和古代社會已發(fā)生了天壤之別,當今的山水畫作者所處的時代背景決定了他們并不會完全像古代畫家一樣去追求離塵出世。然而中國文化的內(nèi)核一直未曾改變,都是以儒釋道為核心的。這一點決定了中國山水畫的藝術(shù)追求不會發(fā)生根本的轉(zhuǎn)變,隱逸山林、心生出離的基調(diào)也不會徹底改變。
(2)雙周報制度
工作日志是為了監(jiān)控每項工作完成情況而填寫的,雙周報制度則是為是否完成階段研制目標而設(shè)立。一項日常工作的進度偏差對整個項目進度的影響并不明顯,但一定時間內(nèi)的完成情況匯總可累積體現(xiàn)出與估算時間的偏差。
軟件項目成員將每雙周完成的工作匯總成為項目進展報告。一方面,全面掌握一定時間內(nèi)的配置項編寫、入庫等情況,另一方面,可從雙周報的完成情況監(jiān)控研制進度。
(3) 項目進度管理一覽表
在工作日志和雙周報的基礎(chǔ)上,形成軟件研制流程的進度管理表。表中的每項工作即是項目統(tǒng)籌時分解出的二級任務(wù),也是在實際工作中必須進行的項目關(guān)鍵路徑。通過進度百分數(shù)可直觀掌握項目進度情況。同時,通過綜合衡量項目進度,可使軟件項目組成員對所負責的工作提前進行安排,避免因安排不合理導(dǎo)致研制時間縮短而造成質(zhì)量隱患,影響型號整體研制進度。
在實際軟件研制過程中,軟件需求因軟件任務(wù)書的不斷更改而變化,導(dǎo)致軟件狀態(tài)不斷更新,產(chǎn)生眾多版本的源程序。軟件版本的管理一直是軟件研制中的痛點和軟肋,版本狀態(tài)管控不清晰對于整個型號研制存在巨大風險和質(zhì)量隱患。團隊針對版本不清的問題持續(xù)改進,以風險分析為落腳點、優(yōu)化配置項管理為抓手,消除軟件版本狀態(tài)不清晰產(chǎn)生的隱患。
(1)動態(tài)風險分析及跟蹤
風險是指某個意料之外事件所帶來的負面影響,可能發(fā)生或不發(fā)生。如果發(fā)生該事件將對整個研制流程造成嚴重的后果。所以風險分析在研制流程中就顯得十分重要,它是整個軟件研制流程中的“瞭望塔”“烽火臺”。
團隊針對實際軟件研制流程的4 大類管理過程的7 個過程域進行風險動態(tài)識別,從“需求風險”“計劃風險”“人員風險”“環(huán)境風險”“技術(shù)風險”5 個維度對新出現(xiàn)的風險點進行及時評估和跟蹤。
參考所級資產(chǎn)庫的組織風險庫列表,通過“風險可能性-風險影響—風險發(fā)生時段—計算風險值—制定風險管理計劃”的路徑識別研制流程中可能存在的風險,如表4 所示。
表4 某研制過程中的風險識別表
通過“風險值=風險可能性評估值×風險后果評估值×風險發(fā)生時段評估值”的風險計算公式確定風險等級,形成項目風險列表,并根據(jù)軟件研制進度動態(tài)識別是否產(chǎn)生新的風險等問題。
(2)強化軟件配置項管理
“配置管理”的概念相較于“軟件版本管理”的概念范疇更為寬泛,進行配置管理有利于軟件版本的管理,清晰掌握軟件狀態(tài)的變化。在GJB5000A 二級的工作基礎(chǔ)上,團隊組織討論并修訂配置管理過程模板,強化配置管理員責任,明確配置管理過程,加強全體項目組成員的配置項管理工作的意識。
首先,加大對配置管理報告的審查強度,并做好基線的管理工作,嚴格劃分功能基線、需求基線及產(chǎn)品基線。其次,形成配置管理雙周報,及時掌握軟件配置項入庫狀態(tài),杜絕“缺、漏、差”的現(xiàn)象發(fā)生。最后,嚴把軟件配置項入庫的流程審批。力爭做到軟件狀態(tài)清晰可查,從根源提高軟件研制質(zhì)量,杜絕低層次質(zhì)量問題發(fā)生。
隨著GJB5000A 三級體系在我所的不斷運行與經(jīng)驗積累,軟件研制流程也更加科學(xué)化、系統(tǒng)化、程序化。目前該體系運行已覆蓋多個軍品研制部門及科研管理部門。為使研制流程更加流暢、軟件質(zhì)量更加可靠,以“培訓(xùn)”“構(gòu)件”“樣例”“經(jīng)驗教訓(xùn)”4 個維度搭建部門級資產(chǎn)庫。
通過搭建部門級資產(chǎn)庫,以不斷滾動積累的形式保證了知識財富穩(wěn)定地增長,同時減少在項目研制過程中對某一特定人員的依賴。新員工亦可通過資產(chǎn)庫快速了解并接手研制工作,降低了因人員更換帶來的人員培訓(xùn)成本。
根據(jù)實際工作的需要不斷迭代更新配置項模板樣式,使模板更加貼切實際工作,使軟件研制流程中的文檔編輯工作更加簡化,方便設(shè)計人員開展及進行各項計劃、說明的編寫工作,促進研究所GJB5000A 三級體系的運作流暢度,提高體系效率。
其中以構(gòu)件庫的運用效果最為明顯。隨著軟件項目數(shù)量的增多與研制經(jīng)驗的積累,項目組成員總結(jié)軟件開發(fā)的通用性和軟件設(shè)計層的特點,將已完成設(shè)計并通過測試的構(gòu)件保留至構(gòu)件庫中。如有需求相同的軟件項目可直接從構(gòu)件庫中選取。截至2020年12 月,構(gòu)件庫中已留有可靠性較高的構(gòu)件107 項。
開發(fā)構(gòu)件庫不僅節(jié)省了開發(fā)、測試等環(huán)節(jié)的時間資源、人力資源,大幅減少工作量,降低軟件開發(fā)成本。同時,也提高了新研軟件的可靠性和質(zhì)量,提升軟件重用率。以此循環(huán)利用,軟件研制效率將持續(xù)提升。
通過實施該軟件項目管理方法,不僅確保各型號的在研軟件在符合研制要求的情況下,按時保質(zhì)地進行驗收、交付,軟件的功能、性能、接口等方面的可靠性、安全性也均有提高。其中在產(chǎn)品質(zhì)量與成本方面尤為突出,三方測評缺陷率下降3%,總體工作量成本偏差控制在±10%。同時,為研究所對軟件項目進行規(guī)范化管理,改進軟件的開發(fā)工作,提高軟件開發(fā)的成熟度,向?qū)崿F(xiàn)產(chǎn)品細目化、結(jié)構(gòu)化的現(xiàn)代管理方式邁進積累了豐富的工程經(jīng)驗。
此外,軟件研制團隊的科研能力、理論水平、管理能力都得到了充分的鍛煉和提高,2 人獲得研究員職稱,1 人獲得高級工程師職稱,發(fā)表國際會議論文2 篇。
隨著軟件成為武器裝備的核心組成部分,軟件定義裝備也必將成為未來軍用作戰(zhàn)裝備的流行趨勢。團隊后續(xù)將繼續(xù)改進軟件項目管理方法。其一,將軟件項目的計劃環(huán)節(jié)與控制環(huán)節(jié)更加精細化,提高操作性。其二,針對軟件配置管理工作開展專項討論,嚴格把控配置項入庫時機與基線建立。其三,繼續(xù)豐富資產(chǎn)庫,為后續(xù)軟件研制工作提供有力支撐。在工作中持續(xù)發(fā)揮GJB5000A體系的作用,開展更加深入的標準學(xué)習(xí)與研究,提高軟件研制能力與效率,保證產(chǎn)品質(zhì)量與交付節(jié)點。