程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 透視軟件開發過程中的難點

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

編輯:關於PHP編程

作者:田占海 1 引言 如果你是一個程序員,可能常常為不能按時完成任務而苦惱。如果你是一個項目經理,可能會覺得開發符合預算和進度要求的軟件簡直難於上青天。實際上,軟件項目常常嚴重超期或超出預算仍是困擾著絕大多數軟件機構的難題。據美國一份評估報告顯示,17個主要的國防部軟件合同中,平均28個月的進度計劃推遲了20個月才完成。一個4年應該完成的任務,7年還未提交,其中沒有一個項目按時完成。由於存在軟件問題,B1轟炸機的部署被推遲了,同樣的原因,580億美元的A12飛機計劃也被部分取消了。持續了二三十年的軟件危機為什麼愈演愈烈?軟件開發為什麼如此之難?本文試結合作者的體會對軟件開發的困難之處做一剖析,並提出一些建議。 2 困難所在 2.1 極大的復雜性 大多數大型軟件軟件產品由幾十甚至幾百萬行源代碼構成,例如:Windows95操作系統由大約1100萬行代碼組成。每一行代碼都可能影響到程序的其它部分,並且各個部分之間都可能互相影響。這樣一個錯綜復雜的巨大系統當中,每一個小小的錯誤都可能導致整個系統崩潰。有些大型軟件,例如Windows,可能是人類曾經建造過的最復雜的事物之一,從古至今最復雜的建築都無法與之相比。 2.2 高度的不確定性 一個軟件項目從一開始就存在許多不確定性因素。其一:用戶需求很難確定。這是因為軟件開發者很難詳細了解用戶的需求,甚至用戶在看到產品之前也不清楚自己到底需要什麼,所以從項目開發的自始至終都可能會有新的需求提出,致使系統結構不斷修改,最終面目全非。其二:設計不完全可以預測。有時,一個設計時認為可行的方案,在實現時可能行不通,或者最初的設計方案存在很大的缺陷而沒有及時發現,或者突然一個設計時沒有料到的技術難點阻擋了項目的進度。從設計到實現實際上有著很大的不可預測性。其三:用戶需求不斷變化,如果最初的用戶需求沒有了解的很清楚,可能整個項目很快就會陷在不斷變化的需求之中不能自拔。其四:客觀條件的不確定性。在項目的進展過程中,可能會有人員的流動,可能會有資源的調整,可能會有這樣或那樣的客觀條件的限制而阻擋了項目的正常進行。在這樣高度的不確定之中,在較早階段精確估計一個項目不只是很難地,甚至是不可能的。 3 造成工期延誤的原因 3.1 開發人員的過分樂觀 許多開發人員傾向於一切都會進展順利,這種盲目的自信對於項目開發來說是不對的。如果按照最樂觀的估計,可能絕大多數任務都不能按時完成,因為在軟件開發中不確定因素實在太多了。對於任務的復雜性和難度,對於自己能支配的時間,對於可能的突發事件的干擾等沒有清楚的認識和估計,即使對自己的時間表作出保證,也可能常常無法按時交貨。 3.2 來自外部的壓力 作為項目的管理者或者客戶都希望項目早日結束,因而為項目設置了一個個時間節點。 這些時間節點可能設置的根本就不可能實現或者實現起來會有很大難度,但是開發人員為了按時完工只好加班加點,以最快的速度完成要求的功能,而對於系統結構的考慮就會放到次要的位置上去,這樣就為今後程序的維護埋下了隱患。更可怕的是一個個bug會隨著壓力的增大而產生,最後造成更大量的返工。程序就象程序員的孩子一樣,每個人都希望自己的孩子茁壯成長,但是沒有辦法,多生快生就不能優生。 3.3 項目以外事情的干擾 如果一個項目的開發人員經常被項目以外的事情所干擾、牽制,不能全身心地投入到項目開發之中,常常會因此而影響了進度。這種現象在規模較小的軟件企業中比較多見,一個開發人員經常身兼多職,甚至同時參與多個項目的開發。如果其它項目急於完工,則該項目只好被拖延。 3.4 項目管理的混亂 軟件企業內部項目管理的混亂似乎是一個世界性的通病。卡耐基梅隆大學軟件工程研究所(SEI)建立了一套標准,用來衡量軟件企業從混亂到持續發展的這種狀態,這就是就是CMM五級標准。第一級最為混亂,每升高一級情況都有所好轉,第五級狀況最好。 到2001年1月底,全世界只有1654家軟件公司和機構通過了不同級別的認證。從下圖可以看出,這是一個金字塔型的分布狀態,圖上只顯示了二級和二級以上的企業,而處在 金字塔最低層的那些一級企業的數目不知有多少個1654家!所以從世界范圍來看,軟件管理的總體水平還是很低的。 3.5 開發人員的不足 全世界對於人才的競爭可能在IT界表現的最為激烈。一方面人才的絕對數量不足導致了許多企業不能招到自己急需的人才;另一方面人才的流動也導致了企業很容易失去自己的員工。一個項目如果缺少人手或人才頻繁流動,將不能保證項目的正常進展。 4 如何避免工期延誤 4.1 對不確定性做好充分准備 中國人都對《三國演示》中的赤壁之戰非常熟悉,諸葛亮在赤壁埋伏了數路伏兵對曹操進行圍追堵截,一招不行,還有下一招,對整個過程做了非常周密的准備和部署,所以大獲全勝。軟件開發亦是如此,在項目展開的初期就應該對過程中可能會出現各種的情況有所准備,才不至於車到山前無路可走。 4.2 立足於產品的靈活性 設計的靈活性是一個軟件產品的靈魂。好的設計總是容易維護和升級,而不好的設計卻會為今後的維護帶來很大的麻煩,甚至整個產品都可能被廢棄重來。因此在軟件開發的的初期應花很大力氣致力於整體設計,而不是急於編碼,磨刀不誤砍柴工,前期的投入會獲得高額回報的。 4.1 提高軟件管理水平 ISO9000質量管理系統的標准系列是建立在這樣一個前提上:如果生產和管理系統沒有問題,那麼其產品和提供的服務也就沒有問題,這說明管理水平如何於產品的質量有至關重要的影響。 我認為一個軟件企業提高管理水平的最好途徑就是為自己制定一個目標,比如實現CMM的級別認證或者ISO9000質量體系認證,在對這些目標努力的過程中會逐漸提高自己的管理水平。 1 結束語 本文對軟件開發過程中的困難之處和常常造成工期拖延的因素做了一些粗淺的分析,並不是很系統、全面。對於如何避免工期延誤也提出了幾點建議,懇請讀者批評指正。 2 參考文獻 1.卡耐基梅隆大學軟件工程研究所. 軟件能力成熟度模型(CMM):軟件過程改進指南. 電子工業出版社,2001.07。 2.[德] 霍克,勒丁,帕克特,林德納,米勒. 軟件業的成功奧秘. 上海遠東出版社,2000 3.龔鍵雅. 當代GIS的若干理論與技術. 武漢測繪科技大學出版社,1999.03 4.廖斌. CMM介紹1. 2001.09

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved