救,最后是項目失敗時拍屁股走人"。當(dāng)然,這只是個玩笑。不過由此可見項目規(guī)模估算不能只依靠經(jīng)驗來估算,而應(yīng)該是要有大量的數(shù)據(jù)來支持。
什么是軟件項目的規(guī)模估算?
軟件開發(fā)項目管理中的一項重要任務(wù)是開發(fā)項目的規(guī)模估算,這是極其重要但卻很容易被忽視的一項內(nèi)容。因為沒有正確的規(guī)模估算,項目計劃就會失去成功的基礎(chǔ)??上Т蟛糠值拈_發(fā)團隊都很難做到對項目規(guī)模進行準確的估算。
(1)什么是項目規(guī)模估算?
做好軟件項目管理的基礎(chǔ)是要做好項目的規(guī)劃工作,而做好項目規(guī)劃的前提是要做好軟件估算。也就是說,就是沒有好的軟件估算,項目的規(guī)劃、跟蹤和控制就根本無從談起。因此,軟件估算是項目計劃活動的基礎(chǔ)之一。
軟件估算一般是通過主觀經(jīng)驗和客觀分析兩種方法進行,包括有四個重要方面:規(guī)模估算、工作量估算、進度估算和成本估算。其中,對規(guī)模進行估算是為了將項目范圍進行量化。規(guī)模估算是整個軟件估算中最核心、最基礎(chǔ)的環(huán)節(jié),也是整個軟件估算的第一步。規(guī)模估算有兩個主要作用:一是通過規(guī)模估算建立項目基線;二是利用基線對項目生產(chǎn)率和狀態(tài)進行評價,并確定軟件過程的進度目標。也就是說,規(guī)模估算是一切估算的基礎(chǔ),是能直接決定和影響到其它三個估算的決策。
(2)常用的軟件規(guī)模估算方法
估算是建立在客觀事實上對未來可能發(fā)生的事情的一種合理性預(yù)測。估算本身的不確定性,決定了它不可能是百分之百準確無誤的,但是依據(jù)某種方法進行合理估計顯然比瞎猜好得多。軟件估算方法有很多,大致分為基于技術(shù)分解模型和基于經(jīng)驗?zāi)P蛢纱箢?。目前基于技術(shù)分解模型的方法有:功能點估算法、LOC估算法、MARK II等;基于經(jīng)驗?zāi)P偷姆椒ㄓ校篒BM模型、普特南模型、COCOMO模型等。目前基于技術(shù)分解的常用方法是FP功能點估算法和LOC代碼行估算法。本文重點介紹這兩種方法。
?、貴P功能點法
功能點分析法 (FPA:Function Point Analysis) 是一種相對抽象的方法,是一種人為設(shè)計的估算方式。它是從系統(tǒng)的復(fù)雜性和系統(tǒng)的特性這兩個角度來估算系統(tǒng)的規(guī)模,它的關(guān)注點在于程序的"功能性"和"實用性",是對軟件和軟件開發(fā)過程的間接估算。最初是由 IBM 工程師艾倫艾爾布策提出的,隨后被IFPUG 方法繼承,是目前國際上主流的軟件規(guī)模估算方法。
功能點估算法的核心是利用軟件信息域中的一些計數(shù)估算和軟件復(fù)雜性估計的經(jīng)驗關(guān)系式而導(dǎo)出功能點FP。因此,它是一種在需求分析階段基于系統(tǒng)功能的一種規(guī)模估計方法。主要是通過研究初始應(yīng)用需求來確定各種輸入、輸出、計算和數(shù)據(jù)庫需求的數(shù)量和特性。這種方法的計算公式是:功能點=信息處理規(guī)模X技術(shù)復(fù)雜度。其中,信息處理規(guī)模包括:各種輸入、輸出、查詢、內(nèi)部邏輯文件數(shù)、外部接口文件數(shù)等;技術(shù)復(fù)雜度則包括:性能復(fù)雜度、配置項目復(fù)雜度、數(shù)據(jù)通信復(fù)雜度、分布式處理復(fù)雜度、在線更新復(fù)雜度等。
?、贚OC代碼行估算法
衡量軟件項目規(guī)模的最常用方法還有代碼行LOC(Line of Code) 估算法。LOC是指所有的可執(zhí)行的源代碼行數(shù),包括可交付的工作控制語言語句、數(shù)據(jù)定義、數(shù)據(jù)類型聲明、等價聲明、輸入/輸出格式聲明等。這是一種從技術(shù)角度來估算的方法,是以代碼行(LOC)作為軟件工作量的估算單位。開發(fā)團隊可以根據(jù)對歷史項目的審計來核算開發(fā)團隊的單行代碼價值,一個代碼行的價值和人月均代碼行數(shù)可以體現(xiàn)一個軟件開發(fā)團隊的生產(chǎn)能力。LOC方法在早期的系統(tǒng)開發(fā)中較為廣泛使用。優(yōu)點在于方便計算、容易監(jiān)控、能反映程序員的思維能力;缺點在于代碼行數(shù)的含糊