軟件項目風險是指在軟件開發(fā)過程中遇到的預算和進度等方面的問題以及這些問題對軟件項目的影響。軟件項目風險會影響項目計劃的實現(xiàn),如果項目風險變成現(xiàn)實,就有可能影響項目的進度,增加項目的成本,甚至使軟件項目不能實現(xiàn)。如果對項目進行風險管理,就可以最大限度的減少風險的發(fā)生。但是,目前國內(nèi)的軟件企業(yè)不太關(guān)心軟件項目的風險管理,結(jié)果造成軟件項目經(jīng)常性的延期、超過預算,甚至失敗。成功的項目管理一般都對項目風險進行了良好的管理。因此任何一個系統(tǒng)開發(fā)項目都應將風險管理作為軟件項目管理的重要內(nèi)容。
在項目風險管理中,存在多種風險管理方法與工具,軟件項目管理只有找出最適合自己的方法與工具并應用到風險管理中,才能盡量減少軟件項目風險,促進項目的成功。
項目風險管理
項目風險管理是指為了最好的達到項目的目標,識別、分配、應對項目生命周期內(nèi)風險的科學與藝術(shù)。項目風險管理的目標是使?jié)撛跈C會或回報最大化,使?jié)撛陲L險最小化。風險管理涉及的主要過程包括:風險識別,風險量化,風險應對計劃制定和風險監(jiān)控,如圖1所示。風險識別在項目的開始時就要進行,并在項目執(zhí)行中不斷進行。就是說,在項目的整個生命周期內(nèi),風險識別是一個連續(xù)的過程。
(1)風險識別:風險識別包括確定風險的來源,風險產(chǎn)生的條件,描述其風險特征和確定哪些風險事件有可能影響本項目。風險識別不是一次就可以完成的事,應當在項目的自始至終定期進行。
(2)風險量化:涉及對風險及風險的相互作用的評估,是衡量風險概率和風險對項目目標影響程度的過程。風險量化的基本內(nèi)容是確定那些事件需要制定應對措施。。
(3)風險應對計劃制定:針對風險量化的結(jié)果,為降低項目風險的負面效應制定風險應對策略和技術(shù)手段的過程。風險應對計劃依據(jù)風險管理計劃、風險排序、風險認知等依據(jù),得出風險應對計劃、剩余風險、次要風險以及為其它過程提供得依據(jù)。
?。?)風險監(jiān)控:涉及整個項目管理過程中的風險進行應對。該過程的輸出包括應對風險的糾正措施以及風險管理計劃的更新。
每個步驟所使用的工具和方法詳見表1:
表1 風險管理過程中所使用的工具、方法
風險管理步驟 所使用的工具、方法 風險識別 頭腦風暴法、面談、Delphi法、核對表、SWOT技術(shù) 風險量化 風險因子計算、PERT估計、決策樹分析、風險模擬 風險應對計劃制定 回避、轉(zhuǎn)移、緩和、接受 風險監(jiān)控 核對表、定期項目評估、掙值分析
軟件項目中的風險管理
1、軟件項目中的風險
軟件項目的風險無非體現(xiàn)在以下四個方面:需求、技術(shù)、成本和進度。IT項目開發(fā)中常見的風險有如下幾類:
?。?)需求風險
?、傩枨笠呀?jīng)成為項目基準,但需求還在繼續(xù)變化;
?、谛枨蠖x欠佳,而進一步的定義會擴展項目范疇;
?、厶砑宇~外的需求;
④產(chǎn)品定義含混的部分比預期需要更多的時間;
?、菰谧鲂枨笾锌蛻魠⑴c不夠;
?、奕鄙儆行У男枨笞兓芾磉^程。
?。?)計劃編制風險
①計劃、資源和產(chǎn)品定義全憑客戶或上層領(lǐng)導口頭指令,并且不完全一致;
②計劃是優(yōu)化的,是"最佳狀態(tài)",但計劃不現(xiàn)實,只能算是"期望狀態(tài)";
?、塾媱澔谑褂锰囟ǖ男〗M成員,而那個特定的小組成員其實指望不上;
④產(chǎn)品規(guī)模(代碼行數(shù)、功能點、與前一產(chǎn)品規(guī)模的百分比)比估計的要大;
?、萃瓿赡繕巳掌谔崆埃珱]有相應地調(diào)整產(chǎn)品范圍或可用資源;
?、奚孀悴皇煜さ漠a(chǎn)品領(lǐng)域,花費在設計和實現(xiàn)上的時間比預期的要多。
?。?)組織和管理風險
①僅由管理層或市場人員進行技術(shù)決策,導致計劃進度緩慢,計劃時間延長;
②低效的項目組結(jié)構(gòu)降低生產(chǎn)率;
?、酃芾韺訉彶?決策的周期比預期的時間長;
?、茴A算削減,打亂項目計劃;
?、莨芾韺幼鞒隽舜驌繇椖拷M織積極性的決定;
?、奕狈Ρ匾囊?guī)范,導致工作失誤與重復工作;
⑦非技術(shù)的第三方的工作(預算批準、設備采購批準、法律方面的審查、安全保證等)時間比預期的延長。
(4)人員風險
①作為先決條件的任務(如培訓及其他項目)不能按時完成;
?、陂_發(fā)人員和管理層之間關(guān)系不佳,導致決策緩慢,影響全局;
?、廴狈畲胧?,士氣低下,降低了生產(chǎn)能力;
?、苣承┤藛T需要更多的時間適應還不熟悉的軟件工具和環(huán)境;
⑤項目后期加入新的開發(fā)人員,需進行培訓并逐漸與現(xiàn)有成員溝通,從而使現(xiàn)有成員的工作效率降低;
?、抻捎陧椖拷M成員之間發(fā)生沖突,導致溝通不暢、設計欠佳、接口出現(xiàn)錯誤和額外的重復工作;
?、卟贿m應工作的成員沒有調(diào)離項目組,影響了項目組其他成員的積極性;
?、鄾]有找到項目急需的具有特定技能的人。
?。?)開發(fā)環(huán)境風險
?、僭O施未及時到位;
?、谠O施雖到位,但不配套,如沒有電話、網(wǎng)線、辦公用品等;
③設施擁擠、雜亂或者破損;
?、荛_發(fā)工具未及時到位;
?、蓍_發(fā)工具不如期望的那樣有效,開發(fā)人員需要時間創(chuàng)建工作環(huán)境或者切換新的工具;
?、扌碌拈_發(fā)工具的學習期比預期的長,內(nèi)容繁多。
(6)客戶風險
?、倏蛻魧τ谧詈蠼桓兜漠a(chǎn)品不滿意,要求重新設計和重做;
②客戶的意見未被采納,造成產(chǎn)品最終無法滿足用戶要求,因而必須重做;
③客戶對規(guī)劃、原型和規(guī)格的審核 決策周期比預期的要長;
④客戶沒有或不能參與規(guī)劃、原型和規(guī)格階段的審核,導致需求不穩(wěn)定和產(chǎn)品生產(chǎn)周期的變更;
⑤客戶答復的時間(如回答或澄清與需求相關(guān)問題的時間)比預期長;
?、蘅蛻籼峁┑慕M件質(zhì)量欠佳,導致額外的測試、設計和集成工作,以及額外的客戶關(guān)系管理工作。
?。?)產(chǎn)品風險
?、俪C正質(zhì)量低下的不可接受的產(chǎn)品,需要比預期更多的測試、設計和實現(xiàn)工作;
?、陂_發(fā)額外的不需要的功能(鍍金),延長了計劃進度;
③嚴格要求與現(xiàn)有系統(tǒng)兼容,需要進行比預期更多的測試、設計和實現(xiàn)工作;
?、芤笈c其他系統(tǒng)或不受本項目組控制的系統(tǒng)相連,導致無法預料的設計、實現(xiàn)和測試工作;
?、菰诓皇煜せ蛭唇?jīng)檢驗的軟件和硬件環(huán)境中運行所產(chǎn)生的未預料到的問題;
⑥開發(fā)一種全新的模塊將比預期花費更長的時間;
⑦依賴正在開發(fā)中的技術(shù)將延長計劃進度。
(8)設計和實現(xiàn)風險
?、僭O計質(zhì)量低下,導致重復設計;
?、谝恍┍匾墓δ軣o法使用現(xiàn)有的代碼和庫實現(xiàn),開發(fā)人員必須使用新的庫或者自行開發(fā)新的功能;
?、鄞a和庫質(zhì)量低下,導致需要進行額外的測試,修正錯誤,或重新制作;
?、苓^高估計了增強型工具對計劃進度的節(jié)省量;
⑤分別開發(fā)的模塊無法有效集成,需要重新設計或制作。
(9)過程風險
?、俅罅康募埫婀ぷ鲗е逻M程比預期的慢;
?、谇捌诘馁|(zhì)量保證行為不真實,導致后期的重復工作;
③太不正規(guī)(缺乏對軟件開發(fā)策略和標準的遵循),導致溝通不足,質(zhì)量欠佳,甚至需重新開發(fā);
?、苓^于正規(guī)(教條地堅持軟件開發(fā)策略和標準),導致過多耗時于無用的工作;
?、菹蚬芾韺幼珜戇M程報告占用開發(fā)人員的時間比預期的多;
?、揎L險管理粗心,導致未能發(fā)現(xiàn)重大的項目風險。
2、軟件項目風險管理模型
針對軟件項目中的風險管理問題,不少專家、組織提出了自己的風險管理模型。主要的風險管理模型有:Boehm模型,CRM模型和SERIM模型。
2.1 Barry Boehm模型
模型:RE=P (UO)*L (UO)
其中RE表示風險或者風險所造成的影響,P(UO)表示令人不滿意的結(jié)果所發(fā)生的概率,L(UO)表示糟糕的結(jié)果會產(chǎn)生的破壞性的程度。Boehm思想的核心是10大風險因素列表。針對每個風險因素,都給出了一系列的風險管理策略。在實際操作時,Boehm以10大風險列表為依據(jù),總結(jié)當前項目具體的風險因素,評估后進行計劃和實施,在下一次定期召開的會議上再對這10大風險因素的解決情況進行總結(jié),產(chǎn)生新的10大風險因素表,依此類推。
2.2 SEI的CRM(Continuous Risk Management)模型
SEI CRM模型的風險管理原則是:不斷地評估可能造成惡劣后果的因素;決定最迫切需要處理的風險;實現(xiàn)控制風險的策略;評測并確保風險策略實施的有效性。CRM模型要求在項目生命期的所有階段都關(guān)注風險識別和管理,它將風險管理劃分為五個步驟:風險識別、分析、計劃、跟蹤、控制。
2.3 SERIM(Software Engineering Risk Model)模型
SERIM從技術(shù)和商業(yè)兩個角度對軟件風險管理進行剖析,考慮的問題涉及開銷、進度、技術(shù)性能等。它還提供了一些指標和模型來估量和預測風險,由于這些數(shù)據(jù)來源于大量的實際經(jīng)驗,因此具有很強的說服力。
結(jié)束語
軟件項目管理從某種意義上講,就是風險管理。我們盡量去定義明確不變的需求,以便進行計劃并高效管理,但商業(yè)環(huán)境總是快速變化的,甚至是無序的變化。所以,軟件企業(yè)在進行項目管理的過程中,必須采用適合自己的風險管理方法進行風險管理,以確保軟件項目在規(guī)定的預算和期限內(nèi)完成項目。