項目開發(fā)管理技術(shù)之項目版本控制掀抹、軟件建模虐拓、軟件測試、項目文檔管理及進(jìn)度管理

1. 版本控制技術(shù)及工具

版本控制是程序開發(fā)傲武、管理必不可少的工具蓉驹,特別是在多人協(xié)作的團(tuán)隊中城榛,適宜的版本控制工具可以提高開發(fā)效率,消除很多由代碼版本帶來的問題戒幔。通過使用版本控制技術(shù)及工具吠谢,可以確保在軟件項目開發(fā)中不同的開發(fā)人員所涉及的同一文檔都得到正確的更新。

1.1 常用版本控制工具

1. CVS (Concurrent Versions System)

CVS 是一款開放源代碼軟件诗茎,其功能強(qiáng)大工坊、跨平臺、支持并發(fā)版本控制而且免費(fèi)敢订,所以它在中小型軟件企業(yè)中得到廣泛使用王污。CVS最大的遺憾就是缺少相應(yīng)的技術(shù)支持,許多問題的解決需要自己尋找資料楚午,甚至是研究源代碼昭齐。CVS是一個典型的服務(wù)器/客戶端軟件,支持遠(yuǎn)程管理矾柜,項目組分布開發(fā)時一般都采用CVS做代碼及文檔的版本控制阱驾。

2. SVN (SubVersion)

SVN是對CVS的缺點進(jìn)行改進(jìn)產(chǎn)生的版本控制工具,相比于CVS而言,SVN更為簡單易用怪蔑,且SVN有其特定平臺的客戶端工具里覆。如TortoiseSVN,是為windows外殼程序集成到windows資源管理器和文件管理系統(tǒng)的SVN客戶端缆瓣,使用相當(dāng)方便喧枷。

3. Clearcase

Clearcase是Rational公司一款重量級的軟件配置管理工具。與CVS和SVN不同的是弓坞,Clearcase涵蓋的范圍包括版本控制隧甚、建立管理、工作空間管理和過程控制渡冻。Clearcase貫穿于整個軟件生命周期戚扳,支持現(xiàn)有的絕大多數(shù)操作系統(tǒng),但它的安裝族吻、配置咖城、使用相對較復(fù)雜,需要進(jìn)行團(tuán)隊培訓(xùn)呼奢。

2. 軟件測試技術(shù)及工具

隨著軟件應(yīng)用領(lǐng)域越來越廣泛,軟件質(zhì)量的優(yōu)劣也日益受到人們的重視切平,軟件質(zhì)量保證能力的強(qiáng)弱成為了直接影響業(yè)界發(fā)展與生存的重要因素握础。軟件測試作為軟件質(zhì)量保證的主要內(nèi)容,是一個成熟軟件企業(yè)的重要組成部分悴品,它是軟件生命周期中一項非常重要且復(fù)雜的工作禀综,對軟件可靠性保證具有極其重要的意義简烘。

2.1 軟件測試技術(shù)

軟件測試的目的是對軟件質(zhì)量或可接受性做出判斷,發(fā)現(xiàn)軟件開發(fā)過程存在的問題定枷。在實際的項目開發(fā)流程中孤澎,經(jīng)常用到的軟件測試方法有:單元測試,集成測試欠窒,功能測試覆旭,驗收測試等。

1. 單元測試

單元測試主要是開發(fā)者針對開發(fā)過程中程序內(nèi)部的函數(shù)岖妄、類型将、變量等數(shù)據(jù)進(jìn)行正確性測試。開發(fā)人員根據(jù)需求荐虐,在經(jīng)過詳細(xì)設(shè)計之后開始著手編寫代碼七兜。一般情況下,每完成一個函數(shù)(類)之后福扬,就要進(jìn)行單元測試腕铸,以驗證編寫的函數(shù)能完成詳細(xì)設(shè)計說明中的功能。目前常用的單元測試工具有Junit測試铛碑、C++Test等等狠裹。

2. 集成測試

集成測試是在單元測試的基礎(chǔ)上扁远,將所有模塊按照詳細(xì)設(shè)計的要求組裝成子系統(tǒng)或系統(tǒng)沛申,進(jìn)行集成測試。與單元測試側(cè)重單個函數(shù)(類)功能的正確性不同的是煮嫌,集成測試側(cè)重于模塊間的接口正確性以及集成后的整體功能的正確性刹缝。

3. 功能測試

