摘要:在分析軟件項目風險成因的基礎上,對項目管理中的風險分析、風險管理進行了詳細的研究,提出了軟件項目風險的量化管理和降低軟件項目風險性的方法。該方法有助于軟件項目管理者更好地理解潛在的主要風險因素,從而進行更好的風險管理。
關鍵詞:軟件項目;風險管理;風險分析
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)29-0377-02
The Research on the Methods to Reduce the Risk of Software Project
WANG Wei
(School of Software Engineering,Tongji University,Shanghai 200092,China)
Abstract: Based on the analysis the factors of the risk of software project, the approaches of software risk analysis and software risk management are discussed. Then,the software project risk quantificational manage and the ways to decrease software project risk is pointed out.The study can help the software project manager understanding the software project risk better and making corresponding risk managemen.
Key words: software item; risk managemen; risk analysis
1 引言
隨著信息技術的飛速發展,軟件產品的規模也越來越龐大,個人單打獨斗的作坊式開發方式已經越來越不適應發展的需要。各軟件企業都在積極將軟件項目管理引入開發活動中。軟件開發不同于其他產品的制造,軟件的整個過程都是設計過程(沒有制造過程);另外,軟件開發不需要使用大量的物質資源,而主要是人力資源;并且,軟件開發的產品只是程序代碼和技術文件,并沒有其他的物質結果。基于上述特點,軟件項目管理與其他項目管理相比,有很大的獨特性,包括:抽象性、單件生產、勞動密集,自動化程度低、使用方法繁瑣,維護困難、軟件工作滲透了人的因素等。
軟件項目的特殊性使其開發難度越來越大,各企業、團隊面臨的困難和風險也越來越多。近些年來,人們開始重視軟件項目風險的研究,把項目風險納入軟件工程的一個重要研究范疇。研究的目的就是探索風險的概念、特性,風險處理的策略、方法,以降低或克服軟件項目風險的危害性,從而提高軟件產品的質量。
2 軟件項目的風險成因
風險因素是指可能引起風險的不確定因素,識別風險因素對于風險管理有非常重要的意義。
2.1 外部因素
影響軟件項目開發風險的外部因素主要包括:最終客戶的相關信息、與內部或者外部中間承包商之間的關系、經過有效培訓或者有經驗的客戶從另外一個項目獲得的相關經驗。外部因素通常很難控制,這就要求更多地協調項目之外的關系,對這些外部因素進行有效監控,及時采取應對措施。
2.2 管理因素
管理因素包括:項目的所有權和決策權不明確、實際的項目狀態不清晰、不恰當的任務分工計劃、對客戶不切實際地承諾、不切實際的期望、團隊成員間的矛盾沖突等。項目管理的缺陷也會影響到項目成功。由于項目經理往往是計劃的制定人,往往不可避免地忽略或者避開自己管理方面的問題,而這恰恰是不可忽視的。
2.3 需求因素
需求問題主要有:缺乏對產品的認識和產品需求的相關文件、沒有區分需求的優先級、在分析過程中缺乏與客戶的溝通、新的不確定的需求不斷產生、管理過程因無效的需求而變更等。大多數軟件項目都面臨不確定甚至是較為混亂的需求。如果不及時對需求狀況進行控制,那么以后的項目過程中會產生更大的問題,甚至導致項目失敗。
2.4 技術知識因素
軟件技術不斷發展,意味著項目團隊很可能缺乏足夠的技術知識以保證項目的成功。這些因素可以歸納為:缺乏必要的培訓、對相關技術有不正確的理解、缺乏相關行業領域的經驗、采用的技術方法沒有起到作用或沒有滿足這些技術方法的前提條件、忽視了編寫文檔的過程或文檔不充分。
3 軟件項目的風險研究
3.1 項目風險管理的流程
風險管理包括五個階段:風險管理計劃、風險辨識、風險分析、風險跟蹤、風險控制(見圖1)。
1) 風險管理計劃是敘述軟件項目開發過程風險管理的目標、范圍、程序的文檔。風險管理計劃明確了風險管理的目的、界定了風險管理的范圍、賦予了風險管理的權力、描述了風險管理的程序。風險管理計劃由企業決策者和項目主管共同制定。
2) 風險辨識識別出所有可能影響項目開發的風險因素和風險事件,確認風險不確定性的客觀存在、區分風險因素和風險事件、建立風險目錄清單并建立風險目錄摘要。
3) 風險分析應用分析技術,用定性、定量方式處理風險不確定性。風險分析是風險管理的最重要環節,軟件開發過程風險分析的任務包括:風險分類、分析風險后果、制訂風險反應行動、研究風險影響、制訂風險控制計劃。
4) 風險跟蹤對項目開發過程的數據(開發進程、人力資源投入情況等)進行動態收集、匯總、統計,并將結果及時報告給項目管理者,提供其決定是否采取以及采取何種風險控制行動。風險跟蹤的任務包括風險度量數據收集、風險度量數據分類匯總、風險事件發展狀況預測、風險險情報告。
5) 風險控制根據風險報告,采取風險行動來消除風險因素,從而達到避免風險事件的發生。風險控制體現為開發活動的具體行為的實施過程,如增加開發經費、增加開發人員、采用其他開發方法和技術、使用新的開發工具等。同時風險管理者應對風險控制的實施過程進行監督,并根據執行的效果及時調整風險控制行為。
3.2 項目風險管理評價體系
根據風險危害程度,可將風險劃分為災難性的、嚴重的、輕微的和可忽略的。在軟件項目開發時必須要進行風險預測,對項目的風險性進行評價,主要從兩個方面評估每一個風險:一是風險發生的概率或可能性;二是如果風險發生了,所產生的后果。項目計劃者、管理者和技術人員,一起執行如下4個風險預測活動:1) 建立一個尺度,以標記風險發生的可能性;2) 描述風險的后果;3) 估算風險對項目及產品的影響;4) 評價風險預測的整體精確度,以免產生誤解。
在風險識別的基礎上,應建立一套完整的風險評價體系來進行風險分析(見表1),并把分析結果根據風險優先級進行量化,從而為風險跟蹤和風險控制提供充分條件,有效地規避風險。
3.3 項目風險的量化
把風險分析結果根據風險優先級進行量化,根據Pareto的 80-20 規則:整個軟件項目風險的80%(即可能導致失敗的80%的潛在因素)能夠由僅僅20%的已標出風險來說明。因此,重要的是量化不確定的程度和每個風險的損失程度。參照風險的影響力和重要程度進行組合評價量化,可以把可能性定義成 0-20,分為5個等級(1、2、3、4、5)。將后果分為 4 個等級(低、中等、高、關鍵的)(見表2)。
對風險按照風險影響進行優化排序,優先級別最高的風險,其風險嚴重程度等于1;優先級別最低的風險,其風險嚴重程度等于 20。對優先級別的風險應優先處理,從而可以從整體上降低軟件開發的風險。
3.4 降低軟件項目的風險方法
有以下幾種方法值得借鑒:
1) 軟件工程方法學
在軟件項目開發過程中!全面使用軟件工程的原理、方法、技術和工具,加強分析、設計、項目管理、及質量管理。這是降低軟件風險的主要手段。
2) 軟件系統建模軟件開發系統建模的完整與嚴密性直接關系到系統質量。系統建模與軟件風險有直接關系。我們應采用統一建模語言UML來為降低軟件風險提供保證
3) 可行性研究
把項目的風險分析與風險處理作為一個重要的考慮范疇納入軟件開發的過程中,并作為一個重要任務!要一一列出可能遇到的主要風險,并仔細分析其發生的可能性和危害性,提出應變措施。
4) 軟件過程管理
應對軟件過程進行全面控制和管理。采用統一軟件開發過程的原理,使用用例驅動過程、迭代與增量開發過程、以構架為中心的過程等新方法。
5) 軟件質量管理
軟件工程活動的最終目標是得到高質量的軟件產品。質量與風險是緊密聯系的!質量越高,風險發生的可能越小;質量越差,風險發生的可能越大。所以應全面加強項目的質量保證措施和監管水平,以降低軟件風險性
6) 軟件測試與維護
測試與維護是發現問題和風險的一個重要手段。采用適當方法,使風險早暴露、早發生,以使我們早應對,早采取防范和處理措施。
4 結束語
由于軟件工程與一般工程相比,其特殊性主要體現在抽象性上。雖然前面對軟件開發中的風險進行了分析,列舉了一些開發過程中可能存在的風險,但軟件開發中的風險是千變萬化的,有很多隱含的潛在風險,需要從整體上、全過程上對風險進行深入細致地研究。
參考文獻:
[1] 覃征.軟件項目管理[M].北京:清華大學出版社,2004.
[2] 黃全舟.軟件風險分析與風險管理研究[J].福建電腦,2005(5):7-9.
[3] 陶劉強,成筠.淺析軟件開發中的風險管理[J].中國管理信息化,2006(2):86-88.
[4] 梁濤.基于聚類分析的軟件項目風險趨勢研究[J].信息工程大學學報,2006(3):88-102.
[5] 趙薔.軟件項目風險管理研究[J].計算機工程與設計,2007(7):3312-3315.
[6] 余堅,鄭躍斌.信息系統開發過程風險管理的實施模型[J].計算機工程與應用,2002(12):110-153.
[7] 伊萊恩 M 霍爾.風險管理—軟件系統開發方法[M].北京:清華大學出版社,2002.