估算, 『粗估的計算』;
估算是一個科學. 估算需運作在一組有意義的背景資料上.
在軟體開發專案中,這邊建議可以導入 PSP 與 TSP。
專案總估算時間(days) = 系統規模點數 / 平均每人天消耗的點數
期望每日應消耗的規模點數(~=CPI) = 系統規模點數 / 專案時程(days)
所以我們目標要找出
- 故事點(Story Point), 系統規模點數
- 平均每人天消耗點數
*) 這邊的點數與Scrum中在 Spring Planning 中使用的故事點數用途相同.
*) 請不要把規模點數或故事點數與時間綁在一起.
規模點數只是在描述一個系統或故事的大小.
估算前的準備工作,
1. 對個人實施 PSP
- 記錄主要活動工時
- 建立個人的能力/經驗矩陣。這個部分可以透過測驗快速建立基準數據。
- 建立專案成員平均每天可消耗的功能點數
2. 建立 SRS 與 SDD 中的需求與設計使用的關鍵字. 尤其是 SDD。
如, 外部系統, 存檔, 讀檔, 網路溝通.
對於系統與外界互動的做法與行為的描述用詞, 定義出適當的關鍵字.
撰寫 SRS 與 SDD 的人員需遵照關鍵字的用法來寫文件.
3. 在 SRS 中對於需求清單與 SDD 中對於工作清單依其功能型態進行分類 EI、EQ、EO、ILF 與 EIF 四類
這邊其實就是以 DFD 為主要文件。
DFD 在資料的生成、應用、保存與結束上確實好用。
4. 依照專案使用的技術為 EI、EQ、EO、ILF 與 EIF 四類建立『技術能力點數』
原則上以 1 為最簡單, 10 為最難。
如果 10 級還不足以分類技術能力,可以自己重新定應。
5. 計算每個工作項目的 EI、EQ、EO、ILF 與 EIF 四類數量並乘上『技術能力點數』作為該項工作的『基本功能點數』
6. 條列整理系統的非功能性需求,例如:資料通訊、分散處理、資料安全、交易頻率等等
- 為每個非功能性需求給予個別的系統影響值(0 ~ 5)
- 當然您也可以自己重新定義這個影響等級的範圍
7. 將所有工作項目的『基本功能點數』x 『系統調整因子』得到『調整後功能點數』
8. 加總所有工作項目的『調整後功能點數』得到『系統規模』
9. 為了平衡開發實作與工作項目說明的差距,開發人員可以對其所認領的工作項目文件做評論。
10. 開發過程中,其他非直接相關的活動
- 撰寫管理文件、使用者文件
- 專案管理活動
- 品質保證與驗證活動 (verification)
- 教育訓練
- 驗收測試 (validation)
- 性能調整