功能測試即軟件的黑盒測試碗暗。單元測試和集成測試保證了開發(fā)是可以正常運(yùn)行,執(zhí)行起來的效率是最高的梢夯,但無法保證需求所需的功能是正確實現(xiàn)的言疗。根據(jù)用戶需求設(shè)計的功能測試(黑盒測試),可以按照嚴(yán)格的按照需求說明颂砸,測試新開發(fā)的系統(tǒng)是否完全符合用戶的要求以及是否符合實際的操作流程和業(yè)務(wù)邏輯噪奄。

4. 驗收測試

在驗收測試中,相關(guān)的用戶根據(jù)需求說明文檔對系統(tǒng)進(jìn)行測試和驗收人乓,決定是否接收系統(tǒng)勤篮,它是一項確定產(chǎn)品是否能夠滿足合同或用戶所規(guī)定需求的測試。驗收測試的目的是確保系統(tǒng)已經(jīng)準(zhǔn)備就緒色罚,可以投入日常使用碰缔,讓最終用戶使用需求中描述的功能。

2.2 軟件測試工具

1. Junit測試

Junit測試是目前J2EE平臺上最為流行的單元測試工具戳护,它是程序員測試金抡,即所謂的白盒測試瀑焦。在Junit測試中,程序員知道被測試的軟件如何完成功能和完成什么樣的功能梗肝,因此在繼承了TestCase后就可以用Junit進(jìn)行自動測試榛瓮。

2. C++ Test測試

C++ Test是Parasoft公司出品的一個針對C/C++源代碼進(jìn)行自動化單元測試的工具,它可以對源代碼進(jìn)行三種測試:白盒測試巫击、黑盒測試以及回歸測試禀晓。鑒于C/C++在嵌入式領(lǐng)域的廣泛應(yīng)用,Parasoft同時為嵌入式程序提供了相應(yīng)的版本喘鸟,支持Eclipse和Visual Studio匆绣,可以批處理執(zhí)行。

3. WinRunner測試

Winrunner工具用于功能性測試什黑,最主要的功能是自動重復(fù)執(zhí)行某一固定的測試過程崎淳。它記錄下手工測試的一系列操作,在環(huán)境相同的情況下重放愕把,檢查程序在相同的環(huán)境中有無異常的現(xiàn)象或與實際結(jié)果不符的地方拣凹。

4. LoadRunner測試

LoadRunner是一種預(yù)測系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級壓力測試工具,近幾年來一直是軟件壓力測試的首選工具恨豁。它可以模擬成千上萬的并發(fā)操作嚣镜,對應(yīng)用系統(tǒng)、Web Service橘蜜、Web服務(wù)器菊匿、數(shù)據(jù)庫等進(jìn)行壓力和性能測試,兼容Window和Unix操作系統(tǒng)计福。

3. 文檔管理技術(shù)

項目文檔管理跌捆,是指在一個項目開發(fā)進(jìn)程中將提交的文檔進(jìn)行收集管理的過程。通常象颖,文檔管理在項目開發(fā)中不是很受重視佩厚,當(dāng)發(fā)現(xiàn)其重要性時,往往為時已晚说订,整個項目可能因此變得管理混亂抄瓦,問題產(chǎn)生后無據(jù)可查。文檔管理對于一個項目的順利進(jìn)行有著至關(guān)重要的作用陶冷,其關(guān)鍵性不容忽視钙姊。

3.1 文檔管理技術(shù)

軟件項目中的文檔是用來記錄、描述埂伦、展示軟件項目開發(fā)過程中一系列信息的處理過程煞额,它描述和規(guī)定了軟件項目開發(fā)的每一個細(xì)節(jié),使用軟件的操作命令,對產(chǎn)品使用過程中意見及產(chǎn)品缺陷立镶、質(zhì)量等方面的說明。

文檔的編寫需要了解和遵循文檔的行業(yè)標(biāo)準(zhǔn)±嘣纾現(xiàn)有軟件開發(fā)中常見的文檔種類如下:

1. 開發(fā)文檔

這類文檔是在軟件項目開發(fā)過程中媚媒,體現(xiàn)了軟件開發(fā)人員前一階段工作的成果,同時又是后一階段工作的依據(jù)涩僻。這類文檔包括可行性研究報告缭召、軟件項目開發(fā)計劃、軟件需求規(guī)格說明逆日、系統(tǒng)規(guī)格說明書嵌巷、軟件功能說明書和數(shù)據(jù)字典等。

2. 管理文檔

這類文檔是在軟件項目開發(fā)過程中室抽,由軟件開發(fā)人員制定的需提交管理部門的一些工作計劃搪哪、工作方案和工作報告。通過閱讀這些文檔坪圾,管理人員能夠了解軟件項目開發(fā)活動安排晓折、進(jìn)度、資源使用等情況兽泄。這類文檔包括項目開發(fā)計劃漓概、測試計劃、測試方案病梢、開發(fā)進(jìn)度報告和項目總結(jié)報告等胃珍。

