與任何其他工程項(xiàng)目一樣,軟件工程項(xiàng)目的開(kāi)發(fā)也存在各種各樣的風(fēng)險(xiǎn),有些風(fēng)險(xiǎn)甚至是災(zāi)難性的。R.Charette認(rèn)為,風(fēng)險(xiǎn)與將要發(fā)生的事情有關(guān),它涉及諸如思想、觀念、行為、地點(diǎn)、時(shí)間等多種因素;風(fēng)險(xiǎn)隨條件的變化而改變,人們改變、選擇、控制與風(fēng)險(xiǎn)密切相關(guān)的條件可以減少風(fēng)險(xiǎn),但改變、選擇、控制條件的策略往往是不確定的。在軟件開(kāi)發(fā)過(guò)程中,人們關(guān)心的問(wèn)題是,什么風(fēng)險(xiǎn)會(huì)導(dǎo)致軟件項(xiàng)目的徹底失敗?顧客需求、開(kāi)發(fā)環(huán)境、目標(biāo)機(jī)、時(shí)間、成本的改變對(duì)軟件項(xiàng)目的風(fēng)險(xiǎn)會(huì)產(chǎn)生什么影響?人們必須抓住什么機(jī)會(huì)、采取什么措施才能有效地減少風(fēng)險(xiǎn)、順利完成任務(wù)?所有這些問(wèn)題都是軟件開(kāi)發(fā)過(guò)程中不可避免并需要妥善處理的。軟件工程的風(fēng)險(xiǎn)分析包括:風(fēng)險(xiǎn)標(biāo)識(shí)、風(fēng)險(xiǎn)估算、風(fēng)險(xiǎn)評(píng)價(jià)和風(fēng)險(xiǎn)管理四部分。
1、風(fēng)險(xiǎn)標(biāo)識(shí)
從宏觀上看,風(fēng)險(xiǎn)可以分為項(xiàng)目風(fēng)險(xiǎn)、技術(shù)風(fēng)險(xiǎn)和商業(yè)風(fēng)險(xiǎn)三類(lèi)。由于項(xiàng)目在預(yù)算、進(jìn)度、人力、資源、顧客和需求等方面的原因?qū)浖?xiàng)目產(chǎn)生的不良影響稱(chēng)為項(xiàng)目風(fēng)險(xiǎn)。軟件在設(shè)計(jì)、實(shí)現(xiàn)、接口、驗(yàn)證和維護(hù)過(guò)程中可能發(fā)生的潛在問(wèn)題,如規(guī)格說(shuō)明的二義性、采用陳舊或尚不成熟的技術(shù)等等,對(duì)軟件項(xiàng)目帶來(lái)的危害稱(chēng)技術(shù)風(fēng)險(xiǎn)。開(kāi)發(fā)了一個(gè)沒(méi)人需要的優(yōu)質(zhì)軟件,或推銷(xiāo)部門(mén)不知如何銷(xiāo)售這一軟件產(chǎn)品,或開(kāi)發(fā)的產(chǎn)品不符合公司的產(chǎn)品銷(xiāo)售戰(zhàn)略,等等,稱(chēng)為商業(yè)風(fēng)險(xiǎn)。這些風(fēng)險(xiǎn)有些是可以預(yù)料的,有些是很難預(yù)料的。為了幫助項(xiàng)目管理人員、項(xiàng)目規(guī)劃人員全面了解軟件開(kāi)發(fā)過(guò)程存在的風(fēng)險(xiǎn),Boehm建議設(shè)計(jì)并使用各類(lèi)風(fēng)險(xiǎn)檢測(cè)表標(biāo)識(shí)各種風(fēng)險(xiǎn)。例1給出一個(gè)參考性的“人員配備風(fēng)險(xiǎn)檢測(cè)”。
例1、人員配備風(fēng)險(xiǎn)檢測(cè)。
(1)開(kāi)發(fā)人員的水平如何。
(2)開(kāi)發(fā)人員在技術(shù)上是否配套。
(3)開(kāi)發(fā)人員的數(shù)量如何。
(4)開(kāi)發(fā)人員是否能夠自始至終地參加軟件開(kāi)發(fā)工作。
(5)開(kāi)發(fā)人員是否能夠集中全部精力投入軟件開(kāi)發(fā)工作。
(6)開(kāi)發(fā)人員對(duì)自己的工作是否有正確的期望。
(7)開(kāi)發(fā)人員是否接受過(guò)必要的培訓(xùn)。
(8)開(kāi)發(fā)人員的流動(dòng)是否能夠保證工作的連續(xù)性。
上述問(wèn)題可以選用0,1,2,3,4,5來(lái)回答。完全肯定取值為0,反之為5,中間情況分別取值1,2,3,4。值越大表示風(fēng)險(xiǎn)越大。人員配備風(fēng)險(xiǎn)檢測(cè)表反映了人的因素對(duì)軟件項(xiàng)目的影響,可以用它來(lái)估算人的因素對(duì)軟件項(xiàng)目帶來(lái)的風(fēng)險(xiǎn)。
2、風(fēng)險(xiǎn)估算
軟件項(xiàng)目管理人員可以從影響風(fēng)險(xiǎn)的因素和風(fēng)險(xiǎn)發(fā)生后帶來(lái)的損失兩方面來(lái)度量風(fēng)險(xiǎn)。為了對(duì)各種風(fēng)險(xiǎn)進(jìn)行估算,必須建立風(fēng)險(xiǎn)度量指標(biāo)體系;必須指明各種風(fēng)險(xiǎn)帶來(lái)的后果和損失;必須估算風(fēng)險(xiǎn)對(duì)軟件項(xiàng)目及軟件產(chǎn)品的影響;必須給出風(fēng)險(xiǎn)估算的定量結(jié)果。
3、風(fēng)險(xiǎn)評(píng)價(jià)和管理
在風(fēng)險(xiǎn)分析過(guò)程中,經(jīng)常使用三元組[RI,LI,XI]描述風(fēng)險(xiǎn)。其中RI代表風(fēng)險(xiǎn),LI表示風(fēng)險(xiǎn)發(fā)生的概率,XI是風(fēng)險(xiǎn)帶來(lái)的影響,I = 1,2,…L是風(fēng)險(xiǎn)序號(hào),表示軟件項(xiàng)目共有L種風(fēng)險(xiǎn)。軟件開(kāi)發(fā)過(guò)程中,由于項(xiàng)目超支、進(jìn)度拖延和軟件性能下降都會(huì)導(dǎo)致軟件項(xiàng)目的終止,因此多數(shù)軟件項(xiàng)目的風(fēng)險(xiǎn)分析都需要給出成本、進(jìn)度和性能三種典型的風(fēng)險(xiǎn)參考量。當(dāng)軟件項(xiàng)目的風(fēng)險(xiǎn)參考量達(dá)到或超過(guò)某一臨界點(diǎn)時(shí),軟件項(xiàng)目將被迫終止。在軟件開(kāi)發(fā)過(guò)程中,成本、進(jìn)度、性能是相互關(guān)聯(lián)的。例如,項(xiàng)目投入成本的增長(zhǎng)應(yīng)與進(jìn)度相匹配,當(dāng)項(xiàng)目投入的成本與項(xiàng)目拖延的時(shí)間超過(guò)某一臨界點(diǎn)時(shí),項(xiàng)目也應(yīng)該終止進(jìn)行。通常風(fēng)險(xiǎn)估算過(guò)程可分為四步:
?、俣x項(xiàng)目的風(fēng)險(xiǎn)參考量;
?、诙x每種風(fēng)險(xiǎn)的三元組[RI,LI,XI];
?、鄱x項(xiàng)目被迫終止的臨界點(diǎn);
?、茴A(yù)測(cè)幾種風(fēng)險(xiǎn)組合對(duì)參考量的綜合影響。