一直以來,軟件項目的規模估算是個爭論不休的問題。不論是對軟件開發團隊還是對軟件用戶,軟件規模估算的重要性都是不容置疑的。因為它能極大的影響著甲方對發包軟件的成本估算,乙方對自身開發成本的預測,以及乙方對開發過程的量化管理等諸多方面。
而且,只有相對合理和相對準確地估算軟件規模,才能對項目的進度安排、資源分配等各個環節進行合理的部署。所以,軟件項目的規模估算是軟件項目中相當重要的一環。但是,以下的原因卻使項目的實際操作中對項目規模估算失準了。
對項目規模估算認識不足
項目規模估算一般分為兩種應用場景:一是招投標的時候用來估價、報價;二是用來安排進度計劃和指導項目具體工作的分配。
因此,如果對規模估算認識不足的話,將可能會在這兩種應用場景中估算失準。例如,如果項目規模低估的話就會造成人力估算低估、成本預算低估、日程過短,最終人力資源耗盡,成本超出預算。
最后為了完成項目不得不趕工,不但會影響到項目質量,甚至會導致項目失敗。而如果規模高估的話,就會因估價過高而降低了招投標時的競爭力,或在進度安排時提高了開發成本和浪費資源。
由于對規模估算的認識不足,使到我在這次項目中就嘗到一個大苦果,就是低估項目規模導致項目需要多次的追加預算。我不但多次受到公司領導的批評,而且還受到客戶的多次投訴。
個人經驗估算法帶有一定的局限性
一般來說,依靠歷史或個人經驗的規模估算方法都有一定的局限性。原因是很難在項目分析和計劃階段就對軟件的規模進行相對準確的估算。
因為估算是依靠評估人員的經驗,所以對評估人員的能力要求比較強,并且難以由第三方對評估人員的工作偏差作出修正。在這次項目的初期,我片面的只是根據個人經驗進行估算,結果是輕率的估算了項目規模。這是最后導致項目失利的原因之一。
另外,不同軟件項目使用的技術不一樣,這一點也非常影響到軟件規模的估算。例如同一個功能,使用JAVA語言和使用Ruby語言所涉及的代碼行相差數十行,甚至數百行。即使同為JAVA語言,使用不用的框架所需要編寫的代碼行也不一樣。
對項目估算時缺乏數據支持
因為在軟件開發初期時對規模估算都是很難準確量化的,所以到底需要多少資源、多長時間或者規模估算到什么的程度才算是合理的是沒有一個標準的。
但一個好的項目估算,是離不開一個準確的、可信的、客觀的數據作為基礎。如果在項目規模估算時只憑項目管理人員的經驗進行估算,而缺乏大量的數據支持,那么估算最終就會變成常見的"三拍"現象:首先是項目經理拍腦袋估算,然后是項目經理估算失準時拍馬屁的補救,最后是項目失敗時拍屁股走人。
當然,這只是個玩笑。不過由此可見項目規模估算不能只依靠經驗來估算,而應該是要有大量的數據來支持。