淺論軟體外協專案的風險管理(轉)

urinator發表於2007-08-15
淺論軟體外協專案的風險管理
任何專案都和其它經濟活動一樣,帶有一定的風險,軟體開發專案自然也包含各種各樣的風險,其中比較典型的一類就是軟體外協專案的風險。完全避開或消除風險是不可能的,但是我們可以儘量的減少損失,將威脅化為機會,這就要求專案主體充分了解和掌握風險的來源、性質以及發生規律,進而實行有效的管理。

專案風險管理一般包含以下幾個環節:風險管理計劃編制、風險識別、定性風險分析、定量風險分析、風險應對計劃編制以及風險監督和控制。其實這也就是一個對專案風險進行識別、分析和應對的系統的過程。

筆者組織開發過一個國家大型灌區資訊化系統專案,在實踐中對專案的軟體外協部分的風險以及風險管理感觸頗深。根據這個資訊化系統專案的實際情況,對待開發軟體系統中的用水配水子系統進行了外協。外協專案啟動以後,經過幾天短暫頻繁的接觸,幾個特殊的問題引起了注意。首先,之所以對這個子系統進行外協主要是因為協作方行業知識造詣頗深、業務精通。但是充分溝通後瞭解到協作方技術方面相對較差,包括比較重要的資料模型設計能力。其次協作方對需求不夠清晰,人力資源缺乏,專案投入人力不能讓人滿意。再加之專案工期要求很緊,上述問題就顯得突出,專案風險對專案目標構成了相當的威脅。認識到這種風險,在專案實施初期就有針對的制定出了應對辦法,例如積極提供強有力技術支援、要求協作方在開發初期提供詳細的開發計劃、高頻率的核實開發進度、輔助協作方進行版本控制、輔助協作方制定預見性的後續工作計劃等。最後經過雙方共同努力,使得外協軟體順利開發完成。

應該說這個例項比較明顯的體現了一個專案風險管理過程,包括專案週期開始認識到專案風險的存在,瞭解風險的詳細狀況以及分析風險原因,直到最後形成風險應對方案。這個過程對於專案目標而言就是將正面事件的概率和影響結果擴到最大和把負面事件的概率和影響結果減少到最小。那麼怎樣才能順利利用專案風險管理的關鍵環節達到風險管理目的呢?對於從事專案管理的人而言,首先應該明確什麼是風險?風險同人們有目的的活動有關。如果對預期結果沒有十分把握,則認為該項活動有風險;風險也同將來的活動和事件有關。已經結束的後果無法改變,對於將來的活動、事件或專案,總是有多種行動方案可供選擇,選擇不同方案形成不同的結果。一般認為風險就是活動或事件消極的,人們不希望的後果發生的潛在可能性。專案風險事件本身是獲取許可所花費的時間比計劃的要長,或是可能沒有充足人員來完成專案工作。其實,專案風險既包括對專案目標的威脅,也包括促進專案目標的機會,我們這裡只探討普通意義上的專案風險。

風險管理中第一個環節是風險管理計劃編制,這個環節是決定如何採取和計劃一個專案的風險管理活動的過程。風險管理的水平、型別和可見度不僅要與風險相稱,也要與專案對組織單位的重要性相稱,為了保證這一點,對隨後進行的各種風險管理過程做好計劃是非常重要的。一般做專案風險管理計劃編制依據專案的章程、組織單位的風險管理政策、明確的崗位和職責以及專案干係人的風險承受限度等因素。專案隊伍通過召開計劃編制會議來制定風險管理計劃,計劃中不闡述單個風險的應對,其內容包括以下幾點:一是對可能用於專案風險管理的方法進行明確的定義。例如針對本文中的例子,確定使用什麼辦法在早期發現協作方存在的問題;當可能出現協作方技術不足的情況下我們應該怎麼處理;對工期的節點監控辦法等。二是明確崗位和職責,明確定義每一類別行動的領導、輔助和風險管理小組人員。例如明確甲、乙雙方的小組負責人和成員,誰負責專案風險發現;誰負責進行質量控制;誰負責進度監督等。第三點為承受度,即風險承受度以誰為標準,採取何種方式。專案業主、客戶、或贊助者會有不同的風險承受度,可接受的風險承受度是專案隊伍衡量風險應對計劃執行效果的標準。對於本例而言,灌渠資訊化系統的業主方在工期方面的承受能力比較強,因為如果保證在灌期前系統到位,則順利進行一個灌季的試用,合同完成。否則可能要再多試用一個灌季,但業主可以接受。對於承接方的專案組而言則在這方面承受能力弱,專案目標是必須按工期、按質量完成,否則專案延期,成本增加。這其中也包含軟體外協部分對專案工期的影響,雖然對協作方有合同制約,但如果外協部分不能按期完成,協作方是會產生一定的、較小的損失,但損失最大的還是專案組,因為外協軟體影響了整個合同的進度。當然這其中還有很多其他因子,筆者認為這是比較重要的幾個方面。

