曹利華,陳喜昌,劉彥斌,胡 潔,衛(wèi)劍釩,馬 迪
(1.中國科學(xué)院軟件研究所,北京100190;2.中國科學(xué)院研究生院,北京100190;3.國家開發(fā)銀行,北京100037)
由于軟件外包項目具有很多優(yōu)勢,它越來越受到軟件企業(yè)的青睞。但發(fā)包方和接包方之間存在不可避免的地域、文化、價值觀及管理方法等方面的差異,使得軟件項目在其外包生命周期過程中存在各種風(fēng)險。研究表明,大約40%的軟件外包開發(fā)項目均以失敗告終,80%的項目在生命周期的不同階段會遇到問題[1],導(dǎo)致項目進(jìn)度延期和成本超支。其中缺乏風(fēng)險管理是項目進(jìn)度延期和成本超支的主要原因之一,所以有效地進(jìn)行風(fēng)險評估等風(fēng)險管理活動對項目的成敗至關(guān)重要。近年來,風(fēng)險評估技術(shù)依據(jù)項目所能提供的經(jīng)驗(yàn)數(shù)據(jù)的多少及信息詳細(xì)程度,可分為定性和定量分析兩種。然而無論采用哪種方法,在應(yīng)用軟件項目的實(shí)際開發(fā)中,風(fēng)險的評估往往因?yàn)檫^多依賴于用戶的主觀輸入,以至于評估有偏差。特別對于軟件外包項目,由于缺乏軟件外包領(lǐng)域的風(fēng)險研究,導(dǎo)致軟件外包項目的失敗比重遠(yuǎn)遠(yuǎn)高于普通軟件的。本文提出一種基于風(fēng)險因子對的軟件外包風(fēng)險評估方法解決軟件外包風(fēng)險數(shù)據(jù)難以獲取、不確定性較多的問題。
軟件外包項目面臨著眾多的風(fēng)險,如何從中選取風(fēng)險因子以及選取哪些風(fēng)險因子對項目的評估都是至關(guān)重要的;在確定了典型外包風(fēng)險因子后,如何確定哪些因子的共現(xiàn)會給項目帶來嚴(yán)重的風(fēng)險也是一個研究重點(diǎn)。下文將圍繞這兩個問題展開。
由于訪談具有使工作分析人員了解到短期內(nèi)直接觀察法不容易發(fā)現(xiàn)的情況,有助于管理者發(fā)現(xiàn)問題,本文通過訪談國內(nèi)幾家著名外包企業(yè)的專家獲得軟件外包中典型的風(fēng)險因子,其中包括業(yè)務(wù)流程的復(fù)雜度高、需求的不確定性高、項目管理能力低、協(xié)作效率低、團(tuán)隊穩(wěn)定性差、項目規(guī)模大、人員能力低和系統(tǒng)復(fù)雜度高等8方面,表1根據(jù)文獻(xiàn)調(diào)研度量這些風(fēng)險因子,避免過多的主觀輸入影響風(fēng)險評估的準(zhǔn)確性。
表1 典型軟件外包風(fēng)險因子度量
每個風(fēng)險因子均分為5個等級,分別為極高(Very High)、高(High)、中(Nominal)、低(Low)、極 低(Very Low),每個等級對應(yīng)一個具體的數(shù)值,成為風(fēng)險知識庫的一部分(如圖1所示)。此外,風(fēng)險知識庫還包括風(fēng)險因子對關(guān)聯(lián)規(guī)則和風(fēng)險因子度量指標(biāo)。
在兩個風(fēng)險因子均取極值的情況下,它們共同對項目產(chǎn)生的影響遠(yuǎn)遠(yuǎn)大于單個風(fēng)險因子所產(chǎn)生的影響,稱此共現(xiàn)風(fēng)險因子為 “風(fēng)險因子對”。例如,當(dāng)系統(tǒng)復(fù)雜度高、人員能力低時形成一個風(fēng)險因子對,根據(jù)風(fēng)險因子對關(guān)聯(lián)規(guī)則[7]將其形式化表示為:
IF((業(yè)務(wù)流程的復(fù)雜度高>Nominal)AND(人員能力<Nominal))
THEN <業(yè)務(wù)流程的復(fù)雜度,人員能力>會產(chǎn)生一個項目風(fēng)險。
圖1 風(fēng)險知識庫
采用風(fēng)險因子對可避免如下的情況出現(xiàn):對于風(fēng)險因子對<業(yè)務(wù)流程的復(fù)雜度高,人員能力低>而言,當(dāng)業(yè)務(wù)流程的復(fù)雜度高、人員能力高時,業(yè)務(wù)流程復(fù)雜度高帶來的風(fēng)險可通過人員能力高緩解;只有當(dāng)業(yè)務(wù)流程復(fù)雜度高、人員能力低時,帶來的風(fēng)險很大并且破壞程度很高,原因在于當(dāng)人員能力低時,可能需要花費(fèi)大量的時間熟悉高復(fù)雜度的業(yè)務(wù)流程。
基于表1識別的典型軟件外包風(fēng)險因子,通過Delphi法確定風(fēng)險因子對。Delphi法采用匿名方式調(diào)查專家對問卷中問題的看法,在此過程中專家不可以互相討論,經(jīng)過多次信息反饋,最后歸納出專家基本一致的意見作為比較準(zhǔn)確的預(yù)測結(jié)果。本文中Delphi專家組由2位領(lǐng)域?qū)<遥?位項目經(jīng)理,3名開發(fā)人員組成。經(jīng)過兩輪Delphi法,最終形成表2的風(fēng)險因子對發(fā)生概率調(diào)查表,方格中的數(shù)字除以6即為風(fēng)險因子對發(fā)生概率。
表2 風(fēng)險因子對發(fā)生概率調(diào)查
在確定風(fēng)險因子對后,軟件外包項目整體風(fēng)險通過如下的公式計算
式中:Rfi、Rfj——第i、j個風(fēng)險因子對應(yīng)的等級,riskprobij——風(fēng)險因子對<Rfi,Rfj>發(fā)生概率,Project risk——軟件外包項目整體風(fēng)險。在獲得項目整體風(fēng)險后,根據(jù)式(2)判斷哪對風(fēng)險因子對對項目整體風(fēng)險影響最大,其中1≤i≤8,i≤j≤8
風(fēng)險因子雖然可以量化度量,但是對于一些項目收集不到相關(guān)數(shù)據(jù),在這種情況下,我們引入蒙特卡洛仿真法評估軟件外包項目風(fēng)險。蒙特卡洛仿真是一種隨機(jī)仿真方法,常用于風(fēng)險分析。它依賴于重復(fù)隨機(jī)樣本仿真過程并計算結(jié)果,常用來處理輸入不確定的情形。蒙特卡洛仿真在軟件過程仿真、需求分析、風(fēng)險分析中也很常見。當(dāng)收集不到風(fēng)險因子量化度量相關(guān)數(shù)據(jù)時,風(fēng)險因子等級的選擇依賴于主觀輸入。例如,對于風(fēng)險因子等級低(Low)與很低(Very Low)之間沒有顯著的差異,因此不同的人會有不同選擇。結(jié)果,我們不能給出一個準(zhǔn)確的輸入?;蛘?,我們可能感覺我們的協(xié)作效率更接近于低(Low)而不是很低(Very Low),所以我們選擇低(Low)。然而,這樣會存在不確定或錯誤輸入的風(fēng)險。為了解決這個問題,我們用蒙特卡洛仿真評估風(fēng)險,提高評估結(jié)果的準(zhǔn)確性。
下面給出基于風(fēng)險因子對的軟件外包風(fēng)險評估方法的描述,如圖2所示。
采用基于風(fēng)險因子對的軟件外包風(fēng)險評估方法評估國內(nèi)一家軟件外包企業(yè)的6個項目中潛在風(fēng)險。主要采取以下幾個步驟:
步驟1 根據(jù)風(fēng)險知識庫(如圖1所示)中的風(fēng)險因子量化度量指標(biāo)收集項目中風(fēng)險相關(guān)數(shù)據(jù)(見表3)。
圖2 軟件風(fēng)險評估流程
表3 風(fēng)險因子等級
步驟2 根據(jù)風(fēng)險知識庫中(如圖1所示)的風(fēng)險因子對關(guān)聯(lián)規(guī)則確定風(fēng)險因子對。例如對于Project2,存在<系統(tǒng)復(fù)雜度高,項目規(guī)模大>、<系統(tǒng)復(fù)雜度高,需求的不確定性高>、<項目規(guī)模大,需求的不確定性高>等風(fēng)險因子對。由于風(fēng)險因子較少,在一些項目中不存在風(fēng)險因子對,這時計算出的項目風(fēng)險值為0。但這并不意味著項目中不存在風(fēng)險,在這種情況下,計算過程中考慮所有風(fēng)險因子等級。
步驟3 評估項目風(fēng)險。首先根據(jù)式(1)和風(fēng)險因子對發(fā)生概率(見表2)計算這6個項目的風(fēng)險,并進(jìn)行標(biāo)準(zhǔn)化處理,使得項目的風(fēng)險值介于0到100。
然后,根據(jù)報告風(fēng)險判斷該軟件外包風(fēng)險評估方法的準(zhǔn)確性,如圖3所示。x軸為項目中記錄的風(fēng)險,y軸為使用該方法計算得到的風(fēng)險值,圖3中的趨勢線顯示使用我們的軟件外包風(fēng)險評估方法計算的風(fēng)險與報告風(fēng)險之間的相關(guān)性很強(qiáng)。這表明采用我們的評估方法可有效地評估這6個軟件外包項目的風(fēng)險。
圖3 項目風(fēng)險評估結(jié)果
步驟4 根據(jù)式(2)判斷對項目整體風(fēng)險影響最大的軟件外包風(fēng)險因子對(如圖4所示)。x軸為對各個項目風(fēng)險產(chǎn)生最大影響的風(fēng)險因子對,y軸為該風(fēng)險因子對在項目整體風(fēng)險中所占的比重。對于Project2,風(fēng)險因子對<需求的不確定性高,項目規(guī)模大>帶來的風(fēng)險約占項目整體風(fēng)險的10.89%,若在項目早期有效控制該風(fēng)險因子對帶來的風(fēng)險,項目整體風(fēng)險將大幅降低。
由于收集的6個項目數(shù)據(jù)都較為明確,所以本文的案例研究沒有涉及到蒙特卡洛仿真法評估項目風(fēng)險。在數(shù)據(jù)較為充足的情況下,還需加強(qiáng)對蒙特卡洛仿真法評估風(fēng)險的案例研究。
圖4 對項目整體風(fēng)險影響最大的軟件外包風(fēng)險因子對
軟件外包項目具有很多優(yōu)勢,但不可避免地伴隨著許多風(fēng)險。有效的風(fēng)險評估可以避免項目開發(fā)范圍、時間、成本、質(zhì)量達(dá)不到要求,出現(xiàn)被不可實(shí)現(xiàn)的長期外包合同套牢的后果以及無法取得預(yù)期的外包收益。針對軟件外包風(fēng)險數(shù)據(jù)難以獲取、不確定性較多的特點(diǎn),本文提出基于風(fēng)險因子對的軟件外包風(fēng)險評估方法。首先通過專家訪談確定影響外包軟件的8個典型風(fēng)險因子,采用文獻(xiàn)調(diào)研的法對風(fēng)險因子量化度量,依據(jù)兩輪Delphi法確定風(fēng)險因子對,然后應(yīng)用公式法進(jìn)行基于風(fēng)險因子對的風(fēng)險評估,并以蒙特卡羅仿真法作為其互補(bǔ)的風(fēng)險評估方法,最后通過案例研究加以說明。研究發(fā)現(xiàn),采用基于風(fēng)險因子對的軟件外包風(fēng)險評估方法可以有效評估軟件外包項目中的風(fēng)險,同時該方法簡單、實(shí)用,具有一定的工程應(yīng)用價值。
然而,本文僅提出軟件外包風(fēng)險評估方法,并未對如何有效轉(zhuǎn)移風(fēng)險、控制風(fēng)險等做深入的研究,對此將來有待進(jì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.