風險管理

前言

風險管理的目的,主要在事先評估出可能會影響專案成功的因素,並先行想出因應方法加以控制,使其對專案的影響降至最低。 也就是說,在任何計畫實施之前,都應設想出各種可能的最壞情況,提出因應之道,使得危機發生時能迅速處理,以將損失降到最低。 風險管理是計畫實施過程的防護措施,但因各風險未必會發生,因此在實務上,風險常會被忽略或低估。沒有風險管理,一旦發生了危機, 能否安然渡過,幾乎全看救火部隊的能力,大部份的情況,其所引發的額外成本都是非常高的,甚至可能導致整個專案的失敗或重大損失, 因此專案管理者絕不可輕忽風險管理的重要性。但由於不同的專案與開發團隊都有不同的風險,因此本文的目的,主要在說明如何 鑑別出軟體發展時可能的專案影響因素,以進行適當的風險管理。

邱奕南,2009/7/27

風險管理的步驟

  1. 找出所有可能影響到專案的風險。
  2. 進行風險評估,將風險依其影響嚴重程度(機率*損失)進行排序。
  3. 針對影響最大的幾個風險,決定因應策略,包括避免的方法、減輕影響的辦法、應變計畫等。可以採取二八原則,只處理最重要的20%風險,以降低風險管理的成本。
  4. 將所有風險撰寫成專案風險清單文件。文件中應針對每個風險,說明可能發生的時間、發生機率、造成的影響、可能造成的損失(以分數1~9表示)、嚴重度(機率*損失)、因應策略(包括如何降低發生機率與造成的損失)、因應策略應完成的期限、負責解決風險的人員。
  5. 在專案執行過程中,隨時注意風險的狀態,監控因應策略的成效,並定期修正風險清單的內容與順序。

風險鑑別

風險管理的第一步,便是鑑別出各種可能影響到專案的風險,其最常用的方法,便是建立一份風險項目檢查表。後述即為參考用的風險項目檢查表, 但讀者必須有個概念,風險並非能夠完全鑑別出來,往往都還有許多潛在不可預期的風險。當專案發生不可預期的風險時,應在專案完成後進行專案檢討, 分析風險原因,以修正風險項目檢查表,避免再次遺漏掉該類風險。

  1. 商業面
    1. 這個產品是否符合公司的目標與策略?
    2. 這個產品是否可提高公司的收益?
    3. 高階管理層是否重視這個產品?
    4. 交付時限是否合理?
    5. 有多少人會使用這個產品?這個產品對於他們是必需的嗎?
    6. 銷售人員是否能了解如何去銷售本產品?
    7. 有那些產品或系統必須和本產品一起搭配使用?
    8. 終端使用者需要有那些電腦方面的素養?
    9. 必須產生並交付給客戶的文件需要什麼樣的質與量?
    10. 有那些政府的政策或法令會影響到本產品的銷售?
    11. 若延遲交付時會造成什麼影響?
    12. 若產品含有缺陷時會造成什麼影響?
  2. 客戶面
    1. 過去是否和這個客戶合作過?合作的關係如何?
    2. 客戶是否連自己對需求都不清楚?
    3. 客戶對需求是否有堅持的意見?
    4. 客戶是否同意花時間配合需求搜集?
    5. 客戶是否對需求常一變再變?
    6. 客戶是否願意和開發者建立能經常溝通的管道?
    7. 客戶是否願意參加需求審查的工作?
    8. 客戶是否具有與這個產品相關的技術素養?
    9. 客戶是否了解軟體過程?
    10. 面對的客戶代表是否適當?
  3. 過程面
    1. 公司是否已有軟體過程的標準化程序與文件定義?
    2. 專案相關人員是否願意遵循軟體過程的標準化程序?
    3. 是否有任何機制可確認專案相關人員都遵循軟體過程的標準化程序?
    4. 專案相關人員是否有受過軟體工程的相關訓練?
    5. 軟體過程中應交付的文件,是否都已有章節概要定義,以及相關範例可參考?
    6. 設計規格與程式碼的正式技術性複審,是否採用正規的方式進行?
    7. 是否有任何機制可控制客戶需求改變對軟體的影響?
    8. 是否有任何機制可追蹤並控管轉包商的進度與品質?
  4. 方法面
    1. 是否採用科學的方法來預估時程與成本?
    2. 系統分析與設計是否採用特定的方法?這個方法是否適於本專案?
    3. 採用的程式語言是否適當?
    4. 對程式碼的寫法是否有特定的規矩?
    5. 是否有任何軟體工具來支援測試?
    6. 是否有任何量化指標來管理專案的品質?
  5. 技術面
    1. 公司是否具有客戶或產品的應用領域經驗?
    2. 客戶的需求是否必須使用新的演算法或輸出入技術?
    3. 專案需要使用的技術對專案人員而言是否是新的?有否相關的經驗?
    4. 產品需求中是否有要求使用特定的使用者界面?
    5. 產品需求中是否有要求使用新的分析設計或測試方法?
    6. 產品需求中是否有要求使用非傳統的軟體開發方法?
    7. 需求是否包含了對產品過度的效能限制?
    8. 客戶是否不確定所要求的機能是可做的?
  6. 人員面
    1. 是否有足夠人員可供使用?
    2. 人員是否具有專案所需的技術能力與相關訓練?
    3. 人員流動是否會影響到專案的進行?
    4. 兼職人員是否會因其他工作而影響到專案的進行?
    5. 人員是否會排斥本專案的工作?

參考文獻

  1. 軟體工程實務專家作法,第四版,Roger S. Pressman原著,金子葳等人譯,儒林,1998
  2. 微軟如何滿足客戶的需求,Karl E. Wiegers原著,許惠丹編譯,華彩,2000
  3. 微軟開發快速秘笈,Steve McConnell原著,鄒正平譯,華彩,1999
  4. 專案管理,呂學堯,http://tacocity.com.tw/yaoer/main.htm,1998