王成銳
摘 要:在所有軟件項目的開發過程中,由于存在難以預見和把控的不確定性因素,會給項目帶來難以預估的風險,甚至導致整個項目的失敗。首先介紹了項目中軟件風險的背景,分析了如何識別這些風險。對項目中的風險管理分析、風險管理進行了詳細的研究,提出對風險進行管控的方法論。最后對軟件開發過程中常遇到的風險進行了分析和研究,提出了減少或預防風險發生的幾種辦法。研究軟件項目過程中的風險管理,對于軟件開發和整個項目管理過程有著非常重要的現實意義,也為項目的按期交付,成本維護等起到重要的現實作用。
關鍵詞:軟件風險:軟件項目:風險管理:風險控制:風險方法
隨著社會對軟件的需求增大,軟件的開發技術不斷更新,難度不斷增大,但軟件的數量卻依然增加很多,同時隨著社會節奏加快,軟件的供應商需要提供不間斷的軟件更新服務。與此同時,各種難度的上升,給企業在開發軟件的過程中加大了風險。軟件項目能否開發成功,關系著一個項目的生死存亡,而且隨著開發軟件的業務增大,用戶對軟件的質量和用途也隨之提高,這對軟件開發商造成了巨大的壓力,在這種情況下,軟件風險管理和控制成為軟件開發成敗的關鍵點。
根據有關資料調查顯示,有百分之十到百分之三十的軟件項目在開發的過程中被取消,剩下的軟件項目有的是沒有在預期內完成,或者是軟件開發的過程中超出了經費的預算。除此之外還有軟件項目因為風險管理和控制失敗的大約占百分之九十。目前國內的大多數軟件開發企業還缺乏對軟件開發項目的風險認識,缺少系統、有效的度量和評價的手段。所以風險管理是項目管理中不可缺少的一部分,而軟件項目的風險管理更是軟件項目管理中的重要內容。大量的統計表明,實行有效的風險管理是軟件項目開發過程中減少損失的一種重要手段。風險管理不僅僅存在于項目可行性研究階段,是貫穿在軟件項目開發周期的全過程中。建立有效的風險識別、風險分析、風險計劃、風險跟蹤和風險對策的機制,是有效提高軟件開發成功率的方法之一。
一、風險管理的內容
為了最大化的減少軟件風險的發生,可對軟件項目進行風險管理。而軟件項目風險管理過程是指軟件風險從認識到采取措施的過程包括風險識別、風險分析、風險計劃、風險跟蹤和風險對策等,從而將可控因素最大化,將不可控因素到最小,從而對未知的風險消滅,從而對風險進行回避或者緩解。
1.1風險識別
風險識別的常用方法通常有現場觀察法,財務報表法、環境分析法、流程圖法、座談法、相關部門配合法等。風險識別要確定影響本項目的潛在威脅的來源以及在何種條件有影響, 怎么產生并有什么特性等,風險識別并不是一次就可以后顧無憂的,需要貫徹到整個軟件的生命周期中。
1.2風險評估
風險評估時對風險影響力進行衡量的活動,即衡量風險發生的概率和風險發生后對項目目標的影響程度,從而為后面制定風險對策提供依據。對已識別的風險要進行估計和評價,常用的方法有:概率分布、外推法、多目標分析法等。
1.3風險計劃
風險計劃:風險計劃是通過技術手段或者其他方法來降低風險的發生, 將風險評估后的結果進行處理。風險計劃就是在軟件開發的過程中起指導作用,如先處理那個風險,怎么消除風險,如何避免風險等。
1.4風險應對
風險應對就是對風險計劃的執行,共有三種方向來進行風險應對。一是風險控制法,對存在風險進行主動出擊進行消滅或許能避免風險:二是轉移風險,將存在的風險進行轉移:三是風險存留,就是風險威脅不大時,可以對風險不采取任何措施。當然在軟件的開發過程中,要想有效的消滅風險,就得讓風險還在初級階段的時候消滅。再者就是風險發生時,要考慮后果再最大化的緩解風險。
二、常見風險分析和研究
2.1組織和管理風險
一是管理層做出了錯誤決定,技術決策導致計劃進度緩慢, 延長計劃時間; 二是低效的項目組結構降低生產率;三是管理層審查決策的周期比預期的時間長;四是預算削減,打亂項目計劃;五是工作失誤與重復工作;六是非技術的第三方的工作時間比預期的延長。
2.2需求風險
在軟件開發的過程中,如果不能控制和需求有關的風險因素,那么將會產生不好的結果,如軟件有可能是錯誤的軟件或者質量不合格的軟件。當然很多軟件開發項目都會面對這些不確定的威脅,如果早期對于這些不確定的風險置之不理,那么在項目過程中也得不到解決,那么“千里之堤,潰于蟻穴” ,這些不能控制的威脅將對軟件成功的開發造成巨大的威脅。與客戶相關的風險因素有,第一客戶對軟件缺少清晰的認識,沒有對開發的軟件各方面的特性以及功能有個全面了解。第二對產品需求缺少認同,當軟件成功開發時,但對軟件由于認識度不夠或者別的原因導致對開發出來的軟件缺少認同感。同時還存在一些需求風險因素如在做需求中客戶參與不夠,又或者是沒有優先需求,再就是由于不確定的需要導致新的市場,其次是不斷變化需求和缺少有效的需求變化管理過程以及對需求的變化缺少相關分析等。
2.3合同風險
風險存在的概率很大,大多是因為合同里的條款比較多引起的。比如如果在軟件開發的過程中,沒有對開發軟件的范圍有準確的定義,并且成為合同中一部分時,此項目即便成功了,也很難驗收,并且項目開發的時間加長了,極大的加大了開發的成本。這就符合了軟件項目經常以一定的價格簽訂合同,但簽約方卻希望更多的功能。
2.4設計和實施的風險
在軟件開發的準備工作,因為設計不滿足要求,導致軟件重復設計。在無法使用已有的代碼或者庫實現新開發軟件,導致軟件的必要功能有問題,因此軟件開發人員需要重新設計代碼或庫現實又或者重新開發軟件的功能。其次認為增強工具能節省很多時間,但卻沒達到應有的預期效果。最后,不能有效的連接整合開發的模塊,需要重新設計和開發。
三、結論
通過以上的研究,可以說項目風險管理是項目管理的核心和難點而針對項目中的相關風險分析與應對措施, 我覺得我們的主要研究工作應該如下幾點:
(1) 要較為全面地了解風險的概念與特點,認識項目與項目風險、項目管理與項目風險的區別;
(2) 風險管理實際上是一種經驗和方法的積累,其應對風險的能力大小也主要取決于對相關經驗與資料的整理與積累, 并且對于過往經驗的運用是否正確等。
(3) 風險的識別是風險分析和應對的基礎和前提,是關系到項目成敗與否的關鍵。
(4) 得出了對于小型軟件公司的項目管理的方法和可能存在風險的最高的階段中。要杜絕掉職責不明、權限不清、人浮于事的情況發生,應該建設一個高效,團結、配合程度高的精干的開發團隊。
參考文獻:
[1] 林時蘊. 軟件項目風險管理研究[D]. 合肥工業大學, 2007.
[2] 牟玲玲. 軟件項目風險管理研究綜述[J]. journal6, 2006, 43(10):202-205.
[3]劉明友, 帥建鋒. 基于CMMI的軟件項目風險管理研究[J]. 電腦知識與技術, 2013(1):63-66.
[4] 徐俊, 雷發勝. 復雜軟件項目風險管理研究[J]. 軟件導刊, 2008(11):47-49.