3. 用戶文檔

這類文檔是軟件開發(fā)人員為使用該軟件的網(wǎng)點經(jīng)辦人員準(zhǔn)備的有關(guān)該軟件產(chǎn)品使用、操作的資料蜓陌,主要是操作手冊及新功能介紹方面的文檔觅彰。

4. 軟件建模工具

隨著軟件開發(fā)規(guī)模越來越大,面向?qū)ο蠓治雠c設(shè)計的優(yōu)勢突顯护奈,軟件開發(fā)建模在公司項目開發(fā)中呈現(xiàn)越來越頻繁的趨向缔莲。開發(fā)中常用的軟件建模技術(shù)有兩種,UML建模以及數(shù)據(jù)庫建模霉旗,前者作為一種可視化建模語言痴奏,主要用于面向?qū)ο竽P偷姆治雠c設(shè)計;后者用于數(shù)據(jù)庫的邏輯設(shè)計厌秒,生成的是項目數(shù)據(jù)庫的實體關(guān)系圖读拆。

4.1 常用的軟件建模工具

1. Rational Rose

Rational Rose是一款強(qiáng)大的UML建模工具,它使改進(jìn)和維護(hù)設(shè)計鸵闪、從模型生成報表檐晕、在平行協(xié)作環(huán)境中與他人共同進(jìn)行建模工作變得十分方便。同時,作為一款優(yōu)秀的分析和設(shè)計工具辟灰,Rose具有強(qiáng)大的正向和逆向工程能力个榕。正向工程指的是由設(shè)計產(chǎn)生代碼,逆向工程指由代碼歸納出設(shè)計芥喇,Rose可以通過逆向工程對歷史系統(tǒng)做出分析西采,然后進(jìn)行改進(jìn),再通過正向工程產(chǎn)生新的系統(tǒng)代碼继控,這樣的設(shè)計方式稱之為再工程械馆。

2. Visio

Visio是目前國內(nèi)用得最多的Case工具,可以用于常見的case設(shè)計及UML建模武通。它提供了日常使用中的絕大多數(shù)框圖的繪畫功能(包括信息領(lǐng)域的各種原理圖霹崎,設(shè)計圖),同時提供了部分信息領(lǐng)域的實物圖冶忱。Visio的優(yōu)勢在于使用方便尾菇,安裝后的Visio既可以單獨運(yùn)行,也可以在Word中作為對象插入朗和,與Word集成良好错沽。Visio支持UML的靜態(tài)和動態(tài)建模,對UML的建模提供了單獨的組織管理眶拉。

3. PowerDesigner

簡練實用的建模工具千埃,既是數(shù)據(jù)庫建模傳統(tǒng)的優(yōu)秀工具,也可以用于UML建模忆植。PowerDesigner在數(shù)據(jù)庫建模方面功能強(qiáng)大放可,使用非常方便,自8.0版本后支持逆向工程朝刊、再工程耀里,同時開始支持UML建模的UseCase/Sequence/Class視圖。

4. ER/Studio

另外一款常用的數(shù)據(jù)庫建模工具拾氓,是一款模型驅(qū)動的數(shù)據(jù)結(jié)構(gòu)管理和數(shù)據(jù)庫設(shè)計產(chǎn)品冯挎。與PowerDesigner相比更為精簡,且同樣支持逆向工程及再工程咙鞍,在數(shù)據(jù)庫兼容性以及UML建模上與PowerDisigner有一定差距房官。

5. 軟件進(jìn)度管理:軟件開發(fā)周期估算

