軟體開發是一項複雜的系統工程,牽涉到各方面的因素,實際工作中,經常會出現各種各樣的問題,甚至面臨失敗。如何總結、分析失敗的原因,得出有益的教訓,對一個公司來說,是在今後的項目中取得成功的關鍵。
需求內容不明確,把握不充分這是我們經常遇到的問題。一方面,由於客戶(需求方)IT知識缺乏,一開始自己也不知道要開發什麼樣的系統,或者懶於系統 地整理出來,經常是走一步算一步,不斷地提出和更改需求,使得實現方叫苦連天。另一方面,實現方由於行業知識的缺乏和設計人員水平的低下,不能完全理解客 戶的需求說明,而又沒有加以嚴格的確認,經常是以想當然的方法進行系統設計,結果是推倒重來。因此,需求分析必須注重雙方理解和認識的一致,逐項逐條地進 行確認。
工數估算過少軟體開發的工數估算是一項很重要的工作,必須綜合開發的階段、人員的生產率、工作的複雜程度、曆史經驗等因素,將一些定性的內容定量化。 對工數的重要性認識不足,經常用拍腦袋的方式草算,是最常見的問題。還有,軟體開發經常會出現一些平時不可見的工作量,如人員的培訓時間、各個開發階段的 評審時間等,經驗不足的專案經理經常會遺漏。同時,還有如下一些原因也是很典型的:(1)出於客戶和公司上層的壓力在工數估算上予以妥協。例如,客戶威脅 要用工數更少的開發商,公司因經營困難必須削減費用、縮短工期,最後只能妥協,寄希望於員工加班。
(2)設計者過於自信或出於自尊心問題,對一些技術問題不夠重視,或者擔心估算多被嘲笑。
(3)過分憑經驗。由於有過去的成功經驗,沒有具體分析就認為這次項目估計也差不多,而沒有想到這次項目可能規模更大、項目群組成員更多、素質各異、新員工很多,而且是一個新的行業。
項目組織過小每個公司都希望以最少的成本完成項目,人手不足是大多數項目都會面臨的問題。還有一種情況是項目群組成員的技術水平達不到項目的要求,公司 只能提供這些分配好的技術人員,或者由於專案經理的失誤,在項目工數估算時沒有明確要求技術水平,寄希望於員工自己努力。還有一些專案經理認為,在項目啟 動時不需要高水平的技術人員。
開發計劃不充分沒有良好的開發計劃和開發目標,項目的成功就無從談起。開發計劃太粗略,主要反映在以下幾個方面:(1)工作分擔(責任範圍)不明確,工作分割結構(WBS)與項目組織圖不明確或者不相對應,各成員之間的介面不明確,導致有一些工作根本無人負責。
(2)每個開發階段的提交結果定義不明確,中間結果是否已經完成,完成了多少模糊不清,結果是到了項目後期堆積了大量工作。
(3)開發計劃沒有指定裡程碑或檢查點,也沒有規定設計評審期。
(4)開發計劃沒有規定進度管理方法和職責,導致無法正常進行進度管理。
設計能力不足項目組設計人員能力的低下是項目失敗的原因之一。一方面,由於對技術問題的難度未能正確評價,將設計任務交給了與要求水平不相稱的人員,造成 設計結果無法實現。另一方面,隨著資源外包現象的日益普遍,一些公司經常因工期緊而匆忙將中標的項目部分轉包給其他協作公司,這些公司的設計能力如不加仔 細評價,就會對整個項目造成影響。
專案經理的管理能力不足沒有及時把握進度。專案經理自己也不知道項目的狀態,下屬人員報喜不報憂,害怕報告問題後給自己添麻煩。進度管理必須隨時收集有關專案管理的資料,開發人員總是擔心管理工作會增加自己的工作量,不願配合。管理員甚至不知道應該收集哪些資料。
由於沒有進行週期性項目評審報告會,表面上進展順利而實際上隱藏著危機。管理員總是輕信下屬的報告而沒有加以核實。
出現嚴重問題時,管理員沒有根據現階段狀況重新評價需求分析結果、工數估算、設計結果等就匆忙採取頭痛醫頭、腳痛醫腳的措施,致使問題更嚴重。
以上談到了項目失敗的幾方面原因,實際上還有很多原因,很難一一列舉。在這裡我們沒有篇幅提出如何避免這些問題的對策,但是通過這些原因的列舉,希望能激起讀者的共鳴。