何雨行
(上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200030)
敏捷開發(fā)(Agile Development)以其需求動(dòng)態(tài)響應(yīng)、持續(xù)集成、增量交付、快速迭代等特點(diǎn),逐漸成為軟件項(xiàng)目主流開發(fā)模式。然而,對(duì)于一些技術(shù)復(fù)雜度高、不確定性風(fēng)險(xiǎn)大的活動(dòng),敏捷開發(fā)經(jīng)常會(huì)出現(xiàn)進(jìn)度約束困難、進(jìn)度偏差發(fā)現(xiàn)較遲的問題,從而導(dǎo)致項(xiàng)目進(jìn)度延期。在敏捷開發(fā)中引入關(guān)鍵鏈法(Critical Chain Method,CCM),可以對(duì)活動(dòng)形成有效的約束,提高活動(dòng)的按時(shí)完工概率。然而,敏捷開發(fā)迭代周期短,可設(shè)置的緩沖大小受限,因此,通過對(duì)關(guān)鍵鏈緩沖設(shè)置優(yōu)化難以取得良好效果。此外,敏捷開發(fā)對(duì)進(jìn)度風(fēng)險(xiǎn)更為敏感,傳統(tǒng)關(guān)鍵鏈監(jiān)控方法大多是通過調(diào)節(jié)緩沖區(qū)觸發(fā)點(diǎn)位置來被動(dòng)監(jiān)控預(yù)警,預(yù)警時(shí)間較為滯后,難以有充足的反應(yīng)時(shí)間采取行動(dòng),仍會(huì)導(dǎo)致項(xiàng)目進(jìn)度延期。
基于此,本文結(jié)合敏捷開發(fā)的特點(diǎn),提出主動(dòng)利用活動(dòng)狀態(tài)預(yù)測(cè)活動(dòng)完工時(shí)間,而非被動(dòng)地通過緩沖區(qū)觸發(fā)點(diǎn)閾值的設(shè)置來調(diào)整緩沖監(jiān)控告警頻率,提升了感知進(jìn)度風(fēng)險(xiǎn)的效率,為采取行動(dòng)提供了充足的反應(yīng)時(shí)間。根據(jù)當(dāng)前的活動(dòng)進(jìn)度狀態(tài)及變化趨勢(shì)兩個(gè)維度的變量,通過卡爾曼濾波消除觀測(cè)波動(dòng)帶來的噪聲,結(jié)合灰色模型準(zhǔn)確地對(duì)活動(dòng)完工時(shí)間與緩沖消耗情況進(jìn)行評(píng)估,并采取相應(yīng)的管理措施,以保證活動(dòng)按期完工。
關(guān)鍵鏈緩沖監(jiān)控是關(guān)鍵鏈研究的核心問題之一,國(guó)內(nèi)外眾多專家學(xué)者都對(duì)其進(jìn)行了廣泛而深入的研究。Goldratt[1]提出將緩沖區(qū)等分為紅色、黃色、綠色三部分進(jìn)行管理,即靜態(tài)三分法。Leach[2]提出緩沖監(jiān)控的觸發(fā)點(diǎn)位置可以隨著項(xiàng)目進(jìn)度變化而變化的相對(duì)監(jiān)控法,防止緩沖監(jiān)控點(diǎn)較低而發(fā)出錯(cuò)誤的預(yù)警。別黎等[3]在靜態(tài)三分法的基礎(chǔ)上,提出在項(xiàng)目執(zhí)行過程中動(dòng)態(tài)改變兩個(gè)觸發(fā)點(diǎn)的緩沖監(jiān)控策略。在此基礎(chǔ)上,別黎等[4]提出基于活動(dòng)敏感性的動(dòng)態(tài)緩沖監(jiān)控方法,設(shè)置監(jiān)控活動(dòng)敏感性的監(jiān)控閾值。張俊光等[5]在緩沖監(jiān)控中引入活動(dòng)緩沖消耗位置和速率信息,并在此基礎(chǔ)上對(duì)活動(dòng)緩沖消耗進(jìn)行預(yù)測(cè),實(shí)時(shí)調(diào)整兩個(gè)觸發(fā)點(diǎn)的位置。張俊光等[6]提出基于項(xiàng)目資源細(xì)分的關(guān)鍵鏈進(jìn)度監(jiān)控方法,該方法根據(jù)不同的資源特性確定緩沖預(yù)警狀態(tài)值。另外,張俊光等[7]基于馬爾科夫鏈提出一種周期性項(xiàng)目緩沖監(jiān)控模型,該模型計(jì)算活動(dòng)狀態(tài)轉(zhuǎn)移的可能性,以便于采取應(yīng)急處理措施。馬萍等[8]考慮活動(dòng)的不確定性影響,采用層次分析法和熵權(quán)法的主客觀組合賦權(quán)法,結(jié)合灰色關(guān)聯(lián)分析對(duì)緩沖大小設(shè)置進(jìn)行改進(jìn)。胡雪君等[9]提出采用統(tǒng)計(jì)過程控制進(jìn)行兩階段緩沖消耗監(jiān)控,建立活動(dòng)層面工期波動(dòng)的緩沖控制圖,當(dāng)活動(dòng)緩沖消耗超出監(jiān)控閾值時(shí)觸發(fā)預(yù)警,并采取相應(yīng)的應(yīng)對(duì)措施。王乾坤等[10]提出采用BIM系統(tǒng)的關(guān)鍵鏈項(xiàng)目管理,利用自動(dòng)化軟件技術(shù)實(shí)現(xiàn)對(duì)項(xiàng)目的統(tǒng)籌管理。
綜上所述,當(dāng)前緩沖監(jiān)控研究主要在靜態(tài)三分法的基礎(chǔ)上,結(jié)合項(xiàng)目特性,對(duì)緩沖監(jiān)控閾值進(jìn)行調(diào)節(jié),減少活動(dòng)進(jìn)度風(fēng)險(xiǎn)。然而,現(xiàn)有方法仍停留在利用緩沖區(qū)預(yù)警閾值的設(shè)置被動(dòng)消除活動(dòng)進(jìn)度風(fēng)險(xiǎn)的層面,并且盡量少地觸發(fā)緩沖預(yù)警以避免管理成本的增加。但是,這樣的結(jié)果會(huì)導(dǎo)致發(fā)現(xiàn)活動(dòng)進(jìn)度風(fēng)險(xiǎn)的時(shí)間點(diǎn)較晚,往往留給采取行動(dòng)的時(shí)間不多,從而未能對(duì)活動(dòng)風(fēng)險(xiǎn)實(shí)現(xiàn)良好的控制效果。本文利用活動(dòng)執(zhí)行時(shí)期的進(jìn)度狀態(tài)來預(yù)測(cè)活動(dòng)完成時(shí)的緩沖消耗,可以在早期發(fā)現(xiàn)潛在的活動(dòng)進(jìn)度延期風(fēng)險(xiǎn),并及時(shí)采取糾正措施。
在關(guān)鍵鏈進(jìn)度管理中,活動(dòng)進(jìn)度可以定義為已完成工作量與工作總量的比值,而進(jìn)度變化率可以由相鄰兩次監(jiān)控點(diǎn)的平均進(jìn)度變化率近似代替。公式如下
(1)
式中,δi(t)與νi(t)分別為活動(dòng)i在t時(shí)刻完工進(jìn)度和進(jìn)度變化率;ni(t)為完成的工作包數(shù)量;N為工作包總數(shù);Δt為活動(dòng)的監(jiān)控周期。
定義活動(dòng)i在t時(shí)刻狀態(tài)空間向量
(2)
式中,xi(t)為活動(dòng)i在t時(shí)刻狀態(tài)空間向量;δi(t)為活動(dòng)進(jìn)度;νi(t)為進(jìn)度變化率。
利用卡爾曼濾波算法對(duì)活動(dòng)i在t+1時(shí)刻狀態(tài)空間向量進(jìn)行最優(yōu)狀態(tài)預(yù)測(cè),公式如下
(3)
(4)
(5)
(6)
(7)
(8)
(9)
建立模型灰微分方程,公式如下
(10)
式中,參數(shù)a為灰色發(fā)展系數(shù);參數(shù)b是灰色作用量。
相應(yīng)的白化微分方程如下
(11)
(12)
(13)
求解白化微分方程得到預(yù)測(cè)方程如下
(14)
差分計(jì)算還原原始序列預(yù)測(cè)值,公式如下
(15)
定義活動(dòng)i在t時(shí)刻進(jìn)度風(fēng)險(xiǎn)系數(shù)ηi(t)
(16)
定義活動(dòng)i的臨界系數(shù)θi
(17)
式中,Bi為分散式緩沖大小;Ti為計(jì)劃工期。
將ηi(t)與θi進(jìn)行比較,可以得到如下結(jié)論:
(1)當(dāng)ηi(t)≤1時(shí),反映當(dāng)前活動(dòng)進(jìn)展順利,將在計(jì)劃的活動(dòng)工期內(nèi)完成。這種情況下,不僅活動(dòng)i全部的緩沖區(qū)可以累積并作為額外緩沖分配給其余的活動(dòng),而且還有部分的計(jì)劃活動(dòng)工期可以被釋放出來。因此,不需要花費(fèi)過多精力進(jìn)行干預(yù),只需要保持定期活動(dòng)狀態(tài)監(jiān)控即可。
(2)當(dāng)1<ηi(t)≤θi時(shí),反映當(dāng)前活動(dòng)相比計(jì)劃出現(xiàn)延遲,但是還可以在緩沖時(shí)間內(nèi)完成。此時(shí)需要分析可能造成活動(dòng)進(jìn)度遲緩的原因,并加強(qiáng)對(duì)于活動(dòng)狀態(tài)的監(jiān)控,觀察后續(xù)的狀態(tài)是否有改善的趨勢(shì)。
(3)當(dāng)ηi(t)>θi時(shí),反映當(dāng)前活動(dòng)最終將會(huì)耗盡緩沖區(qū),造成進(jìn)度延期,并且可能對(duì)同一鏈路上其他活動(dòng)造成影響,降低其他活動(dòng)的安全時(shí)間裕量。此時(shí)應(yīng)該及時(shí)采取措施干預(yù),找出導(dǎo)致活動(dòng)進(jìn)展緩慢的根本原因,分析和評(píng)估可能帶來的影響,利用趕工或增加資源等方式彌補(bǔ)進(jìn)度滯后,降低進(jìn)度延期風(fēng)險(xiǎn)。
某通信軟件產(chǎn)品采用敏捷方法進(jìn)行開發(fā)迭代。在一次迭代中主要增加三個(gè)功能模塊,項(xiàng)目周期為60d,包括16項(xiàng)活動(dòng)。項(xiàng)目采用關(guān)鍵鏈法進(jìn)行進(jìn)度管理,項(xiàng)目緩沖15d,采用根方差法計(jì)算活動(dòng)緩沖大小并采用分散式緩沖管理方式?;顒?dòng)基本信息見表1。
表1 活動(dòng)基本信息
根據(jù)活動(dòng)基本信息可以繪制出關(guān)鍵鏈網(wǎng)絡(luò)圖,如圖1所示。其中,空心方塊代表具體的每項(xiàng)活動(dòng),實(shí)心方塊代表項(xiàng)目緩沖或接駁緩沖,虛線方塊代表將緩沖分散到每項(xiàng)活動(dòng)上,使每項(xiàng)活動(dòng)都有各自的緩沖控制基準(zhǔn),以便后續(xù)的緩沖控制管理。
圖1 關(guān)鍵鏈網(wǎng)絡(luò)圖注:FB為接駁緩沖,PB為項(xiàng)目緩沖。
對(duì)不同風(fēng)險(xiǎn)水平的各個(gè)活動(dòng)進(jìn)度狀態(tài)及變化趨勢(shì)進(jìn)行模擬,可以得到活動(dòng)預(yù)期完工進(jìn)度曲線。通過調(diào)節(jié)卡爾曼濾波狀態(tài)方程的參數(shù),可以對(duì)完工進(jìn)度濾波的效果進(jìn)行調(diào)節(jié),以得到真實(shí)的活動(dòng)進(jìn)度狀態(tài)估計(jì)。活動(dòng)H進(jìn)度卡爾曼濾波效果對(duì)比如圖2所示。
圖2 活動(dòng)H進(jìn)度卡爾曼濾波效果對(duì)比
基于灰色模型的關(guān)鍵鏈緩沖監(jiān)控方法流程圖如圖3所示。具體執(zhí)行步驟如下:
圖3 基于灰色模型關(guān)鍵鏈緩沖監(jiān)控步驟流程圖
(1)確定項(xiàng)目活動(dòng)關(guān)鍵鏈網(wǎng)絡(luò)。
(2)確定各個(gè)鏈路上的緩沖區(qū)大小并分散到各個(gè)活動(dòng)中。
(3)利用卡爾曼濾波對(duì)當(dāng)前活動(dòng)狀態(tài)進(jìn)行最優(yōu)狀態(tài)估計(jì),消除觀測(cè)產(chǎn)生的活動(dòng)進(jìn)度狀態(tài)誤差,得到真實(shí)的活動(dòng)狀態(tài)。
(4)根據(jù)當(dāng)前活動(dòng)的執(zhí)行狀態(tài),采用灰色模型對(duì)活動(dòng)完工工期進(jìn)行預(yù)測(cè)。
(5)將預(yù)測(cè)的完工工期與計(jì)劃工期和活動(dòng)分散緩沖進(jìn)行對(duì)比。如果預(yù)測(cè)的完工工期小于或等于計(jì)劃工期,說明當(dāng)前的活動(dòng)進(jìn)度狀態(tài)良好,不需要采取行動(dòng)糾正;如果預(yù)測(cè)的完工工期大于計(jì)劃工期,但是未超出活動(dòng)最大分散緩沖范圍,說明當(dāng)前的活動(dòng)進(jìn)度狀態(tài)出現(xiàn)一定程度滯后,但是仍然在預(yù)先分配的緩沖范圍內(nèi),此時(shí)需要及時(shí)查明導(dǎo)致活動(dòng)進(jìn)度遲緩的原因;如果預(yù)測(cè)的完工工期超出活動(dòng)最大分散緩沖范圍,說明當(dāng)前的活動(dòng)進(jìn)度產(chǎn)生了嚴(yán)重的滯后,可能會(huì)對(duì)后續(xù)活動(dòng)產(chǎn)生影響,需要盡快采取行動(dòng)糾正,必要時(shí)可以采取增加資源、趕工等措施,防止項(xiàng)目進(jìn)一步延期。
(6)對(duì)下一時(shí)刻的活動(dòng)狀態(tài)進(jìn)行觀測(cè),重復(fù)步驟(3)~步驟(5),直到活動(dòng)完工。
(7)計(jì)算活動(dòng)的剩余緩沖并調(diào)整后續(xù)活動(dòng)的分散緩沖。如果活動(dòng)完工之后緩沖仍有剩余,則可以將剩余緩沖累積到總緩沖中,增加后續(xù)活動(dòng)的緩沖裕量;如果活動(dòng)完工之后緩沖超量消耗,則應(yīng)該將超量消耗從總緩沖中減去,加強(qiáng)對(duì)于后續(xù)各活動(dòng)的緩沖監(jiān)控預(yù)警。
(8)對(duì)后續(xù)緊鄰活動(dòng)進(jìn)行執(zhí)行,重復(fù)步驟(2)~步驟(7),直到項(xiàng)目完成。
利用MATLAB對(duì)本文方法進(jìn)行仿真,采用蒙特卡洛模擬,重復(fù)進(jìn)行10 000次實(shí)驗(yàn),對(duì)案例中關(guān)鍵鏈上的各項(xiàng)活動(dòng)完工時(shí)間單獨(dú)進(jìn)行統(tǒng)計(jì)分析。對(duì)比本文方法與靜態(tài)三分法、相對(duì)監(jiān)控法、動(dòng)態(tài)監(jiān)控法對(duì)于緩沖監(jiān)控的效果,項(xiàng)目活動(dòng)完工時(shí)間落在各區(qū)域的頻數(shù)統(tǒng)計(jì)分布見表2。
表2 項(xiàng)目活動(dòng)完工時(shí)間落在各區(qū)域的頻數(shù)統(tǒng)計(jì)分布
從表2中數(shù)據(jù)可以得出,本文方法相對(duì)于其他三種緩沖監(jiān)控方法而言對(duì)于風(fēng)險(xiǎn)較大、不確定程度較高的活動(dòng)有著顯著的效果。例如,活動(dòng)G、J大部分落在計(jì)劃工期內(nèi),小部分會(huì)消耗緩沖區(qū),只有極少的會(huì)落在緩沖區(qū)外。對(duì)于風(fēng)險(xiǎn)較小、不確定程度較低的活動(dòng),其持續(xù)時(shí)間與緩沖區(qū)都較小,緩沖監(jiān)控效果一般。例如,活動(dòng)A、B、C落在緩沖區(qū)內(nèi)的次數(shù)明顯增多,并且對(duì)于落在緩沖區(qū)外的活動(dòng),缺少采取糾正措施的時(shí)間,此時(shí)緩沖監(jiān)控效果一般。
利用MATLAB對(duì)案例中項(xiàng)目整體進(jìn)行仿真,采用蒙特卡洛模擬,重復(fù)進(jìn)行10 000次實(shí)驗(yàn),對(duì)比在不同的緩沖監(jiān)控方法下項(xiàng)目完工情況。不同緩沖監(jiān)控方法項(xiàng)目完工時(shí)間分布如圖4所示。
圖4 不同緩沖監(jiān)控方法項(xiàng)目完工時(shí)間分布
從圖4可以看出,各種緩沖監(jiān)控方法完工時(shí)間分布大致服從正態(tài)分布。將本文方法與靜態(tài)三分法、相對(duì)監(jiān)控法、動(dòng)態(tài)監(jiān)控法進(jìn)行對(duì)比,結(jié)合實(shí)驗(yàn)結(jié)果可以得到如下結(jié)論:
(1)采用本文方法的項(xiàng)目活動(dòng)完工模擬中,完工工期均值為44d,最大完工時(shí)間為52d,最小完工時(shí)間為35d,其中大部分落在計(jì)劃工期之內(nèi),小部分落在項(xiàng)目緩沖之內(nèi),均沒有超出項(xiàng)目緩沖。表明本文方法的緩沖監(jiān)控效果較好,完工時(shí)間消耗更短,落在計(jì)劃工期內(nèi)的完工可能性也較大。本文方法會(huì)在項(xiàng)目執(zhí)行過程中不斷地監(jiān)控活動(dòng)當(dāng)前的進(jìn)度狀態(tài)及變化趨勢(shì),對(duì)完工時(shí)間及緩沖消耗進(jìn)行動(dòng)態(tài)預(yù)測(cè),因此可以在活動(dòng)進(jìn)度產(chǎn)生偏離的早期就及時(shí)發(fā)現(xiàn),并采取及時(shí)的糾正措施。
(2)采用靜態(tài)三分法的項(xiàng)目活動(dòng)完工模擬中,完工工期均值為58d,最大完工時(shí)間為63d,最小完工時(shí)間為53d,其中均沒有落在計(jì)劃工期內(nèi),大部分落在項(xiàng)目緩沖之內(nèi),小部分落在項(xiàng)目緩沖之外。由此可以看出靜態(tài)三分法在應(yīng)對(duì)緩沖設(shè)置受限、活動(dòng)不確定性和風(fēng)險(xiǎn)較大的情況時(shí)的緩沖監(jiān)控效果欠佳。
(3)采用相對(duì)監(jiān)控法的項(xiàng)目活動(dòng)完工模擬中,完工工期的均值為58d,最大完工時(shí)間為68d,最小完工時(shí)間為54d,其中均沒有落在計(jì)劃工期內(nèi),大部分落在項(xiàng)目緩沖之內(nèi),小部分落在項(xiàng)目緩沖之外。相對(duì)監(jiān)控法為了減少緩沖告警次數(shù),在活動(dòng)執(zhí)行過程中根據(jù)活動(dòng)進(jìn)度相對(duì)地調(diào)整緩沖區(qū)的大小,但與此同時(shí)也導(dǎo)致對(duì)于活動(dòng)的進(jìn)度偏離缺乏敏感性,極大地提升了項(xiàng)目延期概率。
(4)采用動(dòng)態(tài)監(jiān)控法的項(xiàng)目活動(dòng)完工模擬中,完工工期的均值為58d,最大完工時(shí)間65d,最小完工時(shí)間51d,其中均沒有落在計(jì)劃工期內(nèi),大部分落在項(xiàng)目緩沖之內(nèi),小部分落在項(xiàng)目緩沖之外。動(dòng)態(tài)監(jiān)控法在活動(dòng)執(zhí)行過程中根據(jù)活動(dòng)進(jìn)度動(dòng)態(tài)地調(diào)整緩沖監(jiān)控預(yù)警閾值,使得緩沖預(yù)警產(chǎn)生的誤告警頻次下降,但與此同時(shí)也導(dǎo)致對(duì)于活動(dòng)的進(jìn)度偏離感知能力下降,增大了項(xiàng)目延期概率。
本文提出了一種基于灰色模型的關(guān)鍵鏈緩沖監(jiān)控優(yōu)化方法。該方法考慮了活動(dòng)進(jìn)度狀態(tài)及變化趨勢(shì)對(duì)于項(xiàng)目工期的影響,采用卡爾曼濾波計(jì)算出當(dāng)前活動(dòng)狀態(tài)的最優(yōu)估計(jì),消除了觀測(cè)值波動(dòng)對(duì)于預(yù)測(cè)結(jié)果的影響,并利用灰色模型對(duì)活動(dòng)完工時(shí)間進(jìn)行預(yù)測(cè),可以盡早發(fā)現(xiàn)活動(dòng)中潛在的進(jìn)度風(fēng)險(xiǎn),及時(shí)采取行動(dòng)控制活動(dòng)進(jìn)度。相對(duì)于傳統(tǒng)靜態(tài)三分法、相對(duì)監(jiān)控法和動(dòng)態(tài)監(jiān)控法,本文方法對(duì)于技術(shù)復(fù)雜度大、不確定性風(fēng)險(xiǎn)高的活動(dòng)有著更好的控制效果,避免在活動(dòng)進(jìn)行后期發(fā)現(xiàn)進(jìn)度遲緩后再花費(fèi)更多的管理成本彌補(bǔ)進(jìn)度延期。因此,本方法適用于多種類型的項(xiàng)目進(jìn)度管理,尤其對(duì)于敏捷開發(fā)項(xiàng)目進(jìn)度管理有著不錯(cuò)的效果。