国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

怎樣估算軟件項(xiàng)目周期

2014-07-16 15:45:51陳蔚力
中國信息化周報(bào) 2014年17期
關(guān)鍵詞:程序員代碼編程

陳蔚力

項(xiàng)目是指以一定的成本在一定時(shí)間內(nèi)取得預(yù)期收益的系列活動。項(xiàng)目的“生命期”是管理項(xiàng)目的重要指標(biāo),而對項(xiàng)目周期的估算則是管理項(xiàng)目的重要一環(huán)。本期“項(xiàng)目管理”介紹對軟件項(xiàng)目周期進(jìn)行估算的技巧。

估算是軟件開發(fā)中很重要的一個(gè)環(huán)節(jié):項(xiàng)目周期估算過短會造成人力低估、成本預(yù)算低估、日程安排過短,最終人力資源耗盡,成本超出預(yù)算,為完成項(xiàng)目不得不趕工,影響項(xiàng)目質(zhì)量,甚至導(dǎo)致項(xiàng)目失?。豁?xiàng)目周期估計(jì)過長表面看來影響不大,但是實(shí)際上也會帶來成本估計(jì)過高、充分效率低下的后果。周期估算如同蓋樓房中打地基,是后續(xù)工作的基礎(chǔ),它的影響會貫穿整個(gè)項(xiàng)目。

但軟件開發(fā)是一項(xiàng)非常復(fù)雜的工程,不僅包含需求分析、設(shè)計(jì)、編碼、測試、實(shí)施、維護(hù)等不同的子過程,還涉及到開發(fā)工具、開發(fā)人員、項(xiàng)目管理、風(fēng)險(xiǎn)等眾多因素,不同因素對估算產(chǎn)生的影響不盡相同。在進(jìn)行軟件估算時(shí)(包括利用工具輔助估算)必須考慮到這些方面,否則估算結(jié)果就會和實(shí)際結(jié)果有很大的偏差。下面,我們對幾個(gè)常見的因素做一些探討。

軟件規(guī)模是項(xiàng)目估算的基礎(chǔ)

軟件規(guī)模通常指的是軟件的大小,可以通過程序代碼行的長度、功能函數(shù)的數(shù)量、數(shù)據(jù)庫中表的數(shù)量、數(shù)據(jù)庫的大小等要素來描述軟件規(guī)模。一般而言,軟件規(guī)模越大,所花費(fèi)的開發(fā)周期就越長。但這并不是一個(gè)簡單的線性函數(shù)關(guān)系,也要考慮代碼重用問題。比如一個(gè)模塊代碼很長,但是可能包含了很多公用函數(shù),那么在估算時(shí)就應(yīng)適當(dāng)減少代碼行數(shù)量。

軟件項(xiàng)目中包含的功能模塊越多、越復(fù)雜(或者說軟件越大),開發(fā)周期越長。這個(gè)時(shí)間絕不是模塊開發(fā)時(shí)間的簡單疊加,因?yàn)槟K功能數(shù)量的增加直接帶來了軟件模塊間相互關(guān)聯(lián)度、復(fù)雜度的成倍增加,這導(dǎo)致了在需求、設(shè)計(jì)等階段需要花費(fèi)更多的時(shí)間,比單獨(dú)考慮一個(gè)模塊復(fù)雜得多。另一方面,對于產(chǎn)品化程度高的項(xiàng)目開發(fā),隨著模塊數(shù)量增加,開發(fā)周期的增加卻不是特別明顯。這是因?yàn)橄喈?dāng)數(shù)量的模塊可以完全重用,實(shí)際開發(fā)量會大大減少。

所以,在實(shí)際進(jìn)行軟件開發(fā)周期估算的時(shí)候,軟件規(guī)??隙ㄊ鞘紫瓤紤]的因素。具體估算時(shí),在考慮軟件規(guī)模時(shí)要去除可重用的部分。另外,軟件功能之間的關(guān)聯(lián)所造成的復(fù)雜性也必須足夠重視。 風(fēng)險(xiǎn)影響周期

任何一個(gè)項(xiàng)目都或多或少存在風(fēng)險(xiǎn),軟件項(xiàng)目開發(fā)過程中也避免不了這種情況而且有自己的特點(diǎn)。最常見的風(fēng)險(xiǎn)來自于:技術(shù)、客戶、項(xiàng)目人員等方面。開發(fā)周期估算時(shí)項(xiàng)目風(fēng)險(xiǎn)應(yīng)該適當(dāng)考慮,尤其是技術(shù)風(fēng)險(xiǎn)和客戶風(fēng)險(xiǎn)——