軟件開發(fā)周期估算是IT人員經(jīng)常提到的一個概念,那么究竟什么是軟件開發(fā)周期估算呢?我們可以把它定義如下:根據(jù)軟件的開發(fā)內(nèi)容续滋、開發(fā)工具翰守、開發(fā)人員等因素對需求調(diào)研、程序設(shè)計疲酌、編碼蜡峰、測試等整個開發(fā)過程所花費(fèi)的時間做的預(yù)測了袁。在這個定義中,“預(yù)測”兩個字非常關(guān)鍵湿颅,它突出體現(xiàn)了估算的含義载绿,同時也隱含表明了結(jié)果的不確定性。有效的軟件開發(fā)周期估算在軟件開發(fā)中是非常困難的工序之一油航,之所以說困難卢鹦,是因為軟件開發(fā)所涉及的因素不僅多而且異常復(fù)雜,即便是及其類似的軟件項目也不能完全照搬劝堪,在估算的把握上有一定難度。估算也是軟件開發(fā)中很重要的一個環(huán)節(jié)揉稚,如果低估項目周期會造成人力低估秒啦、成本預(yù)算低估、日程過短搀玖,最終人力資源耗盡余境,成本超出預(yù)算,為完成項目不得不趕工灌诅,影響項目質(zhì)量芳来,甚至導(dǎo)致項目失敗。項目周期估計過長表面看來影響不大猜拾,但是實際上也會帶來成本估計過高即舌,人力資源利用不充分效率低下的后果。無論哪種情況對于項目經(jīng)理控制整個項目都會帶來很大影響挎袜,周期估算如同蓋樓房中打地基顽聂,是后續(xù)工作的基礎(chǔ),它完成質(zhì)量的好壞所帶來的影響會貫穿整個項目盯仪,由此可見開發(fā)周期正確估算的重要性紊搪。

2.國內(nèi)外軟件估算比較

國內(nèi)軟件開發(fā)的管理目前正逐步向規(guī)范化發(fā)展,但是在開發(fā)周期的估算上絕大部分還是處于手工作坊的狀態(tài)全景。所謂的手工作坊指兩個方面耀石,一方面是管理人員意識上沒有認(rèn)識到估算的重要性,認(rèn)為估算就是一個大概的估計爸黄,很多還受限于商業(yè)行為滞伟,比如為了簽訂合同而不惜減少開發(fā)工作量卻未經(jīng)任何評審;另一方面也沒有專門的工具來輔助估算馆纳,或者說沒有專門對它進(jìn)行研究诗良。一個軟件開發(fā)周期究竟要多長基本上是依靠經(jīng)驗來判斷,不同經(jīng)驗的人估算出的周期相差很大鲁驶,而更糟糕的是這種開發(fā)周期的判斷由于完全憑借經(jīng)驗使得不同意見的人之間很難溝通鉴裹,因為誰都沒有確切的量化標(biāo)準(zhǔn)來支持自己的判斷,最終的結(jié)果往往是以“專家”的估算為準(zhǔn)。這就有些類似于中式烹調(diào)径荔,放多少作料沒有依據(jù)督禽,一般都是“少許”,這個“少許”靠的就是經(jīng)驗总处,高級廚師和新手根據(jù)這個量炒出的菜味道可能差得很遠(yuǎn)狈惫;實際上國內(nèi)的軟件開發(fā)需要的正是定量估算,這樣做不僅規(guī)范而且精確鹦马,十分有助于軟件事業(yè)的健康發(fā)展以及與國際接軌胧谈。

國外發(fā)達(dá)國家在軟件估算上比國內(nèi)要成熟的多,不僅有很多先進(jìn)方法比如代碼行估算法荸频、功能點估算法菱肖、人力估算法,而且形成了專業(yè)化的估算工具來輔助這項工作旭从,比如微軟公司開發(fā)的項目管理工具軟件Project稳强,加拿大Software Productivity Center Inc.公司開發(fā)的Estimate,都是比較成熟的估算輔助工具和悦。Project采用了自下而上的估算法退疫,Estimate更是屬于專業(yè)化工具,包含常用的各種估算方法鸽素、校正方法褒繁,使用了Putnam Methodology、Cocomo II和 Monte Carlo Simulation幾種成熟算法馍忽,估算結(jié)果除了項目花費(fèi)時間澜汤、人力,還包括十幾種分析報告以及模擬發(fā)散圖舵匾、計劃編制選項圖俊抵、人力圖、預(yù)計缺陷圖坐梯、缺陷方差圖等等徽诲,從各種不同角度輔助管理人員進(jìn)行分析。

采用輔助工具對軟件開發(fā)周期進(jìn)行估算具有明顯的優(yōu)勢吵血,這些輔助工具是在大量不同類型項目數(shù)據(jù)研究的基礎(chǔ)上總結(jié)開發(fā)出來的谎替,采用的算法、估算的方法已經(jīng)很成熟蹋辅,估算結(jié)果的準(zhǔn)確性有保障钱贯,由于這種估算是可以量化的,并非依據(jù)個人經(jīng)驗直接得出一個結(jié)果侦另,在結(jié)果的評審上有據(jù)可依秩命。長期依靠工具輔助估算可以將大量項目的數(shù)據(jù)和估算結(jié)果積累形成歷史經(jīng)驗庫尉共,知識成果得以保存,便于以后利用弃锐。

