萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 透視軟件開發過程中的難點

透視軟件開發過程中的難點

作者:田占海

1 引言
如果你是一個程序員,可能常常為不能按時完成任務而苦惱。如果你是一個項目經理,可能會覺得開發符合預算和進度要求的軟件簡直難於上青天。實際上,軟件項目常常嚴重超期或超出預算仍是困擾著絕大多數軟件機構的難題。據美國一份評估報告顯示,17個主要的國防部軟件合同中,平均28個月的進度計劃推遲了20個月才完成。一個4年應該完成的任務,7年還未提交,其中沒有一個項目按時完成。由於存在軟件問題,B1轟炸機的部署被推遲了,同樣的原因,580億美元的A12飛機計劃也被部分取消了。持續了二三十年的軟件危機為什麼愈演愈烈?軟件開發為什麼如此之難?本文試結合作者的體會對軟件開發的困難之處做一剖析,並提出一些建議。
2 困難所在
2.1 極大的復雜性
大多數大型軟件軟件產品由幾十甚至幾百萬行源代碼構成,例如:Windows95操作系統由大約1100萬行代碼組成。每一行代碼都可能影響到程序的其它部分,並且各個部分之間都可能互相影響。這樣一個錯綜復雜的巨大系統當中,每一個小小的錯誤都可能導致整個系統崩潰。有些大型軟件,例如Windows,可能是人類曾經建造過的最復雜的事物之一,從古至今最復雜的建築都無法與之相比。
2.2 高度的不確定性
一個軟件項目從一開始就存在許多不確定性因素。其一:用戶需求很難確定。這是因為軟件開發者很難詳細了解用戶的需求,甚至用戶在看到產品之前也不清楚自己到底需要什麼,所以從項目開發的自始至終都可能會有新的需求提出,致使系統結構不斷修改,最終面目全非。其二:設計不完全可以預測。有時,一個設計時認為可行的方案,在實現時可能行不通,或者最初的設計方案存在很大的缺陷而沒有及時發現,或者突然一個設計時沒有料到的技術難點阻擋了項目的進度。從設計到實現實際上有著很大的不可預測性。其三:用戶需求不斷變化,如果最初的用戶需求沒有了解的很清楚,可能整個項目很快就會陷在不斷變化的需求之中不能自拔。其四:客觀條件的不確定性。在項目的進展過程中,可能會有人員的流動,可能會有資源的調整,可能會有這樣或那樣的客觀條件的限制而阻擋了項目的正常進行。在這樣高度的不確定之中,在較早階段精確估計一個項目不只是很難地,甚至是不可能的。
3 造成工期延誤的原因
3.1 開發人員的過分樂觀
許多開發人員傾向於一切都會進展順利,這種盲目的自信對於項目開發來說是不對的。如果按照最樂觀的估計,可能絕大多數任務都不能按時完成,因為在軟件開發中不確定因素實在太多了。對於任務的復雜性和難度,對於自己能支配的時間,對於可能的突發事件的干擾等沒有清楚的認識和估計,即使對自己的時間表作出保證,也可能常常無法按時交貨。
copyright © 萬盛學電腦網 all rights reserved