估算是建立在客觀事實上對未來可能發生的事情的一種合理性預測。估算本身的不確定性,決定了它不可能是百分之百準確無誤的,但是依據某種方法進行合理估計顯然比瞎猜好得多。
軟件估算方法有很多,大致分為基于技術分解模型和基于經驗模型兩大類。目前基于技術分解的常用方法是FP功能點估算法和LOC代碼行估算法。
FP功能點法
功能點分析法是一種相對抽象的方法,是一種人為設計的估算方式。它是從系統的復雜性和系統的特性這兩個角度來估算系統的規模,它的關注點在于程序的"功能性"和"實用性",是對軟件和軟件開發過程的間接估算。最初是由 IBM 工程師艾倫艾爾布策提出的,隨后被IFPUG 方法繼承,是目前國際上主流的軟件規模估算方法。
功能點估算法的核心是利用軟件信息域中的一些計數估算和軟件復雜性估計的經驗關系式而導出功能點FP。因此,它是一種在需求分析階段基于系統功能的一種規模估計方法。主要是通過研究初始應用需求來確定各種輸入、輸出、計算和數據庫需求的數量和特性。這種方法的計算公式是:功能點=信息處理規模X技術復雜度。其中,信息處理規模包括:各種輸入、輸出、查詢、內部邏輯文件數、外部接口文件數等;技術復雜度則包括:性能復雜度、配置項目復雜度、數據通信復雜度、分布式處理復雜度、在線更新復雜度等。
LOC代碼行估算法
衡量軟件項目規模的最常用方法還有代碼行LOC(Line of Code) 估算法。LOC是指所有的可執行的源代碼行數,包括可交付的工作控制語言語句、數據定義、數據類型聲明、等價聲明、輸入/輸出格式聲明等。這是一種從技術角度來估算的方法,是以代碼行(LOC)作為軟件工作量的估算單位。
開發團隊可以根據對歷史項目的審計來核算開發團隊的單行代碼價值,一個代碼行的價值和人月均代碼行數可以體現一個軟件開發團隊的生產能力。LOC方法在早期的系統開發中較為廣泛使用。優點在于方便計算、容易監控、能反映程序員的思維能力;缺點在于代碼行數的含糊不清,不能正確反映一項工作的難易程度以及代碼的效率。
因此,在傳統的LOC方法上有許多改進的方法。這些不斷演化的新方法有:PERT功能點估算法、類比估算法、系統分解法等。
除了以上介紹的兩種方法外,還有許多其它的估算方法。不同的方法適用于不同的具體環境,有些方法雖然很好但并不一定適合當前的任務。因此,建議至少使用兩種方法進行規模估算,不要依賴于任何一種方法。只有量體裁衣,具體問題具體分析,才能得到盡量合理的規模估算。常用的軟件規模估算方法