3. 軟件估算中的因素探討

軟件開發(fā)是一項非常復(fù)雜的工程袄友,不僅包含需求分析、設(shè)計霹菊、編碼剧蚣、測試、實施旋廷、維護(hù)等完整的過程鸠按,還涉及到開發(fā)工具、開發(fā)人員饶碘、項目管理待诅、風(fēng)險等眾多因素,不同因素對估算產(chǎn)生的影響不盡相同熊镣,在進(jìn)行軟件估算時(包括利用工具輔助估算)必須考慮到這些方面,否則最終結(jié)果就會和實際結(jié)果有很大的偏差募书,影響項目控制绪囱,以下對其中幾個常見的因素做一些探討。

3.1估算與軟件規(guī)模

軟件規(guī)模通常指的是軟件的大小莹捡,這可以通過不同的方式來描述鬼吵,比如程序代碼行的長度、功能函數(shù)的數(shù)量篮赢、數(shù)據(jù)庫中表的數(shù)量齿椅、數(shù)據(jù)庫的大小等等。一般而言軟件規(guī)模越大启泣,所花費(fèi)的開發(fā)周期就越長涣脚,但這并不是一個簡單的線形函數(shù)關(guān)系,下表詳細(xì)列舉了實際開發(fā)中的一些數(shù)據(jù)寥茫,開發(fā)平臺為Lotus Domino/Notes遣蚀。

表一

單個模塊的開發(fā)周期

序號 模塊 開發(fā)周期(中級程序員) 代碼行長度 數(shù)據(jù)庫大小(無數(shù)據(jù))

1. 辦事指南 0.25人月 300 1170K

2. 名片簿 0.25人月 300 1039K

3. 合同管理 0.25人月 460 2110K

4. 物控管理 0.5人月 850 2560K

5. 組織機(jī)構(gòu) 0.5人月 900 1318Khttp://www.mypm.net

6. 流程管理 0.8人月 1000 2304K

7. 公告板 0.5人月 1400 2560K

8. 人事管理 1人月 1800 3840K

9. 公文管理 1.8人月 2500 2304K項目管理者聯(lián)盟文章,深入探討纱耻。

10. 事務(wù)審批 1.5人月 3750 2110K

11. 考勤管理 1.8人月 4800 3840K

12. 資源管理 1.8人月 5800 3840K

13. 會議管理 2.5人月 11000 4608K

表二http://blog.mypm.net

軟件項目的開發(fā)周期

軟件項目 開發(fā)周期 包含的模塊 備注http://www.mypm.net

某政府客戶 3個人月 10個 定制開發(fā)量較小

某媒體客戶 6個人月 17個 有3個模塊完全重新開發(fā)

某金融客戶 10個人月 14個 80%完全重新開發(fā)

某保險客戶 16個人月 18個 完全重新開發(fā)

? ? 從表一中可以看出芭梯,模塊的代碼行越長,開發(fā)周期就越長弄喘,對同一開發(fā)工具而言基本是一個線形關(guān)系玖喘,但其中也要考慮代碼重用問題,比如一個模塊代碼很長蘑志,但是可能包含了很多公用函數(shù)累奈,那么在估算時就應(yīng)適當(dāng)減少代碼行數(shù)量贬派,表中會議管理就是個例子,這個模塊的代碼行超過一萬行费尽,但其中公共函數(shù)很多赠群,去除此因素,真正的代碼行在9000行左右旱幼。

表二是軟件項目的實際開發(fā)周期(不考慮系統(tǒng)實施)查描,從普通意義上說軟件項目中包含的功能模塊越多、越復(fù)雜柏卤,或者說軟件越大開發(fā)周期增長的就越快冬三,這個時間絕不是模塊開發(fā)時間的簡單疊加,因為模塊功能數(shù)量的增加直接帶來了軟模塊間相互關(guān)聯(lián)度缘缚、復(fù)雜度的成倍增加勾笆,這就直接導(dǎo)致了在需求、設(shè)計等階段需要花費(fèi)更多的時間桥滨,這比單獨考慮一個模塊復(fù)雜的多窝爪。在表二中隨著模塊數(shù)量增加,開發(fā)周期增加不是特別明顯齐媒,這是因為產(chǎn)品化程度高所引起的蒲每,由于相當(dāng)數(shù)量的模塊可以完全重用,實際開發(fā)量大大減少喻括,最后一個例子完全重新開發(fā)邀杏,開發(fā)周期就長的多。