有了概要的風險管理計劃,在實際管理過程中,首要的就是進行風險識別。專案風險識別是一項貫穿於專案實施全過程的專案風險管理工作,這項工作的目標是識別和確定出專案究竟有哪些風險,這些專案風險究竟有哪些基本的特徵,這些專案風險可能會影響專案哪些方面。確定專案的風險是屬於工期的風險、成本的風險還是質量的風險、有預警資訊還是無預警資訊風險、風險會給專案的工期、成本、質量造成什麼影響等。那麼識別風險主要依據是什麼呢?以下三點應該是比較重要的要素:一是專案產出的描述,因為專案風險識別最重要的內容是識別專案的工作能否按時、按質、按照預算限制去最終生成專案的產出物。二是專案的計劃資訊。三是歷史資料,以前完成的專案實際發生的各種意外事情的歷史資料,對於識別和確定新專案的風險和威脅是非常重要的資訊和依據,其實這就是經驗。比如本例中筆者首先是依據經驗意識到該外協專案風險的存在,意識到行業知識的欠缺導致對產出物質量評價的風險。其次專案的產出物要求是完整的軟體產品,提示專案組意識到強有力的軟體技術支撐是保證獲得預期產出物的前提。最後根據專案的整體進度計劃,外協軟體的工期風險也顯現出來。專案風險識別包括其他很多種方法,例如系統分解法、流程圖法、頭腦風暴法以及情景分析法等,這裡不作詳細描述。

專案管理者已經識別到了專案中存在的風險,接下來就是要對風險進行分析,分析包括定性分析和定量分析。包括風險分析在內,基本上所有事務的分析方式都是先進行定性分析,然後進行定量分析,我們這裡也先討論定性的風險分析。定性的風險分析是評估已識別風險的影響和可能性的過程,使用已有的定性分析方法和工具來評估風險的概率和後果。根據什麼進行定性的風險分析呢?大致包含以下幾個方面:專案初期已經形成的風險管理計劃、已經識別的風險、專案的狀態、專案的型別、概率範圍和後果等,特殊情況還包括假設,假設可以甄別出潛在的風險。通過定性風險分析,我們可以瞭解專案總體風險等級、可以得到風險優先次序清單、需要進一步分析和管理控制的風險清單、以及風險趨勢等。

定量風險分析過程的目標是量化分析每一風險的概率及其對專案目標造成的後果,也分析專案總體的風險程度。這一過程涉及的工作包括測定取得某一特定專案目標的概率;量化專案的風險暴露,決定可能需要的成本大小和進度計劃應急準備金;通過量化各風險對專案風險的相應貢獻,分析出最需要關注的風險;找出理想的和可實現的成本、進度計劃及工作範圍目標。形成定量風險分析結果有多種途徑,一種是訪談,訪談技術用於量化對專案目標造成影響的風險的概率和後果。將風險變動範圍基本原理形成文件是風險訪談的一個重要組成部分,因為它可以使我們在風險應對計劃編制過程中形成有效的風險應對策略。一種是敏感度分析,敏感度分析有助於確定哪種風險最有可能對專案產生影響,這種分析是在所有其他不確定性要素保持其基準值的前提下,考察每個專案要素的不確定性對專案目標影響的程度。一種是決策分析樹,決策分析通常結構化為決策樹形式,決策樹是一種圖表,它反映了尚在考慮中的一項決策,以及選擇一個方案和兩個被選方案中的另一個的暗示。決策樹將風險概率、事件的每一條合理路徑的成本和報酬、以及未來的決策綜合在一起。還有一種是模擬,專案模擬採用的模型,可以將詳細規定的不確定性轉化為對專案總體目標的潛在影響,使用蒙特卡羅技術是進行專案模擬的一種典型手段。我們可以使用一種方法,也可以使用多種途徑進行分析,直到最後得到量化的風險優先次序清單。這種量化或許是不準確的,但只要做了,總是可以得到一個大致的趨勢,便於專案管理者掌握專案風險狀態。

