1. 程式人生 > >軟體專案規模評估

軟體專案規模評估

顧名思義軟體評估就是對軟體專案的規模進度做出一個合適評估以判斷軟體專案的預算以及專案計劃。

軟體評估是軟體工程的一個最底層基礎,也是在軟體專案實施時必經非常核心的一個步驟。對於一個軟體專案,只有對其大致的評估後,才能掌握大致的軟體成本,人力資源配備,同時也是做專案計劃的基礎。

軟體評估,評估的是軟體規模,基本的使用單位是程式碼行數。但是程式碼行為單位有其自身的一些變數和問題,比如不同的程式語言,即便是實現相同的功能其大小也是不統一的。另外,這個單位無論是作為成本預算還是作為專案計劃,都是非常不方便的。所以,現在普遍使用的軟體規模單位是人天,比如3人天,就是一個功能需要1個人做3天或者3個人做一天的規模。這個單位用於計算成本和規模進度都非常方便。而人天和程式碼行之間的折算關係就涉及到另外一個參量叫做生產率,就是一個人平均一天寫多少行程式碼(注意這個生產率是從專案開始到專案結束,包括需求分析,設計,編碼,測試所有活動總生產率,而不是僅僅是中間編碼活動中一天能寫多少行程式碼)

軟體規模的評估方法通常是用專家評估法。專家評估法依據的是對被評估專案都是領域的專家情況下。首先要先將專案拆分成多個小的功能模組,注意功能模組拆分是有規定的,不能太大,每個模組不能超過500行程式碼,即不能超過10人天左右工作量(太多則會產生較大誤差),專家(至少3位以上)對每個功能模組進行評估各自進行評估。評估完後,彙總每個功能模組每個專家的評估值,每個功能模組專家的評估的平均偏差少於20%的這個功能評估算是成功接受,取其平均值作為評估值,如果這個模組的功能估計偏差超過20%那麼,針對這個功能的評估,對應的專家要進行講解,說明和澄清自己為何做次評估,在一次討論後。將所有未被接受的功能,如上進行第二次評估。同樣再次計算其中未能通過的功能模組,再進行第三輪評估。如果第三輪評估仍然有不通過的,則專案經理參考每個專家的評估值,自行決定這個功能模組的最後評估取值。這樣,將所有功能的規模彙總,就組成了最後的專案規模結果。

專家評估法,有點是非常準確,缺點是非常耗時耗資源,評估一箇中等規模的專案往往要3個人以上花將近大半天時間完成,所以通常只有大公司耗得起,即便是大公司由於評估方式非常麻煩,所以經常也不用。

現在大多的軟體評估方法通常也是這個原理,但是採取了簡化版本的方法進行評估。即多個人對一個完整專案進行評估,最後平均每個人的規模估計,作為最後結果。

軟體規模評估出來後,通常有兩個作用,首先是評估出軟體專案的研發成本。比如一個125人天規模的軟體專案要進行開發,假設每個人每天的成本是2000,那麼這個軟體研發成本大致就是500000。這是一個很重要的參考依據。由此基本頁可以決策這個軟體是否值得做。

評估出來後的另外一個作用就是製作軟體研發計劃,還是比如

125人天的專案,這個專案要多長時間開發完,顯然跟研發投入相關,理論上研發投入越高,進度越快,125人天如果給定一個專案組是5人,那麼就是要25天,也就是大致為一個多月的時間(計算工作日平均23天為一個月的有效正常工作日),當然,專案組規模也不是完全是說如果有125人就能一天完成,因為人多了就會產生大量的管理成本,同時任務之間也不全能切分和並行,所以這個不能是《人月神話》。但大致給定一個合理的人數就可以計算出大致的專案合理進度。有了合理進度,下一步就可以根據一些常用經驗指定大致的專案計劃,比如從專案工作量來講需求大致花費15%的工作量,設計佔25%編碼佔40%測試佔20%而且,每個階段能夠投入的人也不盡相同,顯然需求能投入的人基本很少,因為總需要一個人全域性的掌握所有需求,所以儘管需求比重不大,但總是很耗時,而編碼投入的人最多,所以總體耗時是差不多的。根據這些資訊,基本就可以制定出總體的專案計劃。而專案計劃,是軟體專案的管理基礎,有了計劃參考才能匯出後面一系列的專案管理活動,資料度量等情況。所以,軟體專案評估真的是非常核心和重要的事情。

以上是通用的軟體研發模式,其實很多軟體外包其成本和進度,也是由此進行評估參考的。

但以上評估可以看出,前提是基於專家,這對於一些傳統企業,顯然是一個奢侈品,而當前網上,能夠進行規模評估的服務非常少,常用的是估估(http://gugu.joinlinking.com)。其他一些眾包平臺,也有成本預算,但是那些是根據模組價格進行大致統計的,和以上的規模評估差距就甚遠了。