技術(shù)風(fēng)險(xiǎn)主要來自于軟件本身的技術(shù)難度。對于一套成熟的產(chǎn)品,定制開發(fā)的技術(shù)風(fēng)險(xiǎn)相對非常小,因?yàn)橹匾募夹g(shù)已經(jīng)成型,客戶也很少有新的、能帶來高難度技術(shù)問題的需求,這種風(fēng)險(xiǎn)較小。但是對于完全重新開發(fā)的項(xiàng)目,或是研發(fā)類的項(xiàng)目,技術(shù)風(fēng)險(xiǎn)必須特別重視。以開發(fā)平臺為例,開發(fā)平臺必須適合本項(xiàng)目所涉及的軟件開發(fā)、滿足最終的需求,平臺的錯(cuò)誤選擇將導(dǎo)致龐大的開發(fā)工作量,即便滿足了用戶需求也可能造成系統(tǒng)效率低下、擴(kuò)展性差的致命問題,軟件可能會很快被淘汰。

在實(shí)際估算中,建議將技術(shù)難度分為十級,每一級在初次估算的代碼行上增加10%,最終估算代碼長度=初始估算代碼長度×(1+0.1×n) 假設(shè)模塊A的初次估計(jì)代碼行為15000行,但考慮技術(shù)難度高的風(fēng)險(xiǎn),設(shè)定技術(shù)難度級別為二級,最終代碼行的估算數(shù)量為15000×(1+20%)=18000。

由于技術(shù)風(fēng)險(xiǎn)的分析是一項(xiàng)技術(shù)性很強(qiáng)的工作,要求做技術(shù)風(fēng)險(xiǎn)分析的人必須是技術(shù)專家,在相關(guān)技術(shù)領(lǐng)域有著豐富的經(jīng)驗(yàn)。對重大技術(shù)風(fēng)險(xiǎn)的分析結(jié)果必須要經(jīng)過評審,保證準(zhǔn)確性。

客戶風(fēng)險(xiǎn)存在于客戶化項(xiàng)目中,客戶行業(yè)特點(diǎn)不盡相同,技術(shù)、理解水平也相差甚遠(yuǎn)。在我經(jīng)歷開發(fā)的項(xiàng)目中,80%的項(xiàng)目延期是由于客戶方的原因,而且這種風(fēng)險(xiǎn)可控性很低,對項(xiàng)目影響超過技術(shù)的風(fēng)險(xiǎn)。

在開發(fā)周期估算前,項(xiàng)目經(jīng)理要仔細(xì)分析客戶的具體狀況,包括客戶方的計(jì)算機(jī)水平、管理水平、可溝通程度,在此基礎(chǔ)上結(jié)合以往的經(jīng)驗(yàn)綜合判斷是否會對開發(fā)帶來明顯的影響,可以按照上述的技術(shù)風(fēng)險(xiǎn)的方式將客戶分級,最終確定開發(fā)周期。

在這個(gè)過程中,項(xiàng)目經(jīng)理的經(jīng)驗(yàn)極其重要,對客戶的分析基本上要依賴經(jīng)驗(yàn)做判斷,要求管理人員有大量的客戶經(jīng)驗(yàn)和行業(yè)分析能力。

項(xiàng)目團(tuán)隊(duì)影響速度

對于軟件開發(fā)項(xiàng)目來說,人力資源是核心力量。人力資源對估算的影響表現(xiàn)在技術(shù)水平、理解能力、溝通能力等幾個(gè)方面。項(xiàng)目技術(shù)人員編程水平、工作效率、團(tuán)隊(duì)適應(yīng)性、溝通能力等素質(zhì),都會對開發(fā)進(jìn)度產(chǎn)生影響,其中技術(shù)水平是最關(guān)鍵的因素。評價(jià)程序員的技術(shù)水平可以從編程熟練程度、編程速度、解決技術(shù)問題的能力等幾個(gè)因素考慮:編程熟練程度指的是程序員使用編程工具實(shí)現(xiàn)軟件的功能的熟悉程度;編程速度指的是完成某個(gè)功能的速度;解決技術(shù)問題的能力可以反映程序員的技術(shù)功底—如果以100%作為總和,這三個(gè)因素分別占的合適比例為70%、15%和15%。

