葉上華,殷 茗,楊 益,姜繼嬌
1(西北工業(yè)大學(xué) 計算機學(xué)院,西安 710072)
2(西北工業(yè)大學(xué) 軟件學(xué)院,西安 710072)
3(西北工業(yè)大學(xué) 管理學(xué)院,西安 710072)
異地敏捷開發(fā)已成為軟件企業(yè)開發(fā)項目IT 策略的一部分[1],這種開發(fā)可能在一個單獨項目中涉及到多個地點,或軟件開發(fā)周期中一部分的服務(wù)提供者[2].敏捷方法已存在多年,通過使用迭代和增量方法為業(yè)務(wù)增加價值,其中軟件開發(fā)人員處理小模塊并響應(yīng)用戶不斷變化的業(yè)務(wù)需求,并在價值、原則和實踐方面為軟件工程帶來了重大變化.因此,敏捷方法通過接受“反饋和變化”以及“擁抱而不是拒絕更高的變化率”來提供靈活性以及對軟件開發(fā)過程的嚴謹性[3].近年來,敏捷方法在全球化環(huán)境中越來越受到重視,其低成本,早期產(chǎn)品交付和高質(zhì)量產(chǎn)品等多種優(yōu)勢使得異地敏捷開發(fā)成為當(dāng)下諸多企業(yè)積極探索的趨勢.然而,一些研究指出,由于異地敏捷開發(fā)存在文化差異、時間差異、地理分布等諸多特征[4],在全球分布式環(huán)境中采用敏捷方法會帶來重大挑戰(zhàn),尤其是一些敏捷原則和實踐強調(diào)近距離、面對面交互.敏捷開發(fā)實踐需要頻繁地非正式通信,例如每日站立會議,以便管理項目并實現(xiàn)Scrum 的效果,當(dāng)成員在地理上分散時,知識共享難以實現(xiàn)、非正式溝通很難進行[5].任務(wù)分配作為軟件項目的基礎(chǔ)活動,是異地分布式敏捷軟件開發(fā)中的關(guān)鍵環(huán)節(jié)[1],分配決策需要考慮多方面因素,任務(wù)分配可減少異地敏捷團隊之間的溝通成本,使團隊成員能把大部分精力投入到軟件開發(fā)[6].
目前,研究者們對任務(wù)分配的研究大多主要集中在人工智能領(lǐng)域,如多Agent 系統(tǒng)[7]、機器人[8]等.任務(wù)分配的目的,是為了合理配置現(xiàn)有資源,不同應(yīng)用需要不同的任務(wù)分配機制.現(xiàn)有研究[8,9]大多致力于集中式任務(wù)分配,未考慮異地敏捷團隊的分布式的能力和資源.例如Butler 和Heys[10]提出了基于行為和拍賣的任務(wù)分配方法,行為方法提出了高中低的自重構(gòu)團隊行為及六個任務(wù)行為,采用動機函數(shù)平衡不同行為完成任務(wù)布置,拍賣方法解決任務(wù)分配中的行為交互,及添加額外交互行為.Pendharkar[11]提出了啟發(fā)式蟻群的任務(wù)分配優(yōu)化方法,分析了約束任務(wù)分配的線性整數(shù)規(guī)劃及其松弛規(guī)劃、低限制拉格朗日松弛,提出了約束任務(wù)分配的迭代啟發(fā)式貪婪及基于啟發(fā)式蟻群算法的約束任務(wù)分配模型.Wilson 和Quigley[12]提出了可靠性增長的任務(wù)分配模型,從項目風(fēng)險視角出發(fā),以成本和時間為約束,識別和設(shè)計系統(tǒng)開發(fā)可能的任務(wù)弱點,從成本、時間測試系統(tǒng)可靠性,建立多屬性效用函數(shù),構(gòu)建可靠性增長任務(wù)分配模型.上述研究雖然分別解決了任務(wù)布置和行為交互、約束任務(wù)分配及風(fēng)險視角任務(wù)分配問題,但普遍忽略了任務(wù)與異地團隊的多屬性能力匹配.
異地敏捷軟件開發(fā)中的任務(wù)要分配給異地團隊,這些異地團隊具有不同的能力和資源來完成這些任務(wù),因此需要考慮異地敏捷環(huán)境的多個決策屬性.現(xiàn)有學(xué)者已經(jīng)對此展開了初步研究.Duggan 等[13]認為軟件構(gòu)建中的任務(wù)分配需要考慮多個目標(biāo),包括成本、缺陷數(shù)量、完成時間、員工使用與客戶滿意度等,采用演化算法和遺傳算法進行多目標(biāo)任務(wù)分配可以達到優(yōu)化效果.Ruano-Mayoral 等[14]提出了一個全球開發(fā)項目任務(wù)包二階段分配框架,提出了任務(wù)分配的決策影響因子,包括可用性和能力;Almeida 等[15]提出了一個異地分布式開發(fā)認知映射和MACBETH 的多維決策模型,其中決策因子包括成本、分布水平、文化差異水平、團隊年齡、團隊技能適應(yīng)性、溝通有效性、溝通頻率、協(xié)作控制水平等.Lamersdorf 和Münch[16]提出了全球軟件開發(fā)的一個客戶化多維需求任務(wù)分配模型,運用了改進Bokhari算法,該模型在多個典型假設(shè)場景和實際分布決策問題獲得了應(yīng)用效果.張立等[17]提出半自治多Agent 任務(wù)分配方法,將心智模型與擴展合同網(wǎng)機制結(jié)合,并擴展了合同網(wǎng)機制包括發(fā)標(biāo)優(yōu)選、競標(biāo)報價與多Agent 任務(wù)分配過程.另外,殷茗和馬靜[18]提出了基于多任務(wù)優(yōu)先算法的異地軟件開發(fā)任務(wù)分配模式,該研究主要關(guān)注異地分布式軟件分配的優(yōu)先權(quán)屬性.
上述研究為本研究提供了很好的研究借鑒,但是沒有考慮任務(wù)與團隊的多屬性能力匹配,對異地敏捷團隊的任務(wù)分配效用沒有聚焦.本文充分考慮了異地敏捷開發(fā)的特征和挑戰(zhàn),首先提煉出該環(huán)境下的子任務(wù)能力需求屬性和團隊能力屬性,包括了技術(shù)能力、協(xié)調(diào)能力、創(chuàng)新能力和敏捷開發(fā)能力;其次,在整數(shù)線性規(guī)劃的基礎(chǔ)上提出了基于能力匹配的效用函數(shù),分別求解出了任務(wù)和團隊的能力匹配效用值;再次,以全局效用最大化為目標(biāo),采用匈牙利算法求解出了最優(yōu)的任務(wù)分配方案;最后,通過算例仿真驗證了方法的有效性,從而為異地敏捷軟件開發(fā)任務(wù)分配的決策實踐提供理論依據(jù).
假設(shè)異地敏捷開發(fā)中待分配的任務(wù)已經(jīng)分解為n 個子任務(wù) Ti(i=1,2,3,···,n),參與項目開發(fā)的n 個團隊Pj(j=1,2,3,···,n),由多個異地團隊通過敏捷開發(fā)方式協(xié)作完成目標(biāo)任務(wù)T.不同的子任務(wù) Ti對 團隊 Pj有不同的能力要求,而團隊 Pj有自己的能力,團隊選擇不同任務(wù)產(chǎn)生的效用不同.效用函數(shù)就是用來評價任務(wù)和團隊的匹配程度的函數(shù).因此,本文在根據(jù)任務(wù)能力需求屬性和團隊能力屬性的基礎(chǔ)上,利用效用函數(shù)將任務(wù)分配給最合適的團隊執(zhí)行,從而實現(xiàn)全局最優(yōu).
異地分布式無法支持敏捷開發(fā)所提倡的面對面的溝通與交流,由此出現(xiàn)了大量待解決的協(xié)作問題.協(xié)作是“管理活動之間的依賴關(guān)系”,這種依賴關(guān)系包括共享的資源、任務(wù)分配、任務(wù)和子任務(wù)之間的關(guān)系[19],團隊協(xié)作、目標(biāo)導(dǎo)向、團隊內(nèi)聚力、共享心智模式及團隊學(xué)習(xí)等是影響軟件開發(fā)的重要變量[20].敏捷方法是高度協(xié)作的,無論是在開發(fā)組內(nèi)部還是在開發(fā)組之間.敏捷方法依靠非正式溝通而不是大量文檔來快速傳播整個團隊和其他利益相關(guān)者的信息.沒有高度協(xié)作的環(huán)境,任何敏捷方法都注定要失敗.由于敏捷方法在很大程度上依賴于協(xié)作和溝通[21],因此團隊是成功的關(guān)鍵.考慮異地敏捷開發(fā)協(xié)作特征,本文將協(xié)作能力作為任務(wù)和團隊的重要能力屬性.另一方面,異地團隊開發(fā)的“敏捷性”,可以快速適應(yīng)不穩(wěn)定的市場環(huán)境和需求波動[22],即適應(yīng)人員配置、程序設(shè)計、系統(tǒng)體系架構(gòu)、軟件開發(fā)流程和軟件如何遵照業(yè)務(wù)調(diào)整和預(yù)算結(jié)構(gòu)的變更[23].因此,將敏捷開發(fā)能力作為異地敏捷開發(fā)任務(wù)分配的能力屬性.對于技術(shù)能力和創(chuàng)新能力的提出則是因為敏捷方法的最大影響在于開發(fā)團隊.敏捷方法依賴于強大的開發(fā)團隊,除了具備較強的溝通協(xié)作能力和敏捷開發(fā)的經(jīng)驗,開發(fā)團隊還必須技術(shù)嫻熟、思維活躍、善于變通,這不僅僅異地敏捷開發(fā)團隊更是任何軟件開發(fā)團隊?wèi)?yīng)該具備的優(yōu)秀品質(zhì).根據(jù)上述分析,結(jié)合軟件開發(fā)團隊強調(diào)技術(shù)與創(chuàng)新能力的特征,本研究認為異地敏捷開發(fā)的子任務(wù) Ti有4 個能力屬性:協(xié)作能力、敏捷開發(fā)能力、技術(shù)能力和創(chuàng)新能力.采用能力需求向量表示各個能力的需求值,如式(1)所示.
與子任務(wù)能力屬性相對應(yīng),異地敏捷團隊 Pj擁有4 個能力屬性:協(xié)作能力、敏捷開發(fā)能力、技術(shù)能力和創(chuàng)新能力.用能力擁有向量表示各個能力的擁有值,如式(2)所示.
要實現(xiàn)整個系統(tǒng)優(yōu)化,應(yīng)當(dāng)采用明確的標(biāo)度度量任務(wù)分配結(jié)果,由此有必要分析基于能力匹配的效用函數(shù).隨著環(huán)境變化,任務(wù)需求能力和團隊能力都隨之變化,團隊對子任務(wù)的勝任程度也相應(yīng)變化[24],因此,基于能力匹配的效用需要重點考慮團隊能力對任務(wù)所需能力的滿足程度.任務(wù)和團隊的能力匹配研究不僅可以最大程度地調(diào)動開發(fā)團隊的工作潛能和主觀能動性,還可以使項目完成實現(xiàn)效用最大化[25],從而使軟件開發(fā)呈現(xiàn)良性循環(huán)的模式.效用函數(shù) Uij是一個量化第j 個團隊和第i 個子任務(wù)匹配度的函數(shù).
本文主要研究異地敏捷開發(fā)的任務(wù)分配中任務(wù)能力需求度和團隊擁有能力的匹配程度,分別包括技術(shù)能力、協(xié)調(diào)能力、創(chuàng)新能力和敏捷開發(fā)能力.與普遍情況下的軟件開發(fā)任務(wù)分配不同,本文的效用函數(shù)充分結(jié)合異地敏捷開發(fā)的特點對能力類型進行嚴格篩選,考慮到異地敏捷開發(fā)技術(shù)較為先進、異地溝通成本大、采用敏捷開發(fā)的軟件較為新穎和敏捷開發(fā)團隊規(guī)模較小等因素,最終效用函數(shù)確定技術(shù)能力、協(xié)調(diào)能力、創(chuàng)新能力和敏捷開發(fā)能力這4 種能力為本文研究的主要能力,從而使得效用函數(shù)的使用更加符合異地敏捷開發(fā)的任務(wù)分配研究背景.Uij計算公式如式(3)所示.
針對1.2 節(jié)所提出的基于異地敏捷開發(fā)的任務(wù)分配的效用函數(shù)所構(gòu)成的效用矩陣求解,本文采用匈牙利算法求解效用矩陣問題.匈牙利算法作為求解指派問題的經(jīng)典算法,在避免程序陷入無限循環(huán)的情況下,可以求得指派問題精確的全局最優(yōu)解.無論是對普通的軟件任務(wù)分配問題還是對結(jié)合異地敏捷開發(fā)特色的任務(wù)分配,該算法都有很好的適應(yīng)性.效用計算步驟如下.
Step 1.從效用矩陣的每行最大匹配值減去該行元素,再從效用矩陣的每列最大匹配值減去該列元素.
Step 2.此時效用矩陣每行每列都存在零元素,需找出n 個獨立的零.若能找出,就以這些獨立零對應(yīng)的效用矩陣中的匹配度為1,其余為0,得到最大效用值.當(dāng)n 較小時,可用觀察法、試探法找出n 個獨立零元素.若n 較大,則需要按一定順序去找,具體如下:
(1)從只有一個零的行(列)開始,給這個零加圈,劃去畫圈的列(行)中的其他零;
(2)給只有一個零列(行)的零加圈,然后劃去加圈的元素所在行(列)的零;
(3)反復(fù)進行Step 2 中(1)、(2)兩步,直到所有零都被圈出或劃掉為止;
(4)若仍有沒有畫圈的零,且同行(列)的零至少有兩個.從剩有零最少的行(列)開始,比較這行零所在列中零的數(shù)目,選擇列中零最少的零加圈,然后劃掉同行同列的其他零.反復(fù)進行,直到所有零都圈出或劃掉為止;
(5)若畫圈零元素的數(shù)目m 等于矩陣的維數(shù) n,那么已得到效用值最大的分配結(jié)果;若m<n,則轉(zhuǎn)下一步.
Step 3.做最少的直線覆蓋所有零,以確定該代價矩陣中能找到最多的獨立零.
(1)對沒有畫圈的行打?qū)μ?
(2)對已經(jīng)打?qū)μ柕男兄杏袆澋袅愕牧写驅(qū)μ?
(3)再對打有對號的列中含畫圈元素的行打?qū)μ?
(4)重復(fù)Step 3 中(2)、(3),直到得不出新的打?qū)μ柕男?、列為?
(5)對沒有打?qū)μ柕男挟嫏M線,對打?qū)μ柕牧挟嬁v線,得到覆蓋所有零的最少直線數(shù).
Step 4.經(jīng)過上述變換得到新的效用矩陣.在沒有被直線覆蓋的數(shù)中找出最小值,并對沒劃直線行的各數(shù)都減去該最小值,對劃直線列的各數(shù)都加上該最小值,得到新矩陣,轉(zhuǎn)Step 2.
本文的核心是研究異地敏捷開發(fā)環(huán)境條件下合理的任務(wù)分配過程,研究對象是敏捷開發(fā)任務(wù)和異地敏捷開發(fā)團隊.傳統(tǒng)人力處理任務(wù)分配,無法保證分配結(jié)果質(zhì)量.本文提出的基于能力匹配的方法可以量化分配結(jié)果,保證全局最優(yōu)解.為驗證該方法的有效性,本研究在異地敏捷開發(fā)某購物網(wǎng)站項目為背景,利用效用函數(shù)進行任務(wù)分配案例仿真.仿真環(huán)境采用17.12 版本CodeBlocks,C 語言編程,在CPU 2 GHz、 4 GB 內(nèi)存、256 GB 硬盤空間的64 位Windows 8 主機運行.前期采用問卷調(diào)查獲取仿真初始數(shù)據(jù).
數(shù)據(jù)采集通過問卷調(diào)查獲取,以Likert5 級量表對異地敏捷開發(fā)任務(wù)能力需求度屬性和異地敏捷開發(fā)團隊能力屬性進行打分.現(xiàn)將任務(wù)名稱用任務(wù)標(biāo)號來表示,如表1 所示,并做出如下規(guī)定:異地敏捷開發(fā)任務(wù)對技術(shù)能力,協(xié)調(diào)能力,創(chuàng)新能力和敏捷開發(fā)能力的需求值用(0,1],(1,2],(2,3],(3,4],(4,5]區(qū)間的右端點{1,2,3,4,5}表示,分值越高表示需要程度越高;同理,異地敏捷開發(fā)團隊的技術(shù)能力,協(xié)調(diào)能力,創(chuàng)新能力和敏捷開發(fā)能力擁有值也用(0,1],(1,2],(2,3],(3,4],(4,5]區(qū)間的右端點{1,2,3,4,5}表示.最終數(shù)據(jù)如表2 和表3所示.
表1 任務(wù)標(biāo)號和任務(wù)名稱的對應(yīng)關(guān)系
表2 異地敏捷開發(fā)任務(wù)能力需求數(shù)據(jù)
表3 異地敏捷開發(fā)團隊能力數(shù)據(jù)
按式(4)進行效用值計算,首先求出異地敏捷團隊和異地敏捷開發(fā)任務(wù)能力匹配時的效用值,再采用匈牙利算法對效用矩陣進行求解.采用C 語言編程,對實驗結(jié)果用文本輸出的方式表示.效用矩陣結(jié)果表4所示.
本文為數(shù)據(jù)處理方便,將效用矩陣乘以1000 后再按照匈牙利算法求最大值進行處理;式(7)是最終分配矩陣,1 表示分配,0 表示不分配.
表4 任務(wù)和團隊組的效用矩陣結(jié)果
經(jīng)過23 次迭代,式(7)為整體效用最高時的分配矩陣,最終分配方案為:任務(wù)1 和團隊2、任務(wù)2 和團隊3、任務(wù)3 和團隊1、任務(wù)4 和團隊6、任務(wù)5 和團隊7、任務(wù)6 和團隊8、任務(wù)7 和團隊4、任務(wù)8 和團隊5.
異地敏捷開發(fā)項目匹配效用量化值如表5 所示,且效用值為4.837.效用值大小是由任務(wù)能力需求、團隊能力及任務(wù)和團隊的匹配程度來決定.計算后可以得出每一個任務(wù)和團隊的匹配度的衡量標(biāo)準都在0 到1 區(qū)間里取值,故而整體效用值理論上是在0 到8 之間.由此可得該算例的分配結(jié)果最高效用適中.
表5 匹配效用量化值
當(dāng)前異地敏捷團隊的能力值均高于任務(wù)能力需求值,可見并非能力越高的團隊產(chǎn)生的效用越高,對于高能力團隊接受低能力需求的任務(wù)時,同樣是人才資源的浪費.只有任務(wù)和團隊二者的能力剛好彼此滿足時,才能產(chǎn)生較高的效用值.這為日后任務(wù)分解的改進或參與異地敏捷項目團隊的調(diào)整給出理論性的依據(jù).
效用值作為直接定量描述異地敏捷任務(wù)和異地敏捷團隊分配方案質(zhì)量的數(shù)值,其越大說明任務(wù)和團隊能力越匹配,分配方案越合理.實際運用中,管理者應(yīng)當(dāng)在任務(wù)發(fā)布初期遵循效用值高的異地敏捷團隊參與任務(wù)的原則進行團隊選擇,只有這樣才會更高質(zhì)量的完成任務(wù).
本文充分考慮了軟件異地敏捷開發(fā)的任務(wù)分配特點,提煉出了異地敏捷開發(fā)環(huán)境下的任務(wù)能力需求屬性和團隊能力屬性,創(chuàng)新性地提出基于能力匹配的效用函數(shù),將分配結(jié)果量化表達,使任務(wù)分配給最適合的團隊執(zhí)行,達到了結(jié)果最優(yōu),從而產(chǎn)生效用最高的分配方案.通過算例驗證本文任務(wù)分配方法的有效性.但由于效用函數(shù)是基于線性規(guī)劃思想,對大規(guī)模的任務(wù)分配還缺乏普適性.異地敏捷開發(fā)在軟件開發(fā)領(lǐng)域已然興起,還有許多工作需要將來繼續(xù)深入研究.