? ? 在實際進(jìn)行軟件開發(fā)周期估算的時候唬血,軟件規(guī)耐肯定是首先考慮的因素,根據(jù)我們上面所討論的情況拷恨,在考慮軟件規(guī)模時一定要去除可重用的部分脖律,由于當(dāng)今軟件在設(shè)計上很重視這點,所以這部分會占相當(dāng)?shù)谋戎赝笾丁A硗廛浖δ苤g的關(guān)聯(lián)所造成的復(fù)雜性必須足夠重視状您,這樣在估算上就不會產(chǎn)生重大偏差。

3.2估算與項目風(fēng)險

任何一個項目都或多或少存在風(fēng)險兜挨,軟件項目開發(fā)過程中也避免不了這種情況而且有這類項目自己的特點膏孟,最常見的風(fēng)險有以下幾種:技術(shù)風(fēng)險,項目技術(shù)難度很大拌汇,花費(fèi)的時間超過原先的估計柒桑;客戶風(fēng)險,客戶需求不定噪舀,增加需求魁淳,組織協(xié)調(diào)不暢飘诗;人員風(fēng)險,開發(fā)人員突然更換界逛、離職昆稿;管理風(fēng)險,項目經(jīng)理管理不善息拜、決策失誤溉潭。對于風(fēng)險控制,在項目管理中通常是提前做風(fēng)險分析和預(yù)測少欺,制定風(fēng)險應(yīng)對措施喳瓣,這樣在風(fēng)險真的來臨時不至于措手不及,提高整個項目的可控性赞别。

? ? 軟件項目的潛在風(fēng)險對于開發(fā)周期的影響在很多情況下是非常大的畏陕,當(dāng)然好的項目控制會最大限度的減少這種影響,絕對避免是不可能的仿滔,所以在開發(fā)周期估算時項目風(fēng)險應(yīng)該適當(dāng)考慮惠毁,尤其是技術(shù)風(fēng)險和客戶風(fēng)險。

技術(shù)風(fēng)險主要來自于軟件本身的技術(shù)難度崎页,如果對于一套成熟的產(chǎn)品鞠绰,定制開發(fā)的技術(shù)風(fēng)險相對非常小,因為重要的技術(shù)已經(jīng)成型实昨,客戶也很少有新的能帶來高難度技術(shù)問題的需求,這種風(fēng)險可以不予考慮盐固。但是對于完全重新開發(fā)的項目荒给,或是研發(fā)類的項目,技術(shù)風(fēng)險必須特別重視刁卜,其中應(yīng)該考慮的細(xì)節(jié)主要包括下面幾個志电。

開發(fā)平臺,是否能適合本項目所涉及的軟件開發(fā)蛔趴、能否滿足最終的需求挑辆,平臺的錯誤選擇將導(dǎo)致龐大的開發(fā)工作量,即便滿足了用戶需求也可能造成系統(tǒng)效率低下孝情,擴(kuò)展性差的致命問題鱼蝉,軟件可能會很快被淘汰。功能實現(xiàn)難度箫荡,在切實了解需求的基礎(chǔ)上要仔細(xì)分析采用的開發(fā)工具能否實現(xiàn)其中的難點魁亦,是否會耗費(fèi)大量時間。

在實際估算中羔挡,建議技術(shù)難度分為十級洁奈,每一級在初次估算的代碼行上增加10%间唉,最終估算代碼長度=初始估算代碼長度×(1+0.1×n)。假設(shè)模塊A的初次估計代碼行為15000行利术,但考慮技術(shù)難度高的風(fēng)險呈野,設(shè)定技術(shù)難度級別為二級,最終代碼行的估算數(shù)量為15000X(1+20%)=18000印叁。

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

客戶風(fēng)險存在于客戶化項目中肠虽,不同行業(yè)的客戶特點不盡相同幔戏,技術(shù)、理解水平也相差甚遠(yuǎn)税课,在我經(jīng)歷開發(fā)的項目中闲延,80%的項目延期屬于客戶方的原因,而且這種風(fēng)險可控性很低韩玩,對項目影響超過技術(shù)風(fēng)險垒玲。在開發(fā)周期估算前,項目經(jīng)理要仔細(xì)分析客戶的具體狀況找颓,包括客戶的計算機(jī)水平合愈、管理水平、可溝通程度击狮,在此基礎(chǔ)上結(jié)合以往的經(jīng)驗綜合判斷是否會對開發(fā)帶來明顯的影響佛析,可以按照上述的技術(shù)風(fēng)險的方式將客戶分級,最終確定開發(fā)周期彪蓬。在這個過程中寸莫,項目經(jīng)理的經(jīng)驗極其重要,對客戶的分析基本上要依賴經(jīng)驗做判斷档冬,要求管理人員有大量的客戶經(jīng)驗和行業(yè)分析能力膘茎。

