朱斌
(南方電網(wǎng)數(shù)字電網(wǎng)研究院有限公司,廣東 廣州 510663)
軟件和信息技術(shù)的應(yīng)用飛速發(fā)展,已經(jīng)廣泛地覆蓋并滲透到社會(huì)生活的方方面面。特別是近10年來,以云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)和人工智能等為代表的新一代信息技術(shù)[1]推動(dòng)信息技術(shù)應(yīng)用進(jìn)入跨界融合的繁榮期。如何科學(xué)、規(guī)范地對軟件成本進(jìn)行度量和計(jì)價(jià),一直是業(yè)界的難題和關(guān)注點(diǎn)。
目前國內(nèi)外以采用基于功能點(diǎn)的軟件成本估算方法(FPA)最為主流和成熟。2018年,國家市場監(jiān)管局和標(biāo)準(zhǔn)化委員會(huì)聯(lián)合發(fā)布的GB/T 36964—2018《軟件開發(fā)成本度量規(guī)范》也推薦使用功能點(diǎn)法作為度量軟件開發(fā)成本的估算方法[2]。
功能點(diǎn)法簡便易操作,適用于快速匡算信息化項(xiàng)目前期立項(xiàng)階段的總投資。但在近年來開展南方電網(wǎng)公司信息化項(xiàng)目造價(jià)工作中發(fā)現(xiàn),將功能點(diǎn)法應(yīng)用于項(xiàng)目建設(shè)實(shí)施階段及項(xiàng)目結(jié)算等環(huán)節(jié)仍有較大的局限性,主要原因包括以下幾點(diǎn)。
a)功能點(diǎn)法是基于用戶視角,可以在項(xiàng)目前期為甲方立項(xiàng)提供決策參考;但由于其不能反映項(xiàng)目建設(shè)過程中各個(gè)工序作業(yè)的資源耗量,因此不能測算出開發(fā)者在各個(gè)工序環(huán)節(jié)的實(shí)際投入成本,對項(xiàng)目建設(shè)實(shí)施及結(jié)算階段的指導(dǎo)意義不大。
b)功能點(diǎn)法僅對項(xiàng)目9大階段中開發(fā)階段進(jìn)行量化評估,其余8個(gè)階段工作量的評估,通常是以開發(fā)工作量為基數(shù)按經(jīng)驗(yàn)值比例推算得到。由于應(yīng)用系統(tǒng)的定制化等因素,常導(dǎo)致需求分析、實(shí)施和運(yùn)維等成本與項(xiàng)目實(shí)際值偏差較大。
c)功能點(diǎn)算法模型顆粒度較粗,主觀判斷因素多。各類因子如開發(fā)語言調(diào)節(jié)因子、開發(fā)團(tuán)隊(duì)背景調(diào)節(jié)因子[3]的賦值原則較模糊,可調(diào)空間較大,容易導(dǎo)致計(jì)量爭議。
為此,南方電網(wǎng)數(shù)字電網(wǎng)研究院基于長期工作過程中的研究創(chuàng)新積累,提出了基于工序分解(WBS:Work Breakdown Structure)的信息化項(xiàng)目成本度量新方法,該方法將信息化項(xiàng)目工序按可交付成果分解成較小的,更易以進(jìn)行成本測算和管控的組成部分,借鑒參考電網(wǎng)基建工程的成本計(jì)量法[4],將需求分析、設(shè)計(jì)、開發(fā)和實(shí)施等工作分解細(xì)化,將項(xiàng)目各級工序標(biāo)準(zhǔn)化,單價(jià)定額化,首次從開發(fā)者的角度對軟件的價(jià)值進(jìn)行度量,明確各項(xiàng)任務(wù)的邊界,并以公式或定額的方法進(jìn)行取值計(jì)算,提高標(biāo)準(zhǔn)的適用能力。
國內(nèi)外軟件工程體系[5]一般將信息化項(xiàng)目按全生命周期劃分為9個(gè)階段,如圖1所示。
圖1 信息化項(xiàng)目全生命周期階段圖
其中,需求分析、設(shè)計(jì)屬于信息系統(tǒng)開發(fā)前的準(zhǔn)備階段;系統(tǒng)開發(fā)集成、部署實(shí)施是系統(tǒng)建設(shè)成形的關(guān)鍵階段;應(yīng)用測試、聯(lián)調(diào)測試和入網(wǎng)安評測試是系統(tǒng)上線前的準(zhǔn)備階段;日常運(yùn)維、修理維護(hù)則貫穿系統(tǒng)從上線至壽命終止的全過程。
因此,基于WBS的信息化項(xiàng)目標(biāo)準(zhǔn)工序構(gòu)建應(yīng)覆蓋整個(gè)項(xiàng)目周期的所有工作階段,工序的顆粒度應(yīng)能夠反映各種功能組件差異化的工作量,且易以進(jìn)行成本測算和造價(jià)管控。
采用WBS方法,將信息化項(xiàng)目各個(gè)工作階段進(jìn)行分解,以設(shè)計(jì)階段為例,如表1所示。
由表1可見,項(xiàng)目設(shè)計(jì)階段的工作內(nèi)容被細(xì)化分解為項(xiàng)目設(shè)計(jì)過程中的流程化、標(biāo)準(zhǔn)化工序。分解后的工序?qū)?yīng)可交付、可量化的成果,能夠通過測定項(xiàng)目設(shè)計(jì)階段的具體工作量,精確地度量每個(gè)工序的資源消耗量及工序成本。同理,項(xiàng)目其余階段工序也按上述原則進(jìn)行WBS分解,本文省略。
表1 項(xiàng)目設(shè)計(jì)階段工序分解
將工作標(biāo)準(zhǔn)化分解后,能夠分項(xiàng)測定各個(gè)工序的資源耗量定額。本文采用計(jì)時(shí)觀察法,通過觀察、記錄、整理和分析項(xiàng)目各個(gè)工序的人工消耗量,測定各個(gè)工序的工時(shí)定額。計(jì)時(shí)觀察法[6]以研究工時(shí)消耗為對象,是測定時(shí)間消耗的基本方法,工序定額時(shí)間測定的精度控制模型如下:
式(1)中:E——測時(shí)精度允許誤差;
n——觀察次數(shù);
Δ——每次實(shí)測值與測時(shí)均值之差。
式(2)中:Kp——數(shù)列穩(wěn)定系數(shù);
tmax——最大觀測值;
tmin——最小觀測值。
根據(jù)計(jì)時(shí)觀察法精度控制的邊界條件,給定精度控制參數(shù)E,則觀測次數(shù)n需要同時(shí)滿足模型中Kp和E對應(yīng)的約束條件。
以設(shè)計(jì)階段中“UI設(shè)計(jì)”工序?yàn)槔?,采用?jì)時(shí)觀察法測定“新增UI效果圖”工序完成1個(gè)頁面的工時(shí)消耗量過程如表2所示。
表2 工時(shí)定額測定過程
由表2可知,通過密集抽樣[7]進(jìn)行直接的工序時(shí)間測量,并根據(jù)計(jì)時(shí)觀察法模型檢驗(yàn)測量精度,將表2中的數(shù)據(jù)代入公式(1)-(2)計(jì)算,得出Kp=1.44,n=13,E=±4.03%,根據(jù)模型邊界控制條件:當(dāng)Kp≤0.5時(shí),同時(shí)滿足E≤±5%,n≥9,則通過表2中的樣本測算的定額時(shí)間消耗量滿足精度要求,則“新增UI效果圖”工序的工時(shí)消耗定額為Xˉ=5.94工時(shí)/頁面。同理可測定信息化項(xiàng)目其他工序的定額消耗量,如表3所示。
表3 工序法工時(shí)定額示例
開發(fā)階段的成本在信息化項(xiàng)目中一般占到總成本的40%左右[8],其中,編碼是開發(fā)工作中的關(guān)鍵工序。故在構(gòu)建標(biāo)準(zhǔn)工序的基礎(chǔ)上,有必要研究一種基于詳細(xì)設(shè)計(jì)深度和結(jié)算深度的編碼工序計(jì)量法。
以“外部輸入(EI)”的編碼工作量為例,建立編碼工作耗時(shí)與組件復(fù)雜程度的關(guān)系式,研究對比功能點(diǎn)法與工序法的編碼工作量算法:
式(3)中:TEI——“外部輸入(EI)”的編碼工作耗時(shí);
QDET、QFTR——該組件內(nèi)部的字段數(shù)(DET)和引用文件數(shù)(FTR);
α、β——編碼耗時(shí)率,對應(yīng)組件內(nèi)部每個(gè)DET或FTR編碼工作占用的時(shí)間。
由式(3)可知,隨著QDET和QFTR增加,TEI相應(yīng)地增加,體現(xiàn)出編碼工作隨組件內(nèi)含增加復(fù)雜程度提高,編碼耗時(shí)增加的規(guī)律。根據(jù)式(3)的變量關(guān)系式,在三維坐標(biāo)系中以QDET和QFTR為平面坐標(biāo)值,TEI為垂直坐標(biāo)值,繪制編碼工作算法模型圖,能夠直觀地呈現(xiàn)功能點(diǎn)法與工序法算法的區(qū)別,如圖2-3所示。
圖2 功能點(diǎn)法編碼工作量算法模型圖
由圖2可見,功能點(diǎn)法從用戶視角按高、中、低3種復(fù)雜度級別劃分功能組件的開發(fā)耗時(shí)率[9],在DET和FTR的分段區(qū)間范圍內(nèi)編碼耗時(shí)率均為常量,超過臨界點(diǎn)則耗時(shí)率躍升一個(gè)梯度,故組件耗時(shí)只有高、中、低3種情況對應(yīng)的取值。
由圖3可見,工序法是從開發(fā)者的視角來構(gòu)建算法模型的,編碼耗時(shí)漸變趨勢更為平滑,度量更為精確。與功能點(diǎn)法不同,工序法的編碼工作算量首創(chuàng)了直接對組件的構(gòu)成DET、RET和FTR編碼耗時(shí)進(jìn)行測定的方法,首次從開發(fā)者的視角按組件內(nèi)含區(qū)分不同情況的編碼耗時(shí)程度,精確地反映出開發(fā)耗時(shí)隨組件具體內(nèi)容的增減呈連續(xù)變化的實(shí)際情況,能夠同時(shí)滿足項(xiàng)目前期估算、詳細(xì)設(shè)計(jì)預(yù)算和項(xiàng)目結(jié)算深度的需要。
圖3 工序法編碼工作量算法模型圖
各類編碼工作的定額消耗量按前文方法測定,結(jié)果如表4所示。
表4 工序法編碼工時(shí)定額
由表4可知,結(jié)合測定的工序定額耗時(shí)和行業(yè)發(fā)布的開發(fā)人員工日單價(jià),確定各個(gè)工序的定額單價(jià),示例如表5所示。
表5 編碼工序定額單價(jià)示例
本文選取一個(gè)應(yīng)用系統(tǒng)開發(fā)項(xiàng)目,對基于標(biāo)準(zhǔn)工序方法度量信息化項(xiàng)目成本進(jìn)行實(shí)例演示。
采用工序法度量項(xiàng)目直接建設(shè)成本,需按照標(biāo)準(zhǔn)工序表計(jì)算各個(gè)分項(xiàng)的工作量及費(fèi)用,將各個(gè)分項(xiàng)的費(fèi)用進(jìn)行合計(jì)得出項(xiàng)目的直接建設(shè)成本,示例如表6所示。
如表6所示,基于標(biāo)準(zhǔn)工序表和定額單價(jià)計(jì)列出應(yīng)用系統(tǒng)建設(shè)過程中各階段的工作量及對應(yīng)成本,能夠清晰地呈現(xiàn)出各個(gè)階段、各級工序的資源消耗量和費(fèi)用,滿足了對信息化項(xiàng)目造價(jià)進(jìn)行精細(xì)管控要求;標(biāo)準(zhǔn)工序表的工作階段應(yīng)嚴(yán)格地依照項(xiàng)目過程的先后順序排列,使前后工序的邏輯關(guān)系清晰關(guān)聯(lián),便于對成本的合理性進(jìn)行評估,同時(shí)能夠按時(shí)間順序擬定項(xiàng)目的成本計(jì)劃,滿足對信息化項(xiàng)目造價(jià)進(jìn)行實(shí)時(shí)監(jiān)控的需要。
表6 標(biāo)準(zhǔn)工序計(jì)價(jià)表示例
項(xiàng)目管理費(fèi)、審查費(fèi)等可按費(fèi)率預(yù)估或根據(jù)實(shí)際情況計(jì)列,本文不進(jìn)行論述。
本文針對信息化項(xiàng)目成本度量難題,提出了基于WBS的信息化項(xiàng)目成本度量方法,首次從應(yīng)用系統(tǒng)開發(fā)者的視角,將信息化項(xiàng)目全生命周期的工作按梯度分解為可交付、可管控的工序集合,采用科學(xué)方法測定各工序定額消耗量,有效地避免了主觀因素偏差;首創(chuàng)了滿足項(xiàng)目詳細(xì)設(shè)計(jì)預(yù)算和項(xiàng)目結(jié)算深度的編碼工作量算法模型,顯著地提升了開發(fā)工作量的算法顆粒度,減少了技術(shù)誤差。工序法能夠清晰地呈現(xiàn)項(xiàng)目全局和各個(gè)工序的成本,并且工序及成本邏輯關(guān)聯(lián)性強(qiáng),使得項(xiàng)目成本計(jì)劃更加合理,適用面更廣,滿足信息化項(xiàng)目造價(jià)進(jìn)行精細(xì)管控和實(shí)時(shí)監(jiān)控的需要。