軟件開發(fā)周期估算前,應(yīng)對開發(fā)人員定級,建議按新手、初級程序員、中級程序員、高級程序員來劃分,每一級人員再評定上述三個(gè)因素。初次估算時(shí)可以假定開發(fā)人員為中級程序員,然后依據(jù)項(xiàng)目組實(shí)際人員的水平做修正,這樣結(jié)果的準(zhǔn)確度能大大提高。

依據(jù)歷史數(shù)據(jù)估算軟件開發(fā)周期是一種比較常見的方法,這種方法以歷史軟件開發(fā)周期為依據(jù),在估算時(shí)把當(dāng)前軟件項(xiàng)目的情況與歷史數(shù)據(jù)加以對比,從而得出最終結(jié)果。

按照歷史數(shù)據(jù)估算開發(fā)周期的準(zhǔn)確度還是相當(dāng)高的,但這種方法只適用于對某類軟件的開發(fā),比如某個(gè)行業(yè)業(yè)務(wù)系統(tǒng)的開發(fā)。

當(dāng)要估算的軟件與歷史軟件相差太多,比如開發(fā)工具完全不同、或者項(xiàng)目類型完全不同,就不能再依賴這種方法,最起碼應(yīng)該輔助使用其它估算法。如果沒有歷史數(shù)據(jù)或是開發(fā)一種新領(lǐng)域軟件,可以使用代碼行或功能點(diǎn)估算法,在此基礎(chǔ)上再通過其它方法校正。

在實(shí)際使用歷史數(shù)據(jù)估算法時(shí),建議項(xiàng)目經(jīng)理建立一個(gè)歷史項(xiàng)目數(shù)據(jù)庫。在庫中包含以前所有項(xiàng)目的開發(fā)周期、項(xiàng)目規(guī)模、開發(fā)人員狀況、客戶狀況等詳細(xì)數(shù)據(jù)。

當(dāng)估算時(shí)根據(jù)當(dāng)前項(xiàng)目的狀況在庫中尋找最類似的歷史項(xiàng)目,然后再比較兩個(gè)項(xiàng)目之間在項(xiàng)目規(guī)模、項(xiàng)目風(fēng)險(xiǎn)、人力資源之間的區(qū)別,我們假定歷史項(xiàng)目開發(fā)周期為A,當(dāng)前項(xiàng)目的周期可以依據(jù)下列公式得出:

估算項(xiàng)目周期 = A×(2×S+R+P+2

×C)/6S:代表軟件規(guī)模 R:代表風(fēng)險(xiǎn) P:代表人力資源 C:代表客戶(以上值均指當(dāng)前項(xiàng)目與歷史項(xiàng)目的比率)實(shí)際的比較因素應(yīng)該不止這些,但軟件規(guī)模、風(fēng)險(xiǎn)、人力資源及客戶狀況是其中最重要的,對軟件開發(fā)的影響也最大,所以這個(gè)公式中只考慮了這些因素。其中軟件規(guī)模和客戶兩項(xiàng)占的權(quán)重最大,這也是根據(jù)項(xiàng)目管理經(jīng)驗(yàn)得出的,在實(shí)際使用歷史數(shù)據(jù)估算法時(shí)還可以靈活加入其它因素。

猜你喜歡
程序員代碼編程
我家有只編程貓
我家有只編程貓
我家有只編程貓
我家有只編程貓
為了讓媽媽看懂地圖,一位“野生程序員”做了個(gè)小程序
怎樣成為一名優(yōu)秀程序員
幼兒100(2020年29期)2020-10-21 06:17:58
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
肃南| 防城港市| 耿马| 麦盖提县| 奎屯市| 城固县| 应城市| 米泉市| 白城市| 富民县| 务川| 榆树市| 郴州市| 拜城县| 文化| 浦东新区| 凤阳县| 临邑县| 绥滨县| 公主岭市| 天津市| 工布江达县| 女性| 会泽县| 井冈山市| 邹平县| 大同市| 比如县| 灵宝市| 大化| 上杭县| 城口县| 海安县| 沈丘县| 织金县| 密云县| 上虞市| 抚州市| 浮梁县| 偏关县| 密山市|