軟件項目的規(guī)模估算歷來是比較復雜的事,因為軟件本身的復雜性、歷史經(jīng)驗的缺乏、估算工具缺乏以及一些人為錯誤,導致軟件項目的規(guī)模估算往往和實際情況相差甚遠。 因此,估算錯誤已被列入軟件項目失敗的四大原因之一。
軟件工程師經(jīng)常會被問到,編一個什么什么樣的軟件需要多長時間、多少錢。面對這個問題,有不少人很犯難,因為,第一用戶的需求太不具體,第二,自己缺乏一個科學的估計方法。這里向大家介紹幾種軟件項目規(guī)模的估計方法。
概念介紹
先介紹一個衡量軟件項目規(guī)模最常用的概念--LOC(Line of Code),LOC指所有的可執(zhí)行的源代碼行數(shù),包括可交付的工作控制語言(JCL:Job Control Language)語句、數(shù)據(jù)定義、數(shù)據(jù)類型聲明、等價聲明、輸入/輸出格式聲明等。一代碼行(1LOC)的價值和人月均代碼行數(shù)可以體現(xiàn)一個軟件生產(chǎn)組織的生產(chǎn)能力。組織可以根據(jù)對歷史項目的審計來核算組織的單行代碼價值。
例如,某軟件公司統(tǒng)計發(fā)現(xiàn)該公司每一萬行C語言源代碼形成的源文件(.c和.h文件)約為250K。某項目的源文件大小為3.75M,則可估計該項目源代碼大約為15萬行,該項目累計投入工作量為240人月,每人月費用為10000元(包括人均工資、福利、辦公費用公灘等),則該項目中1LOC的價值為:
?。?40×10000)/150000=16元/LOC
改項目的人月均代碼行數(shù)為:
150000/240=625LOC/人月
方法一、Delphi 法
Delphi法是最流行的專家評估技術,在沒有歷史數(shù)據(jù)的情況下,這種方式適用于評定過去與將來,新技術與特定程序之間的差別,但專家"專"的程度及對項目的理解程度是工作中的難點,盡管Delphi技術可以減輕這種偏差,專家評估技術在評定一個新軟件實際成本時通常用得不多,但是,這種方式對決定其它模型的輸入時特別有用。Delphi法鼓勵參加者就問題相互討論。這個技術,要求有多種軟件相關經(jīng)驗人的參與,互相說服對方。
Delphi法的步驟是:
1、協(xié)調(diào)人向各專家提供項目規(guī)格和估計表格;
2、協(xié)調(diào)人召集小組會各專家討論與規(guī)模相關的因素;
3、各專家匿名填寫迭代表格;
4、協(xié)調(diào)人整理出一個估計總結(jié),以迭代表的形式返回專家;
5、協(xié)調(diào)人召集小組會,討論較大的估計差異;
6、專家復查估計總結(jié)并在迭代表上提交另一個匿名估計;
7、重復4-6, 直到達到一個最低和最高估計的一致。
方法二、 類比法
類比法適合評估一些與歷史項目在應用領域、環(huán)境和復雜度的相似的項目,通過新項目與歷史項目的比較得到規(guī)模估計。類比法估計結(jié)果的精確度取決于歷史項目數(shù)據(jù)的完整性和準確度,因此,用好類比法的前提條件之一是組織建立起較好的項目后評價與分析機制,對歷史項目的數(shù)據(jù)分析是可信賴的。
其基本步驟是:
1、整理出項目功能列表和實現(xiàn)每個功能的代碼行;
2、標識出每個功能列表與歷史項目的相同點和不同點,特別要注意歷史項目做得不夠的地方;
3、通過步驟1和2得出各個功能的估計值;
4、產(chǎn)生規(guī)模估計。
軟件項目中用類比法,往往還要解決可重用代碼的估算問題。估計可重用代碼量的最好辦法就是由程序員或系統(tǒng)分析員詳細地考查已存在的代碼,估算出新項目可重用的代碼中需重新設計的代碼百分比、需重新編碼或修改的代碼百分比以及需重新測試的代碼百分比。根據(jù)這三個百分比,可用下面的計算公式計算等價新代