王 財
摘 要:本文通過對當前軟件行業(yè)的風險狀況進行分析,列舉軟件開發(fā)項目的風險來源,并進行分析,總結各類風險產(chǎn)生的原因和對項目成敗的影響,最后給出軟件開發(fā)項目在風險管理和控制的建議。
關鍵詞:軟件開發(fā)風險風險分析風險管理與控制
一、軟件開發(fā)項目的風險背景
信息產(chǎn)業(yè)的發(fā)展是目前發(fā)展最快的行業(yè)之一,也是對社會影響最大的一個行業(yè),它不但為我們創(chuàng)造了巨大的財富,而且從各個方面改變著我們的生活,達到一個行業(yè),小到一項服務。我們不得不承認軟件是二十一世紀最不可思議的產(chǎn)品。
伴隨著軟件開發(fā)技術的不斷更新、軟件數(shù)量的增多、軟件復雜程度不斷加大、客戶對產(chǎn)品的要求也在不斷的提高,隨之而來的是軟件開發(fā)項目給軟件開發(fā)企業(yè)和需求企業(yè)帶來的巨大風險。軟件開發(fā)項目的成功與否會直接影響到公司的生存。這對軟件開發(fā)企業(yè)來講應該是更大的難題。一方面是業(yè)務需求更加復雜。人們對軟件質(zhì)量和用途的期望大幅度提高,對業(yè)務系統(tǒng)的要求也越來越挑剔。另一方面是開發(fā)成本不斷縮減。在此形勢下,風險管理與控制已成為軟件開發(fā)項目成敗的關鍵。
軟件開發(fā)項目由于其具有連續(xù)性、復雜性、少參照性,無標準規(guī)范等特點,其風險程度較高。目前國內(nèi)的大多數(shù)軟件開發(fā)企業(yè)還缺乏對軟件開發(fā)項目的風險認識,缺少進行系統(tǒng)、有效的度量和評價的手段。據(jù)有調(diào)查數(shù)據(jù)顯示,有15—35%的軟件項目中途被取消,剩下的項目不是超期就是超出預算或是無法達到預期目標。另外,軟件項目因風險控制和管理原因失敗的約占90% ,可見,軟件風險控制與管理在目前的軟件開發(fā)項目中的重要性。
二、 軟件開發(fā)項目的風險來源及對項目成敗的影響
軟件開發(fā)項目風險是指在軟件生命周期中所遇到的所有的預算、進度和控制等各方面的問題,以及由這些問題而產(chǎn)生的對軟件項目的影響。軟件項目風險經(jīng)常會涉及許多方面,如:缺乏用戶的參與,缺少高級管理層的支持,含糊的要求,沒有計劃和管理等,總體概括下來應該由五大方面。
1、 產(chǎn)品規(guī)模風險
項目的風險是與產(chǎn)品的規(guī)模成正比的。與軟件規(guī)模相關的常見風險因素有:(1)估算產(chǎn)品規(guī)模的方法(包括:代碼行,文件數(shù),功能點等),(2)產(chǎn)品規(guī)模估算的信任度,(3)產(chǎn)品規(guī)模與以前產(chǎn)品規(guī)模平均值的偏差,(4)產(chǎn)品的用戶數(shù),(5)復用的軟件有多少,(6)產(chǎn)品的需求變更多少等。一般規(guī)律,產(chǎn)品規(guī)模越大,以上的問題就越突出,尤其是估算產(chǎn)品規(guī)模的方法,復用軟件的多少,需求變化。
2、 需求風險
很多項目在確定需求時都面臨著一些不確定性。當在項目早期容忍了這些不確定性,并且在項目進展過程當中得不到解決,這些問題就會對項目的成功造成很大威脅。如果不控制與需求相關的風險因素,那么就很有可能產(chǎn)生錯誤的產(chǎn)品或者拙劣地建造預期的產(chǎn)品。每一種情況對產(chǎn)品來講都可能致命的。
與客戶相關的風險因素有:(1)對產(chǎn)品缺少清晰的認識,(2)對產(chǎn)品需求缺少認同,(3)在做需求中客戶參與不夠,(4)沒有優(yōu)先需求,(5)由于不確定的需要導致新的市場,(6)不斷變化需求,(7)缺少有效的需求變化管理過程,(8)對需求的變化缺少相關分析等。
3、 相關性風險
許多風險都是因為項目的外部環(huán)境或因素的相關性產(chǎn)生的。經(jīng)常我們在控制外部的相關性上做的不夠,因此緩解策略應該包括可能性計劃,以便從第二資源或協(xié)同工作資源中取得必要的組成部分,并且覺察潛在的問題。與外部環(huán)境相關的因素有:(1)客戶供應條目或信息,(2)交互成員或交互團體依賴性,(3)內(nèi)部或外部轉(zhuǎn)包商的關系,(4)經(jīng)驗豐富人員的可得性,(5)項目的復用性。
4、 技術風險
軟件技術的飛速發(fā)展和經(jīng)驗豐富員工的缺乏,意味著項目團隊可能會因為技巧的原因影響項目的成功。在早期,識別風險從而采取合適的預防措施是解決風險領域問題的關鍵,比如:培訓、聘請顧問以及為項目團隊招聘合適的人才等。主要有下面這些風險因素:(1)缺乏培訓,(2)對方法、工具和技術理解的不夠,(3)應用領域的經(jīng)驗不足,(4)新的技術和開發(fā)方法應用等。
5、 管理風險
盡管管理問題制約了很多項目的成功,但是不要因為風險管理計劃中沒有包括所有管理活動而感到驚奇。在大部分項目里,項目經(jīng)理經(jīng)常是寫項目風險管理計劃的人,他們有先天性的不足——自己檢查自己的錯誤,這是最難的。然而,像這些問題可能會使項目的成功變得更加困難。如果不正視這些棘手的問題,它們就很有可能在項目進行的某個階段影響項目本身。當我們定義了項目追蹤過程并且明晰項目角色和責任,就能處理這些風險因素:(1)計劃和任務定義不夠充分,(2)實際項目狀態(tài),(3)項目所有者和決策者分不清,(4)不切實際的承諾,(5)員工之間的溝通等。
6、 安全風險
軟件產(chǎn)品本身是屬于創(chuàng)造性的產(chǎn)品,產(chǎn)品本身的核心技術保密非常重要。但一直以來,我們在軟件這方面的安全意識比較淡薄,對軟件產(chǎn)品的開發(fā)主要注重技術本身,而忽略了專利的保護。軟件行業(yè)的技術人員流動是很普遍的現(xiàn)象,隨著技術人員的流失、變更,很能會導致產(chǎn)品和新技術的泄密,致使我們的軟件產(chǎn)品被它公司竊取,導致項目失敗。而且在軟件方面關于知識產(chǎn)權的認定目前還沒有明確的一個行業(yè)規(guī)范,這也是我們軟件項目潛在的風險。
三、 風險的分析、管理與控制
1、風險分析
以上所說的各類風險都是項目成敗的巨大隱患,它們對軟件開發(fā)項目的成敗有多大影響,我們可以利用風險分析工具,對以上各類風險進行分析,并加以控制和管理,將風險將到最低。常用方法有風險條目檢查表,它是利用一組提問來幫助項目風險管理者了解在項目和技術方面有哪些風險。在風險條目檢查表中,列出了所有可能的與每一個風險因素有關的提問,使得風險管理者集中來識別常見的、已知的和可預測的風險,如產(chǎn)品規(guī)模風險、依賴性風險、需求風險、管理風險及技術風險等。 風險條目檢查表可以不同的方式組織,通過假設分析、成本效益分析、風險剖面分析、判定樹等,給出這些提問確定的回答,就可以幫助項目管理人員估算風險的影響。
另外,我們可以依據(jù)風險條目檢查表,制作風險控制概圖(見圖1),讓項目管理和實施人員能很直觀的看到在項目開發(fā)個階段的風險存在狀況和各風險的大小,并采取相應措施。從風險發(fā)生的概率來看,需求風險和管理風險對項目成敗影響最大,當一個軟件項目開發(fā)團隊接手項目后,都是按照習慣性的方式來開發(fā)軟件。需求風險意識比較淡薄,軟件需求分析階段的完成的不夠細致,忽略和很多軟件開發(fā)必要的內(nèi)容。在整個軟件開發(fā)過程中需求分析階段的風險控制尤為重要,如果控制不好,對軟件開發(fā)項目影響巨大,甚至是失敗。管理風險實際上是項目開發(fā)管理層,對項目開發(fā)的風險的意識反映。國內(nèi)的軟件企業(yè)大多規(guī)模較小,企業(yè)年輕,開發(fā)經(jīng)驗不足,軟件工程師較年輕,缺少開大型軟件項目的經(jīng)驗,在管理方面缺少經(jīng)驗,特別是風險管理,更是缺乏。
2、風險管理
風險管理應是貫穿軟件項目開發(fā)始末的一項重要任務,其中包括風險識別、風險評估、風險計劃、風險解決和風險監(jiān)控。它能讓風險管理者主動“規(guī)避”風險,進行有效的風險管理。風險管理模型有:SEI風險管理模型、Riskit風險管理模型、SoftRisk風險管理模型、IEEE風險管理過程模型、CMMI風險管理模型、MSF風險管理模型等。在項目管理中,建立風險管理策略,在項目的生命周期中不斷控制風險是非常重要的,風險管理主要包括五個階段:
(1)風險識別:識別風險的方法常用的有現(xiàn)場觀察法、座談法、流程圖法、財務報表法、相關部門配合法和環(huán)境分析法等。
(2) 風險評估:對已識別的風險要進行估計和評價,風險估計的主要任務是確定風險發(fā)生的概率與后果,風險評價則是確定該風險的經(jīng)濟意義及處理的費/效分析,常用的方法有:概率分布、外推法、多目標分析法等。
(3) 計劃進度:按照評估后的風險結果,制定相應的風險管理進度表,為后續(xù)的風險管理提供參考。
(4) 風險處理:一般而言,風險處理有三種方法,① 風險控制法,即主動采取措施避免風險,消滅風險,中和風險或采用緊急方案降低風險。② 風險自留,當風險量不大時可以余留風險。③ 風險轉(zhuǎn)移。
(5) 風險監(jiān)控:包括對風險發(fā)生的監(jiān)督和對風險管理的監(jiān)督,前者是對已識別的風險源進行監(jiān)視和控制,后者是在項目實施過程中監(jiān)督人們認真執(zhí)行風險管理的組織和技術措施。
3、風險控制
(1)建立有效的風險控制的組織機構
①設置風險管理崗位:在軟件開發(fā)項目管理過程中設置風險管理崗位,該崗位的主要職責是在制訂與評估規(guī)劃時,從風險管理的角度對項目規(guī)劃或計劃進行審核并發(fā)表意見,不斷尋找可能出現(xiàn)的任何意外情況,試著指出各個風險的管理策略及常用的管理方法,以隨時處理出現(xiàn)的風險,風險管理者最好是由項目主管以外的人擔任。風險管理崗位的人數(shù)依據(jù)項目大小來決定,一般2—3人較為適合。
②雙項目經(jīng)理:為項目開發(fā)項目設定兩個項目經(jīng)理崗位,一個負責技術崗位,另一個負責管理崗位。目前,國內(nèi)的軟件開發(fā)企業(yè)的項目經(jīng)理一般都是一名,而且是技術出生的占絕對多數(shù),他們主要擅長的是技術研發(fā),在管理方面先天不足,這不利于項目風險管理和控制。通過增加專門的管理經(jīng)理崗位,可以彌補技術出生的項目經(jīng)理的不足,提升軟件開發(fā)項目的管理水平。而且這樣的經(jīng)驗也已得到了國外業(yè)界大多企業(yè)的認可。
(2) 建立有效的風險控制管理過程
風險管理過程包括培訓,風險識別、風險分析、風險計劃、執(zhí)行計劃、跟蹤計劃等活動,有效的風險管理過程應是學習型的、持續(xù)的和不斷改進的。軟件企業(yè)應建立自己的風險管理數(shù)據(jù)庫作為風險管理的基礎,并在實施中不斷地更新和完善。
根據(jù)企業(yè)和項目的實際情況,進行科學的項目風險和控制,對項目的成功研發(fā)有著舉足輕重的意義。在項目開發(fā)的過程中,進行必要的項目風險分析,制定符合項目特點的風險評估和監(jiān)督機制,特別是要定期對項目的風險狀況進行評估和監(jiān)管,發(fā)現(xiàn)意外風險或者是風險超出預期的一定要重點關照。發(fā)現(xiàn)問題要立即上報,盡快解決。并建立風險監(jiān)管日志,實行“崗位負責制”,將軟件開發(fā)項目的風險降到最低?!?/p>
參考文獻:
【1】軟件項目風險評估技術與方法研究 甘肅科學學報2003年12月 劉亞峰帥剛
【2】項目管理的分險管理說控制 今日科苑2007年5月 曾牧
【3】軟件項目風險管理模型的分析與研究 科技管理研究2005年6月 毛明志 葛曉偉
【4】IT項目開發(fā)風險管理人民教育出版社 2008年4月 方德英