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