風險是遭受損失的一種可能性,發(fā)生在20 世紀70 年代初期的軟件危機徹底讓人們認識到軟件開發(fā)過程中存在的風險。1989 年Boehm 首次提出了軟件開發(fā)過程中風險管理這一概念,如今隨著計算機技術(shù)的發(fā)展,軟件的復雜度越來越高,而且針對具體行業(yè)的項目日益增多,對軟件項目系統(tǒng)化、規(guī)范化管理的需求越來越迫切。
風險管理是項目管理中不可缺少的一部分,而軟件項目的風險管理更是軟件項目管理中的重要內(nèi)容。大量的統(tǒng)計表明,實行有效的風險管理是軟件項目開發(fā)過程中減少損失的一種重要手段。風險管理不僅僅存在于項目可行性研究階段,是貫穿在軟件項目開發(fā)周期的全過程中。
風險管理是指辨識、分析和控制風險的活動,這組活動不是孤立的,而是一組系統(tǒng)化、持續(xù)化的過程。根據(jù)美國項目管理學會的報告,風險管理有三個定義: (1)風險管理是系統(tǒng)識別和評估風險因素的形式化過程。(2)風險管理是識別和控制能夠引起不希望變化的潛在領(lǐng)域和事件的形式、系統(tǒng)的方法。風險管理是在項目期間識別、分析風險因素,采取必要對策的決策科學與藝術(shù)的結(jié)合。軟件項目風險管理出現(xiàn)在上世紀80 年代末,到現(xiàn)在只有三十多年的歷程,在軟件項目風險管理領(lǐng)域中,人們多是借鑒于工程項目的管理方法來解決軟件項目開發(fā)中出現(xiàn)的風險問題,并且對于軟件項目的風險管理概念的理解是來自于其他工程項目的風險管理,并在其基礎(chǔ)上有所討論和改進。
因此,軟件項目風險管理是指項目管理團隊通過風險識別、風險量化和風險控制,采用多種管理方法、技術(shù)和工具,對軟件項目所涉及的各種風險實施有效的控制和管理,采取主動行動,盡量使風險事件的有利后果(帶來的機會)最大,而使風險事件所帶來的不利后果(威脅)降到最低,以最少的成本保證項目安全、可靠的實施,從而實現(xiàn)項目的總目標。
軟件項目風險管理過程一般包括風險識別、風險分析、風險應對三個過程元素。
Boehm 將軟件項目風險管理過程分為兩個基本步驟:風險評估和風險控制。其中第一步風險評估包括風險識別、風險分析和風險優(yōu)先級;就是說首先提出一個風險列表,評估列表中各項風險出現(xiàn)的概率和影響,從而判定風險的級別即風險考慮的優(yōu)先順序,這個風險列表是風險控制的基礎(chǔ);當風險因素的優(yōu)先級判定出來后,第二步就是風險控制,包括風險管理計劃、風險化解和風險監(jiān)控。這一步中,首先要制定一個應對每項重大風險的方案,并按照方案實際執(zhí)行化解風險的活動,并在過程中進行監(jiān)控。
項目風險識別是確定何種風險事件可能會影響項目,并將這些風險的特性整理成文檔。而軟件項目的風險由于軟件項目的復雜性、特殊性,可以歸納為以下三個主要方面:
(1)需求風險,就是需求不確定的風險,軟件產(chǎn)品是非直觀的,是一種一次性獨一無二的努力,具有不可重復性,包含了許多不確定性的因素。比如軟件系統(tǒng)使用者對于系統(tǒng)將要現(xiàn)的目標即具體需求不能準確地描述。此外,軟件項目開發(fā)鏈長,用戶的需求不斷地在變化。
(2)技術(shù)風險,軟件開發(fā)過程中很多做法沒有現(xiàn)成的行業(yè)規(guī)范和標準,而且軟件技術(shù)發(fā)展飛速,各種新技術(shù)層出不窮,潛在的設(shè)計、實現(xiàn)、維護等方面的問題,會威脅到軟件產(chǎn)品的質(zhì)量和交互時間。
(3)管理風險,軟件項目對協(xié)調(diào)性的管理工作要求更高,管理和控制更困難更復雜,使得管理者任務(wù)承擔者很難達成雙方一致的目標。項目內(nèi)部人員溝通不充分,導致開發(fā)人員不能徹底了解用戶對系統(tǒng)的具體需求,對系統(tǒng)設(shè)計的理解存在偏差。
Boehm 博士開發(fā)了一套風險分析模式,其中核心是前10 位的風險識別列表,它有助于識別高優(yōu)先級的對需求、技術(shù)和管理方面有影響的風險項目,該