軟體項目風險是指在軟體開發過程中遇到的預算和進度等方面的問題以及這些問題對軟體項目的影響。軟體項目風險會影響專案計劃的實現,如果項目風險變成現實,就有可能影響項目的進度,增加項目的成本,甚至使軟體項目不能實現。如果對項目進行風險管理,就可以最大限度的減少風險的發生。但是,目前國內的軟體企業不太關心軟體項目的風險管理,結果造成軟體項目經常性的延期、超過預算,甚至失敗。成功的專案管理一般都對項目風險進行了良好的管理。因此任何一個系統開發項目都應將風險管理作為軟體專案管理的重要內容。
在項目風險管理中,存在多種風險管理方法與工具,軟體專案管理只有找出最適合自己的方法與工具並應用到風險管理中,才能盡量減少軟體項目風險,促進項目的成功。
項目風險管理
項目風險管理是指為了最好的達到項目的目標,識別、分配、應對專案生命週期內風險的科學與藝術。項目風險管理的目標是使潛在機會或回報最大化,使潛在風險最小化。風險管理涉及的主要過程包括:風險識別,風險量化,風險應對計劃制定和風險監控,1所示。風險識別在項目的開始時就要進行,並在項目執行中不斷進行。就是說,在項目的整個生?
(1)需求風險
①需求已經成為項目基準,但需求還在繼續變化;
②需求定義欠佳,而進一步的定義會擴充項目範疇;
③添加額外的需求;
④產品定義含混的部分比預期需要更多的時間;
⑤在做需求中客戶參與不夠;
⑥缺少有效需求變化管理過程。
(2)計劃編製風險
①計劃、資源和產品定義全憑客戶或上層領導口頭指令,並且不完全一致;
②計劃是最佳化的,是"最佳狀態",但計劃不現實,只能算是"期望狀態";
③計劃基於使用特定的小組成員,而那個特定的小組成員其實指望不上;
④產品規模(程式碼數、功能點、與前一產品規模的百分比)比估計的要大;
⑤完成目標日期提前,但沒有相應地調整產品範圍或可用資源;
⑥涉足不熟悉的產品領域,花費在設計和實現上的時間比預期的要多。
(3)組織和管理風險
①僅由管理層或市場人員進行技術決策,導致計划進度緩慢,計劃時間延長;
②低效的項目組結構降低生產率;
③管理層審查決策的周期比預期的時間長;
④預算削減,打亂專案計劃;
⑤管理層作出了打擊項目組織積極性的決定;
⑥缺乏必要的規範,導致工作失誤與重複工作;
⑦非技術的第三方的工作(預算批准、裝置採購批准、法律方面的審查、安全保證等)時間比預期的延長。
(4)人員風險
①作為先決條件的任務(如培訓及其他項目)不能按時完成;
②開發人員和管理層之間關係不佳,導致決策緩慢,影響全域;
③缺乏激勵措施,士氣低下,降低了生產能力;
④某些人員需要更多的時間適應還不熟悉的軟體工具和環境;
⑤項目後期加入新的開發人員,需進行培訓並逐漸與現有成員溝通,從而使現有成員的工作效率降低;
⑥由於項目群組成員之間發生衝突,導致溝通不暢、設計欠佳、介面出現錯誤和額外的重複工作;
⑦不適應工作的成員沒有調離項目組,影響了項目組其他成員的積極性;
⑧沒有找到項目急需的具有特定技能的人。
(5)開發環境風險
①設施未及時到位;
②設施雖到位,但不配套,如沒有電話、網線、辦公用品等;
③設施擁擠、雜亂或者破損;
④開發工具未及時到位;
⑤開發工具不如期望的那樣有效,開發人員需要時間建立工作環境或者切換新的工具;
⑥新的開發工具的學習期比預期的長,內容繁多。
(6)客戶風險
①客戶對於最後交付的產品不滿意,要求重新設計和重做;
②客戶的意見未被採納,造成產品最終無法滿足使用者要求,因而必須重做;
③客戶對規劃、原型和規格的審核決策周期比預期的要長;
④客戶沒有或不能參與規劃、原型和規格階段的審核,導致需求不穩定和產品生產周期的變更;
⑤客戶回覆的時間(如回答或澄清與需求相關問題的時間)比預期長;
⑥客戶提供的組件品質欠佳,導致額外的測試、設計和整合工作,以及額外的客戶關係管理工作。
(7)產品風險
①矯正品質低下的不可接受的產品,需要比預期更多的測試、設計和實現工作;
②開發額外的不需要的功能(鍍金),延長了計划進度;
③嚴格要求與現有系統相容,需要進行比預期更多的測試、設計和實現工作;
④要求與其他系統或不受本項目組控制的系統相連,導致無法預料的設計、實現和測試工作;
⑤在不熟悉或未經檢驗的軟體和硬體環境中運行所產生的未預料到的問題;
⑥開發一種全新的模組將比預期花費更長的時間;
⑦依賴正在開發中的技術將延長計划進度。
(8)設計和實現風險
①設計品質低下,導致重複設計;
②一些必要的功能無法使用現有的代碼和庫實現,開發人員必須使用新的庫或者自行開發新的功能