3.3估算與人力資源

對于軟件開發(fā)項目來說,人力資源是核心力量酷誓,因為軟件開發(fā)不同于其它類型的項目披坏,除了電腦它不需要利用其它工具,最終結(jié)果的產(chǎn)生完全取決于人腦中的知識盐数,這也是知識經(jīng)濟(jì)的最大特點刮萌。

人力資源對估算的影響表現(xiàn)在技術(shù)水平、理解能力娘扩、溝通能力等幾個方面着茸,編程水平的高低壮锻、速度的快慢、能否適應(yīng)團(tuán)隊涮阔、能否與各成員保持良好的溝通都會對開發(fā)進(jìn)度產(chǎn)生影響猜绣,其中技術(shù)水平是最關(guān)鍵的因素。評價程序員的技術(shù)水平可以從編程熟練程度敬特、編程速度掰邢、解決技術(shù)問題的能力幾個因素考慮,編程熟練程度指的是程序員能否很順暢的使用編程工具實現(xiàn)軟件的功能伟阔,編程速度指的是完成某個功能的時間辣之,解決技術(shù)問題的能力可以反映程序員在遇到技術(shù)難點時表現(xiàn)出的技術(shù)功底,如果以100%作為總和皱炉,這三個因素分別占70%怀估、15%和15%這樣的比例。

? ? 軟件開發(fā)周期估算前合搅,應(yīng)對開發(fā)人員定級多搀,建議按新手、初級程序員灾部、中級程序員康铭、高級程序員來劃分,每一級人員再評定上述三個因素赌髓,初次估算時可以假定開發(fā)人員為中級程序員从藤,然后依據(jù)項目組實際人員的水平做修正,這樣結(jié)果的精確度能大大提高锁蠕。

4. 歷史數(shù)據(jù)估算法的運(yùn)用

依據(jù)歷史數(shù)據(jù)估算軟件開發(fā)周期是一種比較常見的方法夷野,這種方法以歷史軟件開發(fā)周期為依據(jù),在估算時把當(dāng)前軟件項目的情況與歷史數(shù)據(jù)加以對比匿沛,從而得出最終結(jié)果扫责。按照歷史數(shù)據(jù)估算開發(fā)周期準(zhǔn)確度還是相當(dāng)高的榛鼎,但這種方法只適用于對某類軟件的開發(fā)逃呼,比如某個行業(yè)業(yè)務(wù)系統(tǒng)的開發(fā),當(dāng)要估算的軟件與歷史軟件相差太多者娱,比如開發(fā)工具完全不同抡笼,或者類型完全不同,就不能再依賴這種方法黄鳍,最起碼應(yīng)該輔助使用其它估算法推姻。如果沒有歷史數(shù)據(jù)或是開發(fā)一種新領(lǐng)域軟件,可以使用代碼行或功能點估算法框沟,在此基礎(chǔ)上再通過其它方法校正藏古。

? ? 事實上目前項目管理人員對開發(fā)周期的估算大部分屬于人力時間估算法增炭,憑借的是自己的經(jīng)驗,經(jīng)驗越多估算的結(jié)果就越精確拧晕,但是大部分項目管理人員對以前很有價值的歷史數(shù)據(jù)缺乏歸納整理隙姿,估算的時候憑借感覺的成分多一些,所以精確度相對要低很多厂捞,所以要求我們的項目管理人員不僅要有大量軟件開發(fā)的經(jīng)驗還要不斷總結(jié)積累输玷,歷史項目數(shù)據(jù)對于以后軟件開發(fā)周期的估算是非常有價值的。

? ? 在實際使用歷史數(shù)據(jù)估算法時靡馁,建議項目經(jīng)理建立一個歷史項目數(shù)據(jù)庫欲鹏,在庫中包含以前所有項目的開發(fā)周期、項目規(guī)模臭墨、開發(fā)人員狀況赔嚎、客戶狀況等詳細(xì)數(shù)據(jù),當(dāng)估算時根據(jù)當(dāng)前項目的狀況在庫中尋找最類似的歷史項目裙犹,然后再比較兩個項目之間在項目規(guī)模尽狠、項目風(fēng)險、人力資源之間的區(qū)別叶圃,我們假定歷史項目開發(fā)周期為A當(dāng)前項目的周期可以依據(jù)下列公式得出

B=A×(2×S+R+P+2×C)/6

S:代表軟件規(guī)模 R:代表風(fēng)險 P:代表人力資源 C:代表客戶

