软件项目风险管理
本文通過文獻綜述總結了軟件項目中的常見風險因素及其分類。
從上個世紀發展到現在,軟件早已從解決特殊問題的途徑和信息數據分析的工具演化成一門獨立的產業,但在提供客戶所需要的軟件的能力方面取得的進展卻十分遲緩,軟件行業一直受到無數次進度延遲、交付產品質量差的困擾。同時客戶對“更好、更快、更便宜”的需求的期盼和軟件復雜程度的增加也大大提高了軟件開發人員提高了軟件開發人員提高軟件性能的標準。軟件風險管理研究表明,在行業范圍內,只有16.2%的軟件項目可以做到按時、按預算進行,其余52.7%是在功能減少的情況下交付的,31.1%是在項目完成之前取消的。
1 風險與不確定性
在大多數情況下以客觀的尺度衡量不確定性是非常困難的,不確定性是人主觀心理上的一種難以度量的想法,不確定性的范圍包括是否發生的不確定性、發生于何時的不確定性、發生情況的不確定性以及發生帶來的影響的后果程度的不確定性。在軟件項目開發過程中,缺少信息是軟件風險管理的必要條件,在大多數情況下也是軟件風險管理的普遍特征。缺少信息直接會導致信息的不確定性,從而導致項目管理者的決策產生不確定性,進而造成風險。
不確定性導致風險,即潛在的損失。不確定性可以從不同視角進行分類,下表從三個不同的角度界定了不確定性的類別。
| 觀念 | 不確定性分類 | 定義 | |
| 管理人員 | 時間 | 事件可能發生的時間或應對能力的不確定性。 | |
| 控制 | 沒有權力做出決策,或實施過程中的不一致。 | ||
| 信息 | 做決策所依據的信息不充分或不準確。 | ||
| 分析人員 | 描述 | 沒有明確定義系統的變量的標識信息。 | |
| 量度 | 缺少將數據賦值給描述系統的變量的信息。 | ||
| 事件結果 | 缺少關于可能發生的結果的信息。 | ||
| 開發人員 | 指導價值 | 缺乏明確的目標。 | |
| 工作環境 | 缺乏關于當前決策情況的相關信息。 | ||
| 相關決策 | 缺乏協調。 | ||
軟件項目中的風險是來源于軟件項目開發過程中及產品本身會帶來的損失或危害。風險針對的是還沒有發生的未來,即風險來源于各種選擇的不確定性。風險處于確定性和可變性之間,是處于混沌和清晰明了之間的狀態。進行風險分析時,重要的是量化不確定性的程度以及每個風險可能造成影響的水平。同時,風險還涉及想法、行動、態度、環境等因素的改變,比如項目缺少項目管理者的支持、人員流動、項目組缺乏組織成熟度等等。風險無處不在,只有對風險采取正確的應對措施,才不會讓項目開發過程走偏。
風險通常被定量地定義為概率乘上潛在的損害成本。風險的一種定義為:
在該公式中,表示某種損失出現的概率, 表示其損害成本的大小。之后,Charette注意到,每一個潛在的損害都必須對應的定義一個描述了該風險的存在原因或觸發該風險的環境或事件,因此他用一個三元組公式改進了風險的定義:
在該公式中, 表示在什么場景下會出現損失, 表示出現該損失的概率, 表示其損害成本的大小。場景E中的觸發因素或風險起因即為風險因素, 可以表示為一系列風險因素( )和時間( )的函數:
風險因素是風險發生的潛在因素,是造成損失的間接和內在的原因,比如軟件項目開發過程中進度表估算不切實際,相對于軟件項目超期交付而言,其就是風險因素。
2 軟件項目風險管理
軟件項目風險管理簡單來說就是管理軟件開發項目過程中的風險,即潛在的風險因素。Boehm在1989年提出了軟件風險管理的經典模型,即六個步驟。首先將風險管理分為:風險評估、風險控制,其次,風險評估由風險識別、風險分析和風險優先級排序構成,風險控制由風險管理規劃、風險處理和風險監控組成。
以下是對Boehm的軟件風險管理的六個步驟的簡單解釋:
(1)風險識別:軟件風險管理的第一步,同時也是軟件風險管理的基礎,只有識別出軟件項目自身的潛在風險才能主動的選擇策略去應對風險。
(2)風險分析:分析識別出的風險會對軟件項目造成什么影響,影響程度會有多大,會耗費多少資源等等。
(3)風險優先級排序:根據風險分析的結果進行優先級排序,結合風險影響和資源供給的客觀因素,對風險處理的嚴重級別進行排序。
(4)風險管理規劃:風險管理規劃是規劃和制定如何進行軟件項目風險管理計劃的過程,定義了風險應對方案涉及的方法、人員、時間等因素。
(5)風險處理:針對不同種類、規模、特定的風險采取對應的措施使風險損失對軟件項目造成的影響最小,比如回避、預防、轉移等等。
(6)風險監控:監控項目風險管理計劃的實施過程,目的是核對措施的實際效果與預想是否一致,以判斷接下來采取什么行動。
3 軟件項目風險因素分類
為了更好的歸納整理軟件風險因素,各種各樣的風險因素分類方法也被提出。分類法為組織和研究軟件開發問題的廣度提供了一個框架,因此,它是激發和組織整個軟件開發風險的基礎。根據不同領域的研究需求,軟件項目風險因素有多種不同的分類方法:有的根據軟件開發過程分為需求風險、設計風險、編碼風險、測試風險等等;有的根據項目數據類別分為項目風險、團隊風險、任務風險、過程風險等等……SEI在1990年提出了一套軟件風險管理的標準,里面提到一種軟件風險因素分類的方法,該分類方法在領域內被大多數學者承認并使用,具備很大的參考價值,如下圖。
SEI的標準將軟件項目風險因素分為三個類別:產品工程類(由構建要交付給客戶的產品所需的智力和物理活動組成,包括完整的系統硬件、軟件和文檔)、開發環境類(用于生產產品的方法、程序和工具)、程序約束類(開發軟件的合同、組織和操作因素,但通常不在管理部門的直接控制范圍之內,即外部因素)。
?
?
?
總結
- 上一篇: matlab的算法java_matlab
- 下一篇: Microsoft Dynamics C