明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

透視軟件開發(fā)過程中的難點(diǎn)

[摘要]作者:田占海 1 引言 如果你是一個(gè)程序員,可能常常為不能按時(shí)完成任務(wù)而苦惱。如果你是一個(gè)項(xiàng)目經(jīng)理,可能會(huì)覺得開發(fā)符合預(yù)算和進(jìn)度要求的軟件簡(jiǎn)直難于上青天。實(shí)際上,軟件項(xiàng)目常常嚴(yán)重超期或超...
作者:田占海

1 引言
如果你是一個(gè)程序員,可能常常為不能按時(shí)完成任務(wù)而苦惱。如果你是一個(gè)項(xiàng)目經(jīng)理,可能會(huì)覺得開發(fā)符合預(yù)算和進(jìn)度要求的軟件簡(jiǎn)直難于上青天。實(shí)際上,軟件項(xiàng)目常常嚴(yán)重超期或超出預(yù)算仍是困擾著絕大多數(shù)軟件機(jī)構(gòu)的難題。據(jù)美國(guó)一份評(píng)估報(bào)告顯示,17個(gè)主要的國(guó)防部軟件合同中,平均28個(gè)月的進(jìn)度計(jì)劃推遲了20個(gè)月才完成。一個(gè)4年應(yīng)該完成的任務(wù),7年還未提交,其中沒有一個(gè)項(xiàng)目按時(shí)完成。由于存在軟件問題,B1轟炸機(jī)的部署被推遲了,同樣的原因,580億美元的A12飛機(jī)計(jì)劃也被部分取消了。持續(xù)了二三十年的軟件危機(jī)為什么愈演愈烈?軟件開發(fā)為什么如此之難?本文試結(jié)合作者的體會(huì)對(duì)軟件開發(fā)的困難之處做一剖析,并提出一些建議。

2 困難所在
2.1 極大的復(fù)雜性
大多數(shù)大型軟件軟件產(chǎn)品由幾十甚至幾百萬行源代碼構(gòu)成,例如:Windows95操作系統(tǒng)由大約1100萬行代碼組成。每一行代碼都可能影響到程序的其它部分,并且各個(gè)部分之間都可能互相影響。這樣一個(gè)錯(cuò)綜復(fù)雜的巨大系統(tǒng)當(dāng)中,每一個(gè)小小的錯(cuò)誤都可能導(dǎo)致整個(gè)系統(tǒng)崩潰。有些大型軟件,例如Windows,可能是人類曾經(jīng)建造過的最復(fù)雜的事物之一,從古至今最復(fù)雜的建筑都無法與之相比。
2.2 高度的不確定性
一個(gè)軟件項(xiàng)目從一開始就存在許多不確定性因素。其一:用戶需求很難確定。這是因?yàn)檐浖_發(fā)者很難詳細(xì)了解用戶的需求,甚至用戶在看到產(chǎn)品之前也不清楚自己到底需要什么,所以從項(xiàng)目開發(fā)的自始至終都可能會(huì)有新的需求提出,致使系統(tǒng)結(jié)構(gòu)不斷修改,最終面目全非。其二:設(shè)計(jì)不完全可以預(yù)測(cè)。有時(shí),一個(gè)設(shè)計(jì)時(shí)認(rèn)為可行的方案,在實(shí)現(xiàn)時(shí)可能行不通,或者最初的設(shè)計(jì)方案存在很大的缺陷而沒有及時(shí)發(fā)現(xiàn),或者突然一個(gè)設(shè)計(jì)時(shí)沒有料到的技術(shù)難點(diǎn)阻擋了項(xiàng)目的進(jìn)度。從設(shè)計(jì)到實(shí)現(xiàn)實(shí)際上有著很大的不可預(yù)測(cè)性。其三:用戶需求不斷變化,如果最初的用戶需求沒有了解的很清楚,可能整個(gè)項(xiàng)目很快就會(huì)陷在不斷變化的需求之中不能自拔。其四:客觀條件的不確定性。在項(xiàng)目的進(jìn)展過程中,可能會(huì)有人員的流動(dòng),可能會(huì)有資源的調(diào)整,可能會(huì)有這樣或那樣的客觀條件的限制而阻擋了項(xiàng)目的正常進(jìn)行。在這樣高度的不確定之中,在較早階段精確估計(jì)一個(gè)項(xiàng)目不只是很難地,甚至是不可能的。