以上值均指當(dāng)前項目與歷史項目的比率袄膏。

實際的比較因素應(yīng)該不止這些,但軟件規(guī)模掺冠、風(fēng)險沉馆、人力資源及客戶狀況是其中最重要的,對軟件開發(fā)的影響也最大德崭,所以這個公式中只考慮了這些因素斥黑。其中軟件規(guī)模和客戶兩項占的權(quán)重最大,這也是根據(jù)項目管理經(jīng)驗得出的眉厨,在實際使用歷史數(shù)據(jù)估算法時還可以靈活加入其它因素锌奴。

項目經(jīng)理的一個重要職責(zé)就是要保證項目的進(jìn)度,同時負(fù)責(zé)項目的進(jìn)展憾股,那么如何能夠保證項目的進(jìn)度呢鹿蜀?那么首先要弄清楚,進(jìn)度與進(jìn)展的概念.

1 首先要區(qū)分進(jìn)度和進(jìn)展的概念

進(jìn)度:schedule服球,工期是否拖延了茴恰,拖延了多久。

進(jìn)展: progress斩熊,任務(wù)的完成情況往枣,任務(wù)完成了%多少,還有哪些任務(wù)未完成。

比如:

? 某項任務(wù)到今天為止分冈,工期已經(jīng)拖了2天圾另,任務(wù)完成了80%了,還剩20%未完成雕沉;

? 某項任務(wù)到今天為止盯捌,已經(jīng)完成,但是比計劃日期拖期了2天蘑秽,任務(wù)100%完成了饺著。

2 如何度量進(jìn)度?

(1)檢查關(guān)鍵路徑是否拖期肠牲,如果關(guān)鍵路徑有拖期幼衰,則項目一定是拖期了,則要計算關(guān)鍵路徑的拖期天數(shù)缀雳。

(2)檢查非關(guān)鍵路徑是否拖期了渡嚣,如果非關(guān)鍵路徑的拖期后超過了關(guān)鍵路徑的工期,則要計算非關(guān)鍵路徑的拖期天數(shù)肥印。

(3)上述2步計算結(jié)果的最大值即為項目的拖期天數(shù)识椰。提前以此類推。

3 如何度量進(jìn)展深碱?

有多種方法:

(1)? ? ? 任務(wù)完成%=已完成的任務(wù)個數(shù)/應(yīng)完成的任務(wù)個數(shù)腹鹉。

(2)? ? ? SPI=掙值/計劃值,在軟件項目中通常采用已完成任務(wù)的計劃工作量/應(yīng)完成任務(wù)的計劃工作量敷硅。

(3)? ? ? 需求完成%=已完成的需求個數(shù)/總的需求個數(shù)功咒,或者=已完成需求的功能點/總的功能點,在敏捷方法中可以用已完成的故事點/總的故事點

(4)? ? ? 在敏捷方法中也可以是燃燒圖绞蹦,度量剩余任務(wù)的計劃工作量力奋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市幽七,隨后出現(xiàn)的幾起案子景殷,更是在濱河造成了極大的恐慌,老刑警劉巖澡屡,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猿挚,死亡現(xiàn)場離奇詭異,居然都是意外死亡挪蹭,警方通過查閱死者的電腦和手機(jī)亭饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門休偶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁厉,“玉大人,你說我怎么就攤上這事〈使耍” “怎么了八秃?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肉盹。 經(jīng)常有香客問我昔驱,道長,這世上最難降的妖魔是什么上忍? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任骤肛,我火速辦了婚禮,結(jié)果婚禮上窍蓝,老公的妹妹穿的比我還像新娘腋颠。我一直安慰自己,他們只是感情好吓笙,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布淑玫。 她就那樣靜靜地躺著,像睡著了一般面睛。 火紅的嫁衣襯著肌膚如雪絮蒿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天叁鉴,我揣著相機(jī)與錄音土涝,去河邊找鬼。 笑死幌墓,一個胖子當(dāng)著我的面吹牛回铛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播克锣,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼茵肃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袭祟?” 一聲冷哼從身側(cè)響起验残,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巾乳,沒想到半個月后您没,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胆绊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年氨鹏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片压状。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡仆抵,死狀恐怖跟继,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镣丑,我是刑警寧澤舔糖,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站莺匠,受9級特大地震影響金吗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜趣竣,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一摇庙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遥缕,春花似錦跟匆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至封孙,卻和暖如春迹冤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虎忌。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工泡徙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膜蠢。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓堪藐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挑围。 傳聞我的和親對象是個殘疾皇子礁竞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容