曹利華,陳喜昌,劉彥斌,胡 潔,衛(wèi)劍釩,馬 迪
(1.中國科學院軟件研究所,北京100190;2.中國科學院研究生院,北京100190;3.國家開發(fā)銀行,北京100037)
由于軟件外包項目具有很多優(yōu)勢,它越來越受到軟件企業(yè)的青睞。但發(fā)包方和接包方之間存在不可避免的地域、文化、價值觀及管理方法等方面的差異,使得軟件項目在其外包生命周期過程中存在各種風險。研究表明,大約40%的軟件外包開發(fā)項目均以失敗告終,80%的項目在生命周期的不同階段會遇到問題[1],導(dǎo)致項目進度延期和成本超支。其中缺乏風險管理是項目進度延期和成本超支的主要原因之一,所以有效地進行風險評估等風險管理活動對項目的成敗至關(guān)重要。近年來,風險評估技術(shù)依據(jù)項目所能提供的經(jīng)驗數(shù)據(jù)的多少及信息詳細程度,可分為定性和定量分析兩種。然而無論采用哪種方法,在應(yīng)用軟件項目的實際開發(fā)中,風險的評估往往因為過多依賴于用戶的主觀輸入,以至于評估有偏差。特別對于軟件外包項目,由于缺乏軟件外包領(lǐng)域的風險研究,導(dǎo)致軟件外包項目的失敗比重遠遠高于普通軟件的。本文提出一種基于風險因子對的軟件外包風險評估方法解決軟件外包風險數(shù)據(jù)難以獲取、不確定性較多的問題。
軟件外包項目面臨著眾多的風險,如何從中選取風險因子以及選取哪些風險因子對項目的評估都是至關(guān)重要的;在確定了典型外包風險因子后,如何確定哪些因子的共現(xiàn)會給項目帶來嚴重的風險也是一個研究重點。下文將圍繞這兩個問題展開。
由于訪談具有使工作分析人員了解到短期內(nèi)直接觀察法不容易發(fā)現(xiàn)的情況,有助于管理者發(fā)現(xiàn)問題,本文通過訪談國內(nèi)幾家著名外包企業(yè)的專家獲得軟件外包中典型的風險因子,其中包括業(yè)務(wù)流程的復(fù)雜度高、需求的不確定性高、項目管理能力低、協(xié)作效率低、團隊穩(wěn)定性差、項目規(guī)模大、人員能力低和系統(tǒng)復(fù)雜度高等8方面,表1根據(jù)文獻調(diào)研度量這些風險因子,避免過多的主觀輸入影響風險評估的準確性。

表1 典型軟件外包風險因子度量
每個風險因子均分為5個等級,分別為極高(Very High)、高(High)、中(Nominal)、低(Low)、極 低(Very Low),每個等級對應(yīng)一個具體的數(shù)值,成為風險知識庫的一部分(如圖1所示)。此外,風險知識庫還包括風險因子對關(guān)聯(lián)規(guī)則和風險因子度量指標。
在兩個風險因子均取極值的情況下,它們共同對項目產(chǎn)生的影響遠遠大于單個風險因子所產(chǎn)生的影響,稱此共現(xiàn)風險因子為 “風險因子對”。例如,當系統(tǒng)復(fù)雜度高、人員能力低時形成一個風險因子對,根據(jù)風險因子對關(guān)聯(lián)規(guī)則[7]將其形式化表示為:
IF((業(yè)務(wù)流程的復(fù)雜度高>Nominal)AND(人員能力<Nominal))
THEN <業(yè)務(wù)流程的復(fù)雜度,人員能力>會產(chǎn)生一個項目風險。