3 造成工期延誤的原因
3.1 開發(fā)人員的過分樂觀
許多開發(fā)人員傾向于一切都會(huì)進(jìn)展順利,這種盲目的自信對(duì)于項(xiàng)目開發(fā)來說是不對(duì)的。如果按照最樂觀的估計(jì),可能絕大多數(shù)任務(wù)都不能按時(shí)完成,因?yàn)樵谲浖_發(fā)中不確定因素實(shí)在太多了。對(duì)于任務(wù)的復(fù)雜性和難度,對(duì)于自己能支配的時(shí)間,對(duì)于可能的突發(fā)事件的干擾等沒有清楚的認(rèn)識(shí)和估計(jì),即使對(duì)自己的時(shí)間表作出保證,也可能常常無法按時(shí)交貨。
3.2 來自外部的壓力
作為項(xiàng)目的管理者或者客戶都希望項(xiàng)目早日結(jié)束,因而為項(xiàng)目設(shè)置了一個(gè)個(gè)時(shí)間節(jié)點(diǎn)。
這些時(shí)間節(jié)點(diǎn)可能設(shè)置的根本就不可能實(shí)現(xiàn)或者實(shí)現(xiàn)起來會(huì)有很大難度,但是開發(fā)人員為了按時(shí)完工只好加班加點(diǎn),以最快的速度完成要求的功能,而對(duì)于系統(tǒng)結(jié)構(gòu)的考慮就會(huì)放到次要的位置上去,這樣就為今后程序的維護(hù)埋下了隱患。更可怕的是一個(gè)個(gè)bug會(huì)隨著壓力的增大而產(chǎn)生,最后造成更大量的返工。程序就象程序員的孩子一樣,每個(gè)人都希望自己的孩子茁壯成長(zhǎng),但是沒有辦法,多生快生就不能優(yōu)生。
3.3 項(xiàng)目以外事情的干擾
如果一個(gè)項(xiàng)目的開發(fā)人員經(jīng)常被項(xiàng)目以外的事情所干擾、牽制,不能全身心地投入到項(xiàng)目開發(fā)之中,常常會(huì)因此而影響了進(jìn)度。這種現(xiàn)象在規(guī)模較小的軟件企業(yè)中比較多見,一個(gè)開發(fā)人員經(jīng)常身兼多職,甚至同時(shí)參與多個(gè)項(xiàng)目的開發(fā)。如果其它項(xiàng)目急于完工,則該項(xiàng)目只好被拖延。
3.4 項(xiàng)目管理的混亂
軟件企業(yè)內(nèi)部項(xiàng)目管理的混亂似乎是一個(gè)世界性的通病?突仿〈髮W(xué)軟件工程研究所(SEI)建立了一套標(biāo)準(zhǔn),用來衡量軟件企業(yè)從混亂到持續(xù)發(fā)展的這種狀態(tài),這就是就是CMM五級(jí)標(biāo)準(zhǔn)。第一級(jí)最為混亂,每升高一級(jí)情況都有所好轉(zhuǎn),第五級(jí)狀況最好。 到2001年1月底,全世界只有1654家軟件公司和機(jī)構(gòu)通過了不同級(jí)別的認(rèn)證。從下圖可以看出,這是一個(gè)金字塔型的分布狀態(tài),圖上只顯示了二級(jí)和二級(jí)以上的企業(yè),而處在



金字塔最低層的那些一級(jí)企業(yè)的數(shù)目不知有多少個(gè)1654家!所以從世界范圍來看,軟件管理的總體水平還是很低的。
3.5 開發(fā)人員的不足
全世界對(duì)于人才的競(jìng)爭(zhēng)可能在IT界表現(xiàn)的最為激烈。一方面人才的絕對(duì)數(shù)量不足導(dǎo)致了許多企業(yè)不能招到自己急需的人才;另一方面人才的流動(dòng)也導(dǎo)致了企業(yè)很容易失去自己的員工。一個(gè)項(xiàng)目如果缺少人手或人才頻繁流動(dòng),將不能保證項(xiàng)目的正常進(jìn)展。

4 如何避免工期延誤
4.1 對(duì)不確定性做好充分準(zhǔn)備
中國(guó)人都對(duì)《三國(guó)演示》中的赤壁之戰(zhàn)非常熟悉,諸葛亮在赤壁埋伏了數(shù)路伏兵對(duì)曹操進(jìn)行圍追堵截,一招不行,還有下一招,對(duì)整個(gè)過程做了非常周密的準(zhǔn)備和部署,所以大獲全勝。軟件開發(fā)亦是如此,在項(xiàng)目展開的初期就應(yīng)該對(duì)過程中可能會(huì)出現(xiàn)各種的情況有所準(zhǔn)備,才不至于車到山前無路可走。
4.2 立足于產(chǎn)品的靈活性
設(shè)計(jì)的靈活性是一個(gè)軟件產(chǎn)品的靈魂。好的設(shè)計(jì)總是容易維護(hù)和升級(jí),而不好的設(shè)計(jì)卻會(huì)為今后的維護(hù)帶來很大的麻煩,甚至整個(gè)產(chǎn)品都可能被廢棄重來。因此在軟件開發(fā)的的初期應(yīng)花很大力氣致力于整體設(shè)計(jì),而不是急于編碼,磨刀不誤砍柴工,前期的投入會(huì)獲得高額回報(bào)的。
4.1 提高軟件管理水平
ISO9000質(zhì)量管理系統(tǒng)的標(biāo)準(zhǔn)系列是建立在這樣一個(gè)前提上:如果生產(chǎn)和管理系統(tǒng)沒有問題,那么其產(chǎn)品和提供的服務(wù)也就沒有問題,這說明管理水平如何于產(chǎn)品的質(zhì)量有至關(guān)重要的影響。 我認(rèn)為一個(gè)軟件企業(yè)提高管理水平的最好途徑就是為自己制定一個(gè)目標(biāo),比如實(shí)現(xiàn)CMM的級(jí)別認(rèn)證或者ISO9000質(zhì)量體系認(rèn)證,在對(duì)這些目標(biāo)努力的過程中會(huì)逐漸提高自己的管理水平。

1 結(jié)束語
本文對(duì)軟件開發(fā)過程中的困難之處和常常造成工期拖延的因素做了一些粗淺的分析,并不是很系統(tǒng)、全面。對(duì)于如何避免工期延誤也提出了幾點(diǎn)建議,懇請(qǐng)讀者批評(píng)指正。

2 參考文獻(xiàn)
1.卡耐基梅隆大學(xué)軟件工程研究所. 軟件能力成熟度模型(CMM):軟件過程改進(jìn)指南. 電子工業(yè)出版社,2001.07。
2.[德] 霍克,勒丁,帕克特,林德納,米勒. 軟件業(yè)的成功奧秘. 上海遠(yuǎn)東出版社,2000
3.龔鍵雅. 當(dāng)代GIS的若干理論與技術(shù). 武漢測(cè)繪科技大學(xué)出版社,1999.03
4.廖斌. CMM介紹1. 2001.09