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