「软件项目管理」一文详解软件项目成本计划
軟件項目成本計劃
- 序言
- 一、成本估算的定義
- 二、估算的基本概念
- 1、關(guān)于估算
- 2、軟件項目規(guī)模
- 3、軟件規(guī)模單位
- 4、軟件項目成本
- 5、成本單位
- 6、軟件規(guī)模和軟件成本的關(guān)系
- 7、成本估算結(jié)果
- 三、成本估算過程
- 1、估算輸入
- 2、估算處理
- 3、估算輸出
- 四、成本估算方法
- 1、代碼行估算法
- (1)定義
- (2)代碼行估算的優(yōu)點
- (3)代碼行估算的缺點
- 2、功能點估算法(重點)
- (1)定義
- (2)功能點公式
- (3)UFC-未調(diào)整功能點計數(shù)
- (4)功能計數(shù)項詳述
- 1)外部輸入(External Inputs:EI)
- 2)外部輸出(External Outputs:EO)
- 3)外部查詢(External Inquiry:EQ)
- 4)外部接口文件(External Interface Files :EIF’s)
- 5)內(nèi)部邏輯文件(Internal Logical Files:ILF’S)
- (5)功能計數(shù)項的復雜度等級
- (6)UFC計算實例
- (7)TCF-技術(shù)復雜度因子
- (8)TCF計算實例
- (9)功能點與代碼行的轉(zhuǎn)換
- 3、用例點估算法(重點)
- (1)圖例
- (2)基本步驟
- (3)計算未調(diào)整的角色的權(quán)值UAW
- (4)計算未調(diào)整的用例的權(quán)值UUCW
- (5)計算未調(diào)整的用例點UUCP
- (6)計算技術(shù)因子TCF
- (7)計算環(huán)境因子ECF
- (8)計算調(diào)整的用例點UCP
- (9)計算工作量
- 4、類比(自頂向下)估算法
- (1)定義
- (2)什么時候使用
- (3)主觀判斷舉例
- 5、自下而上估算法
- (1)定義
- (2)特點
- 6、參數(shù)模型估算法(重點)
- (1)定義
- (2)使用條件
- (3)特點
- (4)參數(shù)模型:規(guī)模(成本)模型
- 1)面向LOC驅(qū)動的
- 2)面向FP驅(qū)動的
- 3)整體公式
- 7、專家估算法(重點)
- (1)定義
- (2)專家估算法—Delphi
- 五、成本預算
- 1、成本預算的定義
- 2、項目成本預算
- (1)給任務(wù)分配資源成本
- (2)分配固定資源成本
- (3)分配固定成本
- 六、結(jié)束語
- 🛵專欄直通車
序言
大家都知道,軟件項目管理包含項目初始、項目計劃、項目執(zhí)行控制和項目結(jié)束這四大模塊。其中,項目計劃包含范圍計劃、成本計劃、時間計劃等9大計劃。
那在今天的文章中,就帶大家來了解項目計劃中的成本計劃。
叮,開始學習吧~🎩
一、成本估算的定義
-
成本估算是成本管理的核心,是預測開發(fā)一個軟件系統(tǒng)所需要的總工作量的過程。
-
軟件項目成本是指軟件開發(fā)過程中所花費的工作量及相應(yīng)的代價。
-
成本估算應(yīng)該以軟件項目管理、分析、設(shè)計、編程、測試等過程所花費的代價作為依據(jù)。
-
成本估算貫穿于軟件的生命周期。
二、估算的基本概念
1、關(guān)于估算
- 估算不是很準確,會有誤差;
- 項目經(jīng)驗數(shù)據(jù)非常重要;
- 不要太迷信某些數(shù)學模型。
2、軟件項目規(guī)模
- 軟件項目規(guī)模即工作量;
- 例如:軟件規(guī)劃,軟件管理,需求,設(shè)計,編碼,測試,以及后期的維護等任務(wù)。
3、軟件規(guī)模單位
- LOC (Line of Code) → 表示源代碼長度的測量;
- FP (Function Point) → 用系統(tǒng)的功能數(shù)量來測量;
- 人月;
- 人天;
- 人年。
4、軟件項目成本
- 完成軟件規(guī)模相應(yīng)付出的代價;
- 待開發(fā)的軟件項目需要的資金;
- 人的勞動的消耗所需要的代價是軟件產(chǎn)品的主要成本。
5、成本單位
成本單位通常是各種貨幣單位,比如:
- 人民幣元
- 美元
- 英鎊
- ……
6、軟件規(guī)模和軟件成本的關(guān)系
- 規(guī)模是成本的主要因素,是成本估算的基礎(chǔ);
- 有了規(guī)模就確定了成本。
7、成本估算結(jié)果
直接成本: 與具體項目相關(guān)的成本(如:人員工資、材料費、外包外購成本等)
間接成本: 可以分攤到各個具體項目中的成本(如:培訓、房租水電、員工福利、市場費用、管理費、其他等等)
三、成本估算過程
1、估算輸入
需求、資源要求、資源消耗率、進度規(guī)劃、歷史項目數(shù)據(jù)、學習曲線等
2、估算處理
采用一定的估算方法進行,包含直接成本和間接成本的估算。
3、估算輸出
以簡略或詳細的形式表示,對項目所需的所有資源的成本均需要加以估計。
四、成本估算方法
1、代碼行估算法
(1)定義
- 從軟件程序量的角度定義項目規(guī)模。
- 與具體的編程語言有關(guān)。
- 分解足夠詳細。
- 有一定的經(jīng)驗數(shù)據(jù)(類比和經(jīng)驗方法)。
(2)代碼行估算的優(yōu)點
代碼是所有軟件開發(fā)項目都有的“產(chǎn)品”,而且很容易計算代碼行數(shù)。
(3)代碼行估算的缺點
- 對代碼行沒有公認的可接受的標準定義。
- 代碼行數(shù)量依賴于所用的編程語言和個人的編程風格。
- 在項目早期、需求不穩(wěn)定、設(shè)計不成熟、實現(xiàn)不確定的情況下很難準確地估算代碼量。
- 代碼行強調(diào)編碼的工作量,只是項目實現(xiàn)階段的一部分。
2、功能點估算法(重點)
(1)定義
- 與實現(xiàn)的語言和技術(shù)沒有關(guān)系;
- 用系統(tǒng)的功能數(shù)量來測量其規(guī)模;
- 通過評估、加權(quán)、量化得出功能點。
(2)功能點公式
- FP = UFC * TCF
- UFC:未調(diào)整功能點計數(shù)
- TCF:技術(shù)復雜度因子
(3)UFC-未調(diào)整功能點計數(shù)
從處理邏輯的角度出發(fā), UFC 可以分為 5 個功能計數(shù)項。分別是:
- 外部輸入
- 外部輸出
- 外部查詢
- 外部接口文件
- 內(nèi)部邏輯文件
接下來我們將依據(jù)這 5 個功能計數(shù)項進行詳細細述。
(4)功能計數(shù)項詳述
1)外部輸入(External Inputs:EI)
給軟件提供面向應(yīng)用的數(shù)據(jù)的項(如屏幕、表單、對話框、控件,文件等);在這個過程中,數(shù)據(jù)穿越外部邊界進入到系統(tǒng)內(nèi)部。 如下圖所示:
2)外部輸出(External Outputs:EO)
向用戶提供(經(jīng)過處理的)面向應(yīng)用的信息,例如,報表和出錯信息等。 如下圖所示:
3)外部查詢(External Inquiry:EQ)
外部查詢是一個輸入引出一個即時的簡單輸出,沒有處理過程。 如下圖所示:
4)外部接口文件(External Interface Files :EIF’s)
用戶可以識別的一組邏輯相關(guān)數(shù)據(jù),這組數(shù)據(jù)只能被引用。用這些接口把信息傳送給另一個系統(tǒng)。 如下圖所示:
5)內(nèi)部邏輯文件(Internal Logical Files:ILF’S)
用戶可以識別的一組邏輯相關(guān)的數(shù)據(jù),而且完全存在于應(yīng)用的邊界之內(nèi),并且通過外部輸入維護,是邏輯主文件的數(shù)目。 如下圖所示:
(5)功能計數(shù)項的復雜度等級
下面給出功能計數(shù)項的復雜度等級,如下圖所示:
(6)UFC計算實例
下面,我們用一個例子來舉例。
某外貿(mào)訂單項目的需求評估為:
外部輸入: 3 項;外部輸出: 1 項;外部查詢: 1 項;外部接口文件: 1 項;內(nèi)部邏輯文件: 2 項。請計算出該項目的 UFC 。
他們的復雜程度如下表所示:
| 項 | 簡單 | 一般 | 復雜 |
| 外部輸入 | 2 * 3 | 1 * 4 | 0 * 6 |
| 外部輸出 | 0 * 4 | 0 * 5 | 1 * 7 |
| 外部查詢 | 0 * 3 | 1 * 4 | 0 * 6 |
| 外部接口文件 | 0 * 5 | 1 * 7 | 0 * 10 |
| 內(nèi)部邏輯文件 | 1 * 7 | 1 * 10 | 0 * 15 |
| 總計 | 13 | 25 | 7 |
| UFC | 45 |
(7)TCF-技術(shù)復雜度因子
TCF = 0.65 + 0.01(sum(Fi)),其中 Fi 為技術(shù)復雜度因子,其范圍是 0-5 , TCF 的取值范圍是 0.65-1.35 。
Fi 技術(shù)復雜度因子有 14 項,如下表所示:
| F1 | 可靠的備份和恢復 | F2 | 數(shù)據(jù)通信 |
| F3 | 分布式函數(shù) | F4 | 性能 |
| F5 | 大量使用的配置 | F6 | 聯(lián)機數(shù)據(jù)輸入 |
| F7 | 操作簡單性 | F8 | 在線升級 |
| F9 | 復雜界面 | F10 | 復雜數(shù)據(jù)處理 |
| F11 | 重復使用性 | F12 | 安裝簡易型 |
| F13 | 多重站點 | F14 | 易于修改 |
技術(shù)復雜度因子的取值范圍,如下表所示:
| 0 | 不存在或者沒有影響 |
| 1 | 不顯著的影響 |
| 2 | 相當?shù)挠绊?/td> |
| 3 | 平均的影響 |
| 4 | 顯著的影響 |
| 5 | 強大的影響 |
(8)TCF計算實例
同樣,我們用外貿(mào)訂單項目的例子來計算 TCF 。假設(shè) 14 個復雜度因子的影響值都是平均,計算出該項目的功能點。
① UFC=45UFC=45UFC=45
② TCF=0.65+0.01(14?3)=1.07TCF=0.65+0.01(14*3)=1.07TCF=0.65+0.01(14?3)=1.07
③ FP=UFC?TCF=45?1.07=48FP=UFC*TCF=45*1.07=48FP=UFC?TCF=45?1.07=48
④ 如果PE=15工時/功能點,那么:Effort=48?15=720工時如果PE=15工時/功能點,那么:Effort=48*15=720工時如果PE=15工時/功能點,那么:Effort=48?15=720工時
(9)功能點與代碼行的轉(zhuǎn)換
| Assembly | 320 |
| C | 150 |
| COBOL | 105 |
| FORTRAN | 105 |
| PASCAL | 91 |
| ADA | 71 |
| PL/1 | 65 |
| PROLOG/LISP | 64 |
| SMALLTALK | 21 |
| SPREADSHEET | 6 |
3、用例點估算法(重點)
(1)圖例
用例模型如下圖所示:
(2)基本步驟
用例點估算方法的基本步驟為:
- 計算未調(diào)整的角色的權(quán)值 UAW ;
- 計算未調(diào)整的用例的權(quán)值 UUCW ;
- 計算未調(diào)整的用例點 UUCP ;
- 計算技術(shù)和環(huán)境因子 TCF 和 ECF ;
- 計算調(diào)整的用例點 UCP ;
- 計算工作量 ( man-hours ) 。
接下來將依據(jù)這幾個內(nèi)容進行展開介紹。
(3)計算未調(diào)整的角色的權(quán)值UAW
公式: UAW=∑C=caWeight(c)×aCardinality(c)UAW=∑_{C=c}aWeight(c) × aCardinality(c)UAW=∑C=c?aWeight(c)×aCardinality(c)
下面給出 Actor 權(quán)值定義表,如下表所示:
| 1 | simple | 角色通過API與系統(tǒng)交互 | 1 |
| 2 | average | 角色通過協(xié)議與系統(tǒng)交互 | 2 |
| 3 | complex | 用戶通過GUI與系統(tǒng)交互 | 3 |
(4)計算未調(diào)整的用例的權(quán)值UUCW
公式: Uucw=∑C=cuWeight(c)×uCardinality(c)Uucw=∑_{C=c}uWeight(c) × uCardinality(c)Uucw=∑C=c?uWeight(c)×uCardinality(c)
下面給出 Use Case 權(quán)值定義表,如下表所示:
| 1 | simple | 1-3 | 5 |
| 2 | average | 4-7 | 10 |
| 3 | complex | >7 | 15 |
(5)計算未調(diào)整的用例點UUCP
公式: UUCP=UAW+UUCWUUCP=UAW+UUCWUUCP=UAW+UUCW。例如:
表1: Actor 權(quán)值
| 1 | simple | 1 | 2 | 2 |
| 2 | average | 2 | 4 | 8 |
| 3 | complex | 3 | 5 | 15 |
表2:Use Case 權(quán)值
| 1 | simple | 5 | 5 | 25 |
| 2 | average | 10 | 2 | 20 |
| 3 | complex | 15 | 3 | 45 |
(6)計算技術(shù)因子TCF
公式: KaTeX parse error: Expected group after '_' at position 19: …=0.6+(0.01×\sum_?\limits{i=1}^{1…_Weighti×ValueiWeight_i×Value_iWeighti?×Valuei? 。
假設(shè)現(xiàn)有某項目的復雜度因子如下圖表所示:
| 1 | TCF1 | 分布式系統(tǒng) | 2.0 |
| 2 | TCF2 | 性能要求 | 1.0 |
| 3 | TCF3 | 最終用戶使用效率 | 1.0 |
| 4 | TCF4 | 內(nèi)部處理復雜度 | 1.0 |
| 5 | TCF5 | 復用程度 | 1.0 |
| 6 | TCF6 | 易于安裝 | 0.5 |
| 7 | TCF7 | 系統(tǒng)易于使用 | 0.5 |
| 8 | TCF8 | 可移植性 | 2.0 |
| 9 | TCF9 | 系統(tǒng)易于修改 | 1.0 |
| 10 | TCF10 | 并發(fā)性 | 1.0 |
| 11 | TCF11 | 安全功能特性 | 1.0 |
| 12 | TCF12 | 為第三方系統(tǒng)提供直接系統(tǒng)直接系統(tǒng)訪問 | 1.0 |
| 13 | TCF13 | 特殊的用戶培訓設(shè)施 | 1.0 |
具體的 TCF 值為:
TCF=0.6+0.01×(2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+0.5×3+0.5×5+2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+1.0×0)=1.02TCF=0.6+0.01×(2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+0.5×3+0.5×5+2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+1.0×0)=1.02TCF=0.6+0.01×(2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+0.5×3+0.5×5+2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+1.0×0)=1.02
其中,調(diào)整系數(shù)為給定數(shù)值。
(7)計算環(huán)境因子ECF
公式: KaTeX parse error: Expected group after '_' at position 20: …1.4+(-0.03×\sum_?\limits{i=1}^{8…_Weighti×Valuei)Weight_i×Value_i)Weighti?×Valuei?) 。
假設(shè)現(xiàn)有某項目的環(huán)境因子如下表所示:
| 1 | ECF1 | UML 精通程度 | 1.5 |
| 2 | ECF2 | 系統(tǒng)應(yīng)用經(jīng)驗 | 0.5 |
| 3 | ECF3 | 面向?qū)ο蠼?jīng)驗 | 1.0 |
| 4 | ECF4 | 系統(tǒng)分析員能力 | 0.5 |
| 5 | ECF5 | 團隊士氣 | 1.0 |
| 6 | ECF6 | 需求穩(wěn)定度 | 2.0 |
| 7 | ECF7 | 兼職人員比例高低 | 1.0 |
| 8 | ECF8 | 編程語言難易程度 | 1.0 |
假設(shè)調(diào)整系數(shù)已給定,那么具體的 ECF 值為:
ECF=1.4+(?0.03×(1.5×3+0.5×3+1.0×3+0.5×5+1.0×3+2.0×3+1.0×0+1.0×0))=0.785ECF=1.4+(-0.03×(1.5×3+0.5×3+1.0×3+0.5×5+1.0×3+2.0×3+1.0×0+1.0×0))=0.785ECF=1.4+(?0.03×(1.5×3+0.5×3+1.0×3+0.5×5+1.0×3+2.0×3+1.0×0+1.0×0))=0.785
(8)計算調(diào)整的用例點UCP
公式: UCP=UUCP×TCF×ECFUCP=UUCP×TCF×ECFUCP=UUCP×TCF×ECF 。
依據(jù)上面所給出的結(jié)果,那么最終 UCP=UUCP×TCF×ECF=115×1.02×0.785=92UCP =UUCP×TCF×ECF = 115×1.02×0.785 = 92UCP=UUCP×TCF×ECF=115×1.02×0.785=92。
(9)計算工作量
公式: Effort=UCP×PEEffort=UCP×PEEffort=UCP×PE 。
依據(jù)上面的數(shù)據(jù),假設(shè) PE=20工時/用例點 。那么: Effort=UCP×PE=92×20=1840工時=230人天Effort=UCP×PE=92×20=1840工時=230人天Effort=UCP×PE=92×20=1840工時=230人天
4、類比(自頂向下)估算法
(1)定義
對于類比估算法來說,估算人員根據(jù)以往完成類似項目所消耗的總成本(或工作量),來推算將要開發(fā)的軟件總成本(或工作量),然后按比例將它分配到各個開發(fā)任務(wù)單元中。
是一種自上而下的估算形式。
(2)什么時候使用
- 有類似的歷史項目數(shù)據(jù);
- 信息不足(例如市場招標)的時候;
- 要求不是非常精確估算的時候。
(3)主觀判斷舉例
假設(shè)現(xiàn)在要開發(fā)某個證券交易網(wǎng)站,它的需求與往常開發(fā)的網(wǎng)站項目類似,且其歷史數(shù)據(jù)是10萬的開發(fā)成本。因此,用類比估算法來進行估算,它也是10萬的開發(fā)成本。
5、自下而上估算法
(1)定義
利用任務(wù)分解圖(WBS),對各個具體的工具包進行詳細的成本估算,然后將結(jié)果累加起來得出項目總成本。如下圖所示:
大家可以看到,左下方是一些估算的內(nèi)容,自下而上的原則,右上方是估算的結(jié)果。
(2)特點
- 相對比較準確,它的準確度來源于每個任務(wù)的估算情況。
- 花費時間。
6、參數(shù)模型估算法(重點)
(1)定義
通過參數(shù)模型來估算(規(guī)模)成本的方法。
(2)使用條件
使用該模型的條件如下:
- 具有良好的項目數(shù)據(jù)為基礎(chǔ);
- 存在成熟的項目估算模型。
(3)特點
- 比較簡單,而且也比較準確。
- 如果模型選擇不當或者數(shù)據(jù)不準,也會導致偏差。
(4)參數(shù)模型:規(guī)模(成本)模型
1)面向LOC驅(qū)動的
- Walston?Felix(IBM):E=5.2?(KLOC)Walston-Felix(IBM):E= 5.2*(KLOC)Walston?Felix(IBM):E=5.2?(KLOC)^0.91 ???
- Balley?Basili:E=5.5+0.73?(KLOC)Balley-Basili:E=5.5+0.73*(KLOC)Balley?Basili:E=5.5+0.73?(KLOC)^1.16
- 基本COCOMO:E=3.2?(KLOC)基本COCOMO:E=3.2*(KLOC)基本COCOMO:E=3.2?(KLOC)^1.05 ???
- Doty:E=5.288?(KLOC)Doty:E=5.288*(KLOC)Doty:E=5.288?(KLOC)^1.047
2)面向FP驅(qū)動的
- AlbrechtandGaffney:E=?12.39+0.0545FPAlbrecht and Gaffney:E=-12.39+0.0545FPAlbrechtandGaffney:E=?12.39+0.0545FP
- Matson,Barnett:E=585.7+15.12FPMatson,Barnett:E=585.7+15.12FPMatson,Barnett:E=585.7+15.12FP
3)整體公式
整體公式為:E=a+b?SCE=a+b*S^CE=a+b?SC
E:以人月表示的工作量
a,b,c:經(jīng)驗導出的系數(shù)
S:主要的輸入?yún)?shù)(通常是 LOC ,FP 等)
7、專家估算法(重點)
(1)定義
由多位專家進行成本估算,一個專家可能會有偏見,最好由多位專家進行估算,取得多個估算值,最后得出綜合的估算值。
(2)專家估算法—Delphi
- 組織者確定專家,這些專家互相不見面;
- 組織者發(fā)給每位專家一份軟件規(guī)格說明;
- 專家以無記名對該軟件給出3個規(guī)模的估算值;
- 最小aia_iai?
- 最可能的mim_imi?
- 最大bib_ibi?
- 組織者計算每位專家的Ei=(ai+4mi+bi)/6E_i=(a_i+4m_i+b_i)/6Ei?=(ai?+4mi?+bi?)/6;
- 如果各個專家的估算差異超出規(guī)定的范圍(例如:15%),則需重復上述過程;
- 最終可以獲得一個多數(shù)專家共識的軟件規(guī)模:E=(E1+E2+…En)/nE=(E_1+E_2+…E_n)/nE=(E1?+E2?+…En?)/n(N: 表示 N 個專家)。
五、成本預算
1、成本預算的定義
- 成本預算是將項目的總成本按照項目的進度分攤到各個工作單元中去
- 成本預算的目的是產(chǎn)生成本基線
2、項目成本預算
分配項目成本預算包括三種情況:
- 給任務(wù)分配資源成本
- 給任務(wù)分配固定資源成本
- 給任務(wù)分配固定成本
下面依據(jù)這三種情況進行一一介紹。
(1)給任務(wù)分配資源成本
- 與資源的基本費率緊密相連
- 設(shè)置資源費率
- 標準費率
- 加班費率
- 每次使用費率
- 。。。。。。
(2)分配固定資源成本
- 當一個項目的資源需要固定數(shù)量的資金時,可以向任務(wù)分配固定資源成本。
- 例如:項目中的一個兼職人員的成本。
(3)分配固定成本
- 有些任務(wù)是固定成本的類型的任務(wù),也就是說,管理者知道某項任務(wù)的成本不變,不管任務(wù)的工期有多長,或不管任務(wù)使用了哪些資源。在這種情況下,管理者可以向任務(wù)直接分配成本。
- 例如:某外包任務(wù)、培訓任務(wù)。
六、結(jié)束語
在上面的文章中,我們講解軟件項目中成本估算的基本概念,以及7種成本估算的方法。同時,我們還簡單了解了一下成本預算。
到這里,關(guān)于軟件項目中的成本計劃講到這里就結(jié)束啦!不知道是否對小伙伴們有幫助呢?
🛵專欄直通車
軟件項目管理👉juejin.cn/column/7024…
總結(jié)
以上是生活随笔為你收集整理的「软件项目管理」一文详解软件项目成本计划的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吸金能力犹在,中年腾讯如何“回春”?
- 下一篇: 「软件项目管理」成本估算模型——Wals