梁琪+楊躍+任延超+張巧
[摘 要] 針對(duì)初次實(shí)施項(xiàng)目估計(jì)彈載軟件特點(diǎn),提出結(jié)合自頂向下估計(jì)法與自底向上估計(jì)法的軟件項(xiàng)目估計(jì)方法,選用寬帶Delphi技術(shù)作為其基礎(chǔ)實(shí)施方法,并將其設(shè)計(jì)實(shí)例化。此方法現(xiàn)已在多個(gè)彈載軟件項(xiàng)目成功應(yīng)用。該方法能有效提高初次估計(jì)彈載軟件項(xiàng)目估計(jì)的規(guī)范性、有效性,對(duì)其他領(lǐng)域的初次估計(jì)軟件項(xiàng)目估計(jì)具有借鑒作用。
[關(guān)鍵詞] 彈載軟件;軟件估計(jì);自頂向下估計(jì)法;自底向上估計(jì)法
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2017. 03. 082
[中圖分類號(hào)] TP311.5 [文獻(xiàn)標(biāo)識(shí)碼] A [文章編號(hào)] 1673 - 0194(2017)03- 0145- 04
0 引 言
軟件項(xiàng)目估計(jì)是對(duì)軟件項(xiàng)目規(guī)模、工作量、成本和進(jìn)度等的預(yù)測(cè),是軟件項(xiàng)目計(jì)劃編制、管理和控制的基礎(chǔ)[1]。軟件項(xiàng)目估計(jì)數(shù)據(jù)的使用貫穿軟件項(xiàng)目的整個(gè)研制過(guò)程。本文中初次估計(jì)特指處于軍用軟件研制能力成熟度1級(jí)(初始級(jí))[2]時(shí),第一次開展軟件項(xiàng)目估計(jì)活動(dòng)時(shí),無(wú)可用類似項(xiàng)目歷史數(shù)據(jù)或數(shù)據(jù)散落于個(gè)人/開發(fā)組中,不能為彈載軟件項(xiàng)目估計(jì)及項(xiàng)目后續(xù)策劃提供支撐時(shí)的軟件項(xiàng)目估計(jì)。此時(shí)軟件項(xiàng)目估計(jì)不適用基于模型或基于歷史數(shù)據(jù)估計(jì)方法。且彈載軟件一般隨彈交付使用方,研制周期明確,因此迫切需要合理的軟件項(xiàng)目估計(jì)方法,從而建立有效的軟件項(xiàng)目計(jì)劃,為軟件項(xiàng)目建立合理預(yù)算,確定合適資源,為實(shí)現(xiàn)軟件項(xiàng)目承諾提供基礎(chǔ)。
1 初次估計(jì)彈載軟件項(xiàng)目估計(jì)方法研究
軟件項(xiàng)目估計(jì)是軟件項(xiàng)目管理的基礎(chǔ)工作。軟件項(xiàng)目估計(jì)包括有:規(guī)模估計(jì)、工作量估計(jì)、成本估計(jì)、進(jìn)度估計(jì)和風(fēng)險(xiǎn)估計(jì)[3]。而針對(duì)彈載軟件,軟件項(xiàng)目估計(jì)主要集中在規(guī)模和工作量估計(jì)活動(dòng)。如果規(guī)模和工作量估計(jì)不準(zhǔn)確,可能導(dǎo)致軟件項(xiàng)目組制定的計(jì)劃無(wú)法完成。有效的軟件項(xiàng)目估計(jì)方法能減少項(xiàng)目失敗的可能性。初次估計(jì)彈載軟件項(xiàng)目其自身特點(diǎn)決定必須設(shè)計(jì)合適的軟件項(xiàng)目估計(jì)方法以滿足其軟件估計(jì)需求。
現(xiàn)在軟件項(xiàng)目估計(jì)研究主要集中于基于模型或基于歷史數(shù)據(jù)估計(jì)方法[3-6]。而進(jìn)行初次開展彈載軟件項(xiàng)目估計(jì)時(shí),由于估計(jì)成員本身對(duì)估計(jì)模型、估計(jì)方法理解不足,并且缺乏符合要求的歷史數(shù)據(jù),所以使用基于模型或基于歷史數(shù)據(jù)估計(jì)方法比較困難。
因此,本文引入基于寬帶Delphi技術(shù)結(jié)合自頂向下估計(jì)法與自底向上估計(jì)法來(lái)有效應(yīng)對(duì)初次估計(jì)彈載軟件項(xiàng)目估計(jì)問(wèn)題。項(xiàng)目規(guī)模估計(jì)時(shí)采用寬帶Delphi技術(shù)進(jìn)行估計(jì)。工作量估計(jì)時(shí)同時(shí)使用自頂向下和自底向上的估計(jì)方法,并對(duì)兩種方法估計(jì)的工作量數(shù)據(jù)進(jìn)行比較,通過(guò)判斷數(shù)據(jù)偏差是否在允許范圍內(nèi),分析偏差產(chǎn)生原因并根據(jù)分析結(jié)果調(diào)整參數(shù)或重新開始估計(jì)方式,直到估計(jì)數(shù)據(jù)可接受。具體工作量數(shù)據(jù)估計(jì)時(shí)采用寬帶Delphi技術(shù)進(jìn)行估計(jì)。從而達(dá)到結(jié)合自頂向下估計(jì)法及自底向上估計(jì)法優(yōu)點(diǎn),通過(guò)一次完成估計(jì)制定合理實(shí)施計(jì)劃目的。
彈載軟件一般規(guī)模小于1 000個(gè)功能點(diǎn)。對(duì)擁有1 000個(gè)功能點(diǎn)的應(yīng)用來(lái)說(shuō),手動(dòng)估計(jì)和自動(dòng)估計(jì)的準(zhǔn)確率不相上下[4]。因此選取寬帶Delphi技術(shù)方法作為軟件項(xiàng)目估計(jì)的實(shí)施方法。寬帶Delphi技術(shù)是目前用的比較多的專家評(píng)估方法,該方法能在缺乏量化歷史數(shù)據(jù)時(shí)開展軟件項(xiàng)目估計(jì)[3]。在彈載軟件項(xiàng)目估計(jì)實(shí)施時(shí)采用寬帶Delphi有利于初次實(shí)施估計(jì)軟件項(xiàng)目開展軟件估計(jì)工作。
自頂向下估計(jì)法是用一個(gè)簡(jiǎn)單的方程從估計(jì)的規(guī)模求出估計(jì)的總工作量,各階段的工作量可以根據(jù)它們占總工作量的百分比而得到[5]。在需求不太明確時(shí),規(guī)模估計(jì)比較困難,這時(shí)估算的誤差會(huì)比較大,且估計(jì)工作量必須逐級(jí)分配給任務(wù),給項(xiàng)目計(jì)劃制定人員帶來(lái)額外難度。自底向上的方法,首先獲得項(xiàng)目各部分估計(jì)的規(guī)模,然后得到整個(gè)項(xiàng)目估計(jì)的規(guī)模[5]。這種方法主要依據(jù)工作分解(WBS)來(lái)估算,首先將項(xiàng)目進(jìn)行分解,列出主要工作,然后估計(jì)每件工作的工作量,匯總就可以得到整個(gè)項(xiàng)目的工作量,該方法能有效估計(jì)已知工作量,但無(wú)法應(yīng)對(duì)初次估計(jì)軟件項(xiàng)目中遺漏任務(wù)或任務(wù)變化帶來(lái)的風(fēng)險(xiǎn)。由于在彈載軟件項(xiàng)目估計(jì)后的制定項(xiàng)目實(shí)施計(jì)劃時(shí)也必須對(duì)工作任務(wù)進(jìn)行分解,所以采用結(jié)合自頂向下和自底向上估計(jì)方法可以結(jié)合兩個(gè)方法的優(yōu)點(diǎn),有利于降低實(shí)施計(jì)劃工作難度、提高估計(jì)有效性。
本文將結(jié)合自頂向下估計(jì)法與自底向上估計(jì)法的軟件項(xiàng)目估計(jì)方法設(shè)計(jì)實(shí)例化。該實(shí)例已成功應(yīng)用于兩個(gè)彈載軟件項(xiàng)目(某型飛行控制軟件、某型導(dǎo)航軟件)及一個(gè)非彈載軟件項(xiàng)目(某型地面檢測(cè)軟件)。
2 初次估計(jì)彈載軟件項(xiàng)目估計(jì)方法設(shè)計(jì)實(shí)例
2.1 制定軟件產(chǎn)品的工作分解結(jié)構(gòu)
軟件項(xiàng)目組根據(jù)《軟件任務(wù)書》,制定軟件產(chǎn)品的工作分解結(jié)構(gòu)(WBS),見(jiàn)圖1。產(chǎn)品WBS的分解層次以便于規(guī)模估計(jì)為原則。
2.2 估計(jì)軟件產(chǎn)品規(guī)模
利用2.1節(jié)制定的產(chǎn)品WBS估計(jì)軟件產(chǎn)品的規(guī)模。軟件規(guī)模以源代碼行數(shù)來(lái)度量。軟件規(guī)模估計(jì)時(shí)使用寬帶Delphi方法進(jìn)行估計(jì)。估計(jì)結(jié)果填入軟件項(xiàng)目估計(jì)記錄。
從規(guī)模數(shù)據(jù)推算出工作量數(shù)據(jù)時(shí),對(duì)規(guī)模數(shù)據(jù)要乘一個(gè)調(diào)整因子或稱難度系數(shù)。難度系數(shù)的設(shè)置參照表1。
2.3 計(jì)算工作量
根據(jù)項(xiàng)目整體規(guī)模估計(jì)項(xiàng)目的總的工作量。工作量的度量單位是“人時(shí)”。計(jì)算方法如下:
項(xiàng)目工作量 = 產(chǎn)品的規(guī)模 / 人均生產(chǎn)率
其中,產(chǎn)品的規(guī)模等于估計(jì)的規(guī)模乘以難度系數(shù);人均生產(chǎn)率參考數(shù)據(jù)可以根據(jù)組織生產(chǎn)率水平進(jìn)行設(shè)計(jì),例如2.5行/人時(shí),軟件估計(jì)負(fù)責(zé)人可根據(jù)具體情況取值,但要說(shuō)明理由。
將項(xiàng)目工作量按一定比例分配給各階段。比例分配參考數(shù)據(jù)見(jiàn)表2所示。
軟件估計(jì)負(fù)責(zé)人可根據(jù)本項(xiàng)目的具體情況調(diào)整以上分配比例,但要說(shuō)明調(diào)整的理由。
2.4 估計(jì)成本
軟件估計(jì)負(fù)責(zé)人估計(jì)人力成本,軟硬件成本等。估計(jì)結(jié)果填入軟件項(xiàng)目估計(jì)記錄的成本估計(jì)表項(xiàng)中。
2.5 工作產(chǎn)品規(guī)模估計(jì)
一次性估計(jì)軟件工作產(chǎn)品的規(guī)模。這里的軟件工作產(chǎn)品一般指的是工程技術(shù)文檔。規(guī)模估計(jì)的度量單位是文檔頁(yè)。應(yīng)使用寬帶Delphi的估計(jì)方法,估計(jì)項(xiàng)目工作產(chǎn)品的規(guī)模。
2.6 技術(shù)活動(dòng)WBS分解
軟件項(xiàng)目負(fù)責(zé)人組織相關(guān)人員對(duì)該項(xiàng)目的技術(shù)活動(dòng)進(jìn)行WBS分解,形成能夠執(zhí)行和跟蹤的一個(gè)個(gè)技術(shù)任務(wù)。任務(wù)是軟件項(xiàng)目跟蹤和監(jiān)督的最小技術(shù)活動(dòng)單元,能被一個(gè)人在兩周內(nèi)執(zhí)行完成。
技術(shù)活動(dòng)拆分完成后,產(chǎn)生該項(xiàng)目的技術(shù)活動(dòng)WBS,作為下一節(jié)任務(wù)工作量估計(jì)的基礎(chǔ)。
2.7 任務(wù)工作量估計(jì)
軟件估計(jì)負(fù)責(zé)人組織軟件項(xiàng)目開發(fā)人員和相關(guān)人員對(duì)該項(xiàng)目的工程活動(dòng)及非工程活動(dòng)工作量進(jìn)行估計(jì)。在任務(wù)工作量的估計(jì)時(shí),應(yīng)參照軟件產(chǎn)品規(guī)模和軟件工作產(chǎn)品規(guī)模估計(jì)結(jié)果。
(1)工程活動(dòng)工作量估計(jì):使用基于寬帶Delphi的估計(jì)方法進(jìn)行任務(wù)工作量的估計(jì)。
(2)非工程活動(dòng)工作量估計(jì):軟件項(xiàng)目負(fù)責(zé)人組織軟件項(xiàng)目開發(fā)人員和相關(guān)人員采用協(xié)商、討論等方式,對(duì)該項(xiàng)目的非工程活動(dòng)工作量進(jìn)行估計(jì)。
2.8 建立項(xiàng)目的階段計(jì)劃
將項(xiàng)目各階段所有任務(wù)工作量相加,得出項(xiàng)目階段工作量。將階段工作量與2.3節(jié)計(jì)算出的階段工作量比較,如果偏差未超過(guò)偏差允許范圍(例如20%),則可視計(jì)算工作量和估計(jì)工作量結(jié)果一致;如果偏差超過(guò)偏差允許范圍(例如20%),則應(yīng)分析原因,或調(diào)整階段分配比例,或按2.7節(jié)重新進(jìn)行估計(jì)。估計(jì)結(jié)束后將估計(jì)結(jié)果填入軟件項(xiàng)目估計(jì)記錄。
根據(jù)各階段預(yù)期的工作量,按照各項(xiàng)工作完成的先后順序,制定項(xiàng)目階段計(jì)劃,列出項(xiàng)目開發(fā)各階段的預(yù)定起止日期??傻贸鲰?xiàng)目的階段計(jì)劃,如表3所示。
2.9 建立項(xiàng)目的實(shí)施計(jì)劃
任務(wù)估計(jì)完成后,根據(jù)任務(wù)書或合同要求、任務(wù)估計(jì)值、現(xiàn)有人員能力、設(shè)備資源情況制定項(xiàng)目的實(shí)施計(jì)劃,作為對(duì)軟件開發(fā)計(jì)劃的細(xì)化,以利于項(xiàng)目的跟蹤與監(jiān)督,以及項(xiàng)目的測(cè)量。項(xiàng)目實(shí)施計(jì)劃如表4所示。
2.10 建立項(xiàng)目實(shí)施計(jì)劃網(wǎng)絡(luò)圖
根據(jù)實(shí)施計(jì)劃表,畫出項(xiàng)目活動(dòng)/任務(wù)的網(wǎng)絡(luò)圖,如圖2所示。使用項(xiàng)目管理工具的“甘特圖”表示項(xiàng)目的實(shí)施計(jì)劃。從圖中可看出活動(dòng)/任務(wù)之間的依賴關(guān)系,亦可確定項(xiàng)目的關(guān)鍵路徑。
2.11 納入《軟件開發(fā)計(jì)劃》
軟件估計(jì)負(fù)責(zé)人將以上相應(yīng)的估計(jì)值及相關(guān)的信息納入《軟件開發(fā)計(jì)劃》。
3 總 結(jié)
本文引入結(jié)合自頂向下估計(jì)法與自底向上估計(jì)法,選用寬帶Delphi技術(shù)作為其基礎(chǔ)實(shí)施方法來(lái)有效應(yīng)對(duì)初次估計(jì)彈載軟件項(xiàng)目估計(jì)問(wèn)題。該方法現(xiàn)已在三種不同類型軟件項(xiàng)目(某型飛行控制軟件、某型導(dǎo)航軟件、某型地面檢測(cè)軟件)上成功應(yīng)用。其實(shí)施結(jié)果表明:
(1)該方法能有效規(guī)范軟件項(xiàng)目估計(jì)過(guò)程,能有效利用行業(yè)專家能力及零散項(xiàng)目數(shù)據(jù);
(2)該方法提高缺乏軟件項(xiàng)目估計(jì)經(jīng)驗(yàn)項(xiàng)目組軟件的估計(jì)有效性;
(3)該方法對(duì)非彈載軟件估計(jì)具有借鑒作用。
結(jié)合自頂向下估計(jì)法與自底向上估計(jì)法方法能在初次估計(jì)情況下進(jìn)行合理的估計(jì),并指導(dǎo)建立合理的軟件開發(fā)實(shí)施計(jì)劃,從而有效指導(dǎo)彈載軟件項(xiàng)目工程實(shí)踐活動(dòng)。
主要參考文獻(xiàn)
[1]劉明友. 基于CMMI模型的軟件規(guī)模估計(jì)方法研究[J].軟件導(dǎo)刊,2013,12(3):21-24.
[2]總裝備部電子信息基礎(chǔ)部技術(shù)基礎(chǔ)局.GJB 5000A-2008 軍用軟件研制能力成熟度模型[S].2009.
[3]夏曉翔.軟件項(xiàng)目估算管理方法研究[D].南京:南京理工大學(xué),2006.
[4][美]Capers Jones.軟件工程最佳實(shí)踐[M].吳舜賢,楊傳輝,韓生亮,譯.北京:機(jī)械工業(yè)出版社,2013:58-61.
[5]李華北,劉小茵,鄭丹丹.過(guò)程改進(jìn)基本原理及CMMI實(shí)施[M].北京:中國(guó)標(biāo)準(zhǔn)出版社,2009:77-86.
[6]王忠貴,劉姝.航天型號(hào)軟件工程方法與技術(shù)[M].北京:中國(guó)宇航出版社,2015:289-296.