七、經(jīng)典風(fēng)險管理理論
7.1 Boehm模型
Boehm用公式RE=P(UO)*L(UO)對風(fēng)險進(jìn)行定義,其中RE表示風(fēng)險或者風(fēng)險所造成的影響,P(UO)表示令人不滿意的結(jié)果所發(fā)生的概率,L(UO)表示糟糕的結(jié)果會產(chǎn)生的破壞性的程度。在風(fēng)險管理步驟上,Boehm基本沿襲了傳統(tǒng)的項(xiàng)目風(fēng)險管理理論,指出風(fēng)險管理由風(fēng)險評估和風(fēng)險控制兩大部分組成,風(fēng)險評估又可分為識別、分析、設(shè)置優(yōu)先級3個子步驟,風(fēng)險控制則包括制定管理計劃、解決和監(jiān)督風(fēng)險3步。
Boehm思想的核心是10大風(fēng)險因素列表,其中包括人員短缺、不合理的進(jìn)度安排和預(yù)算、不斷的需求變動等。針對每個風(fēng)險因素,Boehm都給出了一系列的風(fēng)險管理策略。在實(shí)際操作時,以10大風(fēng)險列表為依據(jù),總結(jié)當(dāng)前項(xiàng)目具體的風(fēng)險因素,評估后進(jìn)行計劃和實(shí)施,在下一次定期召開的會議上再對這10大風(fēng)險因素的解決情況進(jìn)行總結(jié),產(chǎn)生新的10大風(fēng)險因素表,依此類推。
10大風(fēng)險列表的思想可以將管理層的注意力有效地集中在高風(fēng)險、高權(quán)重、嚴(yán)重影響項(xiàng)目成功的關(guān)鍵因素上,而不需要考慮眾多的低優(yōu)先級的細(xì)節(jié)問題。而且,這個列表是通過對美國幾個大型航空或國防系統(tǒng)軟件項(xiàng)目的深入調(diào)查,編輯整理而成的,因此有一定的普遍性和實(shí)際性。但是它只是基于對風(fēng)險因素集合的歸納,尚未有文章論述其具體的理論基礎(chǔ)、原始數(shù)據(jù)及其歸納方法。另外,Boehm也沒有清晰明確地說明風(fēng)險管理模型到底要捕獲哪些軟件風(fēng)險的特殊方面,因?yàn)榱信e的風(fēng)險因素會隨著多個風(fēng)險管理方法而變動,同時也互相影響。這意味著風(fēng)險列表需要改進(jìn)和擴(kuò)充,管理步驟也需要優(yōu)化。
雖然其理論存在一些不足,但Boehm畢竟可以說是軟件項(xiàng)目風(fēng)險管理的開山鼻祖。在其之后,更多的組織和個人開始了對風(fēng)險管理的研究,軟件項(xiàng)目風(fēng)險管理的重要性日益得到認(rèn)同。
7.2 CRM模型
SEI(Software Engineering Institution)作為世界上的旨在改善軟件工程管理實(shí)踐的組織,也對風(fēng)險管理投入了大量的熱情。SEI提出了持續(xù)風(fēng)險管理管理模型CRM(Continuous Risk Management)。
SEI的風(fēng)險管理原則是:不斷地評估可能造成惡劣后果的因素;決定迫切需要處理的風(fēng)險;實(shí)現(xiàn)控制風(fēng)險的策略;評測并確保風(fēng)險策略實(shí)施的有效性。
CRM模型要求在項(xiàng)目生命期的所有階段都關(guān)注風(fēng)險識別和管理,它將風(fēng)險管理劃分為5個步驟:風(fēng)險識別、分析、計劃、跟蹤、控制。下圖所示的框架顯示了應(yīng)用CRM的基礎(chǔ)活動及其之間的交互關(guān)系,強(qiáng)調(diào)了這是一個在項(xiàng)目開發(fā)過程中反復(fù)持續(xù)進(jìn)行的活動序列。每個風(fēng)險因素一般都需要按順序經(jīng)過這些活動,但是對不同風(fēng)險因素開展的不同活動可以是并發(fā)的或者交替的。
圖中的箭頭標(biāo)識了信息的邏輯流,而溝通則是信息流的核心和手段。其中,風(fēng)險識別依靠問卷完成,問卷覆蓋了大概200個問題,一共涉及13個主要領(lǐng)域。風(fēng)險分析側(cè)重于理解每個風(fēng)險在該項(xiàng)目中的發(fā)生幾率和后果嚴(yán)重性,從而產(chǎn)生嚴(yán)重的10大風(fēng)險問題。風(fēng)險計劃是將如下內(nèi)容文檔化:風(fēng)險管理步驟的描述、負(fù)責(zé)人及其職責(zé)、行為執(zhí)行和完結(jié)的時間,并且確定風(fēng)險處理的優(yōu)先級,制定整體的管理計劃。風(fēng)險跟蹤是獲取、整理并匯報10大風(fēng)險問題當(dāng)前的狀態(tài),其目的是收集精確的、及時的和相關(guān)的信息,并將它們表達(dá)成容易理解的方式提交給負(fù)責(zé)人。風(fēng)險控制是為了根據(jù)風(fēng)險及其緩解計劃進(jìn)行及時而有效的決策,具體操作包括分析風(fēng)險跟蹤階段產(chǎn)生的風(fēng)險狀態(tài)信息,明確地決定采取什么行動,并實(shí)現(xiàn)它們。而處于核心地位的溝通則強(qiáng)調(diào)其有效性和針對性,要注意將合適的信息傳達(dá)給合適的組織層次以得到有效的分析和管理,這些層次包括開發(fā)方和用戶方雙方的組織結(jié)構(gòu)。
7.3 Leavitt模型
SEI和Boehm的模型都以風(fēng)險管理的過程為主體,研究每個步驟所需的參考信息及其操作。而Aalborg大學(xué)提出的思路則是以Leavitt模型為基礎(chǔ),著重從導(dǎo)致軟件開發(fā)風(fēng)險的不同角度出發(fā)探討風(fēng)險管理。
1964年提出的Leavitt模型將形成各種系統(tǒng)的組織劃分為4個有趣的組成部分:任務(wù)、結(jié)構(gòu)、角色和技術(shù)。這4個組成部分和軟件開發(fā)的各因素很好地對應(yīng)起來:角色覆蓋了所有的項(xiàng)目參與者,例如軟件用戶、項(xiàng)目經(jīng)理和設(shè)計人員等;結(jié)構(gòu)表示項(xiàng)目組織和其他制度上的安排;技術(shù)則包括開發(fā)工具、方法、硬件軟件平臺;任務(wù)描述了項(xiàng)目的目標(biāo)和預(yù)期結(jié)果。Leavitt模型的關(guān)鍵思路是:模型的各個組成部分是密切相關(guān)的,一個組成部分的變化會影響其他的組成部分,如果一個組成部分的狀態(tài)和其他的狀態(tài)不一致,會造成比較嚴(yán)重的后果,并可能降低整個系統(tǒng)的性能。
將這個模型和軟件風(fēng)險的概念相對應(yīng),即一個系統(tǒng)開發(fā)過程中任何Leavitt組成成分的修改都會產(chǎn)生一些問題,甚至導(dǎo)致軟件修改的失敗。根據(jù)Leavitt模型,任何導(dǎo)致風(fēng)險發(fā)生的因素都可以歸結(jié)為模型中的組成部分,例如技術(shù)及其可行性;或者歸結(jié)為組成部分之間的聯(lián)系,例如程序開發(fā)人員使用某一技術(shù)的能力。因此,使用Leavitt模型從4個方面分別識別和分析軟件項(xiàng)目的風(fēng)險是極有條理性和比較全面的。在進(jìn)行軟件項(xiàng)目管理時,可以采用不同的方法對不同的方面進(jìn)行風(fēng)險管理。
Leavitt模型實(shí)際上是提出一個框架,可以更加廣泛和系統(tǒng)地將軟件風(fēng)險的相關(guān)信息組織起來。Leavitt理論的設(shè)計方法和實(shí)現(xiàn)研究已經(jīng)廣泛應(yīng)用于信息系統(tǒng)中,它所考慮的都是軟件風(fēng)險管理中十分重要的環(huán)節(jié),而且簡單、定義良好、適用于分析風(fēng)險管理步驟。
八、結(jié)束語
總之,在軟件項(xiàng)目開發(fā)過程中,當(dāng)對軟件的期望很高時,一般都會進(jìn)行項(xiàng)目風(fēng)險分析、預(yù)測、評估、管理及監(jiān)控等風(fēng)險管理。通過風(fēng)險管理可以使項(xiàng)目進(jìn)程更加平穩(wěn),可以獲得很高的跟蹤和控制項(xiàng)目的能力,并且可以增強(qiáng)項(xiàng)目組成員對項(xiàng)目如期完成的信心。風(fēng)險管理是項(xiàng)目管理中很重要的管理活動,有效的實(shí)施軟件風(fēng)險管理是軟件項(xiàng)目開發(fā)工作順利完成的保證。