2、估算的對象
目前為止,一個較為準確的軟件項目估算的定義是:在給定公差范圍內,對于姚開發的軟件規模的預測,以及對開發軟件所需的工作量、成本和日歷事件的預測。這個概念指出了一個事實,即估算是一種大約的估計,是將誤差限定在一定范圍內的估計。
估算主要包括以下幾個重要內容:
◆ 規模估算
軟件估算首先要將整個工程的規模估算出來,才能進行下面的其他估算。規模,就是一個工程可量化的結果,是用具體數字來體現項目的描述。規模估算的信息來源是清晰、有界限的用戶需求。
◆ 工作量估算
這是對開發軟件所需的工作時間的估算,它和進度估算一起決定了開發團隊的規模和構建。通常以人時、人天、人月、人年的單位來衡量,這些不同單位之間可以進行合理的轉換。
◆ 進度估算
進度時項目自始至終之間的一個時間段。進度以不同階段的里程碑作為標志。進度估算是針對以階段為單位的估算,而不是對每一個細小任務都加以估算,對任務的適當分解很重要,分解得越細反而會不準確。因為任何一個軟件工程,在各個方面都有與生俱來的不確定性。
◆ 成本估算
包括人力、物質、有形的、無形的支出成本估算,其中以人力成本為主要部分。比較容易被忽視的使學習成本、軟件培訓成本、人員變動風險成本、開發延期成本等,一些潛在成本消耗。
3、估算的策略
在軟件估算的眾多方法中,存在著“自頂向下”和“自底向上”兩種不同的策略,兩種策略的出發點不同,適應于不同的場合使用。
3.1、自頂向下的策略
這是一種站在客戶的角度來看問題的策略。它總是以客戶的要求為最高目標,任何估算結果都必須符合這個目標。其工作方法是,由項目經理為主的一個核心小組根據客戶的要求,確定一個時間期限,然后根據這個期限,將任務分解,將開發工作進行對號入座,以獲得一個估算結果。
當然由于這完全是從客戶要求出發的策略,而由于軟件工程是一個綜合項目,幾乎沒有哪個項目能完全保質保量按照預定工期完工,那么這樣一個策略就缺少了許多客觀性。但是由于這樣完成的估算比較容易被客戶、甚至被項目經理所接受,在許多公司我們看到這樣一個并不科學的策略仍然被堅定地執行著。
3.2、自底向上的策略
與自頂向下的策略完全相反,自底向上的策略是一種從技術、人性的角度出發看問題的策略。在這樣一個策略指引下,將項目充分討論得到一個合理的任務分解。在將每個任務的難易程度,每個任務依照項目成員的特點、興趣特長進行分配,并要求進行估算。最后將估算加起來就是項目的估算值。
顯然自底向上的這種策略具有較為客觀的特點,但是它的缺點就是這樣一來項目工期就和客戶的要求不一致了。而且由于其帶來的不確定性,許多項目經理也不會采用這種方法。
4、估算的方法
顯然估算是建立在客觀實際上,對未來盡可能合理的一種預測。那么估算本身的不確定性,決定了它不可能是百分之百準確無誤的。在項目剛開始時,人們對產品需求、技術、市場預期、人員素質等因素的了解還遠遠不夠,在這種情況下人們很難作出準確的估計。但是依據某種方法進行估計顯然比瞎猜好得多。
估算方法有很多,大致分為基于分解的技術和基于經驗模型兩大類;诜纸獾募夹g的方法包括功能點估算法、LOC估算法、MARK II等;基于經驗模型的方法包括IBM模型、普特南模型、COCOMO模型等。
4.1、FP功能點估算法
功能點估算法是一種在需求分析階段基于系統功能的一種規模估計方法。通過研究初始應用需求來確定各種輸入、輸出、計算和數據庫需求的數量和特性。這種方法的計算公式是:功能點=信息處理規模x技術復雜度。信息處理規模包括各種輸入、輸出、查詢、內部邏輯文件數、外部接口文件數等等;技術復雜度包括性能復雜度、配置項目復雜度、數據通信復雜度、分布式處理復雜度、在線更新復雜度等等。
4.2、LOC估算法
這是一種從技術的角度來估算的方法總稱,其中又包含許多方法。這類方法以代碼(LOC)作為軟件工作量的估算單位,在早期的系統開發中較為廣泛使用;贚OC的估算,又有點也有缺點。優點在于方便計算、容易監控、能反映程序員的思維能力;缺點在于代碼行數的含糊不清,不能正確反映一項工作的難易程度以及代碼的效率。因此在傳統的LOC方法進行了許多改進。其中不斷被使用,且不斷演化的方法包括以下:
PERT功能點估算法:PERT對各個項目活動的完成時間按三種不同情況估計:一個產品的期望規模,一個最低可能估計,一個最高可能估計。用這三個估計用來得到一個產品期望規模和標準偏差的Pert 統計估計,Pert 估計可得到代碼行的期望值和標準偏差SD。
類比估算法:類比法適合評估一些與歷史項目在應用領域、環境和復雜度的相似的項目,通過新項目與歷史項目的比較得到規模估計。類比法估計結果的精確度取決于歷史項目數據的完整性和準確度,因此,用好類比法的前提條件之一是組織建立起較好的項目后評價與分析機制,對歷史項目的數據分析是可信賴的。
Delphi估算法:Delphi法是一種專家評估技術,在沒有歷史數據的情況下,這種方式適用于評定過去與將來,新技術與特定程序之間的差別。對于需要預測和深度分析的領域,依賴于專家的技術指導,可以獲得較為客觀的估算。通過專家們的互相討論,還可以博取眾長。
系統分解:將系統分成若干個易于用LOC估算的部分,將其各個估算結果累加就是LOC的總規模。其中關鍵是建立起SBS(系統分解結構),它描述了系統的不同組件。SBS還被使用在其他重要的地方,如系統設計、系統分析等。在進行分解的時候,可以采用自由討論的形式,可以獲得更合理的SBS構成。
文章來源于領測軟件測試網 http://www.kjueaiud.com/