軟件項目的風(fēng)險主要是涉及阻礙軟件項目的計劃費用、在計劃時間內(nèi)達到計劃系統(tǒng)功能等項目內(nèi)外各方面的因素。風(fēng)險管理被認為是減少軟件項目失敗的一種重要手段。所謂風(fēng)險,是指未來可能發(fā)生的損失,主要有兩個方面的屬性:發(fā)生概率和發(fā)生后果。將軟件開發(fā)風(fēng)險劃分為時間進度風(fēng)險、功能風(fēng)險、合同風(fēng)險、需求管理風(fēng)險、資源風(fēng)險和人員管理風(fēng)險等六大部分。本文討論軟件項目時間進度風(fēng)險的管理。
傳統(tǒng)的時間進度計劃是基于工作分解結(jié)構(gòu)之上,通過各工作的時間估計,構(gòu)建計劃網(wǎng)絡(luò),尋找時間關(guān)鍵路徑,進行蒙特卡羅模擬等手段,獲得工期的概率分布,以此來估計進度風(fēng)險。而Goldratt提出的關(guān)鍵鏈管理方法,用關(guān)鍵鏈代替PERT/CPM中的關(guān)鍵路徑,不僅考慮了工作的執(zhí)行時間和工作間的緊前關(guān)系約束,而且還考慮工作間的資源沖突,關(guān)鍵鏈是制約整個項目周期的一個工作序列。因此,本文將關(guān)鍵鏈技術(shù)用于軟件項目風(fēng)險管理。
1、關(guān)鍵鏈技術(shù)介紹
1997年,Goldratt出版了《關(guān)鍵鏈》一書,將約束集理論(Theory of Constraints, TOC)應(yīng)用于項目管理領(lǐng)域,提出了項目管理的全新方法。Goldratt定義關(guān)鍵鏈是既考慮工作間的依賴關(guān)系又考慮資源間依賴關(guān)系的最長的工作序列。
Goldratt認為在PERT中的工期估計中包含了大部分的安全時間,而安全時間并不能保證項目的按時完成。因此他將工作50%可能完成的時間作為工作工期的估計,并以此建立工作網(wǎng)絡(luò)圖。根據(jù)工作間的資源制約關(guān)系,修改網(wǎng)絡(luò)圖,確定關(guān)鍵鏈。然后通過為關(guān)鍵鏈和非關(guān)鍵鏈分別設(shè)置項目緩沖(Project Buffer)和輸入緩沖(Feeding Buffer),來消除項目中不確定因素對項目執(zhí)行計劃的影響,保證整個項目按時完成。項目緩沖設(shè)置在關(guān)鍵鏈的末尾,以關(guān)鍵鏈上所有工作比PERT中少估計的工期和的50%為緩沖區(qū)的大小。輸入緩沖設(shè)置在非關(guān)鍵鏈與關(guān)鍵鏈的匯合處,以非關(guān)鍵鏈上的所有工作節(jié)省工期之和的50%為緩沖區(qū)的大小。項目緩沖是為了保證項目在計劃內(nèi)完成。之所以設(shè)置輸入緩沖,是為了保護關(guān)鍵鏈上的工作計劃不會因為非關(guān)鍵鏈上工作的延遲而受到影響。
關(guān)鍵鏈技術(shù)的主要優(yōu)點:
1)既考慮了工作間的緊前關(guān)系約束,還考慮了工作間的資源沖突;
2)標識了資源約束和資源瓶頸,有利于項目過程資源的配置,降低因資源而引起的進度風(fēng)險;
3)緩沖區(qū)的設(shè)置,為保證項目按時完成提供了有效的途徑。
針對軟件項目的特點和進度風(fēng)險管理的任務(wù),我們在本文中考慮軟件項目中人力資源的約束。在風(fēng)險分析的基礎(chǔ)上,設(shè)置項目緩沖區(qū)和輸入緩沖區(qū),以應(yīng)對項目過程中的不確定性因素,控制進度風(fēng)險,確保項目整體的按時完工。文中提出了基于關(guān)鍵鏈技術(shù)的軟件項目進度風(fēng)險管理方法。首先對項目進行工作分解,估計理想工作條件下各工作的執(zhí)行時間以及人力資源分配,建立工作節(jié)點網(wǎng)絡(luò)圖(Active on Node,AON);然后考慮人力資源的約束,確定工作節(jié)點網(wǎng)絡(luò)圖中的關(guān)鍵鏈;接著采用風(fēng)險量=風(fēng)險概率×風(fēng)險時間這樣的技術(shù)風(fēng)險評估技術(shù),對每項工作進行風(fēng)險分析,在此基礎(chǔ)上,為關(guān)鍵鏈配置項目緩沖,為非關(guān)鍵鏈配置輸入緩沖;最后,在項目進行過程中,通過對緩沖區(qū)的監(jiān)控,進行計劃風(fēng)險的管理。
2、關(guān)鍵鏈的確定
對項目進行工作分解之后,我們以工作在理想工作條件下的完成時間來估計該工作的執(zhí)行時間。所謂理想工作條件是指既不考慮風(fēng)險因素,也不考慮資源約束的“理想”狀況。這樣的理想工作條件實際是不存在的,