顯然,知道了風險,知道了風險的優先次序,必然要針對風險制定風險應對計劃。風險應對計劃編制是一個開發方案和制定措施的過程,目的是為了提升實現專案目標的機會、減低對專案目標的威脅。它包括確定人員負責每個已經認可的風險應對行動,以保證已識別出的風險得到合適的處置。風險應對計劃編制的有效性直接決定專案的風險是增加還是減少。風險應對計劃應該與風險的嚴重性、應對成本的有效性、完成任務的適時性相適應,並且確認由專人負責。風險應對的辦法一般包括四種策略:規避、轉移、緩解和接受。規避就是通過變更專案計劃,從而消除風險和產生風險的條件。減少專案範圍以規避高風險工作;增加專案資源和時間;採用一種熟悉的而不是創新的方法;避免使用一個不熟悉的分包商等都是風險規避的典型例子,本文描述的筆者的狀況顯然不屬於這種方式。風險轉移是設法將某風險的結果連同對風險進行應對的權利轉移給第三方,轉移風險只是將管理風險的責任轉移給另一方,它不能消除風險。轉移風險幾乎總是會伴有向接受風險的一方支付風險成本,應該說本文描述的軟體外協就是一種風險轉移,將專案組本身由於行業知識限制所造成的軟體開發風險轉移給第三方,同時伴隨了向接受風險的一方支付風險成本。所謂緩解是設法將某一負面風險事件的概率或其後果降低到一種可以接受的程度,早期採取措施降低風險發生的概率或風險對專案的影響,比在風險發生後再亡羊補牢更為有效,對照風險可能的概率和其後果,緩解的成本應是合理的。本文中描述的例子對於整個軟體外協專案來說,它的風險應對計劃是進行風險轉移,而對於已經外協後發現的類似協作方技術狀況弱等情況採取的早期介入,進行強力技術支援則是一種風險緩解。最後一種風險應對計劃就是接受,這種手段意味著專案隊伍決定以不變的專案計劃去應對某一風險,或專案隊伍不能找到其他合適的風險應對策略。積極的接受行動包括制定一個應急計劃,以備風險發生時用。消極的接受不需要任何行動,僅讓專案隊伍在風險發生時去對付風險。總的來說,接受是一種沒有辦法的辦法,除非環境所限可能一般都不會採用。對於編制好的風險應對計劃,它的每一條包含如下條目:已經識別的風險及其描述,風險成因以及風險可能如何影響專案目標;風險承擔人和分派的責任;定性和定量分析過程的結果;針對風險所確定的應對措施,包括規避、轉移、緩解或接受;在應對戰略實施後,期望的殘留風險水平;實施選定的應對戰略所需的具體行動;風險應對預算和時間;應急計劃和退卻計劃等。

到這一步,專案管理者應該已經成竹在胸了,因為已經識別到了風險、定性定量的分析了存在的風險、制定了風險應對計劃,只要按部就班的按計劃執行,就可以達到預期的目的,勝利已在眼前,但越是最後越是不可掉以輕心,要繼續重視風險的監督和控制。風險監督和控制是這樣一個專案管理過程,它跟蹤已識別的風險,監視殘餘風險和識別新的風險,保證風險計劃的執行,並評估這些計劃對降低風險的有效性。其實風險監督和控制是專案整個生命週期中一種持續進行的過程,隨著專案的成長,風險會不斷變化,可能會有新的風險出現,也可能預期的風險會消失。良好的風險監督和控制過程能為我們提供資訊,幫助我們在風險發生前作出有效決策。為了定期對專案風險水平的可接受程度做出評估,所有專案干係人之間的溝通是必要的。風險監督的目的包括監控風險應對措施是否已經按計劃得到實施;風險應對措施是否象期望的那樣有效;未曾識別的風險是否已經發生;專案假設是否依然成立等內容。

對筆者而言,在組織開發這個國家大型灌區資訊化系統的過程中,外協部分之所以能按期保質的完成,感觸頗深的就是前期全面深入的與協作方進行接觸,及時識別到存在的風險,組織專案組詳細的分析風險並制定出風險應對方案。這其中也反映出了專案風險管理在專案管理中的重要地位與作用。專案實行風險管理還有一些其他的好處,和大家共勉:通過風險分析,可加深對專案和風險的認識和理解,澄清各方案的利弊;可以提高專案各種計劃的可信度,有利於改善專案執行組織內部和外部之間的溝通;能夠將處理風險後果的各種方式更靈活的組織起來,在專案管理中減少被動,增加主動;為以後的規劃和設計工作提供反饋,以便在規劃和設計階段就採取措施防止和避免風險損失;可推動專案執行組織和管理班子積累有關風險的資料和資料,以便改進將來的專案管理。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7942439/viewspace-21294/,如需轉載,請註明出處,否則將追究法律責任。

相關文章