軟件項目風(fēng)險管理是軟件項目管理的重要內(nèi)容。在進(jìn)行軟件項目風(fēng)險管理時,要辯識風(fēng)險,評估它們出現(xiàn)的概率及產(chǎn)生的影響,然后建立一個規(guī)劃來管理風(fēng)險。風(fēng)險管理的主要目標(biāo)是預(yù)防風(fēng)險。
軟件項目風(fēng)險是指在軟件開發(fā)過程中遇到的預(yù)算和進(jìn)度等方面的問題以及這些問題對軟件項目的影響。軟件項目風(fēng)險會影響項目計劃的實現(xiàn),如果項目風(fēng)險變成現(xiàn)實,就有可能影響項目的進(jìn)度,增加項目的成本,甚至使軟件項目不能實現(xiàn)。如果對項目進(jìn)行風(fēng)險管理,就可以最大限度的減少風(fēng)險的發(fā)生。但是,目前國內(nèi)的軟件企業(yè)不太關(guān)心軟件項目的風(fēng)險管理,結(jié)果造成軟件項目經(jīng)常性的延期、超過預(yù)算,甚至失敗。成功的項目管理一般都對項目風(fēng)險進(jìn)行了良好的管理。因此任何一個系統(tǒng)開發(fā)項目都應(yīng)將風(fēng)險管理作為軟件項目管理的重要內(nèi)容。
在項目風(fēng)險管理中,存在多種風(fēng)險管理方法與工具,軟件項目管理只有找出最適合自己的方法與工具并應(yīng)用到風(fēng)險管理中,才能盡量減少軟件項目風(fēng)險,促進(jìn)項目的成功。
軟件項目的風(fēng)險管理是軟件項目管理的重要內(nèi)容。在進(jìn)行軟件項目風(fēng)險管理時,要辯識風(fēng)險,評估它們出現(xiàn)的概率及產(chǎn)生的影響,然后建立一個規(guī)劃來管理風(fēng)險。風(fēng)險管理的主要目標(biāo)是預(yù)防風(fēng)險。本文探討了風(fēng)險管理的主要內(nèi)容和方法,介紹了風(fēng)險管理的經(jīng)典理論,比較了幾種主流的風(fēng)險管理策略和模型。
一、引言
近幾年來軟件開發(fā)技術(shù)、工具都有了很大的進(jìn)步,但是軟件項目開發(fā)超時、超支、甚至不能滿足用戶需求而根本沒有得到實際使用的情況仍然比比皆是。軟件項目開發(fā)和管理中一直存在著種種不確定性,嚴(yán)重影響著項目的順利完成和提交。但這些軟件風(fēng)險并未得到充分的重視和系統(tǒng)的研究。直到20世紀(jì)80年代,Boehm比較詳細(xì)地對軟件開發(fā)中的風(fēng)險進(jìn)行了論述,并提出軟件風(fēng)險管理的方法。Boehm認(rèn)為,軟件風(fēng)險管理指的是"試圖以一種可行的原則和實踐,規(guī)范化地控制影響項目成功的風(fēng)險",其目的是"辨識、描述和消除風(fēng)險因素,以免它們威脅軟件的成功運作"。
在此基礎(chǔ)上,業(yè)界對軟件風(fēng)險管理的研究開始慢慢豐富起來,理論上對風(fēng)險進(jìn)行了一些分類,提出了風(fēng)險管理的思路;實踐上也出現(xiàn)了一些定量管理風(fēng)險的方法和風(fēng)險管理的軟件工具。雖然業(yè)界對風(fēng)險管理表現(xiàn)了極大的興趣,做出了不少努力,但似乎很少開發(fā)項目的組織真正積極地在軟件開發(fā)過程中使用風(fēng)險管理的方法。1995年IWSED(International Workshop on Software Engineering Data)會議做出的調(diào)查顯示:風(fēng)險管理技術(shù)沒有得到廣泛應(yīng)用的原因并不是大家不相信這種技術(shù)的實效性,而是對風(fēng)險管理的技術(shù)和實踐缺乏了解。因此,我們認(rèn)為很有必要對風(fēng)險管理進(jìn)行研究。
二、軟件項目風(fēng)險管理
軟件開發(fā)中的風(fēng)險是指軟件開發(fā)過程中及軟件產(chǎn)品本身可能造成的傷害或損失。風(fēng)險關(guān)注未來的事情,這意味著,風(fēng)險涉及選擇及選擇本身包含的不確定性,軟件開發(fā)過程及軟件產(chǎn)品都要面臨各種決策的選擇。風(fēng)險是介于確定性和不確定性之間的狀態(tài),是處于無知和完整知識之間的狀態(tài)。另一方面,風(fēng)險將涉及思想、觀念、行為、地點等因素的改變。
當(dāng)在軟件工程領(lǐng)域考慮風(fēng)險時,我們要關(guān)注以下的問題:什么樣的風(fēng)險會導(dǎo)致軟件項目的徹底失;用戶需求、開發(fā)技術(shù)、目標(biāo)計算機(jī)以及所有其他與項目有關(guān)的因素的改變將會對按時交付和總體成功產(chǎn)生什么影響;對于采用何種方法和工具,需要多少人員參與工作的問題,我們?nèi)绾芜x擇和決策;軟件質(zhì)量要達(dá)到什么程度才是"足夠的"。當(dāng)沒有辦法消除風(fēng)險,甚至連試圖降低該風(fēng)險也存在疑問時,這些風(fēng)險就是真正的風(fēng)險了。在我們能夠標(biāo)識出軟件項目中的真正風(fēng)險之前,識別出所有對管理者和開發(fā)者而言均為明顯的風(fēng)險是很重要的。
風(fēng)險管理在項目管理中占有非常重要的地位。首先,有效的風(fēng)險管理可以提高項目的成功率。其次,風(fēng)險管理可以增加團(tuán)隊的健壯性。與團(tuán)隊成員一起進(jìn)行風(fēng)險分析可以讓大家對困難有充分估計,對各種意外有心理準(zhǔn)備,大大提高組員的信心,從而穩(wěn)定隊伍。第三,有效的風(fēng)險管理可以幫助項目經(jīng)理抓住工作重點,將主要精力集中于重大風(fēng)險,將工作方式從被動救火轉(zhuǎn)變?yōu)橹鲃臃婪丁?br /> 被動風(fēng)險策略是針對可能發(fā)生的風(fēng)險來監(jiān)督項目,直到它們變成真正的問題時,才會撥出資源來處理它們。更普遍的是,軟件項目組對風(fēng)險不聞不問,直到發(fā)生了錯誤才趕緊采取行動,試圖迅速地糾正錯誤。這種管理模式常常被稱為"救火模式"。當(dāng)補(bǔ)救的努力失敗后,項目就處在真正的危機(jī)之中了。
對于風(fēng)險管理的一個更聰明的策略是主動式的。主動策略早在技術(shù)工作開始之前就已經(jīng)啟動了。標(biāo)識出潛在的風(fēng)險,評估它們出現(xiàn)的概率及產(chǎn)生的影響,對風(fēng)險按重要性進(jìn)行排序,然后,軟件項目組建立一個計劃來管理風(fēng)險。主動策略中的風(fēng)險管理,其主要目標(biāo)是預(yù)防風(fēng)險。但是,因為不是所有的風(fēng)險都能夠預(yù)防,所以,項目組必須建立一個應(yīng)付意外事件的計劃,使其在必要時能夠以可控的及有效的方式做出反應(yīng)m任何一個系統(tǒng)開發(fā)項目都應(yīng)將風(fēng)險管理作為軟件項目管理的重要內(nèi)容。
在進(jìn)行軟件項目風(fēng)險管理時,要標(biāo)識出潛在的風(fēng)險,評估它們出現(xiàn)的概率及產(chǎn)生的影響,并按重要性加以排序,然后建立一個規(guī)劃來管理風(fēng)險。風(fēng)險管理的主要目標(biāo)是預(yù)防風(fēng)險,但不是所有的風(fēng)險都能夠預(yù)防。所以必須建立一個意外事件計劃,使其在必要時能以可控的和有效的方式做出反應(yīng)。風(fēng)險管理目標(biāo)的實現(xiàn)包含三個要素。首先,必須在項目計劃書中寫下如何進(jìn)行風(fēng)險管理;第二,項目預(yù)算必須包含解決風(fēng)險所需的經(jīng)費,如果沒有經(jīng)費,就無法達(dá)到風(fēng)險管理的目標(biāo);第三,評估風(fēng)險時,風(fēng)險的影響也必須納入項目規(guī)劃中。
風(fēng)險管理涉及的主要過程包括:風(fēng)險識別,風(fēng)險量化,風(fēng)險應(yīng)對計劃制定和風(fēng)險監(jiān)控,如圖1所示[1][3]。風(fēng)險識別在項目的開始時就要進(jìn)行,并在項目執(zhí)行中不斷進(jìn)行。就是說,在項目的整個生命周期內(nèi),風(fēng)險識別是一個連續(xù)的過程。
風(fēng)險識別:風(fēng)險識別包括確定風(fēng)險的來源,風(fēng)險產(chǎn)生的條件,描述其風(fēng)險特征和確定哪些風(fēng)險事件有可能影響本項目。風(fēng)險識別不是一次就可以完成的事,應(yīng)當(dāng)在項目的自始至終定期進(jìn)行。
風(fēng)險量化:涉及對風(fēng)險及風(fēng)險的相互作用的評估,是衡量風(fēng)險概率和風(fēng)險對項目目標(biāo)影響程度的過程。風(fēng)險量化的基本內(nèi)容是確定那些事件需要制定應(yīng)對措施。。
風(fēng)險應(yīng)對計劃制定:針對風(fēng)險量化的結(jié)果,為降低項目風(fēng)險的負(fù)面效應(yīng)制定風(fēng)險應(yīng)對策略和技術(shù)手段的過程。風(fēng)險應(yīng)對計劃依據(jù)風(fēng)險管理計劃、風(fēng)險排序、風(fēng)險認(rèn)知等依據(jù),得出風(fēng)險應(yīng)對計劃、剩余風(fēng)險、次要風(fēng)險以及為其它過程提供得依據(jù)。
風(fēng)險監(jiān)控:涉及整個項目管理過程中的風(fēng)險進(jìn)行應(yīng)對。該過程的輸出包括應(yīng)對風(fēng)險的糾正措施以及風(fēng)險管理計劃的更新。
每個步驟所使用的工具和方法詳見表1:
風(fēng)險管理步驟 所使用的工具、方法
風(fēng)險識別 頭腦風(fēng)暴法、面談、Delphi法、核對表、SWOT技術(shù)
風(fēng)險量化 風(fēng)險因子計算、PERT估計、決策樹分析、風(fēng)險模擬
風(fēng)險應(yīng)對計劃制定 回避、轉(zhuǎn)移、緩和、接受
風(fēng)險監(jiān)控 核對表、定期項目評估、掙值分析
三、軟件項目中的風(fēng)險
軟件項目的風(fēng)險無非體現(xiàn)在以下四個方面:需求、技術(shù)、成本和進(jìn)度。IT項目開發(fā)中常見的風(fēng)險有如下幾類:
ü 需求風(fēng)險
、傩枨笠呀(jīng)成為項目基準(zhǔn),但需求還在繼續(xù)變化;②需求定義欠佳,而進(jìn)一步的定義會擴(kuò)展項目范疇;③添加額外的需求;④產(chǎn)品定義含混的部分比預(yù)期需要更多的時間;⑤在做需求中客戶參與不夠;⑥缺少有效的需求變化管理過程。
ü 計劃編制風(fēng)險
①計劃、資源和產(chǎn)品定義全憑客戶或上層領(lǐng)導(dǎo)口頭指令,并且不完全一致;②計劃是優(yōu)化的,是"最佳狀態(tài)",但計劃不現(xiàn)實,只能算是"期望狀態(tài)";③計劃基于使用特定的小組成員,而那個特定的小組成員其實指望不上;④產(chǎn)品規(guī)模(代碼行數(shù)、功能點、與前一產(chǎn)品規(guī)模的百分比)比估計的要大;⑤完成目標(biāo)日期提前,但沒有相應(yīng)地調(diào)整產(chǎn)品范圍或可用資源;⑥涉足不熟悉的產(chǎn)品領(lǐng)域,花費在設(shè)計和實現(xiàn)上的時間比預(yù)期的要多。
ü 組織和管理風(fēng)險
、賰H由管理層或市場人員進(jìn)行技術(shù)決策,導(dǎo)致計劃進(jìn)度緩慢,計劃時間延長;②低效的項目組結(jié)構(gòu)降低生產(chǎn)率;③管理層審查 決策的周期比預(yù)期的時間長;④預(yù)算削減,打亂項目計劃;⑤管理層作出了打擊項目組織積極性的決定;⑥缺乏必要的規(guī)范,導(dǎo)至工作失誤與重復(fù)工作;⑦非技術(shù)的第三方的工作(預(yù)算批準(zhǔn)、設(shè)備采購批準(zhǔn)、法律方面的審查、安全保證等)時間比預(yù)期的延長。
ü 人員風(fēng)險
、僮鳛橄葲Q條件的任務(wù)(如培訓(xùn)及其他項目)不能按時完成;②開發(fā)人員和管理層之間關(guān)系不佳,導(dǎo)致決策緩慢,影響全局;③缺乏激勵措施,士氣低下,降低了生產(chǎn)能力;④某些人員需要更多的時間適應(yīng)還不熟悉的軟件工具和環(huán)境;⑤項目后期加入新的開發(fā)人員,需進(jìn)行培訓(xùn)并逐漸與現(xiàn)有成員溝通,從而使現(xiàn)有成員的工作效率降低;⑥由于項目組成員之間發(fā)生沖突,導(dǎo)致溝通不暢、設(shè)計欠佳、接口出現(xiàn)錯誤和額外的重復(fù)工作;⑦不適應(yīng)工作的成員沒有調(diào)離項目組,影響了項目組其他成員的積極性;⑧沒有找到項目急需的具有特定技能的人。
ü 開發(fā)環(huán)境風(fēng)險
、僭O(shè)施未及時到位;②設(shè)施雖到位,但不配套,如沒有電話、網(wǎng)線、辦公用品等;③設(shè)施擁擠、雜亂或者破損;④開發(fā)工具未及時到位;⑤開發(fā)工具不如期望的那樣有效,開發(fā)人員需要時間創(chuàng)建工作環(huán)境或者切換新的工具;⑥新的開發(fā)工具的學(xué)習(xí)期比預(yù)期的長,內(nèi)容繁多。
ü 客戶風(fēng)險
、倏蛻魧τ谧詈蠼桓兜漠a(chǎn)品不滿意,要求重新設(shè)計和重做;②客戶的意見未被采納,造成產(chǎn)品最終無法滿足用戶要求,因而必須重做;③客戶對規(guī)劃、原型和規(guī)格的審核 決策周期比預(yù)期的要長;④客戶沒有或不能參與規(guī)劃、原型和規(guī)格階段的審核,導(dǎo)致需求不穩(wěn)定和產(chǎn)品生產(chǎn)周期的變更;⑤客戶答復(fù)的時間(如回答或澄清與需求相關(guān)問題的時間)比預(yù)期長;⑥客戶提供的組件質(zhì)量欠佳,導(dǎo)致額外的測試、設(shè)計和集成工作,以及額外的客戶關(guān)系管理工作。
ü 產(chǎn)品風(fēng)險
①矯正質(zhì)量低下的不可接受的產(chǎn)品,需要比預(yù)期更多的測試、設(shè)計和實現(xiàn)工作;②開發(fā)額外的不需要的功能(鍍金),延長了計劃進(jìn)度;③嚴(yán)格要求與現(xiàn)有系統(tǒng)兼容,需要進(jìn)行比預(yù)期更多的測試、設(shè)計和實現(xiàn)工作;④要求與其他系統(tǒng)或不受本項目組控制的系統(tǒng)相連,導(dǎo)致無法預(yù)料的設(shè)計、實現(xiàn)和測試工作;⑤在不熟悉或未經(jīng)檢驗的軟件和硬件環(huán)境中運行所產(chǎn)生的未預(yù)料到的問題;⑥開發(fā)一種全新的模塊將比預(yù)期花費更長的時間;⑦依賴正在開發(fā)中的技術(shù)將延長計劃進(jìn)度。
ü 設(shè)計和實現(xiàn)風(fēng)險
、僭O(shè)計質(zhì)量低下,導(dǎo)致重復(fù)設(shè)計;②一些必要的功能無法使用現(xiàn)有的代碼和庫實現(xiàn),開發(fā)人員必須使用新的庫或者自行開發(fā)新的功能;③代碼和庫質(zhì)量低下,導(dǎo)致需要進(jìn)行額外的測試,修正錯誤,或重新制作;④過高估計了增強(qiáng)型工具對計劃進(jìn)度的節(jié)省量;⑤分別開發(fā)的模塊無法有效集成,需要重新設(shè)計或制作。
ü 過程風(fēng)險
、俅罅康募埫婀ぷ鲗(dǎo)致進(jìn)程比預(yù)期的慢;②前期的質(zhì)量保證行為不真實,導(dǎo)致后期的重復(fù)工作;③太不正規(guī)(缺乏對軟件開發(fā)策略和標(biāo)準(zhǔn)的遵循),導(dǎo)致溝通不足,質(zhì)量欠佳,甚至需重新開發(fā);④過于正規(guī)(教條地堅持軟件開發(fā)策略和標(biāo)準(zhǔn)),導(dǎo)致過多耗時于無用的工作;⑤向管理層撰寫進(jìn)程報告占用開發(fā)人員的時間比預(yù)期的多;⑥風(fēng)險管理粗心,導(dǎo)致未能發(fā)現(xiàn)重大的項目風(fēng)險。
四、風(fēng)險辨識
識別風(fēng)險是系統(tǒng)化地識別已知的和可預(yù)測的風(fēng)險,在可能時避免這些風(fēng)險,且當(dāng)必要時控制這些風(fēng)險。根據(jù)風(fēng)險內(nèi)容,我們可以將風(fēng)險分為:
(1)產(chǎn)品規(guī)模風(fēng)險:與軟件的總體規(guī)模相關(guān)的風(fēng)險。
(2)商業(yè)影響風(fēng)險:商業(yè)風(fēng)險影響到軟件開發(fā)的生存能力。商業(yè)風(fēng)險包含的五個主要的風(fēng)險是:
l 市場風(fēng)險:開發(fā)了一個沒有人真正需要的優(yōu)秀產(chǎn)品或系統(tǒng);
l 策略風(fēng)險:開發(fā)的產(chǎn)品不符合公司的整體商業(yè)策略;
l 銷售風(fēng)險:開發(fā)了一個銷售部門不知道如何去賣的產(chǎn)品;
l 管理風(fēng)險:由于重點的轉(zhuǎn)移或人員的變動而失去了高級管理層的支持的風(fēng)險;
l 預(yù)算風(fēng)險:沒有得到預(yù)算或人力上的保證。
(3)客戶特性風(fēng)險:與客戶的素質(zhì)以及開發(fā)者和客戶溝通能力相關(guān)的風(fēng)險。
(4)過程定義風(fēng)險:與軟件過程定義相關(guān)的風(fēng)險。
(5)開發(fā)環(huán)境風(fēng)險:與開發(fā)工具的可用性及質(zhì)量相關(guān)的風(fēng)險。
(6)技術(shù)風(fēng)險:技術(shù)風(fēng)險是指在設(shè)計、實現(xiàn)、接口、驗證、維護(hù)、規(guī)約的二義性、技術(shù)的不確定性、陳舊的技術(shù)等方面存在的風(fēng)險。技術(shù)風(fēng)險威脅到軟件開發(fā)的質(zhì)量及交付的時間,如果技術(shù)風(fēng)險變成現(xiàn)實,則開發(fā)工作可能變得很困難或根本不可能。
(7)人員數(shù)目及經(jīng)驗帶來的風(fēng)險:與參與工作的軟件工程師的總體技術(shù)水平及項目經(jīng)驗相關(guān)的風(fēng)險。
在進(jìn)行具體的軟件項目風(fēng)險識別時,可以根據(jù)實際情況對風(fēng)險分類。但簡單的分類并不是總行的通的,某些風(fēng)險根本無法預(yù)測。在這里,我們介紹一下美國空軍軟件項目風(fēng)險管理手冊中指出的如何識別軟件風(fēng)險。這種識別方法要求項目管理者根據(jù)項目實際情況標(biāo)識影響軟件風(fēng)險因素的風(fēng)險驅(qū)動因子,這些因素包括以下幾個方面。
(1)性能風(fēng)險:產(chǎn)品能夠滿足需求和符合使用目的的不確定程度。
(2)成本風(fēng)險:項目預(yù)算能夠被維持的不確定的程度。
(3)支持風(fēng)險:軟件易于糾錯、適應(yīng)及增強(qiáng)的不確定的程度。
(4)進(jìn)度風(fēng)險:項目進(jìn)度能夠被維持且產(chǎn)品能按時交付的不確定的程度。
每一個風(fēng)險驅(qū)動因子對風(fēng)險因素的影響均可分為四個影響類別--可忽略的、輕微的、嚴(yán)重的及災(zāi)難性的。
五、風(fēng)險分析
在進(jìn)行了風(fēng)險辨識后,我們就要進(jìn)行風(fēng)險估算,風(fēng)險估算從以下幾個方面評估風(fēng)險清單中的每一個風(fēng)險:
(1)建立一個尺度,以反映風(fēng)險發(fā)生的可能性;
(2)描述風(fēng)險的后果;
(3)估算風(fēng)險對項目及產(chǎn)品的影響;
(4)標(biāo)注風(fēng)險預(yù)測的整體精確度,以免產(chǎn)生誤解。
對辨識出的風(fēng)險進(jìn)行進(jìn)一步的確認(rèn)后分析風(fēng)險,即假設(shè)某一風(fēng)險出現(xiàn)后,分析是否有其他風(fēng)險出現(xiàn),或是假設(shè)這一風(fēng)險不出現(xiàn),分析它將會產(chǎn)生什么情況,然后確定主要風(fēng)險出現(xiàn)最壞情況后,如何將此風(fēng)險的影響降低到最小,同時確定主要風(fēng)險出現(xiàn)的個數(shù)及時間。進(jìn)行風(fēng)險分析時,最重要的是量化不確定性的程度和每個風(fēng)險可能造成損失的程度。為了實現(xiàn)這點,必須考慮風(fēng)險的不同類型。識別風(fēng)險的一個方法是建立風(fēng)險清單,清單上列舉出在任何時候可能碰到的風(fēng)險最重要的是要對清單的內(nèi)容隨時進(jìn)行維護(hù),更新風(fēng)險清單,并向所有的成員公開,應(yīng)鼓勵項目團(tuán)隊的每個成員勇于發(fā)現(xiàn)問題并提出警告。建立風(fēng)險清單的一個辦法是將風(fēng)險輸入缺陷追蹤系統(tǒng)中,建立風(fēng)險追蹤工具,缺失追蹤系統(tǒng)一般能將風(fēng)險項目標(biāo)示為已解決或尚待處理狀態(tài),也能指定解決問題的項目團(tuán)隊成員,并安排處理順序。風(fēng)險清單給項目管理提供了一種簡單的風(fēng)險預(yù)測技術(shù),下表事一個風(fēng)險清單的例子:
風(fēng)險 類別 概率 影響
資金將會流失 商業(yè)風(fēng)險 40% 1
技術(shù)達(dá)不到預(yù)期效果 技術(shù)風(fēng)險 30% 1
人員流動頻繁 人員風(fēng)險 60% 3
在風(fēng)險清單中,風(fēng)險的概率值可以由項目組成員個別估算,然后加權(quán)平均,得到一個有代表性的值。也可以通過先做個別估算而后求出一個有代表性的值來完成。對風(fēng)險產(chǎn)生的影響可以對影響評估的因素進(jìn)行分析。
一旦完成了風(fēng)險清單的內(nèi)容,就要根據(jù)概率進(jìn)行排序,高發(fā)生率、高影響的風(fēng)險放在上方,依次類推。項目管理者對排序進(jìn)行研究,并劃分重要和次重要的風(fēng)險,對次重要的風(fēng)險再進(jìn)行一次評估并排序。對重要的風(fēng)險要進(jìn)行管理。從管理的角度來考慮,風(fēng)險的影響及概率是起著不同作用的,一個具有高影響且發(fā)生概率很低的風(fēng)險因素不應(yīng)該花太多的管理時間,而高影響且發(fā)生率從中到高的風(fēng)險以及低影響且高概率的風(fēng)險,應(yīng)該首先列入管理考慮之中。
在這里,我們需要強(qiáng)調(diào)的是如何評估風(fēng)險的影響,如果風(fēng)險真的發(fā)生了,它所產(chǎn)生的后果會對三個因素產(chǎn)生影響:風(fēng)險的性質(zhì)、范圍及時間。風(fēng)險的性質(zhì)是指當(dāng)風(fēng)險發(fā)生時可能產(chǎn)生的問題。風(fēng)險的范圍是指風(fēng)險的嚴(yán)重性及其整體分布情況。風(fēng)險的時間是指主要考慮何時能夠感到風(fēng)險及持續(xù)多長時間。可以利用風(fēng)險清單進(jìn)行分析,并在項目進(jìn)展過程中迭代使用。項目組應(yīng)該定期復(fù)查風(fēng)險清單,評估每一個風(fēng)險,以確定新的情況是否引起風(fēng)險的概率及影響發(fā)生改變。這個活動可能會添加新的風(fēng)險,刪除一些不再有影響的風(fēng)險,并改變風(fēng)險的相對位置。
在風(fēng)險評估過程中,我們可以采取以下的步驟:
(1)定義項目的風(fēng)險參考水平值。要使風(fēng)險評估發(fā)生作用,就要定義一個風(fēng)險參考水平值,對于大多數(shù)項目而言,通過對性能、成本、支持及進(jìn)度等因素的分析,可以找出風(fēng)險的參考水平值,對于性能下降、成本超支、支持困難或進(jìn)度延遲(或者這四種的組合)等情況,超過這一參考水平值項目就會被終止。
(2)建立每一組(風(fēng)險、風(fēng)險發(fā)生的概率、風(fēng)險產(chǎn)生的影響)與每一個參考水平值的關(guān)系。
(3)預(yù)測一組臨界點以定義項目終止區(qū)域,該區(qū)域由一條曲線或不確定區(qū)域界定。
(4)預(yù)測什么樣的風(fēng)險組合會影響參考水平值。
六、風(fēng)險駕馭
風(fēng)險駕馭包括對策指定、風(fēng)險緩解、風(fēng)險監(jiān)控、風(fēng)險跟蹤等內(nèi)容。
所有風(fēng)險分析活動都只有一個目的--輔助項目組建立處理風(fēng)險的策略。如果軟件項目組對于風(fēng)險采取主動的方法,則避免永遠(yuǎn)是最好的策略。這可以通過建立一個風(fēng)險緩解計劃來達(dá)到即制定對策。
對不同的風(fēng)險項要建立不同的風(fēng)險駕馭和監(jiān)控的策略比。如對于開發(fā)人員離職的風(fēng)險項目開始時應(yīng)作好人員流動的準(zhǔn)備采取一些措施確保人員一旦離開時項目仍能繼續(xù);制定文檔標(biāo)準(zhǔn)并建立一種機(jī)制保證文檔及時產(chǎn)生;對每個關(guān)鍵性技術(shù)崗位要培養(yǎng)后備人員。對于技術(shù)風(fēng)險,可以采用的策略有,對采用的關(guān)鍵技術(shù)進(jìn)行分析,避免軟件在生命周期中很快落后;在項目開發(fā)過程中保持對風(fēng)險因素相關(guān)信息的收集工作,減少對合作公司的依賴尤其是對延續(xù)性強(qiáng)的項目應(yīng)該盡可能地吸收合作公司的技術(shù)并變?yōu)樽约旱募夹g(shù),避免因為可能發(fā)生的與合作公司合作的終止帶來的影響和風(fēng)險降低投入成本。
一個有效的策略必須考慮風(fēng)險避免、風(fēng)險監(jiān)控和風(fēng)險管理及意外事件計劃這樣三個問題。風(fēng)險的策略管理可以包含在軟件項目計劃中,或者風(fēng)險管理步驟也可以組成一個獨立的風(fēng)險緩解、監(jiān)控和管理計劃(RMMM計劃)。RMMM計劃將所有風(fēng)險分析工作文檔化,并且由項目管理者作為整個項目計劃的一部分來使用,RMMM計劃的大綱主要包括:主要風(fēng)險,風(fēng)險管理者,項目風(fēng)險清單,風(fēng)險緩解的一般策略、特定步驟,監(jiān)控的因素和方法,意外事件和特殊考慮的風(fēng)險管理等。一旦建立了RMMM計劃,我們就開始了風(fēng)險緩解及監(jiān)控,風(fēng)險緩解是一種避免問題的活動,風(fēng)險監(jiān)控則是跟蹤項目的活動。它有三個主要目的:評估一個被預(yù)測的風(fēng)險是否真的發(fā)生了;保證為風(fēng)險而定義的緩解步驟被正確地實施;收集能夠用于未來的風(fēng)險分析信息。
軟件開發(fā)是高風(fēng)險的活動。如果項目采取積極風(fēng)險管理的方式,就可以避免或降低許多風(fēng)險,而這些風(fēng)險如果沒有處理好,就可能使項目陷入癱瘓中。因此在軟件項目管理中還要進(jìn)行風(fēng)險跟蹤。對辨識后的風(fēng)險在系統(tǒng)開發(fā)過程中進(jìn)行跟蹤管理,確定還會有哪些變化,以便及時修正計劃。具體內(nèi)容包括:
(1)實施對重要風(fēng)險的跟蹤;
(2)每月對風(fēng)險進(jìn)行一次跟蹤;
(3)風(fēng)險跟蹤應(yīng)與項目管理中的整體跟蹤管理相一致;
(4)風(fēng)險項目應(yīng)隨著時間的不同而相應(yīng)地變化。
通過風(fēng)險跟蹤,進(jìn)一步對風(fēng)險進(jìn)行管理,從而保證項目計劃的如期完成。
七、經(jīng)典風(fēng)險管理理論
6.1 Boehm模型
Boehm用公式RE=P(UO)*L(UO)對風(fēng)險進(jìn)行定義,其中RE表示風(fēng)險或者風(fēng)險所造成的影響,P(UO)表示令人不滿意的結(jié)果所發(fā)生的概率,L(UO)表示糟糕的結(jié)果會產(chǎn)生的破壞性的程度。在風(fēng)險管理步驟上,Boehm基本沿襲了傳統(tǒng)的項目風(fēng)險管理理論,指出風(fēng)險管理由風(fēng)險評估和風(fēng)險控制兩大部分組成,風(fēng)險評估又可分為識別、分析、設(shè)置優(yōu)先級3個子步驟,風(fēng)險控制則包括制定管理計劃、解決和監(jiān)督風(fēng)險3步。
Boehm思想的核心是10大風(fēng)險因素列表,其中包括人員短缺、不合理的進(jìn)度安排和預(yù)算、不斷的需求變動等。針對每個風(fēng)險因素,Boehm都給出了一系列的風(fēng)險管理策略。在實際操作時,以10大風(fēng)險列表為依據(jù),總結(jié)當(dāng)前項目具體的風(fēng)險因素,評估后進(jìn)行計劃和實施,在下一次定期召開的會議上再對這10大風(fēng)險因素的解決情況進(jìn)行總結(jié),產(chǎn)生新的10大風(fēng)險因素表,依此類推。
10大風(fēng)險列表的思想可以將管理層的注意力有效地集中在高風(fēng)險、高權(quán)重、嚴(yán)重影響項目成功的關(guān)鍵因素上,而不需要考慮眾多的低優(yōu)先級的細(xì)節(jié)問題。而且,這個列表是通過對美國幾個大型航空或國防系統(tǒng)軟件項目的深入調(diào)查,編輯整理而成的,因此有一定的普遍性和實際性。但是它只是基于對風(fēng)險因素集合的歸納,尚未有文章論述其具體的理論基礎(chǔ)、原始數(shù)據(jù)及其歸納方法。另外,Boehm也沒有清晰明確地說明風(fēng)險管理模型到底要捕獲哪些軟件風(fēng)險的特殊方面,因為列舉的風(fēng)險因素會隨著多個風(fēng)險管理方法而變動,同時也互相影響。這就意味著風(fēng)險列表需要改進(jìn)和擴(kuò)充,管理步驟也需要優(yōu)化。
雖然其理論存在一些不足,但Boehm畢竟可以說是軟件項目風(fēng)險管理的開山鼻祖。在其之后,更多的組織和個人開始了對風(fēng)險管理的研究,軟件項目風(fēng)險管理的重要性日益得到認(rèn)同。
6.2 CRM模型
SEI(Software Engineering Institution)作為世界上著名的旨在改善軟件工程管理實踐的組織,也對風(fēng)險管理投入了大量的熱情。SEI提出了持續(xù)風(fēng)險管理管理模型CRM(Continuous Risk Management)。
SEI的風(fēng)險管理原則是:不斷地評估可能造成惡劣后果的因素;決定最迫切需要處理的風(fēng)險;實現(xiàn)控制風(fēng)險的策略;評測并確保風(fēng)險策略實施的有效性。
CRM模型要求在項目生命期的所有階段都關(guān)注風(fēng)險識別和管理,它將風(fēng)險管理劃分為5個步驟:風(fēng)險識別、分析、計劃、跟蹤、控制?蚣茱@示了應(yīng)用CRM的基礎(chǔ)活動及其之間的交互關(guān)系,強(qiáng)調(diào)了這是一個在項目開發(fā)過程中反復(fù)持續(xù)進(jìn)行的活動序列。每個風(fēng)險因素一般都需要按順序經(jīng)過這些活動,但是對不同風(fēng)險因素開展的不同活動可以是并發(fā)的或者交替的。
6.3 Leavitt模型
SEI和Boehm的模型都以風(fēng)險管理的過程為主體,研究每個步驟所需的參考信息及其操作。而Aalborg大學(xué)提出的思路則是以Leavitt模型為基礎(chǔ),著重從導(dǎo)致軟件開發(fā)風(fēng)險的不同角度出發(fā)探討風(fēng)險管理。
1964年提出的Leavitt模型將形成各種系統(tǒng)的組織劃分為4個有趣的組成部分:任務(wù)、結(jié)構(gòu)、角色和技術(shù)。這4個組成部分和軟件開發(fā)的各因素很好地對應(yīng)起來:角色覆蓋了所有的項目參與者,例如軟件用戶、項目經(jīng)理和設(shè)計人員等;結(jié)構(gòu)表示項目組織和其他制度上的安排;技術(shù)則包括開發(fā)工具、方法、硬件軟件平臺;任務(wù)描述了項目的目標(biāo)和預(yù)期結(jié)果。Leavitt模型的關(guān)鍵思路是:模型的各個組成部分是密切相關(guān)的,一個組成部分的變化會影響其他的組成部分,如果一個組成部分的狀態(tài)和其他的狀態(tài)不一致,就會造成比較嚴(yán)重的后果,并可能降低整個系統(tǒng)的性能。
將這個模型和軟件風(fēng)險的概念相對應(yīng),即一個系統(tǒng)開發(fā)過程中任何Leavitt組成成分的修改都會產(chǎn)生一些問題,甚至導(dǎo)致軟件修改的失敗。根據(jù)Leavitt模型,任何導(dǎo)致風(fēng)險發(fā)生的因素都可以歸結(jié)為模型中的組成部分,例如技術(shù)及其可行性;或者歸結(jié)為組成部分之間的聯(lián)系,例如程序開發(fā)人員使用某一技術(shù)的能力。因此,使用Leavitt模型從4個方面分別識別和分析軟件項目的風(fēng)險是極有條理性和比較全面的。在進(jìn)行軟件項目管理時,可以采用不同的方法對不同的方面進(jìn)行風(fēng)險管理。
Leavitt模型實際上是提出一個框架,可以更加廣泛和系統(tǒng)地將軟件風(fēng)險的相關(guān)信息組織起來。Leavitt理論的設(shè)計方法和實現(xiàn)研究已經(jīng)廣泛應(yīng)用于信息系統(tǒng)中,它所考慮的都是軟件風(fēng)險管理中十分重要的環(huán)節(jié),而且簡單、定義良好、適用于分析風(fēng)險管理步驟。
八、結(jié)束語
總之,在軟件項目開發(fā)過程中,當(dāng)對軟件的期望很高時,一般都會進(jìn)行項目風(fēng)險分析、預(yù)測、評估、管理及監(jiān)控等風(fēng)險管理。通過風(fēng)險管理可以使項目進(jìn)程更加平穩(wěn),可以獲得很高的跟蹤和控制項目的能力,并且可以增強(qiáng)項目組成員對項目如期完成的信心。風(fēng)險管理是項目管理中很重要的管理活動,有效的實施軟件風(fēng)險管理是軟件項目開發(fā)工作順利完成的保證。