圖1 風險知識庫
采用風險因子對可避免如下的情況出現(xiàn):對于風險因子對<業(yè)務(wù)流程的復(fù)雜度高,人員能力低>而言,當業(yè)務(wù)流程的復(fù)雜度高、人員能力高時,業(yè)務(wù)流程復(fù)雜度高帶來的風險可通過人員能力高緩解;只有當業(yè)務(wù)流程復(fù)雜度高、人員能力低時,帶來的風險很大并且破壞程度很高,原因在于當人員能力低時,可能需要花費大量的時間熟悉高復(fù)雜度的業(yè)務(wù)流程。
基于表1識別的典型軟件外包風險因子,通過Delphi法確定風險因子對。Delphi法采用匿名方式調(diào)查專家對問卷中問題的看法,在此過程中專家不可以互相討論,經(jīng)過多次信息反饋,最后歸納出專家基本一致的意見作為比較準確的預(yù)測結(jié)果。本文中Delphi專家組由2位領(lǐng)域?qū)<遥?位項目經(jīng)理,3名開發(fā)人員組成。經(jīng)過兩輪Delphi法,最終形成表2的風險因子對發(fā)生概率調(diào)查表,方格中的數(shù)字除以6即為風險因子對發(fā)生概率。

表2 風險因子對發(fā)生概率調(diào)查
在確定風險因子對后,軟件外包項目整體風險通過如下的公式計算

式中:Rfi、Rfj——第i、j個風險因子對應(yīng)的等級,riskprobij——風險因子對<Rfi,Rfj>發(fā)生概率,Project risk——軟件外包項目整體風險。在獲得項目整體風險后,根據(jù)式(2)判斷哪對風險因子對對項目整體風險影響最大,其中1≤i≤8,i≤j≤8

風險因子雖然可以量化度量,但是對于一些項目收集不到相關(guān)數(shù)據(jù),在這種情況下,我們引入蒙特卡洛仿真法評估軟件外包項目風險。蒙特卡洛仿真是一種隨機仿真方法,常用于風險分析。它依賴于重復(fù)隨機樣本仿真過程并計算結(jié)果,常用來處理輸入不確定的情形。蒙特卡洛仿真在軟件過程仿真、需求分析、風險分析中也很常見。當收集不到風險因子量化度量相關(guān)數(shù)據(jù)時,風險因子等級的選擇依賴于主觀輸入。例如,對于風險因子等級低(Low)與很低(Very Low)之間沒有顯著的差異,因此不同的人會有不同選擇。結(jié)果,我們不能給出一個準確的輸入。或者,我們可能感覺我們的協(xié)作效率更接近于低(Low)而不是很低(Very Low),所以我們選擇低(Low)。然而,這樣會存在不確定或錯誤輸入的風險。為了解決這個問題,我們用蒙特卡洛仿真評估風險,提高評估結(jié)果的準確性。
下面給出基于風險因子對的軟件外包風險評估方法的描述,如圖2所示。
采用基于風險因子對的軟件外包風險評估方法評估國內(nèi)一家軟件外包企業(yè)的6個項目中潛在風險。主要采取以下幾個步驟:
步驟1 根據(jù)風險知識庫(如圖1所示)中的風險因子量化度量指標收集項目中風險相關(guān)數(shù)據(jù)(見表3)。

圖2 軟件風險評估流程

表3 風險因子等級
步驟2 根據(jù)風險知識庫中(如圖1所示)的風險因子對關(guān)聯(lián)規(guī)則確定風險因子對。例如對于Project2,存在<系統(tǒng)復(fù)雜度高,項目規(guī)模大>、<系統(tǒng)復(fù)雜度高,需求的不確定性高>、<項目規(guī)模大,需求的不確定性高>等風險因子對。由于風險因子較少,在一些項目中不存在風險因子對,這時計算出的項目風險值為0。但這并不意味著項目中不存在風險,在這種情況下,計算過程中考慮所有風險因子等級。
步驟3 評估項目風險。首先根據(jù)式(1)和風險因子對發(fā)生概率(見表2)計算這6個項目的風險,并進行標準化處理,使得項目的風險值介于0到100。
然后,根據(jù)報告風險判斷該軟件外包風險評估方法的準確性,如圖3所示。x軸為項目中記錄的風險,y軸為使用該方法計算得到的風險值,圖3中的趨勢線顯示使用我們的軟件外包風險評估方法計算的風險與報告風險之間的相關(guān)性很強。這表明采用我們的評估方法可有效地評估這6個軟件外包項目的風險。

圖3 項目風險評估結(jié)果
步驟4 根據(jù)式(2)判斷對項目整體風險影響最大的軟件外包風險因子對(如圖4所示)。x軸為對各個項目風險產(chǎn)生最大影響的風險因子對,y軸為該風險因子對在項目整體風險中所占的比重。對于Project2,風險因子對<需求的不確定性高,項目規(guī)模大>帶來的風險約占項目整體風險的10.89%,若在項目早期有效控制該風險因子對帶來的風險,項目整體風險將大幅降低。
由于收集的6個項目數(shù)據(jù)都較為明確,所以本文的案例研究沒有涉及到蒙特卡洛仿真法評估項目風險。在數(shù)據(jù)較為充足的情況下,還需加強對蒙特卡洛仿真法評估風險的案例研究。

圖4 對項目整體風險影響最大的軟件外包風險因子對
軟件外包項目具有很多優(yōu)勢,但不可避免地伴隨著許多風險。有效的風險評估可以避免項目開發(fā)范圍、時間、成本、質(zhì)量達不到要求,出現(xiàn)被不可實現(xiàn)的長期外包合同套牢的后果以及無法取得預(yù)期的外包收益。針對軟件外包風險數(shù)據(jù)難以獲取、不確定性較多的特點,本文提出基于風險因子對的軟件外包風險評估方法。首先通過專家訪談確定影響外包軟件的8個典型風險因子,采用文獻調(diào)研的法對風險因子量化度量,依據(jù)兩輪Delphi法確定風險因子對,然后應(yīng)用公式法進行基于風險因子對的風險評估,并以蒙特卡羅仿真法作為其互補的風險評估方法,最后通過案例研究加以說明。研究發(fā)現(xiàn),采用基于風險因子對的軟件外包風險評估方法可以有效評估軟件外包項目中的風險,同時該方法簡單、實用,具有一定的工程應(yīng)用價值。
然而,本文僅提出軟件外包風險評估方法,并未對如何有效轉(zhuǎn)移風險、控制風險等做深入的研究,對此將來有待進一步研究。
[1]Lascano N,Maniasi S,Colla P.A structured framework for managing offshore outsourcing risks on software support projects[C]//Saint Petersburg,Russia:Software Engineering Approaches for Offshore and Outsourced Development,2010:87-95.
[2]Waterworth B.Technical report——estimating from use cases[R].IBM,2006.
[3]Sakthivel S.Managing risk in offshore systems development[J].Communications of the ACM,2007,50(4):69-75.
[4]Bush A A,Tiwana A,Tsuji H.An empirical investigation of the drivers of software outsourcing decisions in Japanese organizations[J].Information and Software Technology,2008,50(6):499-510.
[5]Sheng Z.Preliminary analysis for risk finding in offshore software outsourcing from vendor’s viewpoint[C]//Zurich,Switzerland:Software Engineering Approaches for Offshore and Outsourced Development,2009:134-148.
[6]Taylor H.Critical risks in outsourced IT projects:The intractable and the unforeseen[J].Communications of the ACM,2006,49(11):74-79.
[7]Betz S,ki J M.Amplification of the COCOMO II regarding offshore software projects[C]//Munich,Germany:Workshop on Offshoring of Software Development-Methods and Tools for Risk Management at the Second International Conference on Global Software Engineering,2007.
[8]Aundhe MD,Mathew S K.Risks in offshore IT outsourcing:A service provider perspective[J].European Management Journal,2009,27(6):418-428.
[9]Iacovou C L,Nakatsu R.A risk profile of offshore-outsourced development projects[J].Communications of the ACM,2008,51(6):89-94.
[10]Nakatsu R T,Iacovou C L.A comparative study of important risk factors involved in offshore and domestic outsourcing of software development projects:A two-panel Delphi study[J].Information & Management,2009,46(1):57-68.
[11]Dhar S,Balakrishnan B.Risks,benefits,and challenges in global IT outsourcing[J].Journal of Global Information Management,2006,14(3):59-89.
[12]Yang Y,Boehm B,Wu D.COCOTS risk analyzer[C]//Florida,USA:Commercial-off-the-Shelf-Based